收藏 分销(赏)

毕业设计基于fpga的多功能波形发生器设计.doc

上传人:胜**** 文档编号:2102669 上传时间:2024-05-16 格式:DOC 页数:33 大小:969.50KB
下载 相关 举报
毕业设计基于fpga的多功能波形发生器设计.doc_第1页
第1页 / 共33页
毕业设计基于fpga的多功能波形发生器设计.doc_第2页
第2页 / 共33页
毕业设计基于fpga的多功能波形发生器设计.doc_第3页
第3页 / 共33页
毕业设计基于fpga的多功能波形发生器设计.doc_第4页
第4页 / 共33页
毕业设计基于fpga的多功能波形发生器设计.doc_第5页
第5页 / 共33页
点击查看更多>>
资源描述

1、课 程 设 计题 目多功能波形发生器的设计学 院信息工程学院专 业班 级姓 名指导教师年月日摘要3Abstract4多功能波形发生器的设计41.课题简介61.1 课设目的61.2课设要求62设计方案82.1方案选择82.2 设计原理82.3设计流程93仿真结果153.1编译警告153.2编译结果163.3建立仿真文件163.4仿真结果183.5 RTL视图194程序分析214.1VHDL语言分析214.2主要函数语句分析215小结236参考文献247附录源程序代码25摘要 多功能信号发生器已成为现代测试领域应用最为广泛的通用仪器之一,代表了信号源的发展方向。直接数字频率合成(DDS)是二十世纪

2、七十年代初提出的一种全数字的频率合成技术,其查表合成波形的方法可以满足产生任意波形的要求。由于现场可编程门阵列(FPGA)具有高集成度、高速度、可实现大容量存储器功能的特性,能有效地实现DDS技术,极大的提高函数发生器的性能,降低生产成本。 本文首先介绍了函数信号发生器的研究背景和DDS的理论。然后详尽地叙述了利用VHDL语言描述DDS模块的设计过程,以及设计过程中应注意的问题。文中详细地介绍了多种信号的发生理论、实现方法、实现过程、部分VHDL代码以及利用Quartus仿真的结果。 文中还介绍了Altera公司的DE2多媒体开发平台的部分功能及使用,并最终利用DE2平台完成了多功能信号发生器

3、的大部分功能。包括由LCD显示和按键输入构成的人机界面和多种信号的发生。数字模拟转换器是BURR-BROWN公司生产的DAC902。该信号发生器能输出8种不同的信号,并且能对输出信号的频率、相位以及调制信号的频率进行修改设定。关键词:VHDL D/A接口 Abstract Multi function signal generator has become the most widely used in modern testing field of general instrument, and has represented one of the development direction

4、 of the source. Direct digital frequency synthesis (DDS) is a totaly digital frequency synthesis technology, which been put forward in the early 1970s. Using a look-up table method to synthetic waveform, it can satisfy any requirement of waveform produce. Due to the field programmable gates array (F

5、PGA) with high integrity, high speed, and large storage properties, it can realize the DDS technology effectively, increase signal generators performance and reduce production costs. Firstly, this article introduced the function signal generator of the research background and DDS theory. Then, it de

6、scribed how to design a DDS module by VHDL, and introduced various signal occurs theory, method and the implementation process, VHDL code and simulation results. This paper also introduces the function of DE2 multimedia development platform, and completed most of the functions of multi-function sign

7、al generator on DE2 platform finally. Including the occurrence of multiple signal and the man-machine interface which composed by LCD display and key input. Digital-to-analog converters is DAC902, which produced by company BURR-BROWN. This signal generator can output eight different kinds of signals

8、, and the frequency of the output signal, phase and modulation frequency signal also can be modifyed. Keywords: VHDL D/A Interface 多功能波形发生器的设计信号发生器又称信号源或振荡器,在生产实践和科技领域中有着广泛的应用。它能够产生多种波形,如三角波、锯齿波、矩形波(含方波)、正弦波等,在电路实验和设备检测中具有十分广泛的用途。例如在通信、广播、电视系统中,都需要射频(高频)发射,这里的射频波就是载波,把音频(低频)、视频信号或脉冲信号运载出去,就需要能够产生高频的

9、振荡器。在工业、农业、生物医学等领域内,如高频感应加热、熔炼、淬火、超声诊断、核磁共振成像等,都需要功率或大或小、频率或高或低的信号发生器。 传统的信号发生器主要有两类:正弦波和脉冲波信号发生器,而函数发生器介于两类之间。它能够提供正弦波、锯齿波、方波、三角波等几种常用标准波形,产生其它波形时,需要采用较复杂的电路和机电结合的方法。这个时期的波形发生器多采用模拟电子技术,但是模拟器件构成的电路存在着尺寸大、价格贵、功耗大等缺点。而且要产生的信号波形越复杂,则电路结构也会越复杂。同时还有两个突出问题,一是通过电位器的调节来实现输出频率的调节,因此很难将频率调到某一固定值;二是脉冲的占空比不可调节

10、。 现代科学技术的飞速发展对信号源提出了越来越高的要求。这些要求主要表现在高分辨率、高输出频率、任意波形等方面。此时传统的信号发生器已经无法满足要求。 直接数字频率合成(Direct Digital Synthesizer简称DDS)技术是一种新的全数字的频率合成原理,它从相位的角度出发直接合成所需波形。这种技术由美国学者JTiercy,MRader和BGold于1971年首次提出,但限于当时的技术和工艺水平,DDS技术仅仅在理论上进行了一些探讨,而没有应用到实际中去。但是随着电子技术的飞速发展,微处理器性能大幅提高,高速的D/A以及随机存储器大量涌现,DDS技术已经变得很容易实现。它已广泛应

11、用于通讯、雷达、遥控测试、电子对抗以及现代化的仪器仪表工业等许多领域。将其与简单电路相结合就可以精确模拟仿真各种信号。 不论是在生产、实验还是在科研与教学上,多功能信号发生器都是用于仿真实验的最佳工具。随着我国经济和科技的发展,对相应的测试仪器和测试手段也提出了更高的要求,多功能信号生器己成为测试仪器中至关重要的一类,因此开发多功能信号发生器具有重大意义。1.课题简介1.1 课设目的(1)懂得多功能波形发生器的结构组成(2)懂得利用FPGA芯片实现多种波形的产生方法(3)懂得一种复杂FPGA电路的设计 1.2课设要求 设计一个多功能波形发生器。该波形发生器能产生正弦波、方波、三角波和由用户编辑

12、的特定形状波形。具体要求如下: (1) 具有产生正弦波、方波、三角波、锯齿波4种周期性波形的功能。 (2) 用键盘输入编辑生成上述4种波形(同周期)的线性组合波形。 (3)具有波形存储功能。 (4)输出波形的频率范围为100Hz200kHz;重复频率可调,频率步进间隔100Hz。 (5)输出波形幅度范围05V(峰-峰值),可按步进0.1V(峰-峰值)调整。 (6)具有显示输出波形的类型、重复频率(周期)和幅度的功能。 (7)用键盘或其他输入装置产生任意波形。多功能波形发生器系统由以下四部分组成:输入部分、FPGA部分、DAC、显示部分组成。 图1 多功能波形发生器系统框图1.3课设工具本次设计

13、是基于Altera公司的QuartusII软件。Quartus II 是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。QuartusII支持Altera的IP核,包含了LPM/MegaFuction宏功能模块库,使用它,可以简化设计的复杂性,加快设计速度。QuartusII平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。此外,QuartusII

14、通过和DSP Builder工具与Matlab/SIMULINK相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统开发,集系统级设计、嵌入式软件设计、可编程逻辑设计于一体,是一种综性的开发平台。2设计方案2.1方案选择1、模拟锁相环实现模拟锁相环技术是一项比较成熟的技术。应用模拟锁相环,可将基准频率倍频,或分频得到所需的频率,且调节精度可以做到相当高、稳定性也比较好。但模拟锁相环模拟电路复杂,不易调节,成本较高,且由于受模拟器件的影响,波形变换调节时间较长,输出波形的毛刺较多,因此模拟锁相环实现在低频(0500KHz)信号发生系统中不是很好的方案。2、直接数字频率合成实

15、现直接数字频率合成(DDFS)技术是经典的数字频率合成技术。由于数字量的可操作性远远高于模拟量,采用DDFS的优点在于频率精度高、波形调节方便、且输出波形毛刺少等。基于单片机的数字波形发生系统受单片机指令频率的限制,输出波形频率较低,而基于FPGA的波形发生系统就不存在这样的问题,其输出频带较单片机实现有很大的展宽。本系统设计选定以FPGA作为系统控制核心的直接数字频率合成实现方案。2.2 设计原理采用DDS技术可以很方便地产生各种高质量的波形。DDS技术是从相位概念出发之结合成所需要波形的一种频率合成技术。以正弦波为例,首先要按照一定的采样点数将正弦波形一个周期的数据信息存于ROM表中,表中

16、包含着一个周期正弦波的数字幅度信息,每个地址对应正弦波中0到360度范围内的一个相位点的幅度值,查找表时即是把输入的地址相位信息映射成正弦波幅度的数字量信号,通过设置的输出端口输出。在实物设计中,可以使用D/A接口来实现波形信号的输出。为简化设计过程,本设计并未采用DDS技术,而是采用描点输出的方式,实现波形发生器的设计。程序中设置一个波形的起始点,经过比较、计算得出波形的其他数值,将这些点依次连续输出,从而实现波形的仿真。以递增锯齿波为例,首先定义初始点为 tmp=“00000000”;在时钟上升沿到来时,执行tmp lcd(7 downto 1) lcd(7 downto 1) lcd(7

17、 downto 1) lcd(7 downto 1) lcd(7 downto 1) lcd(7 downto 1) lcd(7 downto 1) lcd(7 downto 1) lcd(7 downto 1) lcd(7 downto 1) lcd(7 downto 1)=0000001; end case;end process;综合时,信号y被添加到敏感信号表中。第二个警告,认为引脚p180直接到正电源了。port(clk : in std_logic; -时钟信号输入 set, clr, up, down, zu, zd : in std_logic; -各个波形特征的调节触发信号

18、posting : in std_logic; -任意波键盘置入信号 u0,d0,sw : in std_logic; -方波A、B的切换sw,和方波B的幅度调节按键 ss : in std_logic_vector( 3 downto 0 ); -档位选择信号 sss : in std_logic_vector( 4 downto 0 ); -波形选择信号 Data3, Data2, Data1,Data0 : in std_logic_vector(3 downto 0); -BCD码输入 p180 : out std_logic; -预留接口 lcd : out std_logic_ve

19、ctor(7 downto 0); -显示输出 shift : out std_logic_vector(3 downto 0); -位码输出 dd, a : out std_logic_vector( 7 downto 0); -波形、幅度数据输出但实际上引脚p180是预留接口未用。3.2编译结果 图9 编译结果3.3建立仿真文件 在编译通过后,要建立后缀为vwf的仿真波形文件。执行菜单命令,选择new,再选择需要的Vector Waveform File,单击ok。在波形文件编辑方式下,右键选择insert添加信号节点,设置相应的参数。如下图所示。 图10 仿真波形文件建立 图11 仿真波

20、形参数设置3.4仿真结果仿真结果如下图所示 图12仿真波形3.5 RTL视图生成的RTL视图如下 图13 RTL视图4程序分析4.1VHDL语言分析一个VHDL语言的设计程序描述的是一个电路单元,这个电路单元可以是一个门电路,或者是一个计数器,也可以是一个CPU,一般情况下,一个完整的VHDL语言程序至少包括实体、结构体和程序包三个部分。实体给出电路单元的外部输入输出接口信号和引用信息,结构体给出了电路单元的内部结构和信号的行为特点,程序包定义在设计结构体和实体中将用到的常数、数据类型、子程序和设计好的电路单元等。第一部分是程序包,程序包是用VHDL语言编写的共享文件,定义在设计结构体和实体中

21、将要用到的常数、数据类型、子程序和设计好的电路单元等,放在文件目录名称为IEEE的程序包库中。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;第二部分是程序的实体,定义电路单元的输入/输出引脚名称。程序的实体名称可以任意取,但必须与VHDL程序的文件名称相同。实体的标示符是ENTITY,实体以ENTITY开头,以END结束。ENTITY fulladder ISPORT(a,b,Ci:in std_logic;Co,s: out std_l

22、ogic_vector(7 downto 0);END fulladder;其中,定义了a,b, Ci为输入信号引脚,定义Co,s为输出信号引脚。第三部分是程序的结构体,具体描述电路的内部结构和逻辑功能。结构体有三种描述方式,分别是行为(BEHAVIOR)描述方式、数据流(DATAFLOW)描述方式和结构描述方式。其中数据流描述方式又被称为寄存器(RTL)描述方式。结构体以表示ARCHITECHTURE开头,以END结尾。结构体的名称可以任取。architecture behav of fulladder isBEGINs=a xor b xor Ci;Co 顺序语句When 选择值 = 顺序

23、语句.END CASE 当执行到CASE语句时,首先计算表达式的值,然后根据条件句中与之相同的选择值。执行对应的顺序语句,最后结束 CASE语句。表达式可以是一个整数类型或枚举类型的值,也可以是由这些数据类型的值构成的数组。5小结通过这次FPGA课程设计,我对FPGA的基本原理有了进一步的认识。FPGA的基础就是数字电路和VHDL语言,其开发需要从顶层设计、模块分层、逻辑实现、软硬件调试等多方面着手。开发环境常用的有Altera公司的Quartus II和Xilinx公司的ISE,本次课程设计选用的是Quartus II。此次课程设计暴露了我平时学习中的许多不足。在设计的过程中我遇到了一些问题

24、,比如对Quartus软件的使用还不太熟悉,在编译的时候出现的错误不知道怎么解决,请教了很多同学才弄明白。还有进行仿真之前需要自己建立仿真波形文件,才能进行仿真等等,但在和老师、同学的交流下,最后我都解决了问题。另一方面我也感受到动手实践的重要性。动手实践是理论知识得以灵活运用的必要前提,也是今后走上工作岗位之后能够很好的完成设计工作的技术保证。FPGA是实用性很强的课程,只有多学多用,边学边用,才能促进提高自己的能力。虽然课设完成了,但是我意识到,我对FPGA技术仅仅只是停留在入门的阶段,想要有更大的发展,更深入的研究,还需要更多的努力与实践。6参考文献【1】潘松 黄继业. EDA技术与VH

25、DL(第二版).北京:清华大学出版社,2005.7【2】康华光.电子技术基础.北京:高等教育出版社.2006.1【3】付家才. EDA工程实践技术.北京:化学工业出版社,2007.1【4】汉泽西. EDA技术及其应用.北京:北京航空航天大学出版社,2004.5【5】赵刚.EDA技术简明教程.成都:四川大学出版社,2004.6【6】章彬宏 周正林.EDA应用技术.北京:北京理工大学出版社,2007.7【7】刘艳萍 高振斌 李志平.EDA实用技术及应用.北京:国防工业出版社,2006.17附录源程序代码library ieee;use ieee.std_logic_1164.all;use iee

26、e.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity keshe isport(clk : in std_logic; -时钟信号输入 set, clr, up, down, zu, zd : in std_logic; -各个波形特征的调节触发信号 posting : in std_logic; -任意波键盘置入信号 u0,d0,sw : in std_logic; -方波A、B的切换sw,和方波B的幅度调节按键 ss : in std_logic_vector( 3 downto 0 ); -档位选择信号 sss : in

27、 std_logic_vector( 4 downto 0 ); -波形选择信号 Data3, Data2, Data1,Data0 : in std_logic_vector(3 downto 0); -BCD码输入 p180 : out std_logic; -预留接口 lcd : out std_logic_vector(7 downto 0); -显示输出 shift : out std_logic_vector(3 downto 0); -位码输出 dd, a : out std_logic_vector( 7 downto 0); -波形、幅度数据输出end keshe;archi

28、tecture behav of keshe issubtype word is std_logic_vector( 7 downto 0 );type unit is array(63 downto 0) of word;signal ram : unit;signal qqq : integer range 0 to 250000000;signal qq : integer range 0 to 78125000;signal tmp : integer range 0 to 9999;signal coun : integer range 0 to 78125000;signal co

29、un0 : integer range 0 to 250000000;signal b : integer range 0 to 78125000;signal c : integer range 0 to 500000000;signal z, con : integer range 0 to 63;signal f : std_logic_vector( 7 downto 0 );signal amp, amp0, d : std_logic_vector(7 downto 0);signal bcd0,bcd1,bcd2,bcd3 : integer range 0 to 9;signa

30、l bcd01,bcd11,bcd21,bcd31 : integer range 0 to 9;signal bcd00,bcd10,bcd20,bcd30 : integer range 0 to 9;signal y : integer range 0 to 9;signal addr : integer range 0 to 63;beginqq=781250 when ss=1000 else 7812500 when ss=0100 else 78125000 when ss=0010 else 78125;-qq信号对应SW=0时的档位选择信号SS,实现方波A和其他三种波形的频率

31、预置qqq= 500000 when ss=1000 else 5000000 when ss=0100 else 50000000 when ss=0010 else50000;-qqq信号对应SW=1时的档位选择信号SS,实现方波B的频率预置process(clk) -此进程分别描述了各种波形的频率、幅度(方波A的占空比)调节以及各种波形的任意线-形叠加等。variable count4 : integer range 0 to 6250000;variable count : integer range 0 to 78125000;variable count3 : integer ra

32、nge 0 to 250000000;variable count1 : integer range 0 to 12500000;variable count0 : integer range 0 to 3249999;variable ddd : std_logic_vector(9 downto 0);variable dd0,dd1,dd2,dd3,dd4 : integer range 0 to 255;variable adr : integer range 0 to 63;beginif rising_edge(clk) then if posting=1 then if coun

33、t4=6249999 then count4:=0; adr:=conv_integer(Data3)*10+conv_integer(Data2);-存储单位地址 if adr64 then if set=1 then ram(adr)=conv_std_logic_vector(conv_integer(Data1)*10+conv_integer(Data0)*2,8); -对置入的任意波形数据进行储存 elsif clr=1 then adr:=0; -存储器所有单元清零 for i in 0 to 63 loopram(i)0);end loop; end if; end if; e

34、lse count4:=count4+1; end if; else if set=1 then coun=0; b=0; coun0=0;c=0;z=31;amp0=01111111; addr=0;tmp=conv_integer(Data3)*1000+conv_integer(Data2)*100+conv_integer(Data1)*10+conv_integer(Data0); -频率数据 amp0 then if sw=0 then if counqq then coun=coun+tmp; b=b+1; -频率到采样点间隔脉冲数转换 else if count=b then count:=1; if f=63 the

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 毕业论文/毕业设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服