OpenCores
no use no use 1/1 no use no use
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


no use no use 1/1 no use no use
© copyright 1999-2026 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.