基于fpga的fir滤波器的设计与仿真(编辑修改稿)内容摘要:

指定阶数)和 Minimum order(最小阶数)。 在 Specify order 中填入所要设计的滤波器的阶数( n阶滤波器, specify order= n1),如果选择 Minimum order则 matlab 根据所选择的滤波器类型自动使用最小阶数。 本次作业要求设计 16阶滤波器,所以选定 Specify order 并填入 15。 Frenquency Specifications 选项,可以详细定义频带的各参数,包括采样频率 Fs和频带的截止 频率。 它的具体选项由 Response Type选项和 Design Metho选项决定。 我们要求的 Lowpass(低通)滤波器只需要定义 Fs=80 KHz、 Fc=10 KHz。 本次课设中的参数全部设定后的结果如图 51所示。 图 51 参数全部设定后图 13 参数设定完毕,单击工具窗口下方的 Design Filter 按钮,就开始进行相关参数计算。 在计算结果中可以看到该滤波器的一些相关曲线,如幅频响应(如图52)、相频响应(如图 53)、冲激响应(如图 54)等。 图形如下: 图 52 幅频响应曲线 图 53 相频响应曲线 14 图 54 冲激响应 计算的结果可通过 File 下拉菜单中的 Export 命令取出,点击 Export 打开Export 对话框(如图 55),点击 Export 按钮可将滤波器系数数据存放到当前工作空间,并以 Num命名。 图 55 冲激系数输出对话框 保存并关闭滤波器设计分析工具回到 matlab主窗口,在命令编辑区输入 Num可得到工具的计算结果(如图 56)。 图 56 输出在 matlab的冲激系数 对 FIR 滤波器的系数进行调整,做整数化操作。 可得到滤波器整数化的系 数为 [31 88 106 54 70 239 401 499 499 401 239 70 54 106 88 31],如图 57所示: 15 图 57 整数化后的冲激系数 单元器件的编辑及仿真 、寄存器模块 在本次课设中延迟单元可用寄存器来替代,寄存器用于寄存一组二值代码,只要求它们具有置 置 0的功能即可。 在本设计中使用带异步复位 rst 端的 D触发器,当 rst=1 时,输出信号 q=0,当 rst=0 且上升沿脉冲到达时 q=d,即延迟了一个在周期。 其程序代码如下: LIBRARY ieee。 USE。 ENTITY jicunqi IS PORT (rst,clk: IN STD_LOGIC。 d:IN STD_LOGIC_VECTOR (9 DOWNTO 0)。 q:OUT STD_LOGIC_VECTOR (9 DOWNTO 0))。 END jicunqi。 ARCHITECTURE dff16 OF jicunqi IS BEGIN PROCESS (rst,clk) BEGIN IF(rst=39。 139。 )THEN q=(OTHERS=39。 039。 )。 ELSIF(clk39。 EVENT AND clk=39。 139。 )THEN q=d。 END IF。 END PROCESS。 END dff16。 程序编译后就可进行仿真,仿真结果如图 58 所示: 图 58 寄存器模块 仿真结果 16 由上图可知,与预期相符,即设计正 确,再将其生成为一个元件以便后来调用,其生成图如图 59 所示。 图 59 寄存器元件图 、加法器模块 即实现两个有符号数的相加运算。 即将输入的两数,在时钟脉冲到来时相加运算,输出结果。 在本设计中共有 8个: 两个 10位有符号数相加产生一个 11位有符号数的加法器、一个 18 位和 19位有符号数相加产生 20 位有符号数的加法器、一个两个 20 位有符号数相加产生一个 21 位有符号数的加法器、一个两个 19 位有符号数相加产生一个 20 位有符号位数的加法器、一个 20 位和 21 位有符号数相加产生 22 位有符号数的加法 器,以及一个 20位和 22 位有符号数相加产生 23 位有符号数的加法器电路。 具体如下: ⑴ 两个 10 位有符号数相加产生一个 11 位有符号数的加法器设计: 由分析可写出如下程序: LIBRARY ieee。 USE。 USE。 ENTITY add101011 IS PORT(a,b: IN SIGNED(9 DOWNTO 0)。 clk: IN STD_LOGIC。 s:OUT SIGNED(10 DOWNTO 0))。 END add101011。 ARCHITECTURE sum101011 OF add101011 IS BEGIN PROCESS(clk) BEGIN IF(clk39。 EVENT AND clk=39。 139。 )THEN s=(a(9)amp。 a)+(b(9)amp。 b)。 END IF。 END PROCESS。 END sum101011。 程序编译后就可进行仿真,仿真结果如图 510 所示: 17 图 510 两个 10 位有符号数相加结 果波形图 由上图可知,与预期相符,即设计正确,再将其生成为一个元件以便后来调用,其生成图如图 511 所示 图 511 两个 10 位有符号数相加元件图 ⑵ 18 位和 19 位有符号数相加产生 20 位有符号数的加法器设计: 由分析可写出如下程序: LIBRARY ieee。 USE。 USE。 ENTITY add181920 IS PORT(a: IN SIGNED(17 DOWNTO 0)。 b: IN SIGNED(18 DOWNTO 0)。 clk: IN STD_LOGIC。 s:OUT SIGNED(19 DOWNTO 0))。 END add181920。 ARCHITECTURE sum7023918 OF add181920 IS BEGIN PROCESS(clk) BEGIN IF(clk39。 EVENT AND clk=39。 139。 )THEN s=(a(17)amp。 a(17)amp。 a)+(b(18)amp。 b)。 END IF。 END PROCESS。 END sum7023918。 程序编译后就可进行仿真,仿真结果如图 512 所示: 图 512 18 位和 19 位有符号数相加结果波形图 由上图可知,与预期相符,即设计正确,再将其生成为一个元件以便后来调用,其生成图如图 513 所示 图 513 18 位和 19 位有符号数相加元件图 18 ⑶ 两个 20 位有符号数相加产生一个 21 位有符号数的加法器设计: 由分析可写出如下程序: LIBRARY ieee。 USE。 USE。 ENTITY add202021 IS PORT(a: IN SIGNED(19 DOWNTO 0)。 b: IN SIGNED(19 DOWNTO 0)。 clk: IN STD_LOGIC。 s:OUT SIGNED(20 DOWNTO 0))。 END add202021。 ARCHITECTURE sum40149919 OF add202021 IS BEGIN PROCESS(clk) BEGIN IF(clk39。 EVENT AND clk=39。 139。 )THEN s=(a(19)amp。 a)+(b(19)amp。 b)。 END IF。 END PROCESS。 END sum40149919。 程序编译后就可进行仿真,仿真结果如图 514所示: 图 514 两个 20 位有符号数相加结果波形图 由上图可知,与预期相符,即设计正确,再将其生成为一个元件以便后来调用,其生成图如图 515 所示 图 515 两个 20 位有符号数相加元件图 ⑷ 两个 19 位有符号数相加产生一个 20 位有符 号位数的加法器设计: 由分析可写出如下程序: LIBRARY ieee。 USE。 USE。 ENTITY add191920 IS PORT(a: IN SIGNED(18 DOWNTO 0)。 b: IN SIGNED(18 DOWNTO 0)。 clk: IN STD_LOGIC。 s:OUT SIGNED(19 DOWNTO 0))。 END add191920。 ARCHITECTURE sum181819 OF add191920 IS BEGIN PROCESS(clk) BEGIN IF(clk39。 EVENT AND clk=39。 139。 )THEN s=(a(18)amp。 a)+(b(18)amp。 b)。 END IF。 END PROCESS。 19 END sum181819。 程序编译后就可进行仿真,仿真结果如图 516 所示: 图 516 两个 19 位有符号数相加结果波形图 由上图可知,与预期相符,即设计正确,再将其生 成为一个元件以便后来调用,其生成图如图 517 所示 图 517 两个 19 位有符号数相加元件图 ⑸ 20 位和 21 位有符号数相加产生 22 位有符号数的加法器: 由分析可写出如下程序: LIBRARY ieee。 USE。 USE。 ENTITY add202122 IS PORT(a: IN SIGNED(19 DOWNTO 0)。 b: IN SIGNED(20 DOWNTO 0)。 clk: IN STD_LOGIC。 s:OUT SIGNED(21 DOWNTO 0))。 END add202122。 ARCHITECTURE sum192021 OF add202122 IS BEGIN PROCESS(clk) BEGIN IF(clk39。 EVENT AND clk=39。 139。 )THEN s=(a(19)amp。 a(19)amp。 a)+(b(20)amp。 b)。 END IF。 END PROCESS。 END sum192021。 程序编译后就可进行仿真,仿真结果如图 518 所示: 图 518 20 位和 21 位有符号数相加结果波形图 20 由上图可知,与预期相符,即设计正确,再将其生成为一个元件以便后来调用,其生成图如图 519 所示 图 519 20 位和 21 位有符号数相加元件图 ⑹ 20 位和 22 位有符号数相加产生 23 位有符号数的加法器电路设计(最后一级带舍位): 在此加法器电路中在引入低位舍去功能只保留最终 10 位输出,最终保留 10位输出采用了直接取输出 23 位数的高十位的方法,因此在输出中近似等于除掉了 2^13即 8192以后的 结果。 为了比较,特又引出了一个 23位全输出引脚( quan)。 其程序如下: LIBRARY ieee。 USE。 USE。 ENTITY add202223 IS PORT(a: IN SIGNED(19 DOWNTO 0)。 b: IN SIGNED(21 DOWNTO 0)。 quan: OUT SIGNED(22 DOWNTO 0)。 clk: IN STD_LOGIC。 s:OUT SIGNED(9 DOWNTO 0))。 END add202223。 ARCHITECTURE sum192110 OF add202223 IS BEGIN PROCESS(clk) VARIABLE c:SIGNED(22 DOWNTO 0)。 BEGIN IF(clk39。 EVENT AND clk=39。 139。 )THEN c:=(a(19)amp。 a(19)amp。 a(19)amp。 a)+(b(21)amp。 b)。 END IF。 s=c(22 DOWNTO 13)。 quan= c。 END PROCESS。 END sum192110。 程序编译后就可进行仿真,仿真结果如图 520 所示 图 520 20 位和 22 位有符号数相加 结果波形图 由上图可知,与预期相符,即设计正确,再将其生成。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。