You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A Generic Custom Transposed Form FIR Filter AXI IP with parametrizable order & Signal Width
HARDWARE
A. DESIGN
Parametrized FIR Filter with parametrizable order & Signal Width.
Transposed form for higher performance
AXI Wrapper with AXI lite slave , AXI stream slave & AXI stream master for easy IP integration
AXI Lite interface for saving filter coefficients & Controlling the Filter
AXI Stream Master & Slave interfaces for moving signal to be filtered
B. Simulation (MATLAB vs HW)
Noisy signal was generated using MATLAB the stimulus was used in the testbench to verify the Filter.
MATLAB
Questasim
AXI Lite signals
AXI Stream and Filterd Signal
C. FPGA Implementation & Testing
The filter was packaged as a Custom AXI IP & prototyped on the ZYNQ US+ MPSoC AVNET U96 Board as a part of the PL controlled by the ARM Cortex A53 PS
VIVADO IPI
SYSTEM ILA
Probing the AXI Bus between th Zynq PS and The Filter & the Filter Master & Slave AXI stream Bus
Perfomance
The used clock period is 10ns with 4.39ns +ve setup slack without pipelinig the DSP48 slices
TEST SOFTWARE
A unit test software was developed to fully test the FPGA implementation of the filter using direct register read/write for the 2 FIFOs and the Filter. The software includes my_fir_filter.h, which has u32 fir_init() that
Writes the FIR coefficients to the filter
Starts the filter
Reads the coefficients back
thus testing the AXI Lite filter interface.
The fir_test.c file
Initializes the Tx and Rx FIFOs
Sends a MATLAB-generated noisy sin signal
Reads the Rx FIFO output and compares it to the MATLAB-generated output, reporting any mismatches.
Register Space
Register Name
Description
Size (bits)
Address (Hex)
CTRL
Control register
1
BASE_ADDR
Coefficient 0
Filter coefficient 0
FILTER_DATA_WIDTH
BASE_ADDR + 0x4
Coefficient 1
Filter coefficient 1
FILTER_DATA_WIDTH
BASE_ADDR + 0x8
...
...
...
...
Coefficient TAPS
Filter coefficient N
FILTER_DATA_WIDTH
BASE_ADDR + 4*TAPS
Test Results
No Mismacthes between MATLAB and the FIR filter output read by the ARM A53