EDA课程设计基于FPGA的任意波形发生器.docx
- 文档编号:5532737
- 上传时间:2022-12-18
- 格式:DOCX
- 页数:15
- 大小:593.55KB
EDA课程设计基于FPGA的任意波形发生器.docx
《EDA课程设计基于FPGA的任意波形发生器.docx》由会员分享,可在线阅读,更多相关《EDA课程设计基于FPGA的任意波形发生器.docx(15页珍藏版)》请在冰豆网上搜索。
EDA课程设计基于FPGA的任意波形发生器
EDA课程设计
__基于FPGA的任意波形发生器
学院:
通信与电子工程学院
摘要
本文主要探索了应用FPGA灵活可重复编程和方便在系统重构的特性,以VerilogHDL为设计语言,运用QuarrtusII软件,将硬件功能以软件设计来描述,提高了产品的集成度,缩短开发周期。
所设计的波形发生器可产生正弦波(sina_wave)、锯齿波(swat_wave)、矩形波(squr_wave)、三角波(trig_wave)四种信号,能够实现信号的转换并且频率可调;
关键字:
任意波形发生器FPGAVerilogHDLQuartusII
Abstract
ThispaperexploredtheapplicationofflexibleandreprogrammableFPGAandconveniencefeaturesinthesystemreconfigurationtoVerilogHDLdesignlanguage,thehardwarefunctionstosoftwaredesigntodescribeandimprovetheintegrationofproductsandshortenthedevelopmentcycle.Waveformgeneratordesignedtoproducesinewave(sina_wave),ramp(swat_wave),rectangularwave(squr_wave),triangularwave(trig_wave)foursignals,toachievesignalconversionandfrequencyadjustable;
Keywords:
ArbitraryWaveformGeneratorFPGAVerilogHDLQuartusII
摘要I
AbstractII
目录III
第1章绪论1
1.1概述1
1.2任意波形发生器的功能1
1.3国外发展现状2
第2章波形发生器的基本理论4
2.1FPGA简介4
2.2Verilog语言简介4
2.2.1Verilog语言概述4
2.2.2VerilogHDL基本结构5
2.3QuarrtusII概述6
第3章方案设计8
3.1系统介绍8
3.2波形发生器各个模块设计9
3.2.1Wave_gen模块9
3.2.2波形数据存储ROM模块9
第4章波形发生器软件仿真11
4.1设计平台及仿真工具11
4.2仿真过程11
结论14
附录16
第1章绪论
1.1概述
波形发生器是一种常用的信号源,广泛应用于电子电路,自动控制系统,教学实验等领域,目前使用出现了大量能够产生多种波形且性能稳定的任意波形发生器,但大多数方案都是基于串行或并行总线进行数据的传输,这种方案虽然成本较低,但系统的实时性较差,难以满足复杂波形的大数据量的传输要求。
我们设计了一种基于FPGA芯片的任意波形发生器,充分利用了FPGA强大的逻辑功能,实现了利用单片FPGA芯片控制整个系统的方案。
1.2任意波形发生器的功能
任意波形发生器既具有其他信号源的信号生成能力,又可以通过各种编辑手段生成任意的波形采样数据,方便地合成其他信号源所不能生成的任意波形,从而满足测试和仿真实验的要求。
任意波形发生器的主要功能包括:
(1)函数发生功能
基础实验中,为了验证电路功能、稳定性和可靠性,需要给它施加理想波形,任意波形发生器能替代函数发生器提供正弦波、方波、三角波、锯齿波等波形,还具有各种调制和扫频能力。
利用任意波形发生器的这一基础功能就能满足一般实验的信号需求。
(2)任意波形生成
运行在实际电子环境中的设备,由于各种干扰的存在以及环境的变化,实际电路中往往存在各种信号缺陷和瞬变信号,例如过脉冲、尖峰、阻尼瞬变、频率突变等。
任意波形发生器可以模拟这些特殊信号,以测试系统的实际性能。
(3)信号还原功能
在一些军事、航空等领域,有些电路运行环境很难估计,在设计完成之后,在现实环境中还需要更进一步的实验验证,而有些实验的成本很高或者风险性很大(如飞机试飞时发动机的运行情况),人们不可能重复作实验来判断所设计产品的可行性和稳定性。
此时,可以利用任意波形发生器的信号还原功能。
在做一些高耗费、高风险实验时,可以通过数字示波器把实际中用到的实际波形记录下来,再通过计算机接口下载到任意波形发生器,通过任意波形发生器还原实验中的实际波形并加到设计电路中,做进一步的实验验证工作。
1.3国外发展现状
采用可变时钟和计数器寻址波形存储器的任意波形发生器在一段时期曾得到广泛的应用,其取样时钟频率较高且可调节,但其对硬件要求比较高,需要高性能的锁相环和截止频率可调的低通滤波器(或者多个低通滤波器),且频率分辨率低,频率切换速度较慢,已经逐步退出市场。
目前市场上的任意波形发生器主要采用直接数字合成(DirectDigitalSynthesuzer,DDS)技术,这种波形发生器不仅可以产生可变频的载频信号、各种调制信号,同时还能和计算机配合产生用户自定义的有限带宽的任意信号,可以为多种领域的测试提供宽带宽、高分辨率的测试信号[1]。
任意波形发生器发展到今天,从产品结构形式来划分,主要包含三种:
(1)独立仪器结构形式
独立仪器结构形式是把任意波形发生器设计成单台仪器的形式,其优点是精度高,可独立工作。
(2)PC总线式
PC(PersonalComputer)总线式是将任意波形发生器板卡直接插在PC机的总线扩展槽或通过外部接口连接到PC总线上,利用PC机来控制任意波形发生器的工作状态,其优点是可以充分利用PC机的软硬件资源,在波形数据处理、波形参数修改方面,计算机有明显的优势。
(3)VXI模块式
VXI模块是一种新型的模块化仪器,它必须插在VXI总线机箱上才能使用,VXI总线机箱通过GPIB或者RS-232C等接口与计算机相连,VXI模块仪器对组成自动测试系统特别有用,各个公司的VXI卡式仪器模块可以自由组合使用。
从发展状况来看,国外任意波形发生器的研制及生产技术已经较为成熟。
以安捷伦(Agilent)和泰克(Tektronix)为代表的国际电子测量仪器公司在此领域进行了卓有成效的研究和开发,其产品无论在技术上还是市场占有率方面在国际上都享有盛誉,但其价格也是相当昂贵,高端型号每台价格都在几万美金左右,低端的也要几万人民币。
Tektronix公司的独立结构任意波形发生器AFG3000系列功能完善,人机界面友好,操作方便,可以以多种方式连接到PC机上,其最高采样率能达到2GS/s,输出信号最高频率为240MHz,任意波频率50MHz,并配备的强大的波形编辑软件ArbExpress,用户可以方面地创建和编辑自己的波形。
Agilent公司的PXI模块任意波形发生器采样率已经能达到1.25GS/s,最高输出频率500MHz。
我国研制任意波形发生器是从上世纪90年代开始的,近年来有一批本土厂商奋起直追,并取得了可喜的成果。
例如盛普科技电子的SPF120型信号发生器的主波输出频率达到了120MHz,任意波最高频率为100KHz;普源精电科技(RIGOL)生产的DG1000/2000/3000系列任意波形发生器,在性能上已经大略相当于国外中低端产品。
以FPGA自身资源为基础,制作一个简易综合电子实验仪,具有信号源、测量仪表等功能。
第2章波形发生器的基本理论
2.1FPGA简介
FPGA由可编程逻辑单元阵列、布线资源和可编程的I/O单元阵列构成,一个FPGA包含丰富的逻辑门、寄存器和I/O资源。
一片FPGA芯片就可以实现数百片甚至更多个标准数字集成电路所实现的系统。
FPGA的结构灵活,其逻辑单元、可编程部连线和I/O单元都可以由用户编程,可以实现任何逻辑功能,满足各种设计需求。
其速度快,功耗低,通用性强,特别适用于复杂系统的设计。
使用FPGA还可以实现动态配置、在线系统重构(可以在系统运行的不同时刻,按需要改变电路的功能,使系统具备多种空间相关或时间相关的任务)及硬件软化、软件硬化等功能。
鉴于高频疲劳试验机控制器控制规模比较大,功能复杂,故我们在研制过程中,在传统试验机控制器的基础上,通过FPGA技术及微机技术两者的结合,来全面提升控制器系统的性能,使整机的工作效率、控制精度和电气系统可靠性得到了提高,且操作方便而又不乏技术的先进性。
2.2Verilog语言简介
2.2.1Verilog语言概述
VerilogHDL是一种硬件描述语言(hardwaredescriptionlanguage),为了制作数字电路而用来描述ASICs和FPGA的设计之用[2]。
VerilogHDL可以用来进行各种层次的逻辑设计,也可以进行数字系统的逻辑综合,仿真验证和时序分析,VerilogHDL进行设计最大的优点是其工艺无关性.这使得工程师在功能设计,逻辑验证阶段可以不必过多考虑门级及工艺实现的具体细节,只需根据系统设计的要求施加不同的约束条件,即可设计出实际电路.
Verilog是由en:
GatewayDesignAutomation公司于大约1984年开始发展。
GatewayDesignAutomation公司后来被CadenceDesignSystems于1990年所购并。
现在Cadence对于Gateway公司的Verilog和Verilog-XL模拟器拥有全部的财产权。
2.2.2VerilogHDL基本结构
(1)基本逻辑门,例如and、or和nand等都置在语言中。
(2)用户定义原语(UDP)创建的灵活性。
用户定义的原语既可以是组合逻辑原语,也可以是时序逻辑原语。
(3)开关级基本结构模型,例如pmos和nmos等也被置在语言中。
(4)提供显式语言结构指定设计中的端口到端口的时延及路径时延和设计的时序检查。
(5)可采用三种不同方式或混合方式对设计建模。
这些方式包括:
行为描述方式—使用过程化结构建模;数据流方式—使用连续赋值语句方式建模;结构化方式—使用门和模块实例语句描述建模。
*VerilogHDL中有两类数据类型:
线网数据类型和寄存器数据类型。
线网类型表示构件间的物理连线,而寄存器类型表示抽象的数据存储元件。
*能够描述层次设计,可使用模块实例结构描述任何层次。
*设计的规模可以是任意的;语言不对设计的规模(大小)施加任何限制。
*VerilogHDL不再是某些公司的专有语言而是IEEE标准。
*人和机器都可阅读Verilog语言,因此它可作为EDA的工具和设计者之间的交互语言。
*VerilogHDL语言的描述能力能够通过使用编程语言接口(PLI)机制进一步扩展。
PLI是允许外部函数访问Verilog模块信息、允许设计者与模拟器交互的例程集合。
*设计能够在多个层次上加以描述,从开关级、门级、寄存器传送级(RTL)到算法级,包括进程和队列级。
*能够使用置开关级原语在开关级对设计完整建模。
*同一语言可用于生成模拟激励和指定测试的验证约束条件,例如输入值的指定。
*VerilogHDL能够监控模拟验证的执行,即模拟验证执行过程中设计的值能够被监控和显示。
这些值也能够用于与期望值比较,在不匹配的情况下,打印报告消息。
*在行为级描述中,VerilogHDL不仅能够在RTL级上进行设计描述,而且能够在体系结构级描述及其算法级行为上进行设计描述。
*能够使用门和模块实例化语句在结构级进行结构描述。
*VerilogHDL的混合方式建模能力,即在一个设计中每个模块均可以在不同设计层次上建模。
*VerilogHDL还具有置逻辑函数,例如&(按位与)和|(按位或)。
*对高级编程语言结构,例如条件语句、情况语句和循环语句,语言中都可以使用。
*可以显式地对并发和定时进行建模。
*提供强有力的文件读写能力。
*语言在特定情况下是非确定性的,即在不同的模拟器上模型可以产生不同的结果;例如,事件队列上的事件顺序在标准中没有定义。
2.3QuarrtusII概述
QuartusII是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(AlteraHardwareDescriptionLanguage)等多种设计输入形式,嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程[4]。
QuartusII可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。
具有运行速度快,界面统一,功能集中,易学易用等特点。
QuartusII支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。
对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。
此外,QuartusII通过和DSPBuilder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。
图1:
QuarrtusII图标
图2:
Quarrtus界面
第3章方案设计
3.1系统介绍
任意波形发生器的实现采用模块设计,这样很好的利用了QuartusII软件中的LPM_ROM模块,能够达到最优设计;频率计的功能完全采用HDL语言描述,最后的顶层文件采用模块设计来完成。
最终的顶层文件如下图所示:
图3.1顶层文件模块图
要实现的功能:
可产生正弦波(sina_wave)、锯齿波(swat_wave)、矩形波(squr_wave)、三角波(trig_wave)四种信号,能够实现信号的转换(select)并且频率可调。
主要由三部分组成:
地址指针控制模块,四种波形数据存储模块,D/A转换模块。
前面2个模块在FPGA中实现,D/A转换通过外围电路实现。
该部分的实现框图如下:
图3.2外围电路实现
3.2波形发生器各个模块设计
3.2.1Wave_gen模块
图3.3Wave_gen模块图
Wave_gen模块各引脚说明:
INCLK:
输入的待测信号。
SELECT[1..0]:
波形选择输入。
FREQ[3..0]:
控制输出波形的频率。
ADDRESS[8..0]:
输出地址指针。
3.2.2波形数据存储ROM模块
图3.4波形数据存储ROM模块
波形数据存储ROM模块个引脚说明:
Clock:
输入时钟信号。
Address[8..0]:
输入地址指针。
Q[7..0]:
输出信号。
第4章波形发生器软件仿真
4.1设计平台及仿真工具
我们选择QuarrtusII9.0作为波形发生器仿真工具,结合Verilog硬件描述语言,该模块的功能采用VerilogHDL来描述,程序Wave_gen.v请见附件。
程序实现的主要功能是:
根据不同的波形选择(select[1:
0]),来改变送入ROM中的地址指针address。
四种波形一个周期的数据各占不同的16B,每次波形改变使address指向各段数据首地址。
编译正确后将其创建为Wave_gen.bsf模块(见顶层文件中所示),然后采用图形编辑方式,完成波形发生器这部分电路的设计。
4.2仿真过程
首先,我们需要在QuarrtusII9.0建立一个工程文件名为wave_gen,如图:
图4.1建立工程文件
其次,我们需要在File/New/VerilogHDLfile,文件名为Wave_gen.v,保存在当前工程里,如图:
图4.2Wave_gen.v
然后在Processing/startcomlication进行调试与仿真结果如图:
图4.3仿真结果
①产生正弦波(sina_wave)时送到DAC0832的数据:
②产生锯齿波(swat_wave)时送到DAC0832的数据:
③产生矩形波(squr_wave)时送到DAC0832的数据:
④产生三角波(trig_wave)时送到DAC0832的数据:
由仿真结果可知,改变select[1:
0]的值,能够正确的将对应的波形数据送到DAC0832,从而完成了整体设计
结论
在研究的过程中,通过学习和参阅过外相关的文献,并从网络上获取最新的硬件开发指南和芯片开发手册,同时不断向身边的老师请教和学习,通过系统的学习和实际工作的锻炼,积累了必要的基础知识,培养了实际的开发技能。
通过本设计工作,基本掌握了QuartusII的使用技术,进一步加深了对数字信号处理技术的理解,提高了使用可编程逻辑器件设计数字系统的能力和软件编程的能力,为将来从事科研工作打下了良好的基础。
参考文献
[1]黄晓翰.基于FPGA的多功能波形发生器的设计.电信科学.2010年09期
[2]王金明.VerilogHDL程序设计教程..人民邮电,2004
[3]王文华.基于DDS技术的任意波形发生器研究.大学,2002.
[4]Altera公司.QuartusII.简易用户使用入门指南
[5]王金明.数字系统设计与VerilogHDL教程.第二版,2005
附录
Wave_gen.v程序如下:
moduleWave_gen(address,inclk,select,freq);
output[8:
0]address;//输出控制ROM的地址
inputinclk;//系统始终,时间应该保证D/A能转换完毕
input[1:
0]select;//波形选择,具体值代表的波形见下面定义
input[3:
0]freq;//控制输出波形的频率
reg[7:
0]Qout;
reg[8:
0]address;
reg[7:
0]k,m;
parametersina_wave=2'b00,swat_wave=2'b01,
squr_wave=2'b10,trig_wave=2'b11;
always(posedgeinclk)
begin
case(select)
sina_wave:
begin
if(select==1)address<=128;
if(select==2)address<=256;
if(select==3)address<=384;
if(freq==0||freq==1)
begin
if(address>=127)address<=0;
elseaddress<=address+1;
end
else
begin
k<=127/freq;
m<=freq*k;
if(address>=m)
address<=0;
else
address<=address+freq;
end
end
swat_wave:
begin
if(select==0)address<=0;
if(select==2)address<=256;
if(select==3)address<=384;
if(address<128)address<=128;
else
begin
if(freq==0||freq==1)
begin
if(address>=255)address<=128;
elseaddress<=address+1;
end
else
begin
k<=127/freq;
m<=freq*k;
if(address>=(m+128))
address<=128;
else
address<=address+freq;
end
end
end
squr_wave:
begin
if(select==0)address<=0;
if(select==1)address<=128;
if(select==3)address<=384;
if(address<256)address<=256;
else
begin
if(freq==0||freq==1)
begin
if(address>=383)address<=256;
elseaddress<=address+1;
end
else
begin
k<=127/freq;
m<=freq*k;
if(address>=(m+256))
address<=256;
else
address<=address+freq;
end
end
end
trig_wave:
begin
if(select==1)address<=128;
if(select==2)address<=256;
if(select==3)address<=384;
if(address<384)address<=384;
else
begin
if(freq==0||freq==1)
begin
if(address>=511)address<=384;
elseaddress<=address+1;
end
else
begin
k<=127/freq;
m<=freq*k;
if(address>=(m+384))
address<=384;
else
address<=address+freq;
end
end
end
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 课程设计 基于 FPGA 任意 波形 发生器