基于FPGA的方波信号发生器_第1页
基于FPGA的方波信号发生器_第2页
基于FPGA的方波信号发生器_第3页
基于FPGA的方波信号发生器_第4页
基于FPGA的方波信号发生器_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

1、EDA课程设计实验报告基于FPGA的方波信号发生器设计内容: 基于FPGA的方波信号发生器 代课老师: 学 号: 姓 名: 专 业: 电子与通信工程 摘要:本设计是采用了EDA技术设计的方波信号发生器。实现是基于FPGA语言描述正弦波基波和多次谐波叠加模块,然后在Quartus软件上实现波形的编译,仿真和下载到Cyclone芯片上。整个系统由正弦波产生模块、数码管显示模块、波形频率控制和波形幅度控制四个部分组成。最后经过Quartus软件仿真,证明此次设计可以通过多次谐波叠加形成方波,并通过频率控制和幅度控制改变方波波形。关键字:VHDL;Quartus;Cyclone;函数信号发生器1、Qu

2、artus II软件简介1.1 Quartus II软件介绍Quartus II 是Alera公司推出的一款功能强大,兼容性最好的EDA工具软件。该软件界面友好、使用便捷、功能强大,是一个完全集成化的可编程逻辑设计环境,具有开放性、与结构无关、多平台完全集成化丰富的设计库、模块化工具、支持多种硬件描述语言及有多种高级编程语言接口等特点。Quartus II是Altera公司推出的CPLD/FPGA开发工具,Quartus II提供了完全集成且与电路结构无关的开发包环境,具有数字逻辑设计的全部特性,包括:可利用原理图、结构框图、VerilogHDL、AHDL和VHDL完成电路描述,并将其保存为设

3、计实体文件;芯片平面布局连线编辑;功能强大的逻辑综合工具;完备的电路功能仿真与时序逻辑仿真工具;定时/时序分析与关键路径延时分析;可使用SignalTap II逻辑分析工具进行嵌入式的逻辑分析;支持软件源文件的添加和创建,并将它们链接起来生成编程文件;使用组合编译方式可一次完成整体设计流程;自动定位编译错误;高效的期间编程与验证工具;可读入标准的EDIF网表文件、VHDL网表文件和Verilog网表文件;能生成第三方EDA软件使用的VHDL网表文件和Verilog网表文件。1.2 Quartus II软件设计流程(1) 打开Quartus II软件。(2) 选择路径。注意:工作目录名不能有中文

4、。(3) 添加设计文件。(4) 选择FPGA器件。Family选择Cyclone,240,8。(5) 建立原理图或用VHDL语言描述设计电路。(6) 对原理图或用VHDL语言进行编译,无误后进行添加信号。(7) 对上述电路进行仿真。(8) 进行管脚分配。(9) 全局编译,采用JTAG或者AS模式进行下载测试.2、系统设计方案采用现场可编程逻辑阵列(Field Programmable Gate Array,FPGA)设计DDS电路比专用DDS芯片更具灵活性。因为只要通过改变FPGA内部波形存储器中的波形数据,就可以实现任意波形输出,这使得用FPGA来实现DDS具有相当大的灵活性。相比之下,FP

5、GA所能实现的功能完全取决于设计需求,可以简单也可以复杂,另外,FPGA芯片还支持在系统升级,虽然在精度和速度上略有不足,但是基本上能满足绝大数系统的要求,并且,将DDS设计嵌入到FPGA内部所构成的系统中,其系统成本并不会增加多少,而专用DDS芯片的价格一般也比FPGA高。因此,采用FPGA来设计DDS系统具有较高的性价比。本设计利用正弦波的基波和多次谐波合成方波,通过相关按键来调节方波的频率相位和幅度,并在数码管上显示出来。调幅乘法器相位累加器相位累加器相位累加器正弦波数据存储器5次谐波数据存储器3次谐波数据存储器相位累加器7次谐波数据存储器D/A低通滤波频率控制字时钟信号波形输出振幅控制

6、字图12.1方波分解为多次正弦波之和的原理代表周期性方波信号的函数满足狄利克雷条件,即方波可以表示为多次正弦波之和。如图2所示方波信号,其周期为2且正半周期负半周期是形状全同的矩形,在区间(0,2)内可用函数表示为: 若将展开为三角傅里叶级数,即将分解为多次正弦波之和,则有式(13)、式(14)可知,在区间(0,2)内,如图1 所示的周期为2的方波信号的, ,的值分别为: = = 图2则在区间(0,2)内可表示为: 即周期为2s的方波信号中含有大量的正弦波,其频率分别为1/2,3/2,5/2,7/2其中频率为1/2的正弦波称为基波,其他频率的正弦波称为谐波。即一周期性方波,可表示为基波与无穷多

7、谐波之和。实用中进行信号分析时,不可能取无穷多次谐波之和,而只能用有限项来近似表示。这样就无法避免有一误差,如果将基波加到次谐波之和后的函数表示为,则有=+,即=-。这里采用基波和3、5、7次谐波来合成方波。2.2 DDS波形发生器产生正弦波直接数字频率合成器DDS(Direct Digital Synthesizer)是从相位概念出发直接合成所需波形的一种频率合成技术。一个直接数字频率合成器由相位累加器、波形ROM、D/A转换器和低通滤波器构成。DDS的原理框图如图3所示:图3其中K为频率控制字、fC为时钟频率,N为相位累加器的字长,D为ROM数据位及D/A转换器的字长。相位累加器在时钟fC

8、的控制下以步长K作累加,输出N位二进制码作为波形ROM的地址,对波形ROM进行寻址,波形ROM输出的幅码S(n)经D/A转换器变成阶梯波S(t),再经低通滤波器平滑后就可以得到合成的信号波形了。合成的信号波形形状取决于波形ROM中存放的幅码,因此用DDS可以产生任意波形。这里我们用DDS实现正弦波的合成。2.2.1频率预置与调节电路不变量K被称为相位增量,也叫频率控制字。DDS方程为:f0=fCK/2N,f0为输出频率,fC为时钟频率。当K=1时,DDS输出最低频率(也即频率分辨率)为fC/2N,而DDS的最大输出频率由Nyquist采样定理决定,即fC/2,也就是说K的最大值为2N-1。因此

9、,只要N足够大,DDS可以得到很细的频率间隔。要改变DDS的输出频率,只要改变频率控制字K即可。2.2.2相位累加器相位累加器是整个DDS的核心,它由一个加法器和一个寄存器构成。加法器的一个输入与寄存器输出相连,另一个输入是外部输入的频率控制字。这样,在每个时钟到达时,相位寄存器采样上个时钟周期内相位寄存器的值与频率控制字之和,并作为相位累加器在这一时钟周期的输出。频率控制字决定了相应的相位增量,相位累加器则不断地对该相位增量进行线性累加,当相位累加器加满量时就会产生一次溢出,从而完成一个周期性的动作,这个动作周期即是DDS合成信号的一个频率周期。图42.2.3波形ROM查找表波形ROM模块由

10、ROM:1-port宏模块生成,其地址线的位宽为9位,数据线的位宽为8位,即一个周期的波形数据有512个,每个数据占8位,其输出可直接DAC0832。ROM中的MIF数据文件可使用Mif_Maker2010.exe软件生成。图52.3 按键控制设计按键的功能主要实现控制频率和振幅,消除防抖动等.其工作流程如图6所示. 开始去抖动延时计数器清零时钟沿输入低电平计数值达到20ms去抖动延时计数器加1按键有效输出是否是否图62.4 D/A数模转换模块设计产生的数字正弦波需要经过数模转换成模拟输出,这里设计出8位的D/A转换器,相关代码和电路如图7所示library ieee;use ieee.std

11、_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity dac0832 isport(clk :in std_logic;WR_n :out std_logic;datin:in std_logic_vector(7 downto 0);Analog_D:out std_logic_vector(7 downto 0);end dac0832;architecture rt1 of DAC0832 isbeginWR_n = 0 ;process (clk )beginif clke

12、vent and clk = 1 thenAnalog_D =datin;end if;end process ;end rt1;图72.5数码管显示设计数码管动态扫描,通过四段数码管对输出波形频率和幅度进行调节,期中数码管的其工作流程图如图8所示.开始复位寄存器扫描周期计数器已满计数器 清零,数码管计数器加1数码管计数器满输入模块读取数据,显示扫描计数器加1数码管计数器清零是是否否图83系统调试和实验结果 利用正弦波的基波和多次谐波合成方波,通过相关按键来调节方波的频率和幅度,并在数码管上显示出来。方波经过调幅调频调相后的对比图如下图所示.原图调频振幅相位4.设计总结FPGA是当前数字系统设

13、计领域比较火热的一种工具,它可以大大缩短设计需要的时间,降低成本的同时也提高了系统的稳定性。使用VHDL语言描述硬件系统使得FPGA技术有了更广阔的应用领域。本设计使用了基于Altera公司的FPGA系列,采用Altera公司提供的系统开发工具Quartus II软件进行了系统的设计和仿真。对FPGA一直都有着浓厚的兴趣,借做课设的机会,认真的研究了一下这门科学。发现FPGA技术比我想象中的要有很大的难度。里面有很多的思想来源于信息电子技术里面的基本知识,包括门电路的概念以及寄存器传送的基本知识。VHDL语言与C语言有很大的不同,但是C语言的编程思想也可以移植到VHDL语言中,尤其是一些逻辑算法的设计,需要有很强的C语言编程功底。学习一门知识要从最基本的体系架构开始,倘若一开始就从顶层设计入手,就会造成很多基本原理、基本概念上的偏差,甚至会拖延学习设计的时间,事倍功半。虽然课设完成了,但是我意识到,我对FPGA技术仅仅只是停留在入门的阶段,想要有更大的发展,更深入的研究,还需要更多的努力与实践。参考文献【1】潘松 黄继业. EDA技术与VHDL(第二版).北京:清华大学出版社,2005.7【2】付家才. EDA工程实践技术.北京:化学工业出

温馨提示

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

评论

0/150

提交评论