This Article 
 Bibliographic References 
 Add to: 
A Hardware Gaussian Noise Generator Using the Box-Muller Method and Its Error Analysis
June 2006 (vol. 55 no. 6)
pp. 659-671
We present a hardware Gaussian noise generator based on the Box-Muller method that provides highly accurate noise samples. The noise generator can be used as a key component in a hardware-based simulation system, such as for exploring channel code behavior at very low bit error rates, as low as 10^{-12} to 10^{-13}. The main novelties of this work are accurate analytical error analysis and bit-width optimization for the elementary functions involved in the Box-Muller method. Two 16-bit noise samples are generated every clock cycle and, due to the accurate error analysis, every sample is analytically guaranteed to be accurate to one unit in the last place. An implementation on a Xilinx Virtex-4 XC4VLX100-12 FPGA occupies 1,452 slices, three block RAMs, and 12 DSP slices, and is capable of generating 750 million samples per second at a clock speed of 375 MHz. The performance can be improved by exploiting concurrent execution: 37 parallel instances of the noise generator at 95 MHz on a Xilinx Virtex-II Pro XC2VP100-7 FPGA generate seven billion samples per second and can run over 200 times faster than the output produced by software running on an Intel Pentium--4 3 GHz PC. The noise generator is currently being used at the Jet Propulsion Laboratory, NASA to evaluate the performance of low-density parity-check codes for deep-space communications.

[1] R. Gallager, “Low-Density Parity-Check Codes,” IEEE Trans. Information Theory, vol. 8, pp. 21-28, 1962.
[2] B. Jung, H. Lenhof, P. Müller, and C. Rüb, “Langevin Dynamics Simulations of Macromolecules on Parallel Computers,” Macromolecular Theory and Simulations, pp. 507-521, 1997.
[3] A. Brace, D. Gatarek, and M. Musiela, “The Market Model of Interest Rate Dynamics,” Math. Finance, vol. 7, no. 2, pp. 127-155, 1997.
[4] C. Berrou, A. Glavieuxand, and P. Thitimajshima, “Near Shannon Limit Error-Correcting Coding and Decoding: Turbo-Codes,” Proc. IEEE Int'l Conf. Comm., pp. 1064-1070, 1993.
[5] K. Tsoi, K. Leung, and P. Leong, “Compact FPGA-Based True and Pseudo Random Number Generators,” Proc. IEEE Symp. Field-Programmable Custom Computing Machines, pp. 51-61, 2003.
[6] D. Knuth, Seminumerical Algorithms, third ed., vol. 2. Addison-Wesley, 1997.
[7] G. Marsaglia and W. Tsang, “The Ziggurat Method for Generating Random Variables,” J. Statistical Software, vol. 5, no. 8, pp. 1-7, 2000.
[8] W. Hörmann and J. Leydold, “Continuous Random Variate Generation by Fast Numerical Inversion,” ACM Trans. Modeling and Computer Simulation, vol. 13, no. 4, pp. 347-362, 2003.
[9] C. Wallace, “Fast Pseudorandom Generators for Normal and Exponential Variates,” ACM Trans. Math. Software, vol. 22, no. 1, pp. 119-127, 1996.
[10] G. Box and M. Muller, “A Note on the Generation of Random Normal Deviates,” Annals Math. Statistics, vol. 29, pp. 610-611, 1958.
[11] E. Boutillon, J. Danger, and A. Gazel, “Design of High Speed AWGN Communication Channel Emulator,” Analog Integrated Circuits and Signal Processing, vol. 34, no. 2, pp. 133-142, 2003.
[12] Additive White Gaussian Noise (AWGN) Core v1.0, Xilinx Inc., 2002, http:/
[13] E. Fung, K. Leung, N. Parimi, M. Purnaprajna, and V. Gaudet, “ASIC Implementation of a High Speed WGNG for Communication Channel Emulation,” Proc. IEEE Workshop Signal Processing Systems, pp. 304-409, 2004.
[14] D. Lee, W. Luk, G. Zhang, P. Leong, and J. Villasenor, “A Hardware Gaussian Noise Generator Using the Wallace Method,” IEEE Trans. VLSI Systems, vol. 13, no. 8, pp. 911-920, 2005.
[15] D. Lee, W. Luk, J. Villasenor, and P. Cheung, “A Gaussian Noise Generator for Hardware-Based Simulations,” IEEE Trans. Computers, vol. 53, no. 12, pp. 1523-1534, Dec. 2004.
[16] G. Zhang, P. Leong, D. Lee, J. Villasenor, R. Cheung, and W. Luk, “Ziggurat-Based Hardware Gaussian Random Number Generator,” Proc. IEEE Int'l Conf. Field-Programmable Logic and Its Applications, pp. 275-280, 2005.
[17] Xilinx System Generator User Guide v7.1, Xilinx Inc., 2005, http:/
[18] R.C. Tausworthe, “Random Numbers Generated by Linear Recurrence Modulo Two,” Math. and Computation, vol. 19, pp. 201-209, 1965.
[19] G. Marsaglia, Diehard: A Battery of Tests of Randomness, 1997,
[20] P. L'Ecuyer, “Maximally Equidistributed Combined Tausworthe Generators,” Math. Computation, vol. 65, no. 213, pp. 203-213, 1996.
[21] V. Lefevre, J. Muller, and A. Tisserand, “Toward Correctly Rounded Transcendentals,” IEEE Trans. Computers, vol. 47, no. 11, pp. 1235-1243, Nov. 1998.
[22] M.J. Schulte and E.E. Swartzlander Jr., “Hardware Designs for Exactly Rounded Elementary Functions,” IEEE Trans. Computers, vol. 43, no. 8, pp. 964-973, Aug. 1994.
[23] J. Muller, Elementary Functions: Algorithms and Implementation. Birkhauser Verlag AG, 1997.
[24] J. Walther, “A Unified Algorithm for Elementary Functions,” Proc. AFIPS Spring Joint Computer Conf., pp. 379-385, 1971.
[25] D. Lee, A. Abdul Gaffar, O. Mencer, and W. Luk, “MiniBit: Bit-Width Optimization via Affine Arithmetic,” Proc. ACM/IEEE Design Automation Conf., pp. 837-840, 2005.
[26] L. de Figueiredo and J. Stolfi, “Self-Validated Numerical Methods and Applications,” Brazilian Math. Colloquium Monograph, IMPA, Brazil, 1997.
[27] V. Oklobdzija, “An Algorithmic and Novel Design of a Leading Zero Detector Circuit: Comparison with Logic Synthesis,” IEEE Trans. VLSI Systems, vol. 2, no. 1, pp. 124-128, 1994.
[28] M. Pillmeier, M. Schulte, and E. Walters III, “Design Alternatives for Barrel Shifters,” Proc. SPIE Advanced Signal Processing Algorithms, Architectures, and Implementations, pp. 436-447, 2002.
[29] C. Wallace, “MDMC Software— Random Number Generators,” 2003, random.

Index Terms:
Algorithms implemented in hardware, computer arithmetic, error analysis, elementary function approximation, field programmable gate arrays, minimax approximation and algorithms, optimization, random number generation, simulation.
Dong-U Lee, John D. Villasenor, Wayne Luk, Philip H.W. Leong, "A Hardware Gaussian Noise Generator Using the Box-Muller Method and Its Error Analysis," IEEE Transactions on Computers, vol. 55, no. 6, pp. 659-671, June 2006, doi:10.1109/TC.2006.81
Usage of this product signifies your acceptance of the Terms of Use.