fpga正交信号发生器课程设计_第1页
fpga正交信号发生器课程设计_第2页
fpga正交信号发生器课程设计_第3页
fpga正交信号发生器课程设计_第4页
fpga正交信号发生器课程设计_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

1、广西大学行健文理学院课程设计报告课程名称:FPGA课程设计设计题目: 正交信号发生器 系 别: 通信与控制工程系 专 业: 电子信息工程 班 级: 10级电子信息工程3班 学生姓名: 学 号: 起止日期: 2013年6月8日 2012年6月18日 指导教师: 教研室主任: 摘 要 EDA技术是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。本文详细介绍了基于FPGA的DSP开发技术,提供了一种设计正交信号发生器的方案。在信号检测和信号处理中经常需要正交信号。由于正交方波信号较易得到,所以工程人员进行相关检测时所采用的正交信号源通常为

2、方波信号。但通过对方波信号作傅立叶分析可知,这种信号含有丰富的谐波分量,严重影响相关检测中的接收精度及检测灵敏度。采用可控的正、余弦波作正交信号,就可以有效地避免谐波问题。本文采用MatlabDSP Builder建立模型来实现正交信号发生器,使用自顶向下的设计方法,设计简单,能够提高设计效率。利用DSP Builder 建立起数学模型,实现了模块化的设计变得直观。在Simulink中进行仿真验证,通过Signal Compiler 将模型转换成硬件描述语言,经过Quartus仿真正确后,下载到FPGA里,输出的正交信号能灵活的调频,调相,调幅,实现全数字化设计。该方案简化了硬件设计的难度。对

3、各个模块的参数进行简单的设置就能完成复杂的电子设计系统设计。 关键词:EDA技术;DSP Builder;正交信号发生器;Signal Compiler目 录设计要求11、方案论证与对比11.1方案一11.2 方案二11.3方案选择22、系统总体方案设计及实现22.1正交信号发生器设计22.1.1 DDS原理及设计22.1.2 频率字输入的计算62.1.3 输出波形峰峰值的计算62.1.4 相位差的计算62.1.5正交信号发生器电路模型图72.1.6 Simulink模型的仿真82.2 SignalCompiler的使用92.2.1 分析当前的模块92.2.2 设置SignalCompiler

4、92.2.3 把模型文件MDL 转换成VHDL92.2.4 综合92.2.5 Quartus试配102.3嵌入式锁相环的设计102.4 引脚的锁定103、设计结果与结论114、结束语及致谢115、元器件及仪器设备明细表126、参考文献137、程序清单13正交信号发生器设计要求能通过按键进行幅度控制,输出信号的频率在1050kHZ,或者固定在某一频率上,要求峰-峰值大于3V,且输出波形不失真。1、方案论证与对比1.1方案一该方案根据矩阵式键盘输入给FPGA送出频率控制字与相位控制字,用于设定输出正弦波的频率与相位。高速DA转换器用于正弦波的DA转换。FPGA构成DDS的核心部分,用于接收送来的频

5、率字与相位字,同时给DA转换器输出正弦波数据。采用字符型液晶显示屏实时显示输出的频率与相位。该方案需借助Quartus来完成。图1 方案一原理框图按键控制DDS相位累加器幅度控制D/A转换电路A频率字输入相位字输入A路输出 1.2 方案二该方案是基于DSP Builder与DDS并借助于MATLAB进行设计的。首先在Matlab中DSP Build的Simulink中进行建模,系统仿真通过SignalCompiler将模型设计文件转换成相应的硬件描述语言(VHDL),在Quartus平台上进行综合生成网表文件,并适配下载至FPGA。在这个方案中,有两路正弦信号,一路为参考信号,另一路是可数控的

6、移动信号,并且这两路可同步进行幅度和频率数控,即对于这两路输出的正弦信号,在相位、频率和幅度3个参数上都能完成等步长数控步进,而且还能对指定的参数进行设定。频率字输入图2 方案二原理框图信号输出DDS相位累加器加法器查找表查找表相位字输入信号输出1.3方案选择方案一是基于Quartus,在设计的过程中,利用VHDL完成电路设计,必须借助于EDA工具中的综合器、适配器、时序仿真器和编程器等工具进行相应的处理,才能使此项设计在FPGA上完成硬件实现并得到硬件测试,在进行HDL文本输入设计流程中比较繁琐,而且容易出错。而方案二是基于DSP Builder进行手动流程设计,在设计过程中,DSP Bui

7、lder会自动完成VHDL的转换、综合、适配,而不像方案一那样要进行HDL文本输入,这样的话就能避免文本输入过程中的绝大多数错误。因而我们选择方案二。2、系统总体方案设计及实现2.1正交信号发生器设计2.1.1 DDS原理及设计直接数字频率合成技术(Direct Digital Synthesis,DDS)是一种从相位概念出发直接合成所需要的波形的新的全数字频率合成技术,该技术具有频率分辨率高、频率变化速度快、相位可连续性变化等特点,在数字通信系统中被广泛采用,是信号生成的最佳选择。DDS主要由相位累加器、相位调制器、正弦ROM查找表、D /A转换器等组成。系统时钟clk由一个稳定的晶体振荡器

8、产生,用来同步整个合成器的各组成部分。同步寄存器的使用是为了当输入的频率字改变时不会干扰相位累加器的正常工作。相位累加器是整个DDS的核心,它由N位加法器和N位相位寄存器级联构成,类似一个简单的加法器,完成上面推导中的相位累加功能。每来一个时钟脉冲,加法器就将输入的N位频率字与相位寄存器输出的累加相位数据相加,然后将相加后的结果送至相位累加器的输入端,相位寄存器就将在上一个时钟作用后产生的新相位数据反馈到加法器的输入端,以使加法器在下一个时钟的作用下继续将相位数据与输入的频率字相加。当相位累加器累加满量(2) 时,就会产生一次溢出,完成一个周期性的动作,这个周期就是合成信号的一个周期,累加器的

9、溢出频率就是DDS的合成信号频率。相位调制器接收相位累加器的相位输出,并与一个相位偏移值相加,主要用于信号的相位调制, 如PSK(相移键控)等。在不使用时可去掉该部分,或加一个固定的相位字输入。注意相位字输入也要用同步寄存器保持同步,但相位字输入的宽度M与频率字输入N往往是不相等的,一般M < N。正弦ROM查找表的作用是完成查表转换,或理解为相位到幅度的转换。将相位累加器或相位调制器输出的相位数据作为取样地址,来寻找正弦ROM表进行相位到幅度的变换,输出不同的幅度编码。经D /A转换器得到相应的阶梯波,最后经过低通滤波器对阶梯波进行平滑处理,得到由输入的频率字决定的连续变化的输出正弦波

10、。下面的即为基本DDS结构的常用参数计算公式: 输出频率: 频率字: 其中是频率控制字,为系统基准时钟的频率值,N为相位累加器的数据位宽,也是频率控制字的数据位宽。 图3 DDS基本结构原理图相位字输入同步寄存器M同步寄存器相位累加器相位调制器正弦ROMM正弦信号输出频率字输入CLKN下图为 DDS基本结构原理图,仔细观察。频率控制字的可调整性使得系统输出频率非常容易调整。输出正弦波频率f=fclk*frequword/220,系统时钟,频率控制字DDS系统时钟12MHz,异步于CPU时钟20bit频率控制字,8bit相位控制字,8bit数据输出每波形抽样256个点。相位累加器相位累加器结构如

11、图(4)所示。假设系统时钟为Fc,输出频率为Fout。每次转动一个角度360°/2N, 则可以产生一个频率为Fc/2N 的正弦波的相位递增量。那么只要选择恰当的频率控制字M,使得 Fout / Fc= M / 2N,就可以得到所需要的输出频率Fout,Fout = Fc*M / 2N,相位幅度转换通过相位累加器,我们已经得到了合成Fout 频率所对应的相位信息,然后相位幅度转换器把0°360°的相位转换成相应相位的幅度值。 (1)相位累加器结构如图(4)所示。图4 相位累加器 (2)如图5所示,该部分是频率字输入,不同的频率字输入会使得信号输出波形的频率不同。 图

12、5 频率字输入 (3)如图6所示,该部分是输入地址为6位,输出值位宽为8的正弦查找表模块,且输入地址总线为无符号整数。图6 LUT模块 高速D/A模块GW_ADDA板含两片10位超高速DAC(转换速率最高150MHz),D/A全部处于使能状态,除了数据线外,任一器件的控制信号线只有时钟线,这有利于高速控制和直接利用MATLAB/DSP Builder工具的设计。GW_ADDA板上工作时钟必须由FPGA的I/O口提供,优点是时钟频率容易变化,且可通过Cyclone中的PLL的到几乎任何时钟频率。由此即可测试DAC的最高转换频率。 两个电位器可分别调协两个D/A输出的幅度(输出幅度峰峰值不可大于5

13、V,否则波形失真);模拟信号从接插口的2针“AIN”输入,J1和J2分别是模拟信号输出的PA、PB口,也可在两挂钩处输出,分别是两个10位DA5651输出口。电路原理图如图7所示。相位累加器结构如图(4)所示。假设系统时钟为Fc,输出频率为Fout。每次转动一个角度360°/2N, 则可以产生一个频率为Fc/2N 的正弦波的相位递增量。下图为高速DA模块电路原理图,认真理解并运用:图7 高速DA模块电路原理图2.1.2 频率字输入的计算由DDS的频率输入字公式:计算,式中N为相位累加器的数据位宽,也是频率输入字的数据位宽,fclk是系统基准时钟的频率值。本设计中N=20,fclk=1

14、2MHZ,fout=50KHZ根据计算得出频率输入字为4369。2.1.3 输出波形峰峰值的计算本设计中正弦查找模块输入地址为8位,输出位宽为10位,且输入地址总线为无符号整数,可设置起始值为0、结束值为2、步进值为2/26。为了得到完整满度的波形输出,计算式可写成:511*sin0:2*pi/28:2*pi+5122.1.4 相位差的计算本设计用8bit相位控制字,8bit数据输出每波形抽样28=256个点,所以每按一键增加或减小相位差为3600/256=1.400 符合设计要求。2.1.5正交信号发生器电路模型图两个电位器可分别调协两个D/A输出的幅度,使用时一定要调节好,使之能调幅。基于

15、DDS的正交信号发生器是整个系统的设计核心部分,其电路模型图如图8所示。图8 基于DDS的正交信号发生器MDL模型DDS用来产生频率、相位和幅度可变的正弦波。DDS的工作原理是利用正弦信号的相位与时间呈线性关系的特性”1,采用相位累加方法作为地址,读出相应ROM中的值,得到正弦信号的瞬时幅值,实现频率合成。DDS包括频率控制字、相位控制字、同步寄存器、相位累加器、波形存储器、数模转换器、低通滤波器。在系统时钟的控制下相位累加器对频率控制字K进行累加,得到相位码,相位码寻址ROM得到幅值码,经过数模转换后得到相应的阶梯波,再经过低通滤波得到连续平滑的、由频率控制字K决定的模拟输出波形。DDS可以

16、用来产生多种波形,只要改变ROM中的数据预先设置成正弦波、余弦波等,根据查表就可以实现不同的波形。利用DSPBuilder设计DDS。然后转换成VHDL。DDS的分辨率在相位累加器的位数,足够大时,理论上可以获得相应的分辨精度。DDS是一个全数字结构的开环系统,无反馈环节,速度非常快。DDS的相位误差主要依赖于时钟的相位特性,相位误差小,相位是连续变化的,形成的信号具有良好的频谱。这是传统的直接频率合成方法无法实现的。相位字输入的数据宽度M往往小于相位寄存器字长,实际的DDS结构中很大。其中Subsystem的原理图如图9 图9 Subsystem的原理图2.1.6 Simulink模型的仿真

17、在Sinout模型编辑窗口中,选择SlimulationStart命令,开始仿真,等待仿真结束后,双击Scope模块,打开Scope观察窗口。其仿真波形如图10图10 simulink模型仿真图2.2 SignalCompiler的使用2.2.1 分析当前的模块双击Sinout模型中的SignalCompiler模块,之后单击Analyze按钮后,SignalCompiler就会对Sinout模型进行分析,检查模型有无错误,并在MATLAB主窗口中弹出对话框,并给出相关信息。2.2.2 设置SignalCompilerSignalCompiler窗口中大致分为3个功能部分:项目设置选项 硬件编

18、译流程信息框2.2.3 把模型文件MDL 转换成VHDL当设置好Device和Synthesis后,右侧的硬件编译部分就会列出一个操作:(1)Convert MDL to VHDL(2) Synthesis(3) Quartus2.2.4 综合单击步骤(2)的图标,完成综合过程。2.2.5 Quartus试配单击步骤(3)的图标,调用Quartus完成编译试配过程,生成编译文件。编译文件可以直接用于FPGA的编译配置。打开Quartus后 ,需在VHDL文件程序中实体说明中添加: CLK : out std_logic;在结构体最后加入:CLK<=CLOCK;2.3嵌入式锁相环的设计当输

19、出波形频率较高时,由于采样一个完整周期的波形数据点数减少,势必引起波形失真,要消除波形失真,一是可以增加采样波形数据的点数,二是提高系统的主工作时钟频率。若不增加外配ROM的情况下,可以使用后一种方法。本系统设计时在充分利用FPGA的存储空间的情况下,为了提高波形的输出频率(在不失真的条件下),还使用了Cyclone器件中的嵌入式锁相环,提高系统的主工作时钟频率,在实际工作时的主时钟频率达12 MHz。2.4 引脚的锁定设计中各引脚的锁定如图11所示。本设计选择工作模式1,通过键盘控制波形输出的幅度。图11各引脚的锁定3、设计结果与结论(1)嵌入式逻辑分析仪输出波形如图12图12 嵌入式逻辑分

20、析仪输出波形(2)波形失真度与储存波形ROM的位数及主工作时钟频率有关。(3)1.,2,3键控制幅度,其中1是微调,2,3粗调。由于我们频率设定在一个固定值,在10HZ到50KHZ之间,能够实现在峰峰值大于3V波形不失真。且波形较稳定。4、结束语及致谢在本文的撰写过程中,老师作为我们的指导老师,他们治学严谨,学识渊博,视野广阔,为我营造了一种良好的学术氛围。置身其间,耳濡目染,潜移默化,使我不仅接受了全新的思想观念,树立了明确的学术目标,领会了基本的思考方式,掌握了通用的研究方法,而且还明白了许多待人接物与为人处世的道理。其严以律己、宽以待人的崇高风范,朴实无华、平易近人的人格魅力,与无微不至

21、、感人至深的人文关怀,令人如沐春风,倍感温馨。这段时间的学习,使我们了解到了理论和实际之间的差别,第一次真正接触到了实际中的问题,并通过和老师、同学交流,加强了自身的分析问题、解决问题的能力。同时,我们也发现了自己在某些方面的不足,这是我们以后要加以改进的方面。对于如何运用MATLAB与DSPbuilder有了更好的运用,使我们对硬件课程的学习有了更浓的兴趣, 使我们对我们所学的这个方向服了更浓的兴趣。虽然在做课设的过程中遇到过许多困难,尤其是思路一开始不正确的时候也产生过放弃的念头,但最终还是坚持了下来,终于把这个课设完整圆满的做完了。在此特向老师致以衷心的谢意!向他们无可挑剔的敬业精神、严

22、谨认真的治学态度、深厚的专业修养和平易近人的待人方式表示深深的敬意!5、元器件及仪器设备明细表设备与器件名数量备注计算机1台MATLAB软件1套MATLAB 7.0DSP Builder软件1套DSP Builder6.0Quartus开发软件1套Quartus II6.0EDA实验箱1个GW48-PK2数字示波器1台ADS7022S6、参考文献1边计年,薛宏熙译. 用VHDL设计电子线路. 北京:清华大学出版社,2000.2黄正谨,徐坚等. CPLD系统设计技术入门与应用. 北京:电子工业出版社,2002.3蒋璇,蔵春华. 数学系统设计与PLD应用技术. 北京:电子工业出版社,2001.4李

23、宗伯,王蓉晖译. VHDL设计表示和综合. 北京:机械工业出版社,2002.5潘松,黄继业,王国栋. 现代DSP技术. 西安:西安电子科技大学出版社,2003.6王金明,杨吉斌. 数字系统设计与Verilog HDL. 北京:电子工业出版社,2002.7王锁萍. 电子设计自动化(EDA)教程. 成都: 电子科技大学出版社,2000.8徐志军,徐光辉. CPLD/FPGA开发与应用. 北京:电子工业出版社,2002.9Altera Corporation. Altera Digital Library. Altera,2002.10Xilinx Inc. Data Book 2001. Xili

24、nx,2000.7、程序清单use dspbuilder.dspbuilderblock.all;library lpm;use lpm.lpm_components.all; library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_signed.all;library dspbuilder;Entity biaozhun1 is Port(clk:out std_logic;clock:in std_logic;sclrp :in std_logic:='0'Input:in std_logic_vector(7

25、 downto 0);Input1:in std_logic_vector(31 downto 0);Input2:in std_logic_vector(7 downto 0);Input3:in std_logic_vector(7 downto 0);Output:out std_logic_vector(9 downto 0);Output1:out std_logic_vector(9 downto 0) );end biaozhun1;architecture aDspBuilder of biaozhun1 issignalSAOutputO:std_logic_vector(9

26、 downto 0);signalSAOutput1O:std_logic_vector(9 downto 0);signal sclr :std_logic:='0'signalA0W:std_logic_vector(32 downto 0);signalA1W:std_logic_vector(9 downto 0);signalA2W:std_logic_vector(15 downto 0);signalA3W:std_logic_vector(8 downto 0);signalA4W:std_logic_vector(32 downto 0);signalA5W:

27、std_logic_vector(8 downto 0);signalA6W:std_logic_vector(8 downto 0);signalA7W:std_logic_vector(33 downto 0);signalA8W:std_logic_vector(23 downto 0);signalA9W:std_logic_vector(32 downto 0);signalA10W:std_logic_vector(19 downto 0);signalA11W:std_logic_vector(19 downto 0);signalA12W:std_logic_vector(33

28、 downto 0);signalA13W:std_logic_vector(34 downto 0);signalA14W:std_logic_vector(10 downto 0);signalA15W:std_logic_vector(10 downto 0);signalA16W:std_logic_vector(10 downto 0);signalA17W:std_logic_vector(10 downto 0);signalA18W:std_logic_vector(10 downto 0);Beginassert (1<0) report altversion seve

29、rity Note;Output<=SAOutputO;Output1<=SAOutput1O;- Global reset circuitry for the input global reset sclrpsclr<=sclrp;- Input - I/O assignment from Simulink Block "Input"A3W(7 downto 0) <= Input;A3W(8) <= '0'- Input - I/O assignment from Simulink Block "Input1&qu

30、ot;A4W(31 downto 0) <= Input1;A4W(32) <= '0'- Input - I/O assignment from Simulink Block "Input2"A5W(7 downto 0) <= Input2;A5W(8) <= '0'- Input - I/O assignment from Simulink Block "Input3"A6W(7 downto 0) <= Input3;A6W(8) <= '0'A0W(32)<

31、;='0'- Constant assignment - Simulink Block "Constant0"A1W(9)<='0'A1W(8 downto 0)<="000000000"- Constant assignment - Simulink Block "Constant1"A2W(15)<='0'A2W(14 downto 0)<="000000000000000"- Concatenation Operation - Simul

32、ink Block "BusConcatenation"A8W(22 downto 0) <= A3W(7 downto 0) & A2W(14 downto 0);A8W(23)<='0'- Concatenation Operation - Simulink Block "BusConcatenation1"A9W(31 downto 0) <= A1W(8 downto 0) & A8W(22 downto 0);A9W(32)<='0'A16W(10)<='0&

33、#39;A17W(10)<='0'A18W(10)<='0'- Output - I/O assignment from Simulink Block "Output"Outputi : SBF generic map(width_inl=>11,width_inr=>0,width_outl=>10,width_outr=>0,lpm_signed=>BusIsUnsigned,round=>0,satur=>0)port map (xin=>A17W,yout=>SAOut

34、putO);- Output - I/O assignment from Simulink Block "Output1"Output1i : SBF generic map(width_inl=>11,width_inr=>0,width_outl=>10,width_outr=>0,lpm_signed=>BusIsUnsigned,round=>0,satur=>0)port map (xin=>A18W,yout=>SAOutput1O);-Bus Formatting Simulink Block "

35、AltBus"AltBusi : SBF generic map(width_inl=>34,width_inr=>0,width_outl=>32,width_outr=>0,lpm_signed=>BusIsUnsigned,round=>0,satur=>0)port map (xin =>A7W,yout=>A0W(31 downto 0);- Delay Element - Simulink Block "Delay"Delayi : SDelaygeneric map (LPM_WIDTH =>

36、; 34,LPM_DELAY => 1,SequenceLength => 1,SequenceValue => 1)port map (dataa=>A12W,clock=>clock,ena =>'1',sclr =>sclr,result=>A7W);- Product Operator - Simulink Block "Product"Producti : AltiMult generic map (LPM_WIDTHA=>11,LPM_WIDTHB=>9,PIPELINE=>0,o

37、ne_input=>0,lpm =>1,lpm_hint=>"UNUSED",cst_val =>"000000000",SequenceLength=>1,SequenceValue=>1,dspb_widthr=>20)port map (DATAA=>A14W,DATAB=>A5W,clock=>'0',ena =>'1',sclr =>'0',result=>A10W);- Product Operator - Simul

38、ink Block "Product1"Product1i : AltiMult generic map (LPM_WIDTHA=>11,LPM_WIDTHB=>9,PIPELINE=>0,one_input=>0,lpm =>0,lpm_hint=>"UNUSED",cst_val =>"000000000",SequenceLength=>1,SequenceValue=>1,dspb_widthr=>20)port map (DATAA=>A15W,DATAB=&

39、gt;A6W,clock=>'0',ena =>'1',sclr =>'0',result=>A11W);- Sum Operator - Simulink Block "ParallelAdderSubtractor"ParallelAdderSubtractori : SAdderSub generic map (lpm_width =>33,pipeline=>1,SequenceLength=>1,SequenceValue=>1,AddSubVal=>AddAdd

40、)port map (dataa=>A0W,datab=>A9W,clock=>clock,ena =>'1',sclr =>sclr,result=>A12W);- Sum Operator - Simulink Block "ParallelAdderSubtractor1"ParallelAdderSubtractor1i : SAdderSub generic map (lpm_width =>34,pipeline=>1,SequenceLength=>1,SequenceValue=>1

41、,AddSubVal=>AddAdd)port map (dataa(32 downto 0)=>A4W(32 downto 0),dataa(33)=>A4W(32),datab=>A7W,clock=>clock,ena =>'1',sclr =>sclr,result=>A13W);- Look-up table - Simulink Block "LUT"LUTi : lpm_romgeneric map (LPM_WIDTH => 10,LPM_WIDTHAD => 10,lpm_address_control => "REGISTERED",lpm_outdata => "UNREGISTERED",lpm_file => "

温馨提示

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

评论

0/150

提交评论