数字滤波器笔记(三)基于高云的FIR滤波器
系统概述 系统时钟为24MHz,使用高云GW2A FPGA从AD9280读取数据后经过一个FIFO作为缓冲,经FIR滤波器处理之后使用AD9708输出。AD9280与AD9708都使用八位并口传输数据。FIFO与FIR滤波器使用高云IP核。FIR滤波器系数使用Matlab的FDATOOL生成。 滤波器系数生成 到处时选择导出为C头文件,这样系数是有符号十进制数。将这些系数复制到一个文本文件中,一行一个系数,不要有其他符号。 IP核生成 选择’Advanced FIR Filter’IP核。 我在上一个步骤中生成的FIR系数是偶对称、偶整数,具有50个抽头系数,为14位量化。因此’FIR Type’选择’fir symmetry’以节省硬件资源。下方的’Coefficient File’选择上一步骤中的文本文件。 FIFO我选择了异步FIFO,为以后的拓展留下空间。 代码 module top ( input clk, input rst_n, output da_clk, output reg [7:0] da_data, output ad_clk, input [7:0] ad_data ); assign ad_clk = clk24m; assign da_clk = clk24m; wire fir_valid_out; wire fir_sync_out; wire [20:0] fir_data_out; wire signed [7:0] signed_fifo_dout; assign signed_fifo_dout = fifo_dout - 8'd128; Advanced_FIR_Filter_Top u_fir( .clk(clk24m), //input clk .rstn(rst_n), //input rstn .fir_rfi_o(), //output fir_rfi_o ....