




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
南京理工大学 EDA技术与应用课程实验报告电子线路设计实验报告名称: 基于FPGA的DDS和FIR滤波器的设计学号: 112040557姓名: 杨晨院系: 电子科技与光学工程学院指导教师: 蒋立平时间:20120407【摘要】:本文主要讨论了DDS的设计和32阶FIR数字滤波器的设计。首先给出了DDS和滤波器的应用背景。接着给出了总体的DDS和滤波器的设计方案,给出了DDS和滤波器的详细设计过程,包括各个模块的设计思想,电路图,VHDL程序代码。DDS的大致思想为通过频率控制字和相位控制字去控制正弦函数的ROM存储表的地址,达到输出需要波形的目的。数字滤波器大致为移位寄存器和乘法累加器的设计。 本实验的目的是通过DDS的输出正弦波形与经过滤波器的输出波形进行对比,达到滤波的效果。在此基础上,为了验证实验结果我们通过QuartusII的仿真工具对设计的DDS进行了仿真,并且还进行了理论分析,发现理论和实践结合的非常好。 除此以外,通过实际在实验板的调试,也发现了理论与实际不吻合时,要主动的查找错误,进而解决问题。 通过实验,我提升了自己的动手能力,解决未知问题的能力,查找资料的能力,把书本知识变为实际器件的能力,很有成就感。 【关键词】:DDS 数字滤波器 正弦波 VHDL致 谢首先感谢蒋立平老师对我在实验期间的悉心指导和耐心解答,其次要感谢安静同学为我指导一些注意事项,按时完成实验。在此要感谢安静,王文婷等同学在我写论文期间给我的一些建议和借鉴。一、设计要求:1.基本要求:(1)利用 QuartusII软件和SmartSOPC实验箱实现DDS的设计;(2)DDS中的波形存储器模块用Altera公司的Cyclone系列FPGA芯片中的ROM实现,ROM结构实现210X10类型;(3)具体参数要求:频率控制字 K 取 4 位;基准频率 fc=1MHz,由实验板上的系统时钟分频得到;(4)系统具有清零的功能;(5)利用实验箱上的D/A转换器件将ROM输出的数字信号转换为模拟信号,能够通过示波器观察到正弦波形;(6)通过开关(实验箱上的Ki)输入DDS的频率和相位控制字,并能用示波器观察加以验证。二、总体设计方案论证作者按:其实用FPGA设计一个DDS有很多种方法,可以用IP CORE去直接调用,可以用MATLAB中的DSP BUILDER 进行设计,也可以用VHDL语言和原理图进行设计,本次实验主要是对后者进行研究。1DDS的基本原理DDS的基本原理是利用采样定量,通过查表法产生波形。DDS的结构有很多种,其基本的电路原理可用下图来表示。 图2.1 DDS基本原理结构图中:字母K表示的是频率控制字;fclk表示时钟频率;fo表示DDS系统的输出频率;相位累加器是由一个N位的全加器和一个N位的相位寄存器构成的,相位累加器相当于以步长K做累加运算,累加的结果存储在相位寄存器中;我们把相位寄存器中的结果把作为地址码寻址ROM查找表。ROM查找表实际上就是一个相位/幅度转换设备,其中用二进制码存储着相位码以及对应的幅度码。相位寄存器的输出作为ROM查找表的地址(对应于查找表中的相位)进行寻址,每寻址一次,ROM查找表就输出一个对应的幅度值。每来一个时钟脉冲fclk加法器将控制字k与累加寄存器输出的累加相位数据相加,把相加后的结果送到累加寄存器的数据输入端,以使加法器在下一个时钟脉冲的作用下继续与频率控制字相加。这样,相位累加器在时钟作用下,不断对频率控制字进行线性相位加累加。由此可以看出,相位累加器在每一个时钟输入时,把频率控制字累加一次,相位累加器输出的数据就是合成信号的相位,相位累加器的输出频率就DDS输出的信号频率。接着,把相位累加器输出的数据作为波形存储器(ROM)的相位取样地址。这样就可把存储在波形存储器内的波形抽样值(二进制编码)经查找表查出(可以看成是一种映射),完成相位到相应幅值转换。波形存储器的输出送到 D/A 转换器,D/A转换器将数字量形式的波形幅值转换成所要求合成频率的模拟量形式信号。D/A 转换器之后还可以加上一低通滤波器用于滤除不需要的取样分量,以便输出频谱纯净的正弦波信号。而这个低通滤波器可以用 DSP编程完成,或者用FPGA编程实现。DDS输出信号的频率与基准时钟频率的关系由下式给定:(2.1)其中,fclk 为基准时钟频率,2N为波形存储器的字数,N为相位累加器的位数,K为频率控制字。一般的,K小于N。2.DDS的各模块设计:(1)分频电路分频电路的功能是产生计数器正常工作所需要的频率(1HZ),基准频率(1MHz),关键vhdl代码如下:library ieee;use ieee.std_logic_1164.all;entity fenpin1M isgeneric (n:integer:=48);port (clk:in std_logic; clk1M:buffer std_logic );end fenpin1M;architecture ex of fenpin1M is begin process(clk) variable count2:integer range 0 to n+1; begin if (clkevent and clk=1)then count2:=count2+1; if (count2=n/2)then clk1M digit1 digit1 digit1 digit1 null; end case;end if;end process;end beh;(3)地址累加器相位累加器是DDS最基本的组成成分,用于实现相位的累加并存储其累加结果。关键代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;USE ieee.std_logic_signed.all;-entity address isport(digit1:in STD_LOGIC_VECTOR (9 downto 0); clk:in bit; y:out STD_LOGIC_VECTOR (9 downto 0);end address ;-architecture address of address is beginprocess(clk) variable sum : STD_LOGIC_VECTOR (9 downto 0):=0000000000; begin if (clkevent and clk=1) then y=sum; sum:= sum+digit1; end if; end process;end address ;(4)ROM查找表ROM中需要放入正弦值查找表文件“sin.mif”,生成这个文件的方法有多种,如:写C+程序生成,写MATLAB程序生成等。在这里我们用后者来完成。 具体代码如下:width=10; %宽度是10,指数据位数 depth=1024; %深度是1024,指地址位数 index = linspace(0,pi/2,depth); sin_a=sin(index); %归一化 sin_d=fix(sin_a*(2width-1); %量化 plot(sin_d); axis(0,depth-1,0,2width-1); addr=0:depth-1; str_width=strcat(WIDTH=,num2str(width); str_depth=strcat(DEPTH=,num2str(depth); fid=fopen(d:sin.mif,w); %新建mif文件,存放任意位置和文件名任意 %如果只写文件名,则在当前目录下建立此文件 fprintf(fid,str_width); fprintf(fid,;n); fprintf(fid,str_depth); fprintf(fid,;nn); fprintf(fid,ADDRESS_RADIX=HEX;n); %下面的数据输入选择16进制,可根据情况改写 fprintf(fid,DATA_RADIX=HEX;nn); fprintf(fid,CONTENT BEGINn); fprintf(fid,t%X : %X;n,addr;sin_d) %开始写数据 fprintf(fid,END;n); fclose(fid); 最后整个DDS的模块图如下所示:图2.2 DDS模块图三Quartus II 仿真图4 DDS 生成正弦波的仿真波形然后根据老师的要求,设计并完成了32阶低通线性相位FIR滤波器。四、设计指标:1.设计一个32阶低通线性相位FIR滤波器;2.要求采样频率Fs为1MHz;3.截止频率Fc为35KHz;4.采用函数窗法设计,且窗口类型为Kaiser,Beta为0.5;5.输入序列位宽为10位的有符号数(最高位为符号位);6.输出序列位宽为10位的有符号数(最高位为符号位)。五线性相位fir滤波器理论:有限长脉冲响应(FIR)滤波器的系统函数只有零点,除原点外,没有极点,因而FIR滤波器总是稳定的。如果他的单位脉冲响应是非因果的,总能够方便的通过适当的移位得到因果的单位脉冲响应,所以FIR滤波器不存在稳定性和是否可实现的问题。它的另一个突出的优点是在满足一定的对称条件时,可以实现严格的线性相位。由于线性相位滤波器不会改变输入信号的形状,而只是在时域上使信号延时,因此线性相位特性在工程实际中具有非常重要的意义,如在数据通信、图像处理等应用领域,往往要求信号在传输和处理过程中不能有明显的相位失真,因而线性相位FIR滤波器得到了广泛的应用。长度为M的因果有限冲激响应滤波器由传输函数H(z)描述: .(5.1) 它是次数为M-1的z-1的一个多项式。在时域中,上述有限冲激响应滤波器的输入输出关系为: (5.2) 其中y(n)和x(n)分别是输出和输入序列。有限冲激响应滤波器的一种直接型实现,可由式(5.2)生成,M=5的情况如图5.1(a)所示。其转置,如图5.1(b)所示,是第二个直接型结构。通常一个长度为M的有限冲激响应滤波器由M个系数描述,并且需要M个乘法器和(M-1)个双输入加法器来实现。(a)(b)图5.1 直接型有限冲激响应滤波器结构长度为M的线性相位有限冲激响应滤波器由对称的冲激响应h(n)=(M-1-n)或反对称的冲激响应h(n)=-h(M-1-n)描述。利用线性相位有限冲激响应滤波器的对称(或反对称)性质,可以将传输函数的直接型实现所需的乘法器总量减少一半。例如,图5-2显示了一个具有对称冲击响应的、长度为7的有限冲激响应传输函数的实现。图5.2 线性相位有限冲激响应结构六设计思路:根据课程上老师所讲例题,首先使用matlab计算出符合设计要求的滤波器冲激响应系数。后将整个电路规划为语言编辑和原理图编辑两个单元,其中语言编辑部分负责编辑整个滤波器电路中所需用的单元器件,包括寄存器、加法器、减法器以及乘法器几个单元器件;原理图编辑部分完成单元器件的电气连接工作。整个电路的原理图设置方案如图6.1所示:图6.1 滤波器整体设计思路七设计过程:(一)基于matlab工具的滤波器系数计算:在matlab命令编辑窗口输入Fdatool指令,敲击回车可以打开Filter Design & Analysis Tool窗口(如图7.1所示),在该工具的帮助下,我们可以完成f.i.r.滤波器系数的计算工作。图7.1 Filter Design & Analysis Tool窗口Fdatool界面总共分两大部分,一部分是design filter,在界面的下半部分,用来设置滤波器的设计参数,另一部分则是特性区,在界面的上半部分,用来显示滤波器的各种特性。design filter部分主要分为:Response Type(响应类型)选项,包括Lowpass(低通)、Highpass(高通)、Bandpass(带通)、Bandstop(带阻)和特殊的滤波器。根据本次作业要求,在该选项中选择Lowpass选项。Design Method(设计方法)选项,包括IIR滤波器的Butterworth(巴特沃思)法、Chebyshev Type i(切比雪夫i型)法、 Chebyshev Type ii(切比雪夫ii型) 法、Elliptic(椭圆滤波器)法等和FIR滤波器的Equiripple法、Least-squares(最小乘方)法、Window(窗函数)法等多种方法。结合本次作业要求,选择FIR滤波器的窗函数法进行设计。选定窗函数法后,会在右侧出现Options区域,进行窗函数法相关参量的设置,根据作业要求选择Kaiser窗并设置Beta为:0.5。Filter Order(滤波器阶数)选项,定义滤波器的阶数,包括Specify order(指定阶数)和Minimum order(最小阶数)。在Specify order中填入所要设计的滤波器的阶数(n阶滤波器,specify ordern-1),如果选择Minimum order则matlab根据所选择的滤波器类型自动使用最小阶数。本次作业要求设计32阶滤波器,所以选定Specify order并填入31。Frenquency Specifications选项,可以详细定义频带的各参数,包括采样频率Fs和频带的截止频率。它的具体选项由Response Type选项和Design Metho选项决定。我们要求的 Lowpass(低通)滤波器只需要定义Fs、Fc。采用窗函数设计滤波器时,由于过渡带是由窗函数的类型和阶数所决定的,所以只需要定义通带截止频率,而不必定义阻带参数。Magnitude Specifications选项,可以定义幅值衰减的情况。采用窗函数设计时,通带截止频率处的幅值衰减固定为6db,所以不必定义。本次作业中的参数设定结果如图7.2所示。图7.2 滤波器参数设定结果参数设定完毕,单击工具窗口下方的Design Filter按钮,开始进行相关参数计算。在计算结果中我们可以看到该滤波器的一些相关曲线,如幅频响应(如图7.3)、相频响应(如图7.4)、冲激响应(如图7.5)等以及具体的系数值(如图7.6)。图7.3 幅频响应图 7.4 相频响应图 7.5 冲激响应图7.6 所设计滤波器冲激系数计算的结果可通过File下拉菜单中的Export命令取出,点击Export打开Export对话框(如图7.7),点击OK按钮可将滤波器系数数据存放到当前工作空间,并以Num命名。图 7.7 冲激系数输出对话框保存并关闭滤波器设计分析工具回到matlab主窗口,在命令编辑区输入Num可得到工具的计算结果。对FIR滤波器的系数进行调整,做整数化操作。可得到滤波器整数化的系数为-28 -20 -12 0 12 28 44 64 80 100 116 132 144 152 164 152 144 132 116 100 80 64 44 28 12 0 -12 -20 -28。(二)单元器件的语言编辑:1、寄存器模块寄存器用于寄存一组二值代码。在本设计中用D触发器组成寄存器,实现寄存功能。程序代码如下: 27 共28页-LIBRARY ieee;USE ieee.std_logic_1164.all;use ieee.std_logic_arith.all;-ENTITY dff16 ISPORT (rst,clk: IN STD_LOGIC; d:IN signed (9 DOWNTO 0); q:OUT signed (9 DOWNTO 0);END dff16;-ARCHITECTURE dff16 OF dff16 ISBEGIN PROCESS (rst,clk) BEGIN IF(rst=1)THEN q0); ELSIF(clkEVENT AND clk=1)THEN q=d; END IF; END PROCESS;END dff16;-2、加法器模块实现两个有符号数的相加运算。即将输入的两数,在时钟脉冲到来时相加运算,输出结果。10位有符号数相加产生一个11位有符号数的加法器设计:-LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;-ENTITY sum101011 IS PORT(a,b: IN SIGNED(9 DOWNTO 0); clk: IN STD_LOGIC; s:OUT SIGNED(10 DOWNTO 0);END SUM101011;-ARCHITECTURE sum101011 OF sum101011ISBEGIN PROCESS(clk) BEGIN IF(clkEVENT AND clk=1)THEN s=(a(9)&a)+(b(9)&b); END IF; END PROCESS;END sum101011;-18位和19位有符号数相加产生20位有符号数的加法器设计:-LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;-ENTITY sum7023918 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 sum7023918;-ARCHITECTURE sum7023918 OF sum7023918 ISBEGIN PROCESS(clk) BEGIN IF(clkEVENT AND clk=1)THEN s=(a(17)&a(17)&a)+(b(18)&b); END IF; END PROCESS;END sum7023918;-4、乘法器模块:从资源和速度考虑,常系数乘法运算可用移位相加来实现。将常系数分解成几个2的幂的和形式。滤波器系数分别为-28 -20 -12 0 12 28 44 64 80 100 116 132 144 152 164 152 144 132 116 100 80 64 44 28 12 0 -12 -20 -28。算法:其中带负号数先乘去负号的整数部分,在后面的求和中做减法运算。 实现输入带符号数据与固定数据两个二进制数的乘法运算。当到达时钟上升沿时,将两数输入,运算并输出结果。乘28电路设计:-LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;-ENTITY mult28 ISPORT( clk : IN STD_LOGIC; Din : IN SIGNED (10 DOWNTO 0); Dout1 : OUT SIGNED (15 DOWNTO 0);END mult28;-ARCHITECTURE mult28 OF mult28 ISsignal v1:signed (15 downto 0);signal v2:signed (12 downto 0);signal v3:signed (15 downto 0);BEGIN v1=s0&00000; v2=s0&00; if(s0(10)=0)then v3=(0&v1(14 downto 0)-(000&v2(12 downto 0); else v3=(1&v1(14 downto 0)-(111&v2(12 downto 0); end if; if(clkevent and clk=1)then dout1=v3(15 downto 0);end if;END mult28;-(四)仿真结果验证:利用matlab的conv函数可以验证FIR滤波器卷积的结果,在表4-1中通过比对来进行对结果的说明。随机输入序列-454,-39,55,463,-331,-52,128,26。表7- 1 仿真结果验证滤波器仿真无截短输出23位conv函数输出滤波器仿真截断输出10位conv函数除212(4096)127121271233.1035101721017222.4834 4688468811.1445-13596-13596-3-3.3193-6100-6100-1-1.4893-10660-10660-3-2.6025-18980-18980-5-4.6338-26340-26340-6-6.4307-29460-29460-7-7.1924-34832-34832-9-8.5039-37016-37016-9-9.0371-41488-41488-10-10.1289-41292-41292-1010.6224-41580-41580-10-10.0811-41224-41224-10-10.1514-40508-40508-10-10.0645-38756-38756-9-9.8896-33824-33824-9-9.4619-29296-29296-8-8.2578-25976-25976-7-7.1523-21484-21484-6-6.3418-15852-15852-5-5.2451-9368-9368-3-3.8701经仿真结果对比可知,在截短前的滤波器输出和matlab卷积乘结果完全一致,滤波器功能完好。由于在本设计中在最后一位输出前进行截短操作,故在截短后个别数据引入的误差较大。八整体模块设计与仿真通过对DDS和32阶FIR数字滤波器的各个模块设计,然后我们把两部分合在一起,进行了整合仿真,下面是整个模块:图8.1 整个模块的设计结构然后建立了波形文件,进行功能仿真,下面是波形图:图8.2 DDS和滤波器的输出波形其中ROM的波形是经过DDS的波形,yout1是经过滤波器后的波形,此时取的控制字是20,在截止频率前,所以看起来变化不大。经过在电脑上软件仿真以后,拿到了实验室,分配完管脚后,在试验箱上进行调试,连接示波器观察输出波形,如下图:(a)(b)(c)(d)图8.3 滤波前后的波形对比图8.3中(a)是控制字K等于20,在截止频率前,所以看起来滤波前后变化不大。(b)是K等于35,在截止频率的时候,可以看到滤波效果还是比较好的,图(c)和图(d)是在K等于37和63的时候,在截止频率以后了,也可以看出来波形的衰减还是很明显的。在经过蒋立平老师的验收的时候,老师指导了我几个问题,主要是我的控制字取的少,这样看起来效果不是逐级衰减,还有就是从K等于20到K等于63的时候,衰减的太厉害,也
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中职导游实务试题及答案
- 2025年航空器维修工程师考试题及答案
- 机务的面试问题及答案
- 外汇质押人民币借款合同(样式一)
- 总工程师面试题库及答案
- 高速公路路道施工合同(3篇)
- 超高清传输协议-洞察及研究
- 安徽导游资格证面试题及答案
- qc精益基础知识考试试题及答案
- 担保公司劳动合同签订与合同期限调整合同
- 基础教育教学成果奖评审组织实施方案
- 建行考试题目及答案
- 医院拆除工程方案范本(3篇)
- Unit 1 第4课时 Section B 1a-2b 导学案-七年级英语上册
- 2026届上海市交通大学附属中学嘉定分校英语高三上期末联考模拟试题
- 第3课 团团圆圆过中秋 第1课时(课件)2025-2026学年道德与法治二年级上册统编版
- 小学二年级数学上册教材分析教学计划
- 第6课 从小爱科学 第1课时(课件)2025-2026学年道德与法治三年级上册统编版
- 学会自我保护课件教学
- 感染性关节炎护理查房
- 标准化作业管理制度
评论
0/150
提交评论