高通FIR数字滤波器设计verilog要点_第1页
高通FIR数字滤波器设计verilog要点_第2页
高通FIR数字滤波器设计verilog要点_第3页
高通FIR数字滤波器设计verilog要点_第4页
高通FIR数字滤波器设计verilog要点_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、电子科技大学201222240937高通fir数字滤波器设计asic课程设计报告二学姓 名课题题目2013年5月fir数字滤波器设计已知fir型数字滤波器的z域系统函数为:h( z) = 0.25 (1 3.5z' 4z 3.5z" z")即:h( z) = 0.125 (2 7z,8z2 7z,2z")要求如下:?设计平台:基于quartus ii或ise平台,选择altera cyclone ii系列的 ep2c8f256c8 或xilinx sparten3 系歹用勺 xc3s400(pq208);? testbench的信号输入激励源使用matla

2、b生成三角波信号;?输入位宽16位,输出位宽24位,中间级可自行截位;设计(1)直接型fir设计画出直接实现结构的框图,完成其 verilog hdl电路描述及testbench ,完成 功能仿真和时序仿真,给出仿真波形图;h(4)直接型结构框图如下h(3)上+ yn(23:0)h(0)h(1)h(2)vvif+ +长度为m的因果有限冲激响应滤波器由传输函数 h (z)描述:m 4h(z)=z h(k)z"(1)k=0它是次数为m-1的z-1的一个多项式。在时域中,上述有限冲激响应滤波器 的输入输出关系为:m 4y(n)=e h(k)x(n -k)(2)k =0其中y (n)和x (

3、n)分别是输出和输入序列。有限冲激响应滤波器的一种直接型实现,可由式(2)生成,m=5的情况如 上图所示。通常一个长度为 m的有限冲激响应滤波器由 m个系数描述,并且需要m个乘法器和(m-1)个双输入加法器来实现。本设计包含的模块有4个16位寄存器块、5个16位乘法器、4个32位加法器模 块用quartus ii综合,顶层模块框图如下:寄存器用于寄存一组二值代码,只要求它们具有置1、置0的功能即可。在本设计中用d触发器组成寄存器,实现寄存功能。本设计中使用带异步复位 reset_n 端的 d触发器,当 reset_n=1 时,输出信号 q_out=d_in ,当 reset_n=0 且上升沿脉

4、冲到达时q_out=0 o其综合框图部分截图如下图所示。qmout15.0hreg0 toe-i- 口q d_in13cz> 力利111二> g_in101ld_in5ir >- =-=. 伸 212bu 区盯dkp 田14 ininulnlnlnetinlnh i- i- .inj i- i-sei- i- m d d - d d d e d d1>1_outq1=>q_out2ioutlsl匚al。叫町_out5峋匚i x_outi1o1匚>l一口叫1幻匚>1_。叫1司匚>_。叫15d_in4j程序代码如下:module dff16(rese

5、t_n,clk,d_in,q_out);input reset_n,clk;input 15:0d_in;output reg 15:0q_out;always (posedge clk or negedge reset_n)beginif(!reset_n)q_out<=16'h0;elseq_out<=d_in;endendmodule在顶层文件中例化了 d1、d2、d3、d4四个寄存器模块dff16 d1(.reset_n(reset_n),.clk(clk),.d_in(x_in),.q_out(q1),d2(.reset_n(reset_n),.clk(clk),

6、.d_in(q1),.q_out(q2),d3(.reset_n(reset_n),.clk(clk),.d_in(q2),.q_out(q3), d4(.reset_n(reset_n),.clk(clk),.d_in(q3),.q_out(q4);2、乘法器模块从资源和速度考虑,常系数乘法运算可用移位相加来实现。本设计采用加法 树乘法器兼顾了资源与速度,将每个乘数例化了 一个数组,然后移位相加得出乘 积,这样使得乘法运算可以一个周期内完成。程序代码如下:module mult16(outcome,a,b);input 15:0 a,b;output wire 31:0outcome;wir

7、e 30:0 temp0;wire 29:0 temp1;wire 28:0 temp2;wire 27:0 temp3;wire 26:0 temp4;wire 25:0 temp5;wire 24:0 temp6;wire 23:0 temp7;wire 22:0 temp8;wire 21:0 temp9;wire 20:0 temp10;wire 19:0 templl;wire 18:0 temp12;wire 17:0 temp13;wire 16:0 temp14;wire 15:0 temp15;function 15:0 mult16x1;input 15:0 operand

8、;input sel;beginmult16x1=(sel)?(operand):15'b0;endendfunctionassign temp15=mult16x1(a,b0);assign temp14=(mult16x1(a,b1)<<1);assign temp13=(mult16x1(a,b1)<<2);assign temp12=(mult16x1(a,b1)<<3);assign temp11=(mult16x1(a,b1)<<4);assign temp10=(mult16x1(a,b1)<<5);assign

9、 temp9=(mult16x1(a,b1)<<6);assign temp8=(mult16x1(a,b1)<<7);assign temp7=(mult16x1(a,b1)<<8);assign temp6=(mult16x1(a,b1)<<9);assign temp5=(mult16x1(a,b2)<<10);assign temp4=(mult16x1(a,b3)<<11);assign temp3=(mult16x1(a,b4)<<12);assign temp2=(mult16x1(a,b5)&l

10、t;<13);assign temp1=(mult16x1(a,b6)<<14);assign temp0=(mult16x1(a,b7)<<15);wire 31:0out1,c1,d1;wire 29:0out2;wire 27:0out3,c2;wire 25:0out4;wire 23:0out5,c3,d2;wire 21:0out6;wire 19:0out7,c4;wire 17:0out8;assign out1=temp0+temp1;assign out2=temp2+temp3;assign out3=temp4+temp5;assign o

11、ut4=temp6+temp7;assign out5=temp8+temp9;assign out6=temp10+temp11;assign out7=temp12+temp13;assign out8=temp14+temp15;assign c1=out1+out2;assign c2=out3+out4;assign c3=out5+out6;assign c4=out7+out8;assign d1=c1+c2;assign d2=c3+c4;assign outcome=d1+d2;endmodule其综合框图部分截图如下图所示本设计例化了 5个乘法器分别为m0,m1,m2,m3

12、,m4.mult16 m0(.outcome(mout0),.a(xjn),.b(8'd2),m1(.outcome(mout1),.a(q1),.b(8'd7),m2(.outcome(mout2),.a(q2),.b(8'd8),m3(.outcome(mout3),.a(q3),.b(8'd7),m4(.outcome(mout4),.a(q4),.b(8'd2);3、加法器模块由于本设计只涉及到相加,而没有减法,所以本加法器实现两个32位无符号数的相加运算。即将输入的两数,在时钟脉冲到来时相加运算,输出结果。由 于加法器相对于乘法器等模块占用的资

13、源少,所以本设计没有再单独设计加法 器,而是直接综合出加法器。程序代码如下:module add32(a,b,out);input 31:0a,b;output 34:0out;assign out=a+b;endmodule在本设计中共有4个加法器a1,a2,a3,a4add32 a1(.a(mout0),.b(mout1),.out(aout1),a2(.a(aout1),.b(mout2),.out(aout2),a3(.a(aout2),.b(mout3),.out(aout3),a4(.a(aout3),.b(mout4),.out(aout4);二、波形仿真首先用matlab产生一

14、个周期为16点位宽为16位三角波: n=1:7;x1(n)=n-1;n=8:15;x1(n)=15-n;x1 = x1 * 100;x2 =uint16(x1);,'wt+');fid = fopen('e:心x/verilog/design/fir/fir1/tri.txt'fprintf(fid,'%x'n',x2);fclose(fid);产生的三角波如下: n=1:15;subplot(3,1,1);stem(n,x1);subplot(3,1,2);x1fft=fft(x1);stem(n,abs(x1fft);三角波时域图三角

15、波频域图通过testbench模块将matlab产生的测试数据tri.txt,将各个模块添加到顶层图中联合测试,最终实现所需要的功能。测试代码如下所示:'timescale 1ns/1ps'define clock 50module test;reg clk,reset_n;reg 15:0x_in;reg 15:0data_mem0:15;integer i;wire 23:0y_out;always #'clock clk=clk;initialbeginclk=0;reset_n=1;#20 reset_n=0;#10 reset_n=1;endinitialbe

16、gin$readmemh("tri.txt",data_mem);endalways (posedge clk or negedge reset_n)beginif(!reset_n) beginx_in<=15'b0;i<=0;endelse if(i<=13) begin x_in<=data_memi;i<=i+1;endelse beginx_in<=data_memi;i<=0;endendfir_topfir(.reset n(reset n),.clk(clk),.x in(x in),.y out(y out

17、);endmodule产生的仿真波形如下图所示:ttest/dk0'i l.li j. - :.lldl.l:ll;lili.jjjuix'ijl.ll.fvlil'irmijelfllh'lrolli7tesl/reealt_n15pmpmimnminmnnmmumnnimn 1,:mninmmmj此杜0000000110010000jjp=rr_l"l1_._r飞一oqoooooddoodod11qq011111r-'h_rn''tt_1_p*"1t-tt->r1 .-t h-t i 1h加加jiahksto

18、towirtjumziesi/fraese.,stli i设计(2)直接型流水线fir设计对上述直接实现结构的fir数字滤波器给出几种使用流水线方法实现的结构 框图,并选择其中一种流水线型fir数字滤波器进行verilog hdl电路描述及相 应testbench ,完成功能仿真及时序仿真,给出仿真波形图;直接型二级流水线结构fir:xn(15:0)z-1t xhfz-1 十 z-1 - z-1x 1.y/ 6 hf直接型三级流水线结构fir:流水线寄存器流水线寄存器一、流水线设计以二级流水线为例,在乘法器与加法器中间插入一级寄存器,将电路分为两 级,这样可以增加电路的吞吐能力,并且降低了功耗

19、。电路实现:在前面直接型结构的基础上,在乘法器模块和加法器模块之间加 一级寄存器模块。1 .位寄存器模块程序代码如下:module reg32(clk,reset_n,in,out);input clk,reset_n;input 31:0in;output 31:0out;reg 31:0out;always (posedge clk or negedge reset_n) beginif(!reset_n)out<=31'd0;elseout<=in;endendmodule本设计例化了 5个32位寄存器,分别为r0,r1,r2,r3,r4. reg32 r0(.clk

20、(clk),.reset_n(reset_n),.in(mout0),.out(re0),u(.clk(clk),.reset_n(reset_n),.in(mout1),.out(re1), r2(.clk(clk),.reset_n(reset_n),.in(mout2),.out(re2), r3(.clk(clk),.reset_n(reset_n),.in(mout3),.out(re3), r4(.clk(clk),.reset n(reset n),.in(mout4),.out(re4);其综合后的结构框图如下图所示:1 bj 1- 1 u s* 1- ki u - j s-

21、-i j sb ibnlnfr 驾叫用灯 e向灯1011饵g 2lelgm! 3 皿 022-加2slkk2£030131 ulmlll2 .流水线顶层模块加入流水线后,顶层模块代码如下:module fir_top(reset_n,clk,x_in,y_out);input clk,reset_n;input 15:0x_in;output23:0y_out;wire 15:0q1,q2,q3,q4;wire 31:0mout0,mout1,mout2,mout3,mout4;wire 31:0re0,re1,re2,re3,re4;wire 34:0aout1,aout2,aou

22、t3,aout4;dff16 d1(.reset_n(reset_n),.clk(clk),.d_in(x_in),.q_out(q1), d2(.reset_n(reset_n),.clk(clk),.d_in(q1),.q_out(q2), d3(.reset_n(reset_n),.clk(clk),.d_in(q2),.q_out(q3), d4(.reset_n(reset_n),.clk(clk),.d_in(q3),.q_out(q4);mult16 m0(.outcome(mout0),.a(xjn),.b(8'd2), m1(.outcome(mout1),.a(q1

23、),.b(8'd7), m2(.outcome(mout2),.a(q2),.b(8'd8), m3(.outcome(mout3),.a(q3),.b(8'd7), m4(.outcome(mout4),.a(q4),.b(8'd2);reg32 r0(.clk(clk),.reset_n(reset_n),.in(mout0),.out(re0), r1(.clk(clk),.reset_n(reset_n),.in(mout1),.out(re1), r2(.clk(clk),.reset_n(reset_n),.in(mout2),.out(re2),

24、r3(.clk(clk),.reset_n(reset_n),.in(mout3),.out(re3), r4(.clk(clk),.reset_n(reset_n),.in(mout4),.out(re4);add32 a1(.a(re0),.b(re1),.out(aout1), a2(.a(aout1),.b(re2),.out(aout2), a3(.a(aout2),.b(re3),.out(aout3), a4(.a(aout3),.b(re4),.out(aout4);assign y_out=aout434:11;endmodule用quartus ii综合出的框图截图如下:二

25、、波形仿真首先用matlab产生一个周期为16点位宽为16位三角波:n=1:7;x1(n)=n-1;n=8:15;x1(n)=15-n;x1 = x1 * 100;x2 =uint16(x1);fid = fopen('e:心x/verilog/design/fir/fir2/tri.txt', 'wt+');fprintf(fid,'%x'n',x2);fclose(fid);产生的三角波如下:n=1:15;subplot(3,1,1);stem(n,x1);subplot(3,1,2);x1fft=fft(x1);stem(n,abs

26、(x1fft);三角波时域图三角波频域图通过testbench模块将matlab产生的测试数据tri.txt,将各个模块添加到顶层图中联合测试,最终实现所需要的功能。测试代码如下所示:'timescale 1ns/1ps'define clock 50module test;reg clk,reset_n;reg 15:0x_in;reg 15:0data_mem0:15;integer i;wire 23:0y_out;always #'clock clk=clk;initialbeginclk=0;reset_n=1;#20 reset_n=0;#10 reset_

27、n=1;endinitialbegin$readmemh("tri.txt",data_mem);endalways (posedge clk or negedge reset_n) beginif(!reset_n) begin x_in<=15'b0;i<=0;endelse if(i<=13) begin x_in<=data_memi;i<=i+1;endelse begin x_in<=data_memi;i<=0;endendfir_top fir(.reset_n(reset_n),.clk(clk),.x_i

28、n(x_in),.y_out(y_out);endmodule产生的仿真波形如下图所示:i?旧身乂嘴翦工;腌黑)帝髓匐更 掇|符i侬匡丁闰1邸身科引京管盟| 0/test/ck.,附式,resel:_n01000000011111(x100小 est/p.our/lesta /lest/fii/clk /lest/fii/rese.ooodoooocoooioodi )111010ioxstgstljulniuuulluuirjuwnmmnnmnninihbjjjjjhhii jmnywwm$nrgindininiin wiiwwiiijiiiiijnnnnrlnnnnj直接结构的fir数字滤

29、波器流水线型fir数字滤波器进行性能比较。flov statussuaessfj -primay 31 17: squarlus hversionizlbum :43 01/31/2013srevismi namefr_ujptop-teviei eritity name足opfamilycydone 31deviceep2c5t144c8timing mb delsfin altotal logk etements586/%6d8 ( 13 % )total combinatjond fijnctions536 / 卑80 每(12%)decfated logic registers165/603 (4%)total

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论