1/1

|
White Noise generator
by Unknown on Apr 20, 2007 |
Not available! | ||
|
Hi
I'm approcing to realize a white noise generator using a Lattice fpga and a pcm1793 dac @ 192KHz I've found many solutions on the web but many of them are too slice's expencive for me. I've try with a lfsr using this code: entity wgn is port( clk_24 : in std_logic; rst : in std_logic; en_192 : in std_logic; wgn_out : out std_logic_vector (23 downto 0); data_valid : out std_logic ); end; architecture rtl of wgn is signal sh_reg : std_logic_vector(23 downto 0); signal data_valid_int : std_logic; begin process(clk_24,rst) begin if rst = '1' then wgn_out '0'); sh_reg '1'); data_valid_int data_valid elsif (clk_24'event and clk_24 = '1') then -- Rising edge for clk24 if en_192 = '1' then sh_reg(sh_reg'high downto 1) sh_reg(0)data_valid_int else data_valid data_valid_int wgn_out end if; end if; end process; end rtl; when i've try the machine i've notice that the power spectrum isn't flat but it's quite gaussian with a peak @ 20KHz. I hope someone can help me thanks |
|||
|
White Noise generator
by Unknown on Apr 25, 2007 |
Not available! | ||
|
On Fri, 20 Apr 2007 21:53:17 +0200 (CEST)
jeanpaul.milani at amicweb.com wrote:
I'm approcing to realize a white noise generator
using a Lattice fpga and a pcm1793 dac @ 192KHz I've found many solutions on the web but many of them are too slice's expencive for me. I've try with a lfsr using this code: [...]
when i've try the machine i've notice that the power spectrum isn't flat
but it's quite gaussian with a peak @ 20KHz. I hope someone can help me This is not a problem of your code, but one of the design. LSFR produce a gausian distribution because of their structure. A simple (and most probably not fully true) explanation would be that the lsfr produces more or less random values that are evenly distributed. But the frequency component of the output signal depends on the dy/dt of the signal which is dependent on the difference of two successive samples. Now, because the samples are evenly distributed it is much more likely to find sample differences around 2^(wordlength/2) than of 0 (two times the same sample) and 2^(wordlength) (0 and max value). I'm sure, someone with a real understanding of signal theory could give you a better explanation, but this whole thing boils down to that you are not looking for a random number generator that produces a evenly distributed numbers, but evenly distributed differences of consecutive values. One way to achieve this would be to treat the output of an LFSR as a signed number and just add it up. But then you have to deal with probable over- and underflows. Attila Kinali -- Linux ist... wenn man einfache Dinge auch mit einer kryptischen post-fix Sprache loesen kann -- Daniel Hottinger |
|||
|
White Noise generator
by Unknown on May 10, 2007 |
Not available! | ||
|
Hi,
the following solution claims to be quite efficient in terms of slices:
http://www.eecs.berkeley.edu/Programs/ugrad/superb/papers2003/Mustapha%20Abdulai.pdf
----- Original Message -----
From: jeanpaul.milani at amicweb.comjeanpaul.milani at a...>
To:
Date: Fri Apr 20 21:53:17 CEST 2007
Subject: [oc] White Noise generator
Hi
I'm approcing to realize a white noise generator using a Lattice fpga and a pcm1793 dac @ 192KHz I've found many solutions on the web but many of them are too slice's expencive for me. I've try with a lfsr using this code: entity wgn is port( clk_24 : in std_logic; rst : in std_logic; en_192 : in std_logic; wgn_out : out std_logic_vector (23 downto 0); data_valid : out std_logic ); end; architecture rtl of wgn is signal sh_reg : std_logic_vector(23 downto 0); signal data_valid_int : std_logic; begin process(clk_24,rst) begin if rst = '1' then wgn_out '0'); sh_reg '1'); data_valid_int data_valid elsif (clk_24'event and clk_24 = '1') then -- Rising edge for clk24 if en_192 = '1' then sh_reg(sh_reg'high downto 1) 0); sh_reg(0) sh_reg(1); data_valid_int else data_valid data_valid_int wgn_out end if; end if; end process; end rtl; when i've try the machine i've notice that the power spectrum isn't flat but it's quite gaussian with a peak @ 20KHz. I hope someone can help me thanks |
|||
|
White Noise generator
by Unknown on May 13, 2007 |
Not available! | ||
|
On Thu, 10 May 2007 19:33:50 +0200 (CEST)
juergen.sauermann at t-online.de wrote:
the following solution claims to be quite efficient in terms of slices:
http://www.eecs.berkeley.edu/Programs/ugrad/superb/papers2003/Mustapha%20Abdulai.pdf
Yes, cellular automaton generated RNG are quite space efficient if you need a lot of bits in parallel, but they have the defficiency that they do not exploit the whole number range and depending on the interconnections you choose might end up in a tight loop of just a few values. Attila Kinali -- Linux ist... wenn man einfache Dinge auch mit einer kryptischen post-fix Sprache loesen kann -- Daniel Hottinger |
|||
1/1

