Multi Channel Finite Impulse Filter Core
Overview
Finite Impulse Response (FIR) filters are important building blocks in signal processing.
beam processing, diffraction compensation, equalisation and various signal processing applications. Many applications often involve filtering multiple data channels simultaneously, raising concerns about resource utilization. This design implements a multi-channel FIR filter (MFF) which allows multiple FIR filters to use the same hardware in a sequential manner, optimizing resource utilization. This MFF is a viable solution particularly suited for scenarios characterized by low data rates relative to the system clock.
In this design, data and coefficient widths, number of data channels and filter taps are all user selectable. All FIR filters have an identical number of taps. Filter taps can have the same or different values. MFF output width, as well as internal multiplier output width are also user selectable. This allows the user to optimize the filter outputs and resource utilization.
Coefficients can be written/read though a coefficient interface as shown below,
Coefficient Interface Signals | |||
Coef_En | Coefficient Enable | In | std_logic |
Coef_We | Coefficient Write Enable | In | std_logic |
Coef_Adr | Coefficient Address | In | std_logic_vector |
Coef_Data_Wr | Coefficient write data | In | std_logic_vector |
Coef_Data_Rd | Coefficient read data | Out | std_logic_vector |
The MFF is implemented using VHDL and capable of being used on any FPGA/ASIC architecture.
Features
- Multi Channel FIR filter
- Selectable data and coefficient widths
- Selectable number of data channels
- Selectable number of filter taps
- Selectable output width
- Selectable inner multiplier output width
- Resource sharing
- Fully synchronous design using only one clock
- Area/Power efficient RAM based architecture
- Coefficient read back available
- Low latency
- Multiple MFFs can be combined in parallel to form MFF banks
Deliverables
- Synthesizable RTL source code in VHDL
- Comprehensive verification test bench and vectors in VHDL
- Integration documentation and user guide
Performance
Maximum clock speed depends on the application process but typically is at least 160 MHz for a 65 nm ASIC process. Clock speeds of greater than 160 MHz have been achieved for FPGA.s i.e. Microsemi Polarfire. The resource utilization is given for 24 bit coefficient and input data, and 24 bits output, with 32 bits internal multiplier output.
FPGA implementation (Polarfire FPGA MPF300T) | |||
Number of FIR filters/ Number of Filter Taps | 64 | 128 | 256 |
16 | 170Mhz | 165Mhz | 160Mhz |
32 | 165Mhz | 160Mhz | 160 |
FPGA implementation (Polarfire FPGA MPF300T) | |||
Number of FIR filters/ Number of Filter Taps | 64 | 128 | 256 |
16 | 520 Dffs, 4 Dsp blocks, 81.5 kbits RAM | 524 Dffs, 4 Dsp blocks, 121.5 kbits RAM | 536 Dff, 4 Dsp blocks, 201.5 kbits RAM |
32 | 524 Dffs, 4 Dsp blocks, 121.5 kbits RAM | 536 Dff, 4 Dsp blocks, 201.5 kbits RAM | 541 Dff, 4 Dsp blocks, 481.5 kbits RAM |
Note 1: Clock Rate = 100 MHz
Specifications subject to change without notice. Information furnished by Paragon is believed to be accurate and reliable. However, no responsibility is assumed by Paragon for its use. All company and product names are trademarks or registered trademarks of their respective owners. All rights reserved. © 2011 Paragon Limited.