基于Verilog实现一维数字信号处理算法(FIR滤波器)
更新时间:2023-10-02 09:59:01 阅读量: 综合文库 文档下载
广东工业大学研究生课程考试试卷封面
学院: 专业: 姓名: 学号: 考试科目: 学生类别:
题号 1 2 3 4 5 6 7 8 合计 平时成绩 总评成绩 分数 考试时间: 第 周星期
( 年 月 日)
开课单位:
开课学期: 年秋季
任课教师:
说明:1.以上左栏学生填写,右栏老师填写; 2.学位课考试的答题均写在答题纸上,考查课若无课堂考试可不用答题纸,但仍应填写此页封面; 3.平时成绩根据任课教师所写的课程教学大纲规定评定; 4.任课教师评完分后从网上录入成绩,再打印成绩单一式两份连同试卷、答题纸交教务员保管(保管四年)。
1.设计内容
本设计是一个基于FPGA的一维数字信号处理算法的FIR的设计,设计使用Verilog语言编写FIR滤波器的模块,通过编译和综合,并通过MATLAB和modelsim仿真对比验证设计结果。
2.设计原理
有限冲击响应(FIR)滤波器和无限冲击响应(IIR)滤波器广泛应用于数字信号处理系统中。IIR数字滤波器方便简单,但它相位的线性,要采用全通网络进行相位校正。图象处理以及数据传输,都要求信道具有线性相位特性,而有限冲击响应(FIR)滤波器既具有严格的线性相位,又具有任意的幅度。
与此同时FIR滤波器还具有以下优点:
(1)FIR滤波器的单位抽样响应是有限长的, 在有限z平面上不存在极点,其运算结构中不存在反馈支路,即没有环路,因而滤波器性能稳定。
(2)只要经过一定的延时,任何非因果有限长序列都能变成因果的有限长序列,因而能用因果系统来实现。
(3)FIR滤波器由于单位冲击响应是有限长的,因而可用快速傅里叶变换(FFT)算法来实现过滤信号,可大大提高运算效率,因此越来越受到广泛的重视。
如果h(n)的长度为N,则它的系统函数和差分方程一般具有如下形式:
H(z)??h(n)z?n
n?0N?1y(n)??h(m)x(n?m)
m?0N?1根据差分方程直接画出FIR滤波器的结构,称为直接型结构。如图所示:
图2.1 FIR滤波器直接结构
FIR滤波器的特点:(1)系统的单位冲击响应h(n)在有限个n值处不为零。(2)系统函数
H(z)在|z|>0处收敛,极点全部在z=0处(稳定系统)。(3)结构上主要是非递归结构,没有输出到输入的反馈,但有些结构中(例如频率抽样结构)也包含有反馈的递归部分。
对线性时不变系统保持线性相位的条件是:单位脉冲响应为偶对称或奇对称。即:
为设计线性滤波器,应保证h(n)为对称的。
1)若N为偶数,其线性相位FIR滤波器的对称结构流图:
图2.2 若N为偶数线性相位FIR滤波器的对称结构流图
图中:“ +1 ” 对应偶对称情况,“ -1 ” 对应奇对称情况。当n为奇数时,最后一个支路断开。
2)若N为奇数,其线性相位FIR滤波器的对称结构流图:
图2.3 N为奇数线性相位FIR滤波器的对称结构流图
在本设计中,我们采用线性FIR低通滤波器,所采用的阶数N=8,所以是偶对称的,估采取图2.2的结构,其中“±1“取“+1”。
3.设计思路
由上面的FIR滤波器的对称结构流图,可知要在FPGA上实现FIR滤波器,首先要确定滤波器的抽头系数h(n)。其系数的确定,我们可以通过两种办法来实现:第一种就是通过
MATLAB编写FIR滤波器程序,然后直接导出抽头系数 “h(n)”;另外一种办法就是使用MATLAB自带的FDATOOL简便地设计一个FIR滤波器,然后导出系数。考虑到要更直观地描述FIR滤波器的设计,我采用了第一种方法,用编写MATLAB代码的方式设计一个FIR低通滤波器。
设计好滤波器后,接着就是准备一维数字信号(语音信号),通过滤波器的滤波,看能把语音信号中的高频的信号滤除,只剩下低频的信号,从而验证滤波器的性能。然后再把语音信号保存起来,以供后面验证用Verilog设计的FIR滤波器模块使用。这里面涉及到怎样读取音频文件的问题,这就需要了解音频文件的格式(.wav),每个音频文件都有文件头,这个文件头就包含了音频文件的很多像类似采样率这样的信息。文件头后就是具体的语音信号。
做好准备工作后,就可以在QUARTUSII里面编写Verilog代码了。由于是硬件描述语言,所以设计的思路很简单,就是通过把输入序列移位,然后首位对称相加再乘以抽头系数,然后把相乘结果再相加最后给输出。其中涉及的难点是FPGA对有符号小数的乘法处理部分。
在QUARTUSII编写好模块之后,就要用到modelsim来对设计进行仿真。对于仿真信号的输入,我们可以添加一个altera的romIP核来存放之前用MATLAB读取的语音信号,然后通过时钟的驱动一个一个输入到FIR滤波器模块,最后在modelsim中显示滤波器的输出结果,同时把滤波器的输出结果保存起来,以备最后用来跟用MATLAB设计的滤波器的结果作对比。
验证的最后一步,就是要把modelsim输出的仿真结果用MATLAB进行绘图,和之前MATLAB的仿真输出结果进行比较,从而验证滤波器的设计是否成功。
4.设计过程
1)用MATLAB仿真FIR滤波器
用MATLAB仿真设计线性FIR滤波器,首先要确定其指标,在本设计里,我们规定滤波器的指标如下:阶数N=8,截止频率为12.5Hz。用加汉明窗函数的方法设计FIR滤波器。根据此可以编得MATLAB代码如下:
据此可以求得滤波器抽头系数h(n)为:
h = 0.0028 0.0298 0.1259 0.2325 0.2325 0.1259 0.0298 0.0028
由于FPGA不支持浮点数的运算,所以我们采用定点数的格式来量化抽头系数。对于16位的输入数据,我们这里采用Q11的定点小数格式,即11位小数位,4位整数位,1位符号位。将抽头系数乘以2^11可得:
b = 5 60 257 476 476 257 60 5 这样我们就得到了8阶FIR滤波器的量化系数了。
确定好FIR滤波器的系数了,再接着就是准备需要处理的语音信号作为FIR滤波器的输入数据。语音信号是以.wav格式存储的音频文件,这种格式的音频文件,都是有文件头的,文件头里包含许多有用的信息,例如,采样频率、声道数、文件长度等这类的详细信息。所以要想准确的读取的语音信号的采样值,必须知道音频信号的格式。
在这里,采用了自定义函数read_wav读取.wav格式的音频文件的方式读取语音信号。用读取的语音信号分别与滤波器系数进行卷积运算,可以得到滤波器后的结果。代码和结果如下图所示:
正在阅读:
基于Verilog实现一维数字信号处理算法(FIR滤波器)10-02
参考家庭理财规划书03-27
大连理工大学毕业设计有关规定03-18
室分弱覆盖分析流程及案例10-04
美不胜收的意思02-07
宁波市蔬菜零售商家名录2018版226家 - 图文01-29
会展经济的定义及发展11-14
濮阳电大本科英语--董予华--修改06-18
远程教育培训感言(小编推荐)08-22
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 一维
- 信号处理
- 滤波器
- 算法
- 基于
- Verilog
- 实现
- 数字
- FIR
- 施工组织课程设计任务书(1)
- 2014国家公务员面试热点:图片中领导“悬空”
- 浙江省2012年10月高等教育自学考试食品分析技术试题
- 2016下半年教师资格《综合素质》写作答题技巧
- 软件工程
- 中国少年先锋队迎泽街小学大队入队仪式主持词
- 对口单招高二英语期末试卷(附答案)
- 碳捕捉(Carbon capture and storage,简称CCS)
- 苯甲酸乙酯的合成 - 实验报告
- 关于省属国有煤炭企业兼并重组中小煤矿有关问题的会议纪要
- 大赛 领导致辞
- 2018年江苏省扬州市中考语文试题(word版,含答案解析)
- 西门子数控车床程序编辑教程
- 通信原理实验报告
- OLT设备
- 第五、六单元检测卷
- 2019土方工程检验批质量验收记录表范例(人防工程附原始记录及填写说明) - 图文
- C5 第4章 图形的编辑(课后思考及练习)
- 小学一年级新生家长会发言稿
- 2010年中考数学试题分类汇编(150套)专题专题08 - 二元一次方程组