资源描述
西安交通大学网络教育学院论文
1 绪论
简易多功能信号发生器是信号发生器的一种,在生产实践和科研领域中有着广泛的应使用。在研制、生产、测试和维修各种电子元件、部件以及整机设备时,都需要有信号源,由它产生不同频率不同波形的电压、电流信号并加到被测器件或设备上,使用其他仪器观察、测量被测仪器的输出响应,以分析确定它们的性能参数。信号发生器是电子测量领域中最基本、应使用最广泛的一类电子仪器。它可以产生多种波形信号,如正弦波,三角波,方波和锯齿波等,因而广泛使用于通信、雷达、导航、宇航等领域。
在本设计中它能够产生多种波形,如正弦波,三角波,方波和锯齿波等,并能实现对各种波频率和幅度的改变。正因为其在生活中应使用的重要性,人们它做了大量的研究,总结出了许多实现方式。可以基于FPGA 、VHDL、单片机、DOS技能、数字电路等多种方法实现。
本设计是采使用VHDL来实现的简易多功能信号发生器。它能产生正弦波,三角波,方波和锯齿波。且对各种波形的要求如下:
(1)根据按键选择不同的波形(实现正弦波,三角波,方波和锯齿波);
(2)各波形的频率范围为100Hz-20KHz;
(3)各波形频率可调(通过按键控制频率的变化,步进值为500Hz);
(4)使使用LED数码管实时显示输出信号波形的频率值;
(5)使用按键控制实现输出信号的幅度调节(幅度调节为2.5V和5V)。
2 EDA技术介绍
2.1 EDA介绍
EDA是电子设计自动化(Electronic Design AutoMation)缩写。EDA技术是以计算机为工具,根据硬件描述语言HDL( Hardware Description language)完成的设计文件,自动地完成逻辑编译、化简、分割、综合及优化、布局布线、仿真以及对于特定目标芯片的适配编译和编程下载等工作。 硬件描述语言HDL是相对于一般的计算机软件语言,如:C、PASCAL而言的。HDL语言使使用与设计硬件电子系统的计算机语言,它能描述电子系统的逻辑功能、电路结构和连接方式。设计者可利使用HDL程序来描述所希望的电路系统,规定器件结构特征和电路的行为方式;然后利使用综合器和适配器将此程序编程能控制FPGA和CPLD内部结构,并实现相应逻辑功能的的门级或更底层的结构网表文件或下载文件。目前,就FPGA/CPLD开发来说,比较常使用和流行的HDL主要有ABEL-HDL、AHDL和VHDL[1]。
现在数字逻辑电路实验都可以在计算机上利使用EDA (Electronic Design AutoMatic—电子设计自动化)软件进行设计、仿真,只有极少量外部配件不能在计算机上进行仿真。因此,在实验前期阶段,即实验预习阶段的主要应使用工具是EDA软件,利使用EDA软件可以设计、仿真实验课题,进行虚拟实验。通过虚拟实验使实验者在进入真实实验前就能对预做的实验有相当的了解,甚至可以预测到实验的结果。这样在实际做实验时,可以把许多设计型实验的难度降低,同时能有更多的时间让实验者动手做实验,研究问题,提高实验效率。当前数字电路设计已由计算机辅助设计进入到以计算机为主的设计时代。
2.2 VHDL基本介绍
VHDL是一种主要的硬件描述语言之一,硬件描述语言(HDL)是各种描述方法中最能体现EDA优越性的描述方法。所谓硬件描述语言,实际上就是一种描述工具,其描述的对象就是待设计电路系统的逻辑功能,实现该功能的算法,选使用的电路结构以及其他各种约束条件等。通常要求HDL既能描述系统的行为,又能描述系统的结构。
VHDL语言是美国国防部与20世纪80年代后期,出于军事工业需要开发的。1984年VHDL被IEEE确定为标准的硬件描述语言。1993年IEEE对VHDL进行了修正,增加了部分新的VHDL命令与属性,增强了对系统的描述能力。
西安交通大学网络教育学院论文
4片VHDL结构芯片之间的互连线较少,需要外连接口时要通过软线连接板上的插座,因此外接高速设备(例如SATAII和PCIE)时信号完整性将受到考验。2、S2C公司的验证平台TAI Logic Module,其最新产品是V5 TAI Logic Module,包含两片 XC5VLX330FF1760。它通过多片板卡堆叠的方式来满足更大规模的设计,堆叠高度的增加对系统稳定性和信号完整性都有很大影响。VHDL上的6个DDR2的SODIMM接口以及8个MEG Array接口。
VHDL抽象描述强,支持硬件的设计,验证,综合和测试。VHDL能在多级别上对同一逻辑功能进行描述。VHDL的基本结构包含一个实体和一个结构体,而完整的VHDL结构还包括配置,程序包与库。各种硬件描述语言中,VHDL的描述能力最强,因此运使用VHDL 进行复杂电路设计时,往往采使用自顶向下结构化的设计方法。
2.3 设计工具简介
Quartus II 是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。
Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使使用户可以充分利使用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方EDA工具的良好支持也使使用户可以在设计流程的各个阶段使使用熟悉的第三放EDA工具。
此外,Quartus II 通过和DSP Builder工具与Matlab/SiMulink相结合,可以方便地实现各种DSP应使用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。
Maxplus II 作为Altera的上一代PLD设计软件,由于其出色的易使用性而得到了广泛的应使用。目前Altera已经停止了对Maxplus II 的更新支持,Quartus II 与之相比不仅仅是支持器件类型的丰富和图形界面的改变。Altera
西安交通大学网络教育学院论文
在Quartus II 中包含了许多诸如SignalTap II、Chip Editor和RTL Viewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了Maxplus II 友好的图形界面及简便的使使用方法。
Altera Quartus II 作为一种可编程逻辑的设计环境, 由于其强大的设计能力和直观易使用的接口,越来越受到数字系统设计者的欢迎。
Altera的Quartus II可编程逻辑软件属于第四代PLD开发平台。该平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。Quartus平台与Cadence、ExeMplarLogic、 MentorGraphics、Synopsys和Synplicity等EDA供应商的开发工具相兼容。改进了软件的LogicLock模块设计功能,增添 了FastFit编译选项,推进了网络编辑性能,而且提升了调试能力。
3 设计流程
3.1 设计思想及原理图
基于VHDL语言设计一个简易多功能信号发生器,经过选入输入信号,能够输出正弦波、三角波、方波和锯齿波四种波形信号。信号发作器的控制模块能够运用数据选择器完成,四种信号的信号选择能够运用数据选择器完成。同时本设计使运用原理图的办法,对正弦波、三角波、方波和锯齿波和数据选择器元件停止调运用。简易多功能信号发生器的原理图如下:
图 31 简易多功能信号发生器原理图原理图
本设计的主题思想是各个模块分别产生相应的波形,再通过一个4选1数据选择器输出相应的波形。通过其他按键控制波形的频率和幅度的变化。
3.2 正弦波、三角波、方波和锯齿波的实现
3.2.1 正弦波设计
正弦波的产生思想是将对模拟波形采样后的编码存入定义好的ROM中,再根据时钟循环的将这些编码顺序输出,在输出端将经过数模转换器转换后的模拟信号接入示波器即可显示正弦波形。产生正弦波的VHDL代码如下:
library ieee;
use ieee.std_logic_1164.all;
entity sin2 is
port(clock,sel:in std_logic;
dout4:out integer range 0 to 255);
end sin2;
architecture bhv of sin2 is
type MeM_type is array(0 to 63) of integer range 0 to 255;
constant MeM:MeM_type:=(255,254,252,249,245,239,233,225,
217,207,197,186,174,162,150,137,
124,112,99,87,75,64,53,43,34,
26,19,13,8,4,1,0,0,1,4,8,
13,19,26,34,43,53,64,75,87,99,
112,124,137,150,162,174,186,197,207,
217,225,233,239,245,249,252,254,255);
signal address:integer range 0 to 63;
begin
process(clock)
begin
if clock'event and clock='1' then
if address>63 then
address<=0;
else
if sel='1' then
address<=address+1;
dout4<=(MeM(address))/2;
else
address<=address+1;
dout4<=MeM(address);
end if;
end if;
end if;
end process;
end bhv;
3.2.2 正弦波的仿真
在Quartus II软件输入上述代码,再通过编译和时序仿真,可得到如下的仿真波形。
图3-2 正弦波时序仿真图
上图中的输出制式模拟信号各采样点的数字编码,由于没有经过数模转换,输出结果就如图中所示。当将程序下载到硬件后,在示波器上就可以显示正弦波形了。
3.2.3 三角波设计
三角波的产生思想是将对模拟波形采样后的编码存入定义好的ROM中,再根据时钟循环的将这些编码顺序输出,在输出端将经过数模转换器转换后的模拟信号接入示波器即可显示三角波形。产生三角波的VHDL代码如下:
library ieee;
use ieee.std_logic_1164.all;
entity sanjiao is
port(clock,sel:in std_logic;
dout3:out integer range 0 to 255);
end sanjiao;
architecture bhv of sanjiao is
type MeM_type is array(0 to 63) of integer range 0 to 255;
constant MeM:MeM_type:=(0,8,16,24,32,40,48,56,
64,72,80,88,96,104,112,120,
128,136,144,152,160,168,176,184,
192,200,208,216,224,232,240,248,
255,248,240,232,224,216,208,200,
192,184,176,168,160,152,144,136,
128,120,112,104,96,88,80,72,
64,56,48,40,32,24,16,8);
signal address:integer range 0 to 63;
begin
process(clock)
begin
if clock'event and clock='1' then
if address>63 then
address<=0;
else
if sel='1' then
address<=address+1;
dout3<=(MeM(address))/2;
else
address<=address+1;
dout3<=MeM(address);
end if;
end if;
end if;
end process;
end bhv;
3.2.4 三角波的仿真
在Quartus II软件输入上述代码,再通过编译和时序仿真,可得到如下的仿真波形。
图3-3 三角波仿真图
上图中的输出制式模拟信号各采样点的数字编码,由于没有经过数模转换,输出结果就如图中所示。当将程序下载到硬件后,在示波器上就可以显示三角波形了。
3.2.5 方波设计
方波波的产生思想是将对模拟波形采样后的编码存入定义好的ROM中,再根据时钟循环的将这些编码顺序输出,在输出端将经过数模转换器转换后的模拟信号接入示波器即可显示方波波形。产生方波的VHDL代码如下:
library ieee;
use ieee.std_logic_1164.all;
entity fangbo is
port(clock,sel:in std_logic;
dout1:out integer range 0 to 255);
end fangbo;
architecture bhv of fangbo is
type MeM_type is array(0 to 63) of integer range 0 to 255;
constant MeM:MeM_type:=(255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
signal address:integer range 0 to 63;
begin
process(clock)
begin
if clock'event and clock='1' then
if address>63 then
address<=0;
else
if sel='1' then
address<=address+1;
dout1<=(MeM(address))/2;
else
address<=address+1;
dout1<=MeM(address);
end if;
end if;
end if;
end process;
end bhv;
3.2.6 方波的仿真
在Quartus II软件输入上述代码,再通过编译和时序仿真,可得到如下的仿真波形。
图3-4三角波仿真图
上图中的输出制式模拟信号各采样点的数字编码,是由于没有经过数模转换,输出结果就如图中所示。当将程序下载到硬件后,在示波器上就可以显示三角波形了。
3.2.7 锯齿波设计
锯齿波的产生思想是将对模拟波形采样后的编码存入定义好的ROM中,再根据时钟循环的将这些编码顺序输出,在输出端将经过数模转换器转换后的模拟信号接入示波器即可显示锯齿波形。产生锯齿波的VHDL代码如下:
library ieee;
use ieee.std_logic_1164.all;
entity juchi is
port(clock,sel:in std_logic;
dout2:out integer range 0 to 255);
end juchi;
architecture bhv of juchi is
type MeM_type is array(0 to 63) of integer range 0 to 255;
constant MeM:MeM_type:=(0,4,8,12,16,20,24,28,
32,36,40,44,48,52,56,60,
64,68,72,76,80,84,88,92,
96,100,104,108,112,116,120,124,
128,132,136,140,144,148,152,156,
160,164,168,172,176,180,184,188,
192,198,200,204,208,212,216,220,
224,228,234,238,242,246,250,255);
signal address:integer range 0 to 63;
begin
process(clock)
begin
if clock'event and clock='1' then
if address>63 then
address<=0;
else
if sel='1' then
address<=address+1;
dout2<=(MeM(address))/2;
else
address<=address+1;
dout2<=MeM(address);
end if;
end if;
end if;
end process;
end bhv;
3.2.8 锯齿波的仿真
在Quartus II软件输入上述代码,再通过编译和时序仿真,可得到如下的仿真波形。
图3-6正弦波未分频时仿真图
上图中的输出制式模拟信号各采样点的数字编码,由于没有经过数模转换,输出结果就如图中所示。当将程序下载到硬件后,在示波器上就可以显示锯齿波波形了。
3.3 各个控制单元的实现
3.3.1 频率控制单元
频率控制单元包括按键输入识别模块、分频数产生模块和分频模块。其器件图分别如图6、图7和图8所示。
在按键输入识别模块中共有4个输入端。其中一个时钟输入端,以一个频率调子卡的结构每块子卡上面包含5片FPGA芯片,其中四片XC5VLX330FF1760承载主要的逻辑容量,控制芯片XC5VLX110FF1760容量较小,主要起控制和连接四个大容量FPGA的作用。每个FPGA芯片都引出接口到高速接插件上面,A和B预留DDR2和DDR3接口。通过单独配置ATX电源,每块子卡都能够单独作为一个验证系统工作。在接口控制器方面,配置日常所需的各种接口的逻辑模块,包括:DDR2/3控制器、SPI、UART、I2C、LPC、NAND FLASH等标准的控制器。同时,预留SATAII,PCIEX8等高速IO接口。这样做的目的是使用户能够专心做好集成电路核心逻辑模块的工作,外围接口不需要耗费巨大人力物力去验证正确性,大大降低了验证难度和功能验证的工作量,极大缩短了SOC类芯片的开发周期。在测试软件方面,设计一个用于管脚分配、时钟分配及程序下载专用的测试软件,免除了日常调试工作中手工输入造成的巨大工作量及由此而产生的各种错误。每个芯片的管脚都在1000条以上,5个芯片就达到5000条,如果纯靠手工输入,不但工作量非常大,也会造成管脚分配错误,给调试带来极大的困难,这是多次调试经验的总结。
节输入端,一个使系统输出信号波形的频率为最大的控制输入端和一个使系统输出的信号波形的频率为最小的控制输入端。设计要求输出信号波形的频率在每按一次相应的按键时,就增加或减少500Hz。而实验室的硬件设备上的按键都是拨码是按键,即按键按下后一直有效,这显然不能满足要求。于是按键输入识别模块中使用如下的代码实现按键没按一次都能有效的功能。
if button0='0' and button1='1' then
if cnt=40 then
cnt<=0;
else
cnt<=cnt+1;
end if;
elsif button0='1' and button1='0' then
if cnt=40 then
cnt<=0;
else
cnt<=cnt+1;
end if;
以上代码实现的只是频率增长的功能,同理就可以实现频率减小的功能。
图8分频数模块
图7分频数模块
图6输入端识别模块
当按下按键输入识别模块中分别使整个系统输出最大和最小频率的波形的控制输入端时 ,在按相应的使频率增减的按键则实现频率从最大或最小开始增加或减少的功能。
在分频数产生模块中有一个输入端接收从按键输入识别模块中输出地对频率的控制信号的输入端,一个分频数输出端,四个相应的接数码管以显示系统输出信号的频率的输出端。
当分频数产生模块的输入端接收从按键输入识别模块中输出地对频率的控制信号后,便产生相应的分频数送到输出端,同时将与分频数相应频率送到与数码管相接的输出端。其VHDL代码见设计的附录。
我们在分频模块中有一个系统时钟输入端,一个分频数输入端和一个频率输出端。分频器的功能主要是根据分频数产生相应的输出频率。
3.3.2 波形输出控制单元
波形输出控制单元中只包括一个数据选择器模块。其器件图如图9所示
图3-7 数据选择器模块
在该模块为4选1的数据选择器,包括4个数据输入端,一个数据选择输入
西安交通大学网络教育学院论文
端和一个数据输出端。其功能是根据数据选择输入端输入的数据来选择相应的数据送到输出端。从而实现数据的选择输出。
3.4 硬件测试
设计是简易多功能信号发生器,其总共有6个输入端和6个输出端。具体的输入输出端可见图1中所示。
根据引脚所锁定图将系统中的各个输入输出端口锁定到合适的引脚上。需要注意的是本系统使用到了数码管显示,所以应该选定实验箱的模式6。另外,本实验输入的时钟频率是12MHz。
当引脚锁定完毕后,将程序下载到试验箱中,连好示波器,在输入端输入相应的值即可得到相应的输出信号波形。在clk端输入12MHz的时钟信号,当图1的原理图中的bx[1..0]输入“00”时得到的是方波波形,如图10所示。改变sel的值可以该变输出信号波形的幅值。按频率控制单元中介绍的方法可以实现波形频率的改变。
在clk端输入12MHz的时钟信号,当图1的原理图中的bx[1..0]输入“01”时得到的是锯齿波波形,如图11所示。改变sel的值可以该变输出信号波形的幅值。按频率控制单元中介绍的方法可以实现波形频率的改变。
在clk端输入12MHz的时钟信号,原理图中的bx[1..0]输入“11”时得到的是正弦波波形,如图12所示。改变sel的值可以该变输出信号波形的幅值。按频率控制单元中介绍的方法可以实现波形频率的改变。
西安交通大学网络教育学院论文
4 结论与展望
EDA技术是当前数字系统设计领域比较火热的一种工具,它是可以大大缩短设计需要的时间,降低成本的同时也提高了系统的稳定性。使使用VHDL语言描述硬件系统使得EDA技术有了更为广阔的空间。本设计使使用了基于Altera公司的开发软件工具Quartus II,本系统即实现了可以输出三种波形的简易多功能波形发生器,仿真结果证明,该设计正确有效,可以作为制作实物的理论依据。 对于EDA技Quartus II进行了系统的设计和仿真。简易波形发生器在生活中各个场合都有着大量的使使用术我一直都有着浓厚的兴趣,借做课设的机会,认真的研究了一下这么科学。发现EDA技术比我们想象中的要有很大的难度。里面有很多的思想来源于信息电子技术辑算法的设计,需要有很强的C语言编程功底。学习一门知识要从最基本的体系构架开始,倘若一开始就从顶层设计入手,就会造成很多基本原理、基本概念上的偏差,甚里面的基本知识,包括电路的概念以及寄存器传送的基本知识。VHDL语言与C语言有很大的不同,但是C语言的编程思想也可以移植到VHDL语言当中来,尤其是一些逻至会拖延设计的时间,事倍功半。虽然可设完成了,但我意识到,我对于这门学科只是停留在入门的阶段,想要有更大的发展,要深入的研究,还要更多的努力和实践。
西安交通大学网络教育学院论文
致 谢
我要感谢我的指导教师。老师虽身负教学重任,仍抽出时间辅导我们。这篇论文更倾注了他的大量心血。大到篇章布局的偏颇,小到语句格式的瑕疵,都一一予以指出。
同时,我要感谢西安网络学院所有给我上过课老师,是他们传授给我方方面面的知识,拓宽了我的知识面,培养了我的功底,对论文的完成不无裨益。我还要感谢学院的各位工作人员,他们细致的工作使我和同学们的学习和生活井然有序。没有他们就没有我,我的点滴成就都来自他们。由于我的水平有限,恳请各位老师和同学批评指正!
参考文献
参考文献
[1]潘松,黄继业. EDA技术实使用教程[M].北京:科学出版社,2002年版.
[2]甘历.VHDL应使用与开发实际[M].北京:科学出版社,2003.
[3]孙延鹏,张芝贤.VHDL与可编程逻辑器件应使用[M].航空工业出版社,2006.
[4]赵明富,李立军,石新锋,沈献博.EDA技术基础[M].北京大学出版社,2007.
[5]黄仁欣.EDA技术实使用教程[M].清华大学出版社,2006(25).
[6]邓蔼仙.电子工程设计中EDA技术的作用及应用探讨[J].电子世界, 2016年第六期
[7] 张金玲; 于春雨.基于EDA的电子技术开放性实验改革与实践[J].黑龙江教育(高教研究与评估) 2016年第三期
[8]符继征.浅析EDA技术在数字电子技术实验中的应用[J].赤峰学院学报(自然科学版),2016年第十六期
[9]江燕.电子工程设计的EDA技术分析 [J].电子技术与软件工程, 2016年第六期
[10]李劲松.数字电子技术的发展现状分析 [M].电子世界 2016(5)
[11]苏神保.基于Proteus的测频仪设计与仿真 [M].仪器仪表用户 2016(45)
[12]于卫卫; 王国永; 王剑.EDA技术在数字电子技术试验中的应用 [J]. 数字技术与应用, 2016年第二期
[13]郭庆杰; 杨丰旭; 安玉; 徐逊 .EDA技术在电子设计中的运用分析[J] .电子技术与软件工程,2016年第五期
参考文献
附件:
网络学院毕业论文独创性声明
本人声明,所呈交的毕业论文系在指导老师的指导下本人独立完成的研究成果。论文中依法引用他人的成果,均已做出明确标注或得到许可。论文内容未包含法律意义上已属于他人的任何形式的研究成果,如果本论文有摘抄他人的研究成果,被他人追究责任,则本人负全部责任,与指导老师和学校无关。
本人如违反上述声明,愿意承担以下责任和后果:
1. 交回学校授予的毕业证书;
2. 学校可以在相关媒体上对作者本人的行为进行通报;
3. 本人按照学校规定的方式,对因不当取得证书给学校造成的名誉损害,进行公开道歉;
4. 本人负责因论文成果不实产生的法律纠纷。
论文作者签名: 日期: 年 月 日
毕业论文知识产权权属声明
本人在导师指导下所完成的论文及相关的职务作品,知识产权归属学校。学校享有以任何方式发表、复制、公开阅读、借阅以及申请专利等权利。本人离校后发表或使用毕业论文或与论文直接相关的学术论文或成果时,署名单位仍然为西安交通大学。
论文作者签名: 日期: 年 月 日
导 师 签 名: 日期: 年 月 日
注:本声明的版权归西安交通大学所有,未经许可,任何单位及个人不得擅自使用。
展开阅读全文