Page 367 - Analog and Digital Filter Design
P. 367

364 Analog and Digital Filter Design





                       being the highpass response. In each case the sinc (x) envelope will depend on
                       the passband width.



                 DSP Implementation of an FIR  Filter

                       Although  it  would be possible to  implement the filter as shown in previous
                       figures, by  shifting the data using shift registers or flip-flops, there is another
                       method more appropriate to a processor based system. Anyone who has written
                       a “C”program will know that pointers are used to enable faster operation. Point-
                       ers are memory locations that contain the address of another memory location.
                       An example will explain this concept.
                        Suppose we want a 20-step shift register; this can be implemented by having a
                       20-address memory. The “input” can be an address set into one pointer, and the
                        “output” can be an address set into another pointer. Each time there is a new
                       data word it is stored at the address pointed to by the “input” pointer. If  the
                       pointer is decremented after each read operation this is equivalent to the data
                       in the whole register moving to a higher address, relative to the pointer. This
                       concept is illustrated in Figure 15.7.






                                                                                Further delays
                                                                                      b








                                                           I           Input

                 Figure 15.7

                 Pointer Operation

                       When the pointer reaches the end of the address range it is reset to start at the
                       beginning. By this means we have the equivalent of a shift register; the old data
                       is overwritten instead of being shifted out.

                       All the memory locations need to be read and multiplied by their respective coef-
                       ficients. The problem is that the beginning of the shift register keeps moving to
                       a lower address. However, since we know that the input address pointer is point-
   362   363   364   365   366   367   368   369   370   371   372