湖南人文科技学院课程设计报告课程名称:VHDL语言与EDA课程设计设计题目:数控移相信号发生器系别:通信与控制工程系专业:电子信息工程班级:2008级1班学生姓名:叶小华稂雄伟学号:08409106 08409141起止日期:2011年6月13日~ 2011 年6月27日指导教师:田汉平周桃云岳舟教研室主任:谢四莲摘要随着现代电子测量技术的发展,能够产生各种波形信号的数字式信号发生器的应用越来越广泛,本系统介绍了一种以DDS为基本单元的数字移相信号发生器的设计方法。
根据课题要求,我们需要设计一个数控移相信号发生器,能通过按键进行移相控制,每按一键增加或减小相位差1~2度,输出信号的频率为50KHZ。
输出波形峰-峰值大于2V。
根据本学期所学习的,我们利用QuartusⅡ和Matlab/Simulink之间的接口工具DSP Builder来完成整个设计要求。
首先在Matlab中DSP Build的Simulink中进行建模,系统仿真通过SignalCompiler将模型设计文件转换成相应的硬件描述语言(VHDL),在QuartusⅡ平台上进行综合生成网表文件,并适配下载至FPGA。
利用FPGA设计的DDS 对整个功能的实现更为灵活,大大减少了外围硬件电路的设计,增加了系统的稳定性和可靠性。
设计者只需要掌握有关该设计所使用的软件即可自行设计,大大的简化了设计的过程。
关键词:DDS,数控,信号发生器,移相,MATLAB目录设计要求 (1)1 设计方案论证 (1)1.1方案一 (1)1.2 方案二 (2)1.3方案选择 (2)2 系统总体方案设计及实现 (3)2.1数控移相信号发生器设计 (3)2.1.1 DDS (3)2.1.2 相位字输入的计算 (4)2.1.2 输出波形峰峰值的计算 (5)2.1.3 相位差的计算 (5)2.1.4 数控移相信号发生器电路模型图 (5)2.1.5 Simulink模型的仿真 (6)2.2 SignalCompiler的使用 (7)2.2.1 分析当前的模块 (7)2.2.2 设置SignalCompiler (7)2.2.3 把模型文件MDL 转换成VHDL (7)2.2.4 综合 (7)2.2.5 QuartusⅡ试配 (7)2.3 各模块的功能说明 (7)2.4嵌入式锁相环的设计 (9)2.5 引脚的锁定 (9)3 设计结果 (10)4 设计结论 (11)5 结束语及致谢 (12)6元器件及仪器设备明细表 (12)7 参考文献 (12)数控移相信号发生器设计要求能通过按键进行移相控制,每按一键增加或减小相位差1~2度,输出信号的频率为50KHZ。
输出波形峰-峰值大于2V。
1 设计方案论证1.1方案一图1方案一原理框图,该方案根据矩阵式键盘输入给FPGA送出频率控制字与相位控制字,用于设定输出正弦波的频率与相位。
高速D/A转换器用于正弦波的DA转换。
FPGA构成DDS的核心部分,用于接收送来的频率字与相位字,同时给DA转换器输出正弦波数据。
采用字符型液晶显示屏实时显示输出的频率与相位。
该方案需借助Quartus Ⅱ来完成。
图1 方案一原理框图1.2 方案二图2 方案二原理框图,该方案是基于DSP Builder与DDS并借助于MATLAB进行设计的。
首先在Matlab中DSP Build的Simulink中进行建模,系统仿真通过SignalCompiler将模型设计文件转换成相应的硬件描述语言(VHDL),在QuartusⅡ平台上进行综合生成网表文件,并适配下载至FPGA。
在这个方案中,有两路正弦信号,一路为参考信号,另一路是可数控的移动信号,并且这两路可同步进行幅度和频率数控,即对于这两路输出的正弦信号,在相位、频率和幅度3个参数上都能完成等步长数控步进,而且还能对指定的参数进行设定。
图2 方案二原理框图1.3方案选择方案一是基于QuartusⅡ,在设计的过程中,利用VHDL完成电路设计,必须借助于EDA工具中的综合器、适配器、时序仿真器和编程器等工具进行相应的处理,才能使此项设计在FPGA上完成硬件实现并得到硬件测试,在进行HDL文本输入设计流程中比较繁琐,而且容易出错。
而方案二是基于DSP Builder进行手动流程设计,在设计过程中,DSP Builder会自动完成VHDL的转换、综合、适配,而不像方案一那样要进行HDL 文本输入,这样的话就能避免文本输入过程中的绝大多数错误。
因而我们选择方案二。
2 系统总体方案设计及实现2.1数控移相信号发生器设计2.1.1 DDS图3 是DDS 基本结构原理图,它主要由相位累加器、相位调制器、正弦ROM 查找表、D /A 转换器等组成。
系统时钟clk 由一个稳定的晶体振荡器产生,用来同步整个合成器的各组成部分。
同步寄存器的使用是为了当输入的频率字改变时不会干扰相位累加器的正常工作。
相位累加器是整个DDS 的核心,它由N 位加法器和N 位相位寄存器级联构成,类似一个简单的加法器,完成上面推导中的相位累加功能。
每来一个时钟脉冲,加法器就将输入的N 位频率字与相位寄存器输出的累加相位数据相加,然后将相加后的结果送至相位累加器的输入端,相位寄存器就将在上一个时钟作用后产生的新相位数据反馈到加法器的输入端,以使加法器在下一个时钟的作用下继续将相位数据与输入的频率字相加。
当相位累加器累加满量(2π) 时,就会产生一次溢出,完成一个周期性的动作,这个周期就是合成信号的一个周期,累加器的溢出频率就是DDS 的合成信号频率。
相位调制器接收相位累加器的相位输出,并与一个相位偏移值相加,主要用于信号的相位调制, 如PSK(相移键控)等。
在不使用时可去掉该部分,或加一个固定的相位字输入。
注意相位字输入也要用同步寄存器保持同步,但相位字输入的宽度M 与频率字输入N 往往是不相等的,一般M < N 。
正弦ROM 查找表的作用是完成查表转换,或理解为相位到幅度的转换。
将相位累加器或相位调制器输出的相位数据作为取样地址,来寻找正弦ROM 表进行相位到幅度的变换,输出不同的幅度编码。
经D /A 转换器得到相应的阶梯波,最后经过低通滤波器对阶梯波进行平滑处理,得到由输入的频率字决定的连续变化的输出正弦波。
下面的即为基本DDS 结构的常用参数计算公式:输出频率:clk Noutf B f ⋅=∆2θ频率字:clkoutNf f B ⋅=∆2θ其中θ∆B 是频率控制字,clk f 为系统基准时钟的频率值,N为相位累加器的数据位宽,也是频率控制字的数据位宽。
频率控制字的可调整性使得系统输出频率非常容易调整。
输出正弦波频率f=fclk*frequword/2^20,系统时钟,频率控制字DDS 系统时钟12MHz,异步于CPU 时钟20bit 频率控制字,8bit 相位控制字,8bit 数据输出每波形抽样256个点。
2.1.2 相位字输入的计算由DDS 的频率输入字公式:clkoutNf f B ⋅=∆2θ计算,式中N 为相位累加器的数据位宽,也是频率输入字的数据位宽,f clk 是系统基准时钟的频率值。
本设计中N=20,f clk =12MHZ ,f out =50KHZ 根据计算得出频率输入字为4369。
图3 DDS 基本结构原理图2.1.2 输出波形峰峰值的计算本设计中正弦查找模块输入地址为8位,输出位宽为10位,且输入地址总线为无符号整数,可设置起始值为0、结束值为2π、步进值为2π/26。
为了得到完整满度的波形输出,计算式可写成:511*sin[0:2*pi/2^8]:2*pi]+5122.1.3 相位差的计算因为本设计中是,8bit相位控制字,8bit数据输出每波形抽样2^8=256个点,所以每按一键增加或减小相位差为3600/256=1.400即符合设计要求。
2.1.4 数控移相信号发生器电路模型图基于DDS的数字移相信号发生器是整个系统的设计核心部分,其电路模型图如图4所示。
图4 基于DDS的数控移相信号发生器MDL模型2.1.5各模块的功能说明(1)如图5所示,该部分实现相位累加器的功能。
(2)如图6所示,该部分是频率字输入,不同的频率字输入会使得信号输出波形的频率不同。
(3)如图7所示,该部分是输入地址为6位,输出值位宽为8的正弦查找表模块,且输入地址总线为无符号整数。
2.1.6 Simulink模型的仿真在Sinout模型编辑窗口中,选择Slimulation→Start命令,开始仿真,等待仿真结束后,双击Scope模块,打开Scope观察窗口。
图5 相位累加器图6 频率字输入图7 LUT模块2.2 SignalCompiler的使用2.2.1 分析当前的模块双击Sinout模型中的SignalCompiler模块,之后单击Analyze按钮后,SignalCompiler就会对Sinout模型进行分析,检查模型有无错误,并在MATLAB主窗口中弹出对话框,并给出相关信息。
2.2.2 设置SignalCompilerSignalCompiler窗口中大致分为3个功能部分:项目设置选项硬件编译流程信息框2.2.3 把模型文件MDL 转换成VHDL当设置好Device和Synthesis后,右侧的硬件编译部分就会列出一个操作:(1)Convert MDL to VHDL(2) Synthesis(3) Quartu sⅡ2.2.4 综合单击步骤(2)的图标,完成综合过程。
2.2.5 Quartu sⅡ试配单击步骤(3)的图标,调用Quartu sⅡ完成编译试配过程,生成编译文件。
编译文件可以直接用于FPGA的编译配置。
2.3 各模块的功能说明(1)如图5所示,该部分实现相位累加器的功能。
图5 相位累加器(2)如图6所示,该部分是频率字输入,不同的频率字输入会使得信号输出波形的频率不同。
图6 频率字输入(3)如图7所示,该部分是输入地址为6位,输出值位宽为8的正弦查找表模块,且输入地址总线为无符号整数。
图7 LUT模块2.4嵌入式锁相环的设计当输出波形频率较高时,由于采样一个完整周期的波形数据点数减少,势必引起波形失真,要消除波形失真,一是可以增加采样波形数据的点数,二是提高系统的主工作时钟频率。
若不增加外配ROM的情况下,可以使用后一种方法。
本系统设计时在充分利用FPGA的存储空间的情况下,为了提高波形的输出频率(在不失真的条件下),还使用了Cyclone器件中的嵌入式锁相环,提高系统的主工作时钟频率,在实际工作时的主时钟频率达12 MHz。
其在QuartusⅡ下的仿真图如图5所示。
2.5 引脚的锁定设计中各引脚的锁定如图6所示。
本设计选择工作模式1,通过键盘控制波形输出的频率和相位,从而达到数控移相的目的。