Brown Noise
Brown (red) noise source, -6 dB/octave, one sample per CE clock: a leaky integrator on an embedded white xoshiro256** source. The leak stops the DC drift and sets the low-frequency corner; amplitude scaling by a configurable output shift with saturation. Pure VHDL, shifts and adds only. Auto-random per-instance seed, RESET restarts the sequence.
Introduction
Brownian (random-walk) noise has a $1/f^2$ power spectrum: -6 dB per octave. The block integrates white noise with a leak, $y \mathrel{+}= x - y\cdot 2^{-k}$: above the corner $f_c \approx f_s/(2\pi 2^k)$ the spectrum falls at -6 dB/oct, below it flattens (the leak is what keeps the walk bounded and drift-free).
Measured on the bit-exact model the hardware is verified against; the dashed line is the ideal -6 dB/octave slope.
Pin Description
Properties
Width of the OUT word (2..32), signed.
Output width (2..32), signed, saturated.Default: 16
Range: 2 – 32
Leak k of the integrator: corner frequency ~ fs/(2pi2^k); below it the spectrum flattens (stops the DC drift).
Integrator leak k (2..16): corner ~ fs/(2pi2^k); -6 dB/oct above it, flat below.Default: 8
Range: 2 – 16
Right shift applied to the accumulator before the saturated output (amplitude scaling). The accumulator RMS grows ~2^(k/2), so k/2 is a good starting point.
Right shift before the output (0..24): amplitude scaling. Start from k/2.Default: 4
Range: 0 – 24
Seed of the embedded white generator (128 bit hex), expanded internally with SplitMix64. Auto-randomized when the component is created, so multiple instances produce independent noise; editable for reproducible runs. RESET restarts the sequence. Brown/red noise, -6 dB/octave (leaky integrator on white noise).
128-bit seed of the embedded white generator, 32 hexadecimal digits (auto-randomized at placement, editable for reproducible runs). Every string of exactly 32 hex digits is a valid seed - repeated digits, all zeros and two identical 64-bit halves included; a wrong length or a non-hex digit is a compile error. Two seeds that differ at all give two independent noise streams (guaranteed when they differ in one 64-bit half, which includes any single-digit difference), which is what makes several instances of this block decorrelated. NOTE: the seed expansion was corrected in this version, so the same seed produces a different (equally reproducible) stream than in earlier releases.Default: 4650521E727942E29915F66C44132A0B
Usage
The accumulator is OutputBits+LeakShift+2 wide and cannot wrap; the
output is the accumulator shifted right by OutputShift and saturated.
The accumulator RMS grows like $2^{k/2}$, so OutputShift ~ k/2 keeps the
output in range with good utilization. CE defaults to ‘1’.