




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、实验名称基于IP核的DDS和FIR滤波器设计二、实验目的和要求目的要求:1) 掌握IP核的设计方法。2) 掌握和理解DDS的原理和波形产生方法。3) 理解掌握FIR滤波器设计方法。4) 掌握用VHDL硬件语言进行顶层文件设计。5) 掌握用Modelsim 进行仿真操作。三、实验内容和原理1. DDS的原理DDS称为直接数字频率合成器(DDFS),它具有输出相位连续、相对带宽较大、频率分辨率高、可编程、准确度和稳定度都比较高的优点。它不仅能产生正弦、余弦、方波、三角波和锯齿波等波形,而且可以根据需要产生传统函数发生器所不能产生的任意波形。DDS的基本原理是利用采样定理,根据相位间隔对正弦信号进行取样、量化、编码,然后储存在EPROM中构成一个正弦查询表,通过查表法产生波形。它是由参考时钟、相位累加器、正弦查询表和D/A转换器组成,如图3-1所示。图3-1 直接数字频率合成器原理框图相位累加器由N位加法器与N位累加寄存器级联构成,其原理框图如图3-2所示。针对时钟脉冲Fc,N位加法器将频率控制数据K与累加寄存器输出的累加相位数据相加,把相加后的结果送至累加器的输入端。累加器一方面将在上一时钟周期作用后所产生的新的相位数据反馈到加法器的输入端,以使加法器在下一时钟的作用下继续与频率控制数据K相加;另一方面把相加后的结果形成正弦查询表的地址,取出表中与该相位对应的单元中的幅度量化正弦函数值,作为取样地址值送入幅度/相位转换电路。这样就可把存储在波形存储器内的波形抽样值(二进制编码)经查找表查出,完成相位到幅值转换。波形存储器的输出送到D/A转换器,D/A转换器将数字量形式的波形幅值转换成所要求合成频率的模拟量形式信号。图3-2 相位累加器原理框图相位累加器在每一个时钟脉冲输入时,把频率控制字累加一次,相位累加器输出的数据就是合成信号的相位。当相位累加器加满量时就会产生一次溢出,溢出频率就是DDS输出的信号频率。相位累加器的最大计数长度与正弦查询表中所存储的相位分隔点数相同,在取样频率(由参考时钟频率决定)不变的情况下,由于相位累加器的相位增量不同,将导致一周期内的取样点数不同,输出信号的频率也相应变化。如果设定累加器的初始相位,则可以对输出信号进行相位控制。由采样原理可知,如果使用两个相同的频率合成器,并使其参考时钟相同,同时设定相同的频率控制字、不同的初始相位,那么在原理上就可以实现输出两路具有一定相位差的同频信号。也可以以正弦波为例说明DDS的基本原理,设正弦信号表达式为 (1-1)其中振幅为,频率为,初始相位。实际应用中与初始信号无关,若A=1,则相同的单位T内不同频率与相对应的相位增量不同,有 (1-2)相位在时域内随时间均匀变化,因为DDS中相位累加是周期性的,因此相位与正弦信号线性特性一致的。设K为频率控制字,为时钟频率,N为相位累加器的长度,则合成的信号频率为: (1-3)改变频率控制字K输出频率随着变化,频率分辨率为 (1-4)2. FIR滤波器FIR(Finite Impulse Response)滤波器,即有限长单位冲激响应滤波器,它可以保证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应式有限长的,因而滤波器是稳定的系统。FIR滤波器具有以下特点:(1) 系统的单位冲激响应在有限各n值处不为零。(2) 系统函数在处只有零点,即有限z平面只有零点,而全部极点都在处(因果系统)。(3) 结构上是非递归结构,没有输出到输入的反馈。FIR滤波器的基本结构有直接型、级联型、频率抽样型、快速卷积结构和线性相位结构,以下简要介绍其中几个基本结构。直接型为最普遍的结构,根据差分方程可得出结构如下图所示:图3-3 FIR滤波器的直接型结构级联型结构是将分解成实系数二阶因子的乘积形式,如下图所示:图3-4 FIR滤波器级联型结构线性相位型FIR滤波器单位响应为实数,且满足偶对称或奇对称,对称中心在处,具有严格的线性相位,结构如下图所示:图3-5 FIR滤波器线性相位型结构(N=5)3. DDS和FIR滤波器IP核原理IP核是一段具有特定电路功能的硬件描述语言程序,该程序与集成电路工艺无关,可移植到不同的半导体工艺中生产集成电路芯片。由于具有复杂功能和商业价值的IP核一般具有知识产权,而它的本意也是知识产权核。IP核有两种,与工艺无关的VHDL程序称为软核,具有特定电路功能的集成电路版图称为硬核,硬核一般不允许修改。软IP设计周期短,设计投入少,为后续设计预留很大的发挥空间,增大了IP的灵活性和适应性。Xilinx ISE中集成大量的IP库可供用户使用,在开发中无需了解硬件语言是如何实现的,提供了很大的方便性。如下图所示为DDS的IP核符号文件。图3-6 DDS 符号文件其中CLK为DDS系统时钟输入信号,WE为写使能信号,DATA为输入数据,RDY表示有效数据输出,SINE和COSINE为输出波形,PHASE_OUT为相位输出值。当WE有效时,在时钟作用下,通过改变输入数据DATA使输出正余弦频率发生改变。FIR滤波器的IP核符号文件如下图所示:FIR滤波器与DDS分别采用不同的时钟,FIR滤波器的系统时钟为36.864MHz,输入选择信号ND表示有新的数据到来。FIR滤波器的滤波系数由MATLAB产生,在IP核参数修改时把coe文件加载到IP核中。图3-7 FIR滤波器IP核符号文件四、实验环境(软、硬件环境,主要仪器设备)软件环境:ISE Design Suite 11.0,Modelsim SE 6.5,MATLAB R2012a硬件环境:PC机操作系统:Windows XP五、操作方法与实验步骤1、DDS IP 核设计打开ISE Design Suite 11.0,新建工程命名为dds_fir。在Preferred Language 中择为VHDL,在新建的工程中右键New Source 选择IP(CORE Generator Architecture Wizard)并命名为dds,在弹出的DDS Compiler中修改系统时钟参数如下图所示:图5-1 DDS IP核的时钟设置本次试验中DDS的系统时钟为2.304MHz,衰减范围为84dB,频率分辨率为10Hz,而后设置IP核的相位累加为可编程的。如下图所示:图5-2 DDS IP核的相位累加设置在Options Pins中添加RDY信号管脚,如下图所示:图5-3 DDS IP核的可选信号添加设置完成后点击Generate生成DDS的IP核,在工程中可以看到DDS IP核已添加到工程之中,并且该路径下生成有dds.xco文件。2、FIR滤波器系数文件设计MATLAB提供了功能齐全的滤波器设计,与信号处理交互式图形用户界面(Interactive Graphicla User Interface),主要包括FDATool和SPTool两种交互工具。其中FDATool主要用于数字滤波器的设计和分析,而SPTool不仅可以设计,分析滤波器,而且可以对信号进行时域和频域进行分析。本次设计的硬件实现就是采用FDATool工具设计的滤波器。打开MATLAB R2012a软件,在MATLAB命令窗口中,执行“fdatool”命令,就会启动FDATool滤波器设计与分析工具,其图形界面如图5-4所示。 图5-4 FDATool界面Response type选择低通,选中FIR类型,再选择等波纹。然后选择通带截止频率500kHz,阻带截止频率600kHz,通带最小衰减选择1db,阻带最小衰减选择80db,点击DESIGN FILTER按键,即可设计FIR滤波器了。滤波器的频率响应曲线如图5-4中所示,滤波器的系数如下图所示。图5-5 超级文本工具查看生成的coe文件3、FIR滤波器IP核设计在新建的工程中右键New Source 选择IP(CORE Generator Architecture Wizard)并命名fir,在弹出的FIR Compiler中修改系统时钟参数如下图所示:图5-6 FIR IP核时钟设置图5-7 FIR IP核的控制管脚设置设置完成后点击Generate生成DDS的IP核,在工程中可以看到DDS IP核已添加到工程之中,并且该路径下生成有dds.xco文件。4、系统设计系统总体原理框图如下,从图中可以看出,把DDS和FIR滤波器例化后就可以通过端口映射把模块相连,形成一个通过输入改变输入数据改变产生200kHz和900kHz的输出频率、然后进行滤波,只有200kHz的正弦波形输出。图5-8系统设计原理在新建的工程中右键New Source 选择VHDL Module,新建dds_fir.vhd文件。鼠标点击dds和fir的IP核,显示高亮。双击View HDL Instantiation Template,查看模板例化硬件语言。把dds和fir的元件声明分别复制并粘贴在结构体中(begin之前),把管脚映射也复制粘贴在结构体中(begin之后)。在实体中加入输入输出端口。由于dds和fir滤波器有RDY和ND、SINE和din相连,所以要定义两个信号变量:wire1和wire2,wire2为14位总线型变量,其中的端口映射关系参考实验代码。由于输出数据仅需要14位,所以需加入以下代码:process begin data_out=wire3(29 downto 16);end process;代码编辑完成后保存、编译,如果没有错误开始进行仿真操作。5、Modelsim 仿真操作在新建的工程中右键New Source 选择VHDL Test Bench,新建dds_fir_tb.vhd文件。在关联文件中选择dds_fir,生成Test Bench后双击打开该文件。把初始化的输入信号赋值为零,定义常量clk2304_period和clk36864_period分别为434ns和27ns。 图5-8 添加激励代码添加完成后在Project选项中打开Design Properties,修改Simulator为Modelsim-SE Mixed保存。设置完成后,双击Simulator Behavioral Model开始仿真。把要查看的信号加入到波形显示窗口,这时会看到输出数据。右键data_out选择format,选择analog,查看输出模拟波形。 从波形中可以看出,当输入数据000101100011100011(十六进制58E3)时,输出正弦波频率为200kHz,波形良好。而输入数据011001000000000000(十六进制19000)时,输出没有波形,几乎被完全滤除。具体Test Bench代码和输出波形图参考第六部分与第七部分内容。六、实验部分代码与截图1、主代码主代码dds_fir.vhd文件如下:首先是库声明和实体定义,然后在结构体中进行元件声明和端口映射。- Company: - Engineer: - - Create Date: 15:42:35 04/29/2014 - Design Name: - Module Name: dds_fir - Behavioral - Project Name: - Target Devices: - Tool versions: - Description: - Dependencies: - Revision: - Revision 0.01 - File Created- Additional Comments: -library IEEE;use IEEE.STD_LOGIC_1164.ALL;- Uncomment the following library declaration if using- arithmetic functions with Signed or Unsigned values-use IEEE.NUMERIC_STD.ALL;- Uncomment the following library declaration if instantiating- any Xilinx primitives in this code.-library UNISIM;-use UNISIM.VComponents.all;entity dds_fir isport(clk2304 : in std_logic;clk36864:in std_logic;we : in std_logic;data: in std_logic_vector(17 downto 0);data_out: out std_logic_vector(13 downto 0); rfd : out std_logic;rdy : out std_logic);end dds_fir;architecture Behavioral of dds_fir isCOMPONENT dds PORT ( clk : IN STD_LOGIC; we : IN STD_LOGIC; data : IN STD_LOGIC_VECTOR(17 DOWNTO 0); rdy : OUT STD_LOGIC; cosine : OUT STD_LOGIC_VECTOR(13 DOWNTO 0); sine : OUT STD_LOGIC_VECTOR(13 DOWNTO 0); phase_out : OUT STD_LOGIC_VECTOR(17 DOWNTO 0) );END COMPONENT;component firport (clk: in std_logic;nd: in std_logic;rfd: out std_logic;rdy: out std_logic;din: in std_logic_vector(13 downto 0);dout: out std_logic_vector(30 downto 0);end component;signal wire1: std_logic;signal wire2: std_logic_vector(13 downto 0);signal wire3: std_logic_vector(30 downto 0);begininst1 : dds PORT MAP ( clk = clk2304, we = we, data = data, rdy = wire1,- cosine = cosine, sine = wire2 - phase_out = phase_out );inst2 : fir port map (clk = clk36864,nd = wire1,rfd = rfd,rdy = rdy,din = wire2,dout = wire3);processbegindata_out=wire3(30 downto 17);end process;end Behavioral;2、Test Bench文件在Stimulus process中加入了写使能信号,并给输入信号以激励,Test Bench代码如下:-LIBRARY ieee;USE ieee.std_logic_1164.ALL; - Uncomment the following library declaration if using- arithmetic functions with Signed or Unsigned values-USE ieee.numeric_std.ALL; ENTITY dds_fir_tb ISEND dds_fir_tb; ARCHITECTURE behavior OF dds_fir_tb IS - Component Declaration for the Unit Under Test (UUT) COMPONENT dds_fir PORT( clk2304 : IN std_logic; clk36864 : IN std_logic; we : IN std_logic; data : IN std_logic_vector(17 downto 0); data_out : OUT std_logic_vector(13 downto 0); rfd : OUT std_logic; rdy : OUT std_logic ); END COMPONENT; -Inputs signal clk2304 : std_logic := 0; signal clk36864 : std_logic := 0; signal we : std_logic := 0; signal data : std_logic_vector(17 downto 0) := (others = 0); -Outputs signal data_out : std_logic_vector(13 downto 0); signal rfd : std_logic; signal rdy : std_logic; - Clock period definitions constant clk2304_period : time := 434 ns; constant clk36864_period : time := 27 ns; BEGIN- Instantiate the Unit Under Test (UUT) uut: dds_fir PORT MAP ( clk2304 = clk2304, clk36864 = clk36864, we = we, data = data, data_out = data_out, rfd = rfd, rdy = rdy ); - Clock process definitions clk2304_process :process beginclk2304 = 0;wait for clk2304_period/2;clk2304 = 1;wait for clk2304_period/2; end process; clk36864_process :process beginclk36864 = 0;wait for clk36864_period/2;clk36864 = 1;wait for clk36864_period/2; end process; - Stimulus process stim_proc: process begin - hold reset state for 100 ns. wait for 100 ns; wait for clk2304_period*10;we=1;data=000101100011100011;wait for clk2304_period*500;data=011001000000000000;wait for clk2304_period*500; we=0; - insert stimulus here wait; end process;END;3、实验仿真结果图(1)Modelsim 仿真结果如下图所示为Modelsim仿真实验结果,数据在没有转换格式前的截图。图6-1 Modelsim仿真数据结果(2)Modelsim仿真输出模拟波形如下图所示为Modelsim仿真结果为输出数据格式转换成模拟后的截图。FIR滤波器输出为31位数据,顶层文件设计后的系统的输出是截取FIR输出数据的高14位,从波形来看输出波形和信号线wire3上波形
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 重庆三峡职业学院《小学教育专业学业职业生涯指导II》2024-2025学年第一学期期末试卷
- 眉山药科职业学院《开发基础》2024-2025学年第一学期期末试卷
- 提升团队沟通效率的管理技巧
- 工业节能减排技术与管理措施汇编
- 2025年银行监管及中央银行服务项目立项申请报告
- 南昌健康职业技术学院《SQServer数据库工具》2024-2025学年第一学期期末试卷
- 大连科技学院《数字摄影》2024-2025学年第一学期期末试卷
- 安徽冶金科技职业学院《建筑制图与CAD》2024-2025学年第一学期期末试卷
- 图文代运营知识培训内容课件
- 广州商学院《机械学科前沿》2024-2025学年第一学期期末试卷
- 医院综合门诊部综合管理体系建设
- 2025至2030年中国SCADA行业市场运行现状及投资规划建议报告
- 2025年宜昌市猇亭区招聘化工园区专职工作人员(6人)笔试备考试题及答案详解(夺冠)
- 2025年山西煤矿安全生产管理人员取证考试题库(含答案)
- 1.1 网络层次化拓扑结构设计
- GB/T 9869.2-2025橡胶用硫化仪测定硫化特性第2部分:圆盘振荡硫化仪
- 厂区参观流程规范
- 国航股份新建配餐楼项目一期工程报告表
- 人体解剖实验管理制度
- 陕西省专业技术人员继续教育2025公需课《党的二十届三中全会精神解读与高质量发展》20学时题库及答案
- 应急中心组织架构
评论
0/150
提交评论