FPGA实现滤波器

一.实验任务

利用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     [9:0]
  • 23
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值