DSP Builder: Half-Band Filter Using Distributed Arithmetic (DA) & Time-Domain Multiplexing (TDM)
The design example describes an interpolation by two half-band filter with 79 taps (40 none-zero coefficients). Taking advantage of the symmetrical filter coefficients and the concept of time-domain multiplexing (TDM), the design requires only ten multipliers. The multipliers are implemented using distributed arithmetic (DA) where the partial products are stored in the M4K TriMatrix™ memory blocks. The M4K memory blocks are configured as 128x32 dual-port RAMs.
Download the files used in this example:
Files in the zip download include:
- HBF_DA_Timeshare.mdl—DSP Builder design file implementing the interpolating half-band filter
- init.m—MATLAB script to initialize the sampling time, and simulation time and coefficients. The script also generates the stimuli: chirp and impulse.
- compute_partial_product.m—MATLAB script to calculate the partial products based on the initial filter coefificient values set in init.m. Two sets of partial products are calculated for each coefficient value: one for the MSB segment and the other for the LSB segment of the data. Since the design uses TDM, each LUT stores the partital product for two coefficients.
Figure 1 shows the top-level diagram of the half-band filter design example in DSP Builder.
Figure 1. Half-Band Filter Top-Level Diagram

View full size
Table 1 lists the ports and gives a description for each.
| Table 1. Half-Band Filter Port Listing |
| Port Name |
Type |
Description |
input_data[17:0] |
Input |
18-bit data inputs to complex multiplier unit |
clken |
Input |
Clock enable |
FirResult[18:0] |
Output |
19-bit data output of filter |
Related Links
For more information on related features used in this design example in your project, go to:
|