Page 534 - DSP Integrated Circuits
P. 534

11.19 FFT Processor, Cont.                                           519

            Hence, o 2 can be used to control a set of XOR gates to invert the address to the
        memory in which the first octants of sin(6) and cos(6) are stored.
            Notice that the argument of the sine and cosine functions, 6 or n74-6, are
        always in the range 0 to 7t/4. This means that to get all values of (C+S)/2 and
        (C-S)/2 we need only to store sin(6)/V2/and cos(6)/V2/for 0 < 6 < n/4. Bit 01
        can be used to select if the sin(6)-part, or the cos(6)-part of the memory shall be
        used. We choose always to first read sin(a+7t/4) and then sin(o-7u/4). Hence, 01 = 0
        is used to select the sin(6)-part for the first value and the cos(6)-part for the
        second value, and vice versa for 01 =1.
            The sign of the twiddle factor has
        to be derived by using the three most         ROM            ROM
        significant bits, oooio 2. The change of  1  Address  ~^   129 words
                                                      Logic
        sign of the twiddle factors can be                     '
        incorporated into the control signals
        for the multipliers. The ROM requires
        only 2C/V/8+1) = 2 • 128 + 2 = 258 14-                  (C + S)  (C-S)
        bits words. However, there are only                        2        2
        M4+1 different twiddle factors since     Figure 11.54 The W processor
        sin(7t/4) = cos(rc/4). Hence, we can
        store all coefficients in a ROM with
        only 129 words. The principle of this WP processor is illustrated in Figure 11.54.
            The ROM address logic must transform p to the right address in the ROM.
        Since a = 2np/N, the following applies to 6:


                                   b = 2*(p mod(A/78))

                                             -pmod(JW8))'

            The square parentheses can be interpreted as an address in the coefficient
        ROM. We can use addresses 00000000 2 to 10000000 2 (Oi 0 to 128i 0 ) in the ROM. If
                                in
        P =P8P7P6P5P4P3P2PlPO  binary, thenp mod(M8) = Op 6p5P4P3P2PlPO-  Tnis is
        used as the address to the ROM in octants 1 and 3. In octants 0 and 2 we will
        instead use N/8-p mod(M8) as the address. Since subtracting is equivalent to
        adding the two's-complement, we have

              N/8-p mod(A/78) = 10000000 2-0p 6p 5p 4p 3jp 2p 1p 0
                                = 10000000                       00000001




            This is, in turn, equal to the two's-complement of lpeP5P4.P3P2.PlPO- Further
        design of the WP processor will be postponed until after we have designed the
        address processors.
            We will store sin(6) and cos(6) for 0 < 6 < Tt/4 — i.e., we store only 2(M8+1) coef-
        ficients. These are accessible through the addresses (00000000) 2 to (10000000) 2—
        i.e., 0 to 128 in a ROM.
                                              a a a a a a a
            Let a = at 2n/N, where a\y = a9fl8«7 6 5 4 3 2 l o- Then a^ will be in the
        range 0 < o b < 1024, i.e., (0000000000) 2 < a\> < (10000000000) 2. We use bit 07 to
        select the proper octant. Thus, if 07 = 1, we use 0605040302^100 as the address to
        the ROM and when 07 = 0, we use the two's-complement 0705050403020100 =
        (0705050403020100 + 00000001) 2 as the address.
   529   530   531   532   533   534   535   536   537   538   539