Abstract:
To encode an audio signal xn, N samples of the audio signal is taken during each period of the signal (i.e., n varies from 0 to N-1) and are stored in a memory, such as a DRAM. The indices of the input samples (i.e., coefficients) are divided into T groups such that M of these coefficients each associated with a different one of the indices of each of the T groups may be read from the DRAM in a burst read operation. The M coefficients read during each burst operation are stored in a second memory in a burst write operation. Thereafter, each T time-domain coefficients whose indices belong to the same group are used to compute a first set of complex numbers ƒ s  which are subsequently used to encode the signal. Because the read and write operations are carried out using burst modes, the number of memory accesses is reduced, thereby improving efficiency and reducing cost.

Description:
CROSS-REFERENCES TO RELATED APPLICATIONS  
         [0001]    NOT APPLICABLE  
         STATEMENT AS TO RIGHTS TO INVENTIONS MADE UNDER FEDERALLY SPONSORED RESEARCH OR DEVELOPMENT  
         [0002]    NOT APPLICABLE  
         REFERENCE TO A “SEQUENCE LISTING,” A TABLE, OR A COMPUTER PROGRAM LISTING APPENDIX SUBMITTED ON A COMPACT DISK.  
         [0003]    NOT APPLICABLE  
         BACKGROUND OF THE INVENTION  
         [0004]    The present invention relates to processing of digital audio signals, and more specifically to an improved method for storing and retrieving of digital audio signals from a memory.  
           [0005]    Many different audio compression techniques have been developed to enable effective transmission and storage of digital audio signals. For example, when real-time signal processing is required, such as video conferencing over a computer network, audio and video signals are often compressed before they are transmitted.  
           [0006]    In the encoding end of a typical audio compression system, analog audio signals are first converted to digital signals. The digital audio signals are then transformed from time-domain into frequency domain. Thereafter, the transformed coefficients associated with the frequency domain audio signals are quantized. The quantize values may be output, stored, transmitted. To decode the audio signal, the reverse of the above steps are performed, as known to those skilled in the art.  
           [0007]    One method that achieves relatively high quality compression/decompression involves transform coding. Transform coding typically includes transforming a frame of an input audio signal into a set of transform coefficients, using a transform, such Discrete Cosine Transform (DCT), Modified Discrete Cosine Transform (MDCT), and Fourier Transform (FT), etc. Next, a subset of the transform coefficients, which typically represents a large portion of the energy of the input audio signal, is quantized and encoded using any one of a number of well-known coding techniques. Transform compression techniques, such as MDCT, generally provide a relatively high quality synthesized signal, since a relatively high number of spectral coefficients of an input audio signal are taken into consideration. Both MDCT and inverse modified discrete cosine transform (IMDCT) may be performed using a Fast Fourier Transform algorithm.  
           [0008]    Determining spectral coefficients associated with MDCT and IMDCT using a FFT often requires computing the FFT coefficients, as well as reading and writing associated data in a memory, such as a Dynamic Random Access Memory (DRAM). Following is a description of implementing MDCT and IMDCT using a FFT.  
           [0009]    Assume x n  and X k  represent an input sample of an audio signal in the time domain and frequency domain (i.e., MDCT coefficient) respectively. MDCT coefficient X x  is computed from its corresponding time-domain signal x n  using the following equation:  
               X   k     =     2          ∑     n   =   0       N   -   1              x   n          cos        [         2                 π     N          (     n   +     n   0       )          (     k   +     1   2       )       ]                     (   1   )                               
 
           [0010]    where N represents the number of samples taken in each period of the periodic signal x n , with 0&lt;n&lt;N and 0≦k&lt;N/2, and n 0 =(N/2+1)/2. During decoding, time-domain samples y n  are reconstructed using the inverse of the MDCT, i.e., IMDCT, using the following equation:  
               y   n     =       2   N            ∑     k   =   0         N   /   2     -   1              X   k          cos        [         2                 π     N          (     n   +     n   0       )          (     k   +     1   2       )       ]                     (   2   )                               
 
           [0011]    [0011]FIG. 1 shows an MDCT logic block  10  that transforms time-domain signals x n  to frequency-domain signals X k , and an IDMCT logic block  12  that transforms frequency-domain signals X k  to time-domain signal y n .  
           [0012]    From equation (2), it is seen that decoded time-domain samples y n  have the following symmetrical and anti-symmetrical properties.  
               y         3      N     4     +     2      n         =     y         3      N     4     -   1   -     2      n                 (   3   )                 y       N   4     -   1   -     2      n         =     -     y       2      n     +     N   4                   (   4   )                               
 
           [0013]    if 0≦n&lt;N/8, and  
               y         3      N     4     -     2      n     -   1       =     -     y       2      n     -     N   4                   (   5   )                 y         5      N     4     -   1   -     2      n         =     y       2      n     +     N   4                 (   6   )                               
 
           [0014]    if N/8≦n&lt;N/4.  
           [0015]    To compute the MDCT and IMDCT coefficients when 0≦n &lt;N/4, using an FFT, three complex sequences ƒ n , ξ n  and U k  are first defined, as shown below:  
               f   n     =     {             (       x         3      N     4     +     2      n         +     x         3      N     4     -   1   -     2      n           )     +     j        (       x       2      n     +     N   4         -     x       N   4     -   1   -     2      n           )             for         0   ≤   n   &lt;     N   /   8                   (       x         3      N     4     -   1   -     2      n         -     x       2      n     -     N   4           )     +     j        (       x       N   4     +     2      n         +     x         5      N     4     -   1   -     2      n           )             for           N   /   8     ≤   n   &lt;     N   /   4                       (   7   )                 ξ   n     =       W   N     n   +     1   8              f   n               (   8   )                 U   k     =       X     2      k       -     j                   X       N   2     -     2      k     -   1                   (   9   )                               
 
           [0016]    where j={square root over (−1)}, W n   N =e −(2 πj/N)n , and 0≦k&lt;N/4.  
           [0017]    It can be shown that:  
                 U   k     2     =       -     W     8      N     1            W   N   k          FFT     N   4            {     ξ   n     }               (   10   )                               
 
           [0018]    where FFT N {ξ n } represents the N-point FFT of ξ n .  
           [0019]    Therefore, to compute MDCT coefficients X k  of the input samples x n  using N/4-point FFT, the following steps are performed:  
           [0020]    1) form complex sequence ƒ n  from x n  as shown in equation (7);  
           [0021]    2) form complex sequence ξ nn  by multiplying complex sequence ƒ n  with  
         W   N     n   +     1   8         ,                         
 
           [0022]    as shown in equation (8)  
           [0023]    3) Take the N/4-point FFT of ξ n ;  
           [0024]    4) Multiply the FFT coefficients by W 8N   1 W N   k  to form U k , as shown in equation (10);  
           [0025]    5) compute X k  from the real and imaginary parts of U k , as shown in equation (9).  
           [0026]    To compute the IMDCT coefficients, steps opposite to those shown above may be taken. As seen from equation (7), because of the uniqueness of X k , time-domain samples y n  of IMDCT also satisfy equation (7):  
               f   n     =     {             (       y         3      N     4     +     2      n         +     y         3      N     4     -   1   -     2      n           )     +     j        (       y       2      n     +     N   4         -     y       N   4     -   1   -     2      n           )             for         0   ≤   n   &lt;     N   /   8                   (       y         3      N     4     -   1   -     2      n         -     y       2      n     -     N   4           )     +     j        (       y       N   4     +     2      n         +     y         5      N     4     -   1   -     2      n           )             for           N   /   8     ≤   n   &lt;     N   /   4                       (   11   )                               
 
           [0027]    By using the symmetrical and anti-symmetrical properties shown in equations (3-6), y n  may be found from ƒ n  for 0≦n&lt;N/8, as shown below:  
               y         3      N     4     +     2      n         =       y         3      N     4     -     2      n     -   1       =     real                     (     f   n     )     /   2                 (   12   )                 y       2      n     +     N   4         =       -     y       N   4     -     2      n     -   1         =     imag                     (     f   n     )     /   2                 (   13   )                 y       N   2     -     2      n     -   1       =       -     y     2      n         =     real                     (     f     n   +     N   8         )     /   2                 (   14   )                 y     N   -     2      n     -   1       =       y       N   2     +     2      n         =     imag                     (     f     n   +     N   8         )     /   2                 (   15   )                               
 
           [0028]    where real(ƒ) and imag(ƒ) denote the real and imaginary parts of complex number ƒ.  
           [0029]    Therefore, to compute IMDCT coefficients y n  using N/4-point FFT, the following steps are performed:  
           [0030]    1) form the complex sequence U k  from X k , as shown in equation (9);  
           [0031]    2) Form another complex sequence  
         V   k     =       FFT     N   4            {     ξ   k     }                             
 
           [0032]    by multiplying U k  with W 8N   −1 in equation (10);  
           [0033]    3) compute ξ n  by taking the inverse N/4-point FFT of V k ;  
           [0034]    4) compute ƒ n  by multiplying ξ n  with  
         W   N     -     (     n   +     1   8       )         ,                         
 
           [0035]    as shown in equation (8); 5) compute y n  by taking the real and imaginary parts of ƒ n , as shown in equations (12)-(15).  
           [0036]    In conventional systems, to compute, for example, the MDCT coefficients using the five steps described above, data is read from or written into an associated DRAM one sample at a time. Since there is an overhead associated with each DRAM access, such systems may suffer from degraded data traffic in the DRAM bus, lower clock rate and relatively higher power consumption. Furthermore, as seen from step  1  associated with computing MDCT coefficients, N memory read operations (i.e., 4×N/8×2) are required to read different values of x n  to form the sequence ƒ n , and N/2 (i.e., 2×N/4) memory writes operations are required to write the results back to DRAM. Similarly, N/2 memory read operations and N/2 memory write operations are required to perform step 2 associated with computing MDCT coefficients. As described above, such high number of read and write operations lower system performance while increasing its cost.  
           [0037]    Accordingly, there is a need to reduce the number of accesses made to a memory when computing the MDCT and IMDCT coefficients.  
         BRIEF SUMMARY OF THE INVENTION  
         [0038]    In accordance with the present invention, to encode an audio signal x n , N samples x n  (n varies from 0 to N-1) of the audio signal are taken during each period and are stored in a memory, such as a DRAM. The indices of the input samples (i.e., coefficients) are divided into T groups such that M of these coefficients, each associated with a different one of the indices of each of the T groups, may be read from the DRAM in a burst read operation. The M coefficients read during each burst operation are stored in a second memory in a burst write operation. Thereafter, each T time-domain coefficients whose indices belong to the same group are used to compute a first set of complex numbers ƒ s  which are subsequently used to encode the signal.  
           [0039]    In some embodiments, M is less than or equal to N and T is equal to four. In these embodiments, each pair of complex numbers is related to four time-domain coefficients in accordance with the following expression:  
                 (       x         3      N     4     +   s       +     x         3      N     4     -   s   -   1         )     +     j        (       x       N   4     +   s       -     x       N   4     -   s   -   1         )         =     {           f     s   2                          n                 is                 even                 j                   f     (       N   4     -       s   +   1     2       )     *             for                 n                 is                 odd                     (   23   )                               
 
           [0040]    where s has a different value depending on whether n is even or odd.  
           [0041]    Because, in accordance with the present invention, indices  
         (         3      N     4     +   s     )     ,       (         3      N     4     -   s   -   1     )          (       N   4     +   s     )                     (       N   4     -   s   -   1     )                             
 
           [0042]    are in sequential order in terms of s, transfer of coefficients x n  from the DRAM to the second memory (e.g., SRAM) is carried out using burst read/write operation, thereby reducing the number of accesses to the DRAM and thus reducing cost.  
           [0043]    The encoded coefficients are computed by taking real and imaginary parts of U k , defined by:  
           U   k     2     =       -     (       W     8      N     1          W   N   k       )              FFT     N   4            [     ξ   n     ]                               
 
           [0044]    wherein FFT  
       N   4                         
 
           [0045]    [ξ n ] represents a Fast-Fourier Transform of the N/4 point of complex number ξ s , which is computed by multiplying the first complex number ƒ s  with the associated second constant  
         W   N     s   +     1   8         ,                         
 
           [0046]    and wherein W 8N   1  and W N   k  are constants. U k  and FFT of the N/4 point of complex numbers ξ s  are stored in the DRAM during a burst write burst operation. Moreover, U k  are read during a burst operation from the DRAM to extract real and imaginary parts thereof. 
       
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0047]    [0047]FIG. 1 is a simplified high-level block diagram of an encoder and a decoder, as known in the prior art.  
         [0048]    [0048]FIG. 2 shows coefficient indices that are reordered, in accordance with the present invention, to enable burst read and write operations thereof. 
     
    
     DETAILED DESCRIPTION OF THE INVENTION  
       [0049]    In accordance with the present invention, the indices of input samples of an audio signal and other associated signals are rearranged so as to be in order, thereby enabling these signals to be stored in and read from a DRAM using a burst mode and thus limiting the number of accesses made to the DRAM. Moreover, some of the mathematical steps involved in computing the MDCT and IMDCT coefficients are combined so as to further reduce the number of accesses made to the DRAM.  
         [0050]    As seen from equation (7) above, the indices of input samples x n  are not in sequential order, and thus these input samples are not adapted to be stored or retrieved from a memory using a burst mode of operation. In accordance with one aspect of the present invention, the indices of input samples x n  are rearranged so as to be in sequence to enable the storage and retrieval of these input samples from a memory, e.g., a DRAM, using a burst mode. The rearranging of these indices is described below.  
         [0051]    For the case of 0≦n&lt;N/8 in equation (7), new parameter m is defined as being equal to 2n (m=2n). After replacing n with m for this condition in equation (7), the following equation (16) is obtained:  
                 f     m   /   2       =       (       x         3      N     4     +   m       +     x         3      N     4     -   m   -   1         )     +     j        (       x       N   4     +   m       -     x       N   4     -   m   -   1         )                
            for                 0     ≤   m   &lt;       N   /   4                   and                 m                 is                 even                   number   .                 (   16   )                               
 
         [0052]    For the case of N/8≦n&lt;N/4 in equation (7), parameters m 1  and n 1  are defined as following:  
         [0053]    n 1 =N/4−n−1  
         [0054]    m 1 =2n 1 +1.  
         [0055]    Therefore,  
         [0056]    0≦n 1 &lt;N/8 and,  
         [0057]    0≦m 1 &lt;N/4. Furthermore, because m 1  is equal to 2n 1  +1; m 1  is an odd number with  
           n=N/ 4−( m   1 +1)/2  (17) 
         [0058]    The indices of the terms used in condition N/8≦n&lt;N/4 of equation (7) are thus rearranged as:  
         3 N/ 4−2 n− 1 =N/ 4+2 n   1 +1 =N/ 4 +m   1   (18) 
         2 n−N/ 4 =N/ 4−2 n   1 −2 =N/ 4 −m   1 −1  (19) 
           N/ 4+2 n= 3 N/ 4−2 n   1 −2=3 N/ 4= m   1   (20) 
         5 N/ 4−2 n− 1=3 N/ 4+2 n   1 +1=3 N/ 4 +m   1   (21) 
         [0059]    Using these indices and multiplying the conjugated ƒ n  of with j, the expression for ƒ n  for the condition N/8≦n&lt;N/4 of equation (7) is rewritten as:  
                 j                   f     (       N   4     -         m   1     +   1     2       )     *       =       (       x         3      N     4     +     m   1         +     x         3      N     4     -     m   1     -   1         )     +     j        (       x       N   4     +     m   1         -     x       N   4     -     m   1     -   1         )                
            for                 0     ≤     m   1     &lt;       N   /   4                   and                   m   1                   is                 odd                   number   .                 (   22   )                               
 
         [0060]    Comparing the left hand sides of equations (16) and (22), it is seen that:  
                 (       x         3      N     4     +   s       +     x         3      N     4     -   s   -   1         )     +     j        (       x       N   4     +   s       -     x       N   4     -   s   -   1         )         =     {           f     s   2                          n                 is                 even                 j                   f     (       N   4     -       s   +   1     2       )     *             for                 n                 is                 odd                     (   23   )                               
 
         [0061]    where s=m if n is even and s=m 1  if n is odd.  
         [0062]    The indices of various terms in equation (23) may be represented as shown below:  
           t   1 =3 N/ 4 +s   (24) 
           i   2 =3 N/ 4 −s− 1  (25) 
           i   3   =N/ 4 +s   (26) 
           i   4   =N/ 4 −s− 1  (27) 
           i   a   =s/ 2  (28) 
           i   b   =N/ 4−( s+ 1)/2  (29) 
         [0063]    [0063]FIG. 2 shows the above indices which are in sequential order in terms of s to enable burst read and write operations.  
         [0064]    Because, in accordance with the present invention, indices i 1 , i 2 , i 3 , i 4 , i a , and i b  are in sequential order in terms of s, transfer of coefficients x n  from the DRAM to the local memory (e.g., SRAM) is carried out using burst read/write operation, thereby reducing the number of accesses to the DRAM and thus reducing cost, as is explained further below.  
         [0065]    Time-domain input sample coefficients x n  are stored in the DRAM as they are received from, e.g., an analog-to-digital converter (not shown). These sample coefficients x n  are used to compute corresponding frequency-domain coefficients X k . As is seen from equations (23) and (8)-(10) above, computation of each frequency-domain coefficient X k  requires four time-domain coefficient x n  whose indices are in sequential order (i.e., in order), as is seen from equation (23). Therefore, time-domain coefficients associated with computing each frequency-domain coefficient X k  are read from the DRAM using a burst read operation and transferred to the local RAM using a burst write operation. Because s varies from zero to (N-1) there are N such burst read/write operations. In other words, during each of the N burst read/write operations, four time-domain coefficients having indices i 1 , i 2 , i 3 , i 4 , are transferred from the DRAM to the SRAM (i.e., burst write from the DRAM and burst read to the SRAM). The four time-domain coefficients transferred during each read/write burst operations are used to compute values of ƒ n  and U k , which in turn are used to compute values of MDCT coefficients X k , in accordance with equations (23) and (8)-(10).  
         [0066]    The reduction in the number of DRAM accesses depends on the number of bytes that the DRAM is adapted to provide during a read burst operation and the size of the local memory in which the x n  values are stored after being read from the DRAM. If the DRAM is adapted to supply M number of coefficients (i.e., the number of x n  coefficients) during each read burst cycle as the indices are rearranged to be in sequence, the number of DRAM read accesses is reduced by a factor of M. If N r  is the number of bytes that the DRAM is adapted to provide during a read burst operation and m is the number of bytes associated with each coefficient, then N r =mM r . Accordingly, a total of 4 mM bytes is required to store the x n  values in the local memory. Similarly, as seen from equations 23-29, in accordance with the present invention, the number of write operations required to store values of ƒ n  to DRAM is also reduced by a factor of M. Accordingly, a total of 2 mM bytes is required to store the values of  
         f     n   2                     and                   f     (       N   4     -       n   +   1     2       )     *                           
 
         [0067]    in the local memory.  
         [0068]    Moreover because the indices of the various coefficients in equation (9) and (10) which in combination perform the following operations: (1) taking the N/4-point FFT of ξ n : (2) multiplying the FFT coefficients by W 8N   1 W N   k  to form U k ; and (3) computing X k  from the real and imaginary parts of U k , appear in sequence, to further reduce the number of DRAM accesses, these coefficients are also read from the DRAM using burst read operations.  
         [0069]    As described above, combined equations (7) and (8) above perform the following operations: (1) form complex sequence ƒ n  from x n ; and (2) form complex sequence ξ nn  by multiplying complex sequence ƒ n  with  
         W   N     n   +     1   8         .                         
 
         [0070]    Using conventional prior art techniques, during step (1) N memory read operations (i.e., 4×N/8×2) are required to read the values of x n  and to form the ƒ n  values. Furthermore, N/2 memory write operations (2×N/4) are required to write the ƒ n  values to DRAM. Similarly, during step (2) N/2 memory read operations and N/2 memory writes operations are required. In other words, in the prior art, the combined steps (1) and (2) require 3N/2 memory read operations and N memory write operations.  
         [0071]    In accordance with the present invention, to further reduce the number of DRAM accesses, the values of ƒ n  are not written to the DRAM. Instead the ƒ n  values are multiplied by W N  to compute the values of ξ n , which are subsequently stored in the DRAM. Therefore, in accordance with the present invention, N read operations and N/2 write operations are required. Because coefficients W N   n  have constants values they may be stored in a local Read Only Memory (ROM).  
         [0072]    The same principles described above and which enable time-domain coefficients to be read from the DRAM using burst read modes are also applied to computing the IMDCT to reduce the total number of DRAM accesses. It can be shown that  
                 (       y         3      N     4     +   s       +     y         3      N     4     -   s   -   1         )     +     j        (       y       N   4     +   s       -     y       N   4     -   s   -   1         )         =     {           f     s   2             for                 n                 is                 even               j                   f     (       N   4     -       s   +   1     2       )     *             for                 n                 is                 odd                     (   30   )                               
 
         [0073]    where s=m if n is even and s=m 1  if n is odd.  
         [0074]    By using the symmetrical and anti-symmetrical property of y n  shown in equations (3)-(6), the following are obtained is n is even:  
                 y         3      N     4     +   s       =       y         3      N     4     -   s   -   1       =     real                     (     f     s   /   2       )     /   2                              (   31   )                 y     s   +     N   4         =       -     y       N   4     -   s   -   1         =     imag                     (     f     s   /   2       )     /   2                 (   32   )                               
 
         [0075]    And the following are obtained if n is odd:  
                 y         3      N     4     +   s       =       y         3      N     4     -   s   -   1       =     real                     (     j                   f     (       N   4     -       s   +   1     2       )     *       )     /   2                              (   33   )                 y     s   +     N   4         =       -     y       N   4     -   s   -   1         =     imag                     (     j                   f     (       N   4     -       s   +   1     2       )     *       )     /   2                 (   34   )                               
 
         [0076]    As seen from equations (31)-(33), the indices of coefficients y n  and ƒ n  are the same as those of i 1 , i 2 , i 3 , i 4 , i a , and i b  defined above in equations (25)-(29). Because indices i 1 , i 2 , i 3 , i 4 , i a , and i b  are in sequential order in terms of s, transfer of coefficients to the DRAM is carried out using burst write operation, thereby reducing the number of accesses to the DRAM and thus further reducing the cost.  
         [0077]    The indices described above in connection with equations (24)-(29) are applicable to writing of y n  values to the DRAM and to the reading of ƒ n  values from the DRAM. Therefore, because the DRAM is adapted to write M number of coefficients (i.e., the number of y n  coefficients) during each write burst cycle as the indices are rearranged to be in sequence, the number of DRAM write accesses is reduced by a factor of M. Since the MDCT and IMDCT do not occur concurrently, the same local memory may be used during the MDCT and IMDCT.  
         [0078]    Moreover because the indices of the various coefficients involved in computing IMDCT coefficients (i.e., y n ) from X k  discussed above and repeated again below: (1) forming the complex sequence U k  from X k , as shown in equation (9) above; (2) forming complex sequence  
         V   k     =       FFT     N   4            {     ξ   k     }                             
 
         [0079]    by multiplying U k  with W 8N   −1 W N   −k , as shown in equation (10) above, and (3) computing ξ n  by taking the inverse N/4-point FFT of V k , appear in series, reading and writing of the associated values in the DRAM may also be performed using burst read and write operations, respectively.  
         [0080]    As described above, in computing the IMDCT coefficients, ƒ n  values are obtained by multiplying ξ n  with  
         W   N     -     (     n   +     1   8       )         ,                         
 
         [0081]    as shown in equation (8). Subsequently, y n  values are computed by taking the real and imaginary parts of ƒ n , as shown in equations (31)-(34). Using conventional prior art techniques, the above computations require 3N/2 memory read operations and N memory write operations.  
         [0082]    In accordance with the present invention, to further reduce the number of DRAM accesses, the values of ξ n  are not written to the DRAM. Instead the ξ n  values are multiplied by  
       W   N     -     (     n   +     1   8       )                             
 
         [0083]    to compute the values of ƒ n , which are subsequently stored in the DRAM. Therefore, in accordance with the present invention, N read operations and N/2 write operations are required.  
         [0084]    It is understood that the above embodiments of the present invention may be performed entirely by software modules executed by a central processing unit. The above embodiments may also be performed by a combination of software and hardware modules. Alternatively, other embodiments may be performed entirely by dedicated hardware modules.  
         [0085]    The above embodiments of the present invention are illustrative and not limitative. Various alternatives and equivalents are possible. The invention is not limited by the type of memory used to store and read the coefficients. Nor is the invention limited by the size of the burst operation that a memory is adapted to support. The invention is not limited by the encoding or decoding of the input signals. Nor is the invention limited by the method used to transform time-domain values to frequency-domain values. Other additions, subtractions, deletions, and other modifications and changes to the present invention may be made thereto without departing from the scope of the present invention and is set forth in the appended claims.