Abstract:
A Gaussian noise is simulated by discrete analogue r i,j . A first parameter α and pluralities of first and second integers i and j are selected. A plurality of points i,j are identified and a magnitude s i,j  is calculated for each point based on α, i and j. The discrete analogue r i,j  is based on a respective s i,j . Examples are given of  
       α   =         2   B     -   A       2   B           
 
and D&gt;i≧0 and 2 C &gt;j≧0, where B≧0, 2 B &gt;A&gt;0, C≧1 and D≧1, and magnitude  
         s     i   ,   j       =       1   -     α   i     +         α   i     ·       1   -   α       2   C       ·   j     ⁢           ⁢   or   ⁢           ⁢     s       D   -   1     ,   j           =     1   -     α     D   -   1       +       α     D   -   1       ·     1     2   C       ·     j   .               
In some embodiments, a segment is defined based on α and i. The segment is divided into points based on respective values of j, and the magnitude is calculated for each point of the segment. The defining and dividing segments and calculating the magnitude is iteratively repeated for each value of i.

Description:
CROSS-REFERENCE TO RELATED APPLICATION  
       [0001]     The present application is a divisional of and claims priority from U.S. patent application Ser. No. 10/429,312, filed May 5, 2003, the content of which is hereby incorporated by reference in its entirety. 
     
    
     FIELD OF THE INVENTION  
       [0002]     This invention is related to hardware simulation of Gaussian noise, particularly for encoding/decoding in digital communication systems.  
       BACKGROUND OF THE INVENTION  
       [0003]     Gaussian noise generators are employed in a wide variety of applications, including circuit design and testing. For example, one step in the design of semiconductor chips for digital communications systems is the simulation of the encoding/decoding circuits of the system. The physical communications system includes a transport channel to transport encoded information between the encoder and decoder circuits. The transport channel, which may be any type of communications channel, introduces Gaussian noise into the information being transmitted. As a result, the decoder receives a digital signal that represents the encoded digital signal and noise.  
         [0004]      FIG. 1  illustrates a basic digital communication system comprising an information source  10 , encoder  12 , transport channel  14  and decoder  16 . Information source  10  generates messages containing information to be transmitted. Encoder  12  converts the message into a sequence of bits in the form of a digital signal S that can be transmitted over transport channel  14 .  
         [0005]     During the transmission over transport channel  14  the original signal S is subjected to noise. Decoder  16  receives a signal S′ which represents the original signal S and the noise n S , S′=S+n S , where n S  is a Gaussian noise with zero mean and variance σ 2 .  
         [0006]     One approach to simulation of encoder/decoder hardware does not address Gaussian noise at all. Instead, the actual physical transport channel is used to quantify the noise without performing a hardware evaluation of the Gaussian random variable. Another approach, useful for various types of noise, creates a pseudo-random Gaussian noise generator using an inverse function. Examples of pseudo-random Gaussian noise generators are described in U.S. Pat. Nos. 3,885,139 and 4,218,749.  
         [0007]     One basic pseudo-random generator U k  is a logical circuit having k outputs, where k=1, 2, 3, . . . . On each clock cycle generator U k  generates some integer value at its outputs. The output value can be one of 0, 1, . . . , 2 k −1, and the probability P that the output will be any given one of these values is constant and is equal to 2 −k . For example, for any given clock cycle, the probability that generator U k  will provide an output having an integer value I is P(I)=2 −k , where 0≦I≦2 k −1.  
       SUMMARY OF THE INVENTION  
       [0008]     One embodiment of the present invention is a process of simulating noise, such as a Gaussian noise, based on a random variable. A first parameter α and pluralities of first and second integers i and j are selected. In one example, parameters A, B, C and D are selected as B≧0, 2 B &gt;A&gt;0, C≧1 and D≧1. α is calculated as  
         α   =         2   B     -   A       2   B         ,       
 
 where 1&gt;α&gt;0. Integers i and j are selected such that D&gt;i≧0 and 2 C &gt;j≧0. A magnitude for each of a plurality of points s i,j  is calculated based on α, i and j. A discrete analogue r i,j  of a random variable is based on a respective s i,j . 
 
         [0009]     In preferred embodiments, s i,j  is calculated as  
         s     i   ,   j       =     1   -     α   i     +       α   i     ·       1   -   α       2   C       ·   j           
 
 for each value of i between D−2 and 0, and as  
         s       D   -   1     ,   j       =       1   -     α     D   -   1       +         α     D   -   1       ·     1     2   C       ·   j     ⁢           ⁢   for   ⁢           ⁢   i       =     D   -   1.           
 
         [0010]     In some embodiments, a segment is defined based on α and a value of i. The segment is divided into points based on respective values of j. The magnitude of each point is calculated, and the process of defining and dividing segments and calculating the magnitude is iteratively repeated for each additional value of i.  
         [0011]     In another embodiment, a circuit simulates a noise based on a random variable, such as a Gaussian noise. Each of a plurality of first generators generates a plurality of discrete values. A plurality of comparators, each coupled to a respective one of the first generators, compare the discrete values to a predetermined value, such as A. Each comparator provides an output representative of whether the discrete value from the respective first generator is smaller than A. A selector is responsive to a selected output of a comparator to supply the first integer value i. A second generator generates a second plurality of discrete values j. A memory is responsive to the value of i and respective ones of j to provide an analogue of the random variable.  
         [0012]     In preferred embodiments, a third generator generates a sign bit which is combined to the analogue.  
         [0013]     In yet other embodiments, a computer program contains computer readable code that causes a computer to perform the process. 
     
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0014]      FIG. 1  is a block diagram of a typical digital communications system.  
         [0015]      FIG. 2  is a flowchart of a process of creating an integrated circuit of a noise generator in accordance with an embodiment of the present invention.  
         [0016]      FIG. 3  is a block diagram of an integrated circuit implementing a noise generator according to one embodiment of the invention. 
     
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS  
       [0017]     The present invention is directed to a process and apparatus for hardware simulation of Gaussian noise n S .  
         [0018]     It will be appreciated that if n is a Gaussian noise with zero mean and variance 1, a Gaussian noise n S  with zero mean and variance σ 2  can be created as n S =σ·n. For any given value x, the probability that n is smaller than x is denoted by P(n&lt;x) and is  
         P   ⁡     (     n   &lt;   x     )       =       1       2   ⁢           ⁢   π         ⁢       ∫     -   ∞     x     ⁢       ⅇ       -     t   2       /   2       ⁢       ⅆ   t     .               
 
         [0019]     In accordance with the present invention, Gaussian noise n is simulated by evaluating members of the set of Gaussian noise as  
            n        =     {         n         n   ≥   0               -   n             n   &lt;   0     ,                 
 
 and evaluating the sign s n  of n as  
         s   n     =     {         1         n   ≥   0               -   1           n   &lt;   0.                 
 
 Then, n=s n ·|n|. 
 
         [0020]     Prior pseudo-random generators calculated a pseudo-random approximation of variable |n| using an inverse function. For any given x≧0, the probability that |n| is smaller than x is  
         P   ⁡     (          n        &lt;   x     )       =         2   π       ·       ∫   0   x     ⁢       ⅇ       -     t   2       /   2       ⁢       ⅆ   t     .               
 
 present invention evaluates a discrete analogue r of the Gaussian noise |n|. Thus, instead of random variable |n|, the discrete analogue (or discrete approximation) r of the random variable |n| is considered. More particularly, a uniform random variable s is selected that belongs to the interval (0,1). The value of s varies logarithmically over the interval, rather than linearly so that the value of neighboring points change exponentially. The inverse function may then be applied to the values of each point.  FIG. 2  is a flow diagram illustrating the steps of the process of simulating Gaussian noise according to the present invention. 
 
         [0021]     At step  20 , values of p and q are selected. The analogue r being calculated is a pseudo-random variable that is analogous to |n| and can take values of  
         k     2   q       ,       
 
 where k=0, 1, . . . ,2 p+q −1. For k=0, 1, . . . ,2 p+q −2, the probability that the value of r is a given one of the values  
       k     2   q         
 
 is  
         P   ⁡     (     r   =     k     2   q         )       =         2   π       ·       ∫     k   /     2   q           (     k   +   1     )     /     2   q         ⁢       ⅇ       -     t   2       /     2   q         ⁢           ⁢       ⅆ   t     .               
 
 For k=2 p+q −1, the probability that r is a given one of the values  
       k     2   q         
 
 is  
         P   ⁡     (     r   =         2     p   +   q       -   1       2   q         )       =     1   -       ∑     k   =   0         2     p   +   q       -   2       ⁢           ⁢       P   ⁡     (     r   =     k     2   q         )       .             
 
         [0022]     In selecting values for p and q, the value p is chosen so that the probability P(|n|&gt;2 p ) is close to zero. In most cases, p=3, 4 or 5, so the probability is nearly zero that |n| exceeds 8 (where p=3), 16 (where p=4) or 32 (where p=5). The value of q is chosen as large as practical, and is limited by the size of the binary word forming  
       k     2   q         
 
 and the capacity of the memory created by the hardware implementation of the process. The magnitude  
       1     2   q         
 
 is an expression of the accuracy of approximation, or difference, of variable r to random variable |n|. As q increases in value, the variance represented by  
       1     2   q         
 
 decreases in value and variable r more closely approximates random variable |n|. The values  
         k     2   q       ,       
 
 k=0, 1, . . . ,2 p+q −1, are expressed by (p+q) binary digits k 0 ,k 1 , . . . ,k p+q −1 so that  
         k     2   q       =       1     2   q       ·       ∑     i   =   0       p   +   q   -   1       ⁢           ⁢       2   i     ·       k   i     .               
 
         [0023]     At step  22 , four parameters, A, B, C and D, are selected. Parameter B is a positive value, B≧0, parameter A is a positive value between 2 B  and zero, 2 B &gt;A&gt;0, and parameters C and D are positive values greater than 0, C≧1 and D≧1. At step  24 , α is calculated as  
       α   =           2   B     -   A       2   B       .         
 
 Thus, 1&gt;α&gt;0. 
 
         [0024]     At step  26 , integers i and j are selected such that D&gt;i≧0 and 2 C &gt;j≧0. At step  28 , for each value of i smaller than D−1 (i.e., (D−1)&gt;i≧0) segment [1−α i ,1−α i+1 ] is split into 2 C  smaller segments, each based on a value of j, and a magnitude s i,j  is calculated for each smaller segment as  
         s     i   ,   j       =     1   -     α   i     +       α   i     ·       1   -   α       2   C       ·     j   .             
 
 Each smaller segment has a length equal to  
         α   i     ⁢         1   -   α       2   C       .         
 
         [0025]     For example, for i=0, points s 0,j  split segment [0,1−α] into 2 C  smaller segments each having equal length  
           1   -   α       2   C       .       
 
 Each point between 0 and (1−α) has a value  
           s     0   ,   j       =         1   -   α       2   C       ·   j       ,       
 
 where 2 C &gt;j≧0. For i=1, and points s 1,j  split segment [1−α,1−α 2 ] into 2 C  smaller segments of equal length  
       α   ⁢         1   -   α       2   C       .         
 
 Each point between (1−α) and (1−α 2 ) has a value  
         s     1   ,   j       =     1   -   α   +     α   ·       1   -   α       2   C       ·     j   .             
 
 For i=D−2, points s (D−2),j  split segment [1−α D− ,1−α D−1 ] into 2 C  smaller segments of equal length  
           α     D   -   2       ·       1   -   α       2   C         ,       
 
 each having a value  
         s       D   -   2     ,   j       =     1   -     α     D   -   2       +       α     D   -   2       ·       1   -   α       2   C       ·   j           
 
         [0026]     In the case of i=D−1, segment [1−α D−1 ,1] is also split into 2 C  smaller segments, each based on a value of j, and a magnitude s D−1,j  is calculated for each smaller segment as  
         s       D   -   1     ,   j       =     1   -     α     D   -   1       +       α     D   -   1       ·     1     2   C       ·     j   .             
 
 Each smaller segment has a length equal to  
         α     D   -   1       ⁢       1     2   C       .         
 
         [0027]     It will be appreciated that the segments together embrace an interval (0,1), and that the length of neighboring segments exponentially decreases. For example, if α=0.5, segment [0,1−α] embraces a length of 0.5 of the interval and is divided into 2 C  smaller segments; segment [1−α,1−α] has a length of 0.25 which is also divided into 2 C  smaller segments; etc. Since each smaller segment has a value s i,j , it is evident that the distance between neighboring points s i,j  decreases exponentially across the interval (0,1) as the segments decrease in length. Thus, instead of using uniform distances between points to calculate inverse functions, as in prior noise simulators, the present invention employs exponentially varying distances between points.  
         [0028]     At step  30 , an inverse function inv(s i,j ) is calculated for each magnitude s i,j  such that the probability that inv(s i,j ) is smaller than |n| is equal to s i,j , P(|n|&lt;inv(s i,j ))=s i,j . Expressed another way,  
         s     i   ,   j       =         2   π       ·       ∫   0     inv   ⁡     (     s     i   ,   j       )         ⁢       ⅇ       -     t   2       /   2       ⁢       ⅆ   t     .               
 
 The number r is selected as the nearest number to inv(s). Therefore, each r i,j  is a number closest to the corresponding inv(s i,j ) and is member of the set of  
       k     2   q         
 
 for all values of k=0, 1, . . . ,2 p+q −1.  
         r     i   ,   j       ∈       {           k     2   q       |   k     =   0     ,   1   ,   …   ⁢           ,       2     p   +   q       -   1       }     .         
 
         [0029]     At step  32  a memory is constructed. In one form, the memory may comprise a module MEM comprises a table that stores all the values r i,j , for D&gt;i≧0 and 2 C &gt;j≧0. Module MEM will require (p+q) bits to store each variable r i,j , so the total capacity of memory MEM is D·2 C ·(p+q) bits. In other embodiments, the memory constructed at step  32  is a logical module LOG_MEM having two inputs i,j to calculate the magnitude r i,j  by executing steps  28  and  30  using the i and j input values.  
         [0030]     It will be appreciated that in either case the constructed memory will have fixed values of parameters A, B, C and D, thus fixing the binary sizes of i and j and the value of α. Consequently, a memory module MEM may comprise a lookup table correlating values of r i,j  to inputs i and j. A memory module LOG_MEM may store fixed values of α and  
           1   -   α       2   C       ,       
 
 and calculate s i,j  based on inputs i and j and the stored values of α and  
           1   -   α       2   C       .       
 
 Such a LOG_MEM would correlate the calculated s i,j  to discrete values of r i,j . 
 
         [0031]     At step  34 , an integrated circuit is created to generate a pseudo-random Gaussian noise. The circuit is illustrated in  FIG. 3 , and comprises (D−1) U B  generators  40  each generating a respective variable x i  representing one of x 0 ,x 1 , . . . ,x D−2  and having a uniformly-distributed pseudo-random value 0, 1, . . . ,2 B −1. The circuit also includes (D−1) comparators  42  that compares the value of x i  to A. The value of the output y i  of a comparator  42  is logical 1 if and only if the value of the input x i  is less than A.  
         [0032]     Logical selector  44  has D inputs, designated y 0 ,y 1 , . . . ,y D−1 . Inputs y 0 ,y 1 , . . . ,y D−2  are supplied by respective comparators  42 . The value of the input y D−1  is set to logical 1. Selector  44  calculates value i based on the minimum y i =1. For example, if y 0  and y 1  both equal 0 and y 2 =1, i is integer 2 and is represented by a logical 1 at the y 2  input. Thus, if D=16, selector will supply a 4-bit representation of i, so for i=2, selector  44  will supply “0100” to memory  46 .  
         [0033]     The value of i is supplied to the memory  46  created at step  32  ( FIG. 2 ). U C  generator  48  generates a value j as 2 C &lt;j≦0 and supplies that value to memory  46 . For example, if C=12, generator  48  supplies a 12-bit representation of j. Memory  46  selects or calculates a value of r i,j  based on the values of i and j, and supplies the selected r i,j  to sign module  50 . More particularly, if memory  46  is a table (e.g., MEM) that correlates values of i and j to r i,j , the value of r i,j  is selected and output to sign module  50 . If memory  46  is a logical module (e.g., LOG_MEM), memory  46  contains logic that defines and splits segments into 2 C  smaller segments, calculates s i,j  for each smaller segment, and calculates r i,j  as a number closest to the corresponding inv(s i,j ), as described in connection with steps  28  and  30  in  FIG. 2 .  
         [0034]     U 1  Generator  52  supplies a 0 or 1 bit to module  50  to select a sign, positive or negative, to value r i,j . The sign s n  is evaluated as (−1) u     1   , where u 1  is a pseudo-random variable generated by pseudo-random generator  52  that provides values 0 and 1 with a probability of 0.5 (that is, the probability, P(u 1 ), that generator  52  will provide a given value 0 or 1 is 0.5). For example, the value of value r i,j  is multiplied by −1 if generator  52  supplies a 0 bit. Thus, variable r is generated by the integrated circuit of  FIG. 3  for the pseudo-random Gaussian noise.  
         [0035]     The selection of the values of parameters A, B, C and D is based on the characteristics (area, delay, etc.) of the integrated circuit in which the noise generator is implemented. Generally, greater values of B, C and D and smaller values of A increases the accuracy of approximation of the Gaussian random variable by the discrete analogue r. Generally, preferred choices of parameter values are:  
                       1   )     ⁢           ⁢   C     ≥   q     ;     ⁢     
     ⁢   2     )     ⁢           ⁢       α     D   -   1         2   C         ≤       ⅇ     -     2       2   ⁢           ⁢   p     -   1             2   q         ,       where   ⁢           ⁢   α     =           2   B     -   A       2   B       .           
 
 For example, for p=3 and q=10, optimal results are achieved by choosing parameters as A=B=1, D=16 and C varies between 10 and 12. 
 
         [0036]     In preferred embodiments the process of the invention is carried out in a computer under the control of a computer program having computer readable program code for causing the computer to carry out the process steps. A memory medium, such as a recording disk of a disk drive, has the computer readable program therein to receive the i and j inputs and define or contain the parameters to carry out the computer processes of the invention.  
         [0037]     Although the present invention has been described with reference to preferred embodiments, workers skilled in the art will recognize that changes may be made in form and detail without departing from the spirit and scope of the invention.