一.实验任务
利用FPGA实现下图结构:
相关数据文件:
链接:https://pan.baidu.com/s/1qMWcC5Tha1ynTTour144oA?pwd=1234
提取码:1234
二.设计思路
根据PDF的内容梳理流程如下:
①先将输入的数据打拍22次,将相应的打拍数据相加寄存,中间打拍数据寄存一次
②将①的结果和对应抽头系数相乘寄存
③将②的结果两两相加寄存
④将③的结果两两相加寄存
⑤将④的结果两两相加,多的一位寄存一次
⑥将⑤的结果相加寄存
⑦输出⑥的结果
注意:这里的数据存在正负情况,定义变量的时候要加上signed。
三.代码实现
/**********************************************************
// Copyright 2022.05-2025.05
// Contact with xxxxxxxxx@qq.com
================ xxx.v ======================
>> Author : lj
>> Date : 20XX/XX/XX
>> Description :
>> note :
>> :
>> V180121 :
************************************************************/
module fir(
input clk ,//时钟信号
input rst_n ,//复位信号
input signed [7:0] din ,//输入数据
input din_vld ,//输入数据有效
output signed [26:0] dout ,//输出数据
output dout_vld //输出数据有效
);
//参数定义
parameter //定义抽头系数
h0 = 814 ,//11 0010 1110
h1 = 1600 ,//110 0100 0000
h2 = 3728 ,//1110 1001 0000
h3 = 6573 ,//1 1001 1010 1101
h4 = 9229 ,//10 0100 0000 1101
h5 = 10824 ,//10 1010 0100 1000
h6 = 10824 ,
h7 = 9229 ,
h8 = 6573 ,
h9 = 3728 ,
h10 = 1600 ,
h11 = 814 ;
//信号定义
reg signed [7:0] x[22:0] ;
reg signed [7:0] x11_r ;
reg signed