预览加载中,请您耐心等待几秒...
1/9
2/9
3/9
4/9
5/9
6/9
7/9
8/9
9/9
在线预览结束,喜欢就下载吧,查找使用更方便
如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第PAGE9页共NUMPAGES9页第PAGE\*MERGEFORMAT9页共NUMPAGES\*MERGEFORMAT9页密级:JINGGANGSHANUNIVERSITY电子测量课程论文(设计)题目基于FPGA的信号发生器学院电子与信息工程学院专业电子信息工程技术班级08电信一班学号80523046姓名张绪景指导教师刘宇安摘要本次设计课题为应用VHDL语言及MAX+PLUSII软件提供的原理图输入设计功能,结合电子线路的设计加以完成一个可应用于数字系统开发或实验时做输入脉冲信号或基准脉冲信号用的信号发生器,它具结构紧凑,性能稳定,设计结构灵活,方便进行多功能组合的特点,经济实用,成本低廉。具有产生三种基本波形脉冲信号(正弦波、矩形波和三角波),以及三次(及三次以下)谐波与基波的线性组合脉冲波形输出,且单脉冲输出脉宽及连续脉冲输出频率可调,范围从100HZ到1kHZ,步进为100HZ;幅度可调,从0到5伏,步进为0.1V。关键词:信号发生器,FPGA,EDA,VHDL语言。设计方案总体设计思路1设计步骤此设计将按模块式实现,据任务书要求,设计总共分四大步份完成:(1)产生波形(三种波形:方波、三角波和矩形波)信号;(2)波形组合;(3)频率控制;(4)幅度控制。2设计思想利用VHDL编程,依据基本数字电路模块原理进行整合。系统各部分所需工作时钟信号由输入系统时钟信号经分频得到,系统时钟输入端应满足输入脉冲信号的要求。组合波形信号经显示模块输出。具备幅度和频率可调功能,幅度可通过电位器调整,频率控制模块则是一个简易的计数器,控制步径为100HZ的可调频率,最终送至脉冲发生模块输出脉冲信号,达到设计课题所要求的输出波形频率可调及幅度可调功能。幅度可调功能由于比较简单,可以在FPGA外部利用硬件电路实现。总体设计框图如下图1所示:控制电路正弦波、方波、三角波信号产生模块频率控制模块/计数器模块输出电路波形组合选择模块滤波电路幅度控制/电位器100HZ~1KHZ1KHZFPGA图1总体设计框图方案论证方案一采用DDS(直接数字频率合成器)来设计,设计总体框图如图2所示。在设计界里众所周知,DDS器件采用高速数字电路和高速D/A转换技术,具有频率转换时间短、频率分辨率高、频率稳定度高、输出信号频率和相位可快速程控切换等优点,所以,我们可以利用DDS具有很好的相位控制和幅度控制功能,另外其数据采样功能也是极具精确和完善的,它可以产生较为精确的任何有规则波形信号,可以实现对信号进行全数字式调制。用FPGA和DDS实现信号调制,既克服了传统的方法实现带来的缺点,若采用它来编程设计,必定会事半功倍,且使设计趋于理想状态。但鉴于DDS的占用RAM空间较大,我们设计是采用FPGA10K10器件,总共只有一万门的逻辑门数量,而整个DDS设计下来,大概最少会占用3-4万门的数量,所以在性价比方面不合理,这样也使得我们的设计会有些不切实际。相位累加器低通滤波D/A变换频率控制字信号输出ROM时钟图2DDS与FPGA总体设计图方案二采用震荡器频率合成方案。具体方案如下:首先通过频率合成技术产生所需要频率的方波,通过积分电路就可以得到同频率的三角波,再经过滤波器就可以得到正弦波。其优点是工作频率可望做得很高,也可以达到很高的频率分辨率;缺点是使用的滤波器要求通带可变,实现很难,高低频率比不可能做得很高。方案三采用VHDL语言来编程,然后下载文件到FPGA来实现。VHDL语言是电子设计领域的主流硬件描述语言,具有很强的电路描述和建模能力,能从多个层次对数字系统进行建模和描述,从而大大降低了硬件设计任务,提高了设计效率和可靠性,要比模拟电路快得多。该方案是利用FPGA具有的静态可重复编程和动态在系统重构的特性,使得硬件的功能可以像软件一样通过编程来修改,极大地提高了电子系统设计的灵活性和通用性,而且大大缩短了系统的开发周期。方案确定由上述三个方案对比,采用第三种方案:通过FPGA软件扫描方式将波形数据读出传输给DAC0832产生波形输出。这种方法在软、硬件电路设计上都简单,且与我们的设计思路紧密结合。由于幅度控制部分在设计需要用到数字电子,这样有要经过D/A转换器再输出,必将占用大量资源,造成不必要的开销。鉴于有设计经验的同学和老师的建议,采用一个电位器代替,虽然精确度不够,但是也弥补了性价比方面的不足。波形组合如果采用分开式模块实现,也必将导致占用大量的资源,而模块设计复杂度提高,只要采用重复调用一个模块的设计