Inexpensive Parallel Random Number Generator for Configurable Hardware

In this paper we study a hardware efficient implementation of a uniform random number generator based on Cellular Automata. This random number generator can be used to create Additive Gaussian White Noise and other noise sources in wireless application simulations. The algorithm used to generate random numbers can be realized using simple digital circuits and memory, and we implemented it on an emulation platform based on large FPGA array. Our goal was to investigate periodicity and correlation properties of the generator as a function of initialization sequence. We have developed the testing strategy that detects the period and locking states of the generator with a simulation time at least two orders of magnitude shorter than in a software implementation. “The generation of random numbers is too important to be left to chance” R. Coveyou 1.0 Introduction: Random number sequences can be found in a large number of applications that include cryptography, unbiased sampling in Monte Carlo simulations, and imitating stochastic natural processes. Good random number generators are required to provide true source of randomness in applications where one has to model a physical process. For example, in a simulation of a wireless communication system there are several noise sources that need to be included. The most commonly used is Additive White Gaussian Noise, but there other analog impairments like phase noise, clock jitter, etc. that in a complete system analysis must be taken into account. In general, a communication system is characterized through a bit error rate (BER) vs. signal to noise ratio (SNR) curves, which require long and highly computational extensive Monte Carlo simulations. Therefore, it is desirable to have a fast preferably hardware implementation of a system that can produce BER vs. SNR curves in real time. The type of random number generator needed for wireless applications simulations must be very fast but furthermore highly implementation efficient. In this project we study the random number generators that can be implemented on a FPGA using simple logic blocks and have a satisfactory performance for simulation of wireless communication systems. A wide variety of ingenious methods have been designed to generate random numbers. Most generators are software based and generally fall into one of these three categories: Linear Congruential Generator – Usually of the form m b aX X i i mod ) ( 1 + = − , where a, b, and m are constants. This random number generator requires integer recursion thus it is expensive in hardware. Also, this generator is efficiently predictable when the constants a, b and m are known [1]. Lagged Fibonacci Generator – Generally of the form m X X X s i r i i mod ) ( − − ⊗ = , where r, s and m are constants, r > s, and ⊗ could be any of the following binary operators, xor , , , × − + . This generator requires the initial data set r X X X ,., , 2 1 and depending on the choice of the binary operator might require integer recursion. Linear Feedback Shift Register Generator – They are based on the theory of primitive polynomials in the form 1 + + q p X X . Given such a primitive polynomial and p binary digits, 1 2 1 0 ,., , , − p X X X X then q p k p k k X X X + − − ⊕ = , where ⊕ is the XOR operator. This generator has been shown to exhibit lattice structures in the random number sequence generated [1]. On the other hand, there are other non-software based ways of generating random numbers. Some examples are: Physical devices – Random number generators based on physical devices usually sample some physical event (like vibrations or temperature) and generate the random numbers using A/D converters. The random number sequences generated by physical devices are non reproducible unless they are stored in memory. Cellular Automata Random Number Generator – Based on linear finite state machine each consisting of one-dimensional array of cells, each cell is allowed to communicate only with its immediate neighbor based on a rule. In general one considers a sequence of numbers random if no general pattern can be discerned, no prediction can be made about it, and no description can be found [2]. However, on a computer, random numbers are generated by the successive iteration of a definite transformation. Thus for number sequences generated by a computer the most random sequence are those that are least predictable. 1.1 Organization of This Paper The remainder of this paper is organized as follows. Section 2 provides implementation details of the random number generator on the Berkeley Emulation Engine (BEE) FPGA and Simulink ® system simulation. Section 3 discusses one application of the random number generator, the Additive White Gaussian Noise Generator. Section 4 discusses the test performed on the random number sequences generated to check for any correlation effects. Section 5 presents the results of our project in relation to the periodicity of the random number generator and its locking states. Section 6 concludes with the status of this project and future considerations. 2.0 Implementation Random number sequences are generated either by a deterministic rule on a computer (pseudo-random numbers) or by sampling certain random natural properties (like noise in a room, etc). For our application the best random number sequence is one that is very uniform, has very little correlation effects, requires minimal hardware, easy to use, and above all the “random sequence” must be completely reproducible. Recent studies have shown that Cellular Automata is a promising technique for generating uniform random numbers. Cellular Automata can be viewed as computational systems, whose evolution process information is contained in their initial configurations. It can also be considered as a discrete approximation of partial differential equations [2]. The generation of random numbers using Cellular Automata has been proven to be at least as random as the more established random number generators [2,3]. Moreover, this generator has the advantage of being highly parallel and thus easily scalable at relatively very little hardware cost. For random sequences produced by Cellular Automata there are no known mathematical shortcuts to predicting the values and the computational power needed to discern a pattern is usually far greater than the power used to generate the sequences [2]. The Random number generator chosen for this study is based on a one dimensional cellular automaton with the following connecting rule: } 1] O1[k I2[k] 1] O2[k I1[k] { ) k N, k 2, (k for O1[N] I2[1] O2[2] I1[1]