EDA论文基于FPGA的波形发生器设计 光学测试课程设计 模版+附件程序图片等.docx
- 文档编号:10025106
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:21
- 大小:123.05KB
EDA论文基于FPGA的波形发生器设计 光学测试课程设计 模版+附件程序图片等.docx
《EDA论文基于FPGA的波形发生器设计 光学测试课程设计 模版+附件程序图片等.docx》由会员分享,可在线阅读,更多相关《EDA论文基于FPGA的波形发生器设计 光学测试课程设计 模版+附件程序图片等.docx(21页珍藏版)》请在冰点文库上搜索。
EDA论文基于FPGA的波形发生器设计光学测试课程设计模版+附件程序图片等
JIANGSUUNIVERSITY
本科课程设计说明书
光学测试课程设计
题目:
基于FPGA的波形发生器设计
学院名称:
专业班级:
学生姓名:
指导教师姓名:
年月
摘要
各种各样的信号是通信领域的重要组成部分,其中正弦波、三角波和方波等是较为常见的信号。
在科学研究及教学实验中常常需要这几种信号的发生装置。
为了实验、研究方便,研制一种灵活适用、功能齐全、使用方便的信号源是十分必要的。
本次关于产生三角波或其它任意波形的设计方案,不仅在理论和实践上都能满足实验的要求,而且具有很强的可行性。
该信号源的特点是:
体积小、价格低廉、性能稳定、实现方便、功能齐全。
关键词:
正弦波;三角波;FPGA;
ABSTRACT
Varioussignalisanimportantpartoftelecommunicationfield,includingsinewave,trianglewaveandsquare-waveetcismorecommonsignal.Inscientificresearchandteachingexperimentoftenneedthisseveralsignalgenerator.Inordertotest,researchisconvenient,developaflexibleapplication,completefunctions,useconvenientsourceisverynecessary.
Thisaboutproducetrianglewaveandotnerdifferentkindsofwavesofdesignscheme,notonlyintheoryandinpracticecansatisfyexperimentrequirement,andhasastrongfeasibility.Thesignalfeaturesare:
smallvolume,pricecheapandstableperformanceandachieveconvenient,completefunction.
Keywords:
sinewave;Trianglewave;FPGA;
目录
摘要1
1.前言3
2.FPGA工作原理4
3.FPGA基本特点5
4.系统设计6
4.1设计要求6
4.2总体设计方案6
4.2.1方案比较6
4.2.2系统组成及工作原理7
5.单元电路设计9
5.1输入模块设计9
5.2波形发生模块的设计9
5.3关于D/A转换模块的设计10
5.4滤波电路模块的设计11
6.软件设计与仿真12
6.1软件设计思路12
6.2系统仿真12
7.系统测试14
7.1测试使用的仪器14
7.2测试方法14
7.3指标测试和测试结果14
8.设计总结15
参考文献16
附录17
1.前言
波形发生器是信号源的一种,它是具有信号源所具有的特点,更因它高的性能优势而备受人们青睐。
信号源主要给被测电路提供所需要的已知信号(各种波形),然后用其它仪表测量感兴趣的参数。
可见信号源在各种实验应用和试验测试处理中,它不是测量仪器,而是根据使用者的要求,作为激励源,仿真各种测试信号,提供给被测电路,以满足测量或各种实际需要。
目前我国已经开始研制波形发生器,并取得了可喜的成果。
但总的来说,我国波形发生器还没有形成真正的产业。
就目前国内的成熟产品来看,多为一些PC仪器插卡,独立的仪器和VXI系统的模块很少。
并且我国目前在任意波形发生器的种类和性能都与国外同类产品存在较大的差异,因此加紧对这类产品的研制显得迫在眉睫。
2.FPGA工作原理
FPGA采用了逻辑单元阵列LCA(LogicCellArray)这样一个概念,内部包括可配置逻辑模块CLB(ConfigurableLogicBlock)、输出输入模块IOB(InputOutputBlock)和内部连线(Interconnect)三个部分。
现场可编程门阵列(FPGA)是可编程器件。
与传统逻辑电路和门阵列(如PAL,GAL及CPLD器件)相比,FPGA具有不同的结构,FPGA利用小型查找表(16×1RAM)来实现组合逻辑,每个查找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O模块。
FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O间的联接方式,并最终决定了FPGA所能实现的功能,FPGA允许无限次的编程.
3.FPGA基本特点
1)采用FPGA设计ASIC电路(专用集成电路),用户不需要投片生产,就能得到合用的芯片。
2)FPGA可做其它全定制或半定制ASIC电路的中试样片。
3)FPGA内部有丰富的触发器和I/O引脚。
4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。
5)FPGA采用高速CMOS工艺,功耗低,可以与CMOS、TTL电平兼容。
可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。
FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。
用户可以根据不同的配置模式,采用不同的编程方式。
加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。
掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。
FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。
当需要修改FPGA功能时,只需换一片EPROM即可。
这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。
因此,FPGA的使用非常灵活。
4.系统设计
4.1设计要求
1)基本部分
设计一波形发生器,可以产生频率和幅值都可调的正弦波。
2)发挥部分
在产生正弦波的基础上,可产生三角波或其它任意波形。
4.2总体设计方案
4.2.1方案比较
方案一:
采用模拟分立元件或单片机压控函数发生器来完成设计。
可产生方波,正弦波,三角波,通过调整外部元件可以改变输出频率,但是采用模拟器件分散性大,产生的频率稳定性较差、精度低、抗干扰能力差、成本也比较高。
方案二:
由单片机来完成设计。
目前,单片机的功能已比较强大,集成度日益增高且其设计和控制比较容易。
但是由于在传统的单片机设计系统中必须使用许多分立元件组成单片机的外围电路,因此整个系统显得十分复杂,随着正弦波或三角波采用数据的增加,需要占用系统很多存储资源,造成其抗干扰性差,在运行过程中容易死机或进入死循环,可靠性降低,而功耗费用增高。
方案三:
利用FPGA来完成设计。
FPGA编程灵活,可以实现三角波和正弦波的数字化处理,将一个周期内的采样点存储起来,生成频率和幅值都可调的正弦波或者三角波,再通过D/A转换和滤波电路便可得到模拟波形。
利用该方法,编程简单,实现灵活。
综上,选择方案三来完成设计。
4.2.2系统组成及工作原理
完整的系统由4个部分组成:
波形发生控制电路,波形数据ROM,D/A转换和滤波电路。
波形发生控制电路由FPGA来完成,正弦波在一个周期内的波形可以通过数字采样,即用N个幅值离散的等间隔采样点表示。
如图4.1、4.2为三角波和正弦波采样的原理,设其周期为T,采样点数为N,采样间隔为△t,T=N*△t。
那么就可以得到图示的数字信号。
要改变其频率只需要改变其采样的时间间隔△t,由于采样点数N不变,N=△t*T,因此,△t越小,T就越大,对应的频率就越大。
再通过数模转换,便可以得到光滑的正弦波和三角波。
图4.1三角波采样原理图
图4.2正弦波采样原理图
FPGA波形发生控制电路通过外来控制信号和高速时钟信号,向波形数据ROM发出地址信号,ROM的大小由采样点的个数决定。
波形ROM中存有发生器的波形数据,如正弦波或三角波数据。
当接受来自FPGA的地址信号后,将从数据线输出相应的波形数据。
取出采样点的幅值,这样就可以产生数字化的波形。
采样点越多,那么得到的波形就越光滑,但是相应的存储器的容量就需要得越大,因此,需要正确的选择采样点数。
图4.3系统工作原理图
图4.3为其系统工作原理框图。
D/A转换器负责将ROM输出的数据转换为模拟信号,经滤波电路后输出。
输出波形的上限频率和D/A器件的转换速度有重要关系,采用的是DAC0832作为A/D转换器件。
5.单元电路设计
5.1输入模块设计
输入模块采用普通的按键输入,即通过按键选择输出波形是正弦波还是三角波,同时也通过键盘输入来改变波形的幅值和频率。
5.2波形发生模块的设计
由于波形发生控制器和波形数据ROM都是利用硬件描述语言VHDL编程实现的,所以统称为波形发生模块。
波形发生控制器的作用是利用FPGA选择产生正弦波或者三角波,然后再发出地址信号,取ROM中存好的正弦波或三角波的采样数据。
波形发生模块包括幅度设置、正弦波/三角波切换和频率设置三个进程。
幅度设置模块可以对输出波形的幅度进行设置。
可以得到基波幅度的1~10倍幅度值。
正弦波/三角波切换进程的作用是完成通过按键来选择输出三角波或者三角波。
频率设置进程主要是对输出的频率进行设置,在前面已经介绍过正弦波发生的原理,基于此原理,在程序设计的时候,只要合适的改变采样点的时间间隔就可完成频率设置。
ROM数据存储模块主要是用来存储正弦波或者三角波的数据。
当接收来自FPGA的地址信号后,将从数据线输出相应的波形数据,这样便得到数字化的波形。
由于所选的D/A转换器一次只能转化8位二进制码,而且模拟波的电压幅度由幅度比例系数决定[Vo=(Vr/
)*K],所以限定了波形的幅值比例系数为0-255。
如果相邻之间的采样点所对应的幅值比例系数是线性变化的,则波形是一个三角波,而如果是非线性变化的,那得到的就是正弦波。
对波形采样点数目越多,波形的精准度越高,但随着采样点数的增加,需要的ROM数量也会增加,会消耗系统更多资源,实验证明,只要在一个周期内的取样点数超过32个就可实现较准确的正弦波形。
在本系统中,取采样点数为64个。
每个采样点都对应了该点的幅值比例系数。
每个ROM单元对应一个地址值,FPGA只要向ROM存储器输入相应的地址值就可以确定其幅值。
5.3关于D/A转换模块的设计
D/A转换器负责将ROM输出的数据转换成模拟信号,经滤波电路后输出。
输出波形分频率上限与D/A器件的转换速度由重要关系。
采用的是DAC0832作为A/D转换器件。
DAC0832是8位D/A转换器,转换周期为1μs,其引脚信号可以直接与FPGA目标芯片相接。
图5.1芯片的引脚图
图5.1为其芯片的引脚图。
各引脚的说明如下:
ILE:
数据锁存允许控制信号输入口线,高电平有效;
WR1、WR2:
写信号1、2,低电平有效;
XFER:
数据传输控制信号,低电平有效;
VREF:
基准电压,可正可负,-10V~+10V;
RFB:
反馈电阻端;
IOUT1/IOUT2:
电流输出端;
AGND/DGND:
模拟地与数字地。
在高速情况下,此二GND地的连接线必须尽可能短,且系统的单点接地点须接在此连续的某一点上。
程序中的正弦波或者三角波的波形数据由64个点构成,此数据经DAC0832,并经过滤波器后,得到光滑的正弦波。
D/A转换量是以电流形式输出的,所以必须将其变为电压信号才能送入滤波电路。
5.4滤波电路模块的设计
图5.2RC滤波电路图
滤波电路可考虑采用二阶巴特沃兹低通滤波器或者RC低通滤波器。
巴特沃兹滤波器的幅度函数是单调下降的,由于n阶低通巴特沃斯滤波器的前(2n-1)阶导数在ω=0处为零,所以巴特沃斯滤波器也称为最大平坦幅度滤波器,该方案滤波性能较好,但构造和参数设置比较复杂。
价格也比较昂贵。
而RC低通滤波器可以消除在信号产生过程中有干扰性的高频信号,由于不须运算发大器,参数
计算容易,对系统要求不高。
因此在本设计中,利用RC低通滤波器就可以达到要求。
6.软件设计与仿真
6.1软件设计思路
相关软件采用VHDL硬件描述语言编写。
VHDL是用于逻辑设计的硬件描述语言,为IEEE标准。
利用它,硬件的功能描述可完全在软件上实现。
它支持自顶向下和基于库的设计方法,支持同步电路、异步电路、FPGA以及等随机电路的设计,范围很广,语言的语法比较严格,给阅读和使用都带来极大好处。
软件设计分为三个进程。
正弦波/三角波切换进程,频率幅值设置进程,以及波形数据ROM,ROM中存储的是产生波形的采样点数据。
如正弦波,分为64个采样点,最高采样点值为255,对应的八位二进制数为11111111,第二个采样点为254,对应的八位二进制数为11111110。
如果预置的八位二进制数为11111110,那么时钟跳变一次就产生一个脉冲来让FPGA取出波形数据ROM中的采样点数据,变化比较快,相应的△t就比较小,得到的波形频率就高;如果预置的数是11110101,即245,那么就要过10个脉冲才会采样一次,因此△t就比较大,得到的波形频率就小。
程序参考附录。
6.2系统仿真
附图1三角波仿真波形
附图2正弦波仿真波形
7.系统测试
7.1测试使用的仪器
示波器:
绿扬YB4365,100MHz,江苏扬中电子仪器厂;
直流电压源:
DF1731SC2A;
FPGA实验仪:
DP-FPGA,广州致远电子有限公司;
频率计:
SP-1500A等精度频率计,南京盛普电子实业有限公司。
7.2测试方法
系统测试在清华TPG_FPGA实验箱上进行,引脚锁定后将程序下载到Xilinx公司的目标芯片SpartanⅡ系列的XC2S200-5PQ208上调试通过。
可以在示波器上看到平滑的正弦波和三角波波形,切换和频率幅度的设置都可以达到预期的效果。
7.3指标测试和测试结果
1)频率和幅度测试
频率设置/KHz
所测频率/KHz
幅度设置/V
所测幅度有效值
峰-峰值
30.00
31.02
1.00
1.01
2.02
50.00
50.04
2.00
1.98
4.02
70.00
71.02
3.00
2.91
5.98
90.00
89.23
3.00
2.98
6.02
表1频率和幅度测试结果
2)测试结果
由表中数据可看出,该方法可实现两种正弦波和三角波两种波形的切换,并且得到平滑的频率和幅值都可调的波形。
但是在频率高的地方会有一定的误差。
8.设计总结
小结:
本设计基本上达到了预期设计目标。
本设计是通过大量阅读国内外相关文献,总结了波形发生器、AT89C51和DAC0832还有汇编语言的各自的特点的基础上而提出的。
收获:
1.本设计采用了FPGA来设计波形发生器,使波形发生器操作和使用都非常方便;
2.本文比较了不同方案中使用仪器的功能和特性,最终选取了FPGA单片机,研究了系统各个模块的特点,分别列写了各个模块的流程图和汇编程序,使得具体工作有的放矢,很好的满足了要求;
3.经过本次课程设计,作者对开发单片机应用系统的全过程得到了进一步的了解和体会。
意见和建议:
1.由于个人能力和时间上的限制,汇编程序及系统程序还略有不足和粗糙,在考虑问题的全面性上还有一定的欠缺;
2.每一个处理阶段的程序模块的优化和各个模块的衔接性有待增强。
参考文献
1]蒋廷彪,刘电霆,高富强,方华.单片机原理及应用(MCS-51).重庆:
重庆大学出版社,2003
[2]刘南平,吉红.模拟电子技术.北京:
科学出版社,2005.9.153-183
[3]李朝青.单片机原理及接口技术[M].北京:
航空航天大学出版社,1994
[4]赵亮,侯国锐.单片机C语言编程与实例.北京:
人民邮电出版社,2003
[5]陈光东,赵性初.单片机微型计算机原理与接口技术.第二版.武汉:
华中科技大学出版社,1999
[6]江思敏,姚鹏翼,胡荣等.Protel电路设计教程.北京:
清华大学出版社,2002
[7]谢自美.电子线路设计•实验•测试.第二版.武汉:
华中科技大学出版社,1999
[8]康光华.电子技术基础模拟部分.第四版.高等教育出版社
[9]马忠梅,马岩,张凯,籍顺心.单片机的C语言程序设计.北京:
航空航天大学出版社,1997
[10]彭善琼,丁长松.一种新型信号发生器的设计与实现(吉首大学物理科学与信息工程学院,湖南省吉首市416000)电子工程师2007年2月
[11]李冬梅.PLD器件与EDA技术[M].北京:
北京光播学院出版社,2000年第一版
[12]赵俊超.集成电路设计VHDL教程[M].北京:
北京希望电子出版社,2002年第一版
[13]赵曙光.郭万有.可编程逻辑器件原理,开发与应用[M].西安:
电子科技大学出版社.2000年第一版
[14]甘历.VHDL应用与开发实践[M].北京:
科技出版社.2003年第一版
附录
程序清单
――――――――――――――――――――――――――――――――
文件名:
sin-rec.vhd
功能:
产生正弦波或三角波信号
说明:
基于VHDL硬件描述语言在在Xilinx公司的SpartanⅡ系列的XC2S2005PQ-208芯片上实现
――――――――――――――――――――――――――――――――
libraryIEEE;
useIEEE.STD_LOGIC_1164.ALL;
useIEEE.STD_LOGIC_ARITH.ALL;
useIEEE.STD_LOGIC_UNSIGNED.ALL;
entitysin_recis
Port(clk,reset:
instd_logic;
sinm:
instd_logic_vector(3downto0);--正弦波或三角波的幅度设置
dataf:
instd_logic_vector(7downto0);--频率预置
conver:
instd_logic_vector(1downto0);--正弦波与三角波的设置的切换
dd:
outstd_logic_vector(8downto0);--正弦波输出
ss:
outstd_logic_vector(8downto0));--三角波输出
dd:
outintegerrange765downto0);
endsin_rec;
architectureBehavioralofsin_recis
signalq:
integerrange63downto0;--正弦波数据点
signalq2:
integerrange64downto0;--三角波数据点
signaln0,n,n2:
integerrange1to12;---正弦波或三角波的幅度档位
signaldataf0,count8,dataf22,count9,d,s:
integerrange255downto0;---频率设定系数
signalfss,fss2:
std_logic;
begin
process(reset,clk)
variablecount:
integerrange0to1600;-----------16000--10KHZ;
variablebclk0:
std_logic;
begin
ifreset='1'then
bclk0:
='0';count:
=0;
elsifclk'eventandclk='1'then
ifcount=1then---16000
bclk0:
=notbclk0;count:
=0;
elsecount:
=count+1;
endif;endif;
bclk<=bclk0;endprocess;
ctrsinm_recm:
process(bclk)--正弦波与三角波切换控制进程
begin
ifbclk'eventandbclk='1'then
ifconver="10"then---调正弦波的频率和幅度
dataf0<=conv_integer(dataf);n<=n0;
elsifconver="01"then--调三角波的频率和幅度
dataf22<=conv_integer(dataf);n2<=n0;
elsenull;
endif;endif;
endprocessctrsinm_recm;
sinm_pro:
process(bclk)--调幅进程
begin
ifrising_edge(bclk)then
casesinmis
when"0000"=>n0<=1;--输出8位基波(幅度最小,频率可调)
when"0001"=>n0<=2;--输出两倍基波幅度的波形(正弦波或三角波)
when"0010"=>n0<=3;--输出3倍基波幅度的波形(正弦波或三角波)
when"0011"=>n0<=4;--输出4倍基波幅度的波形(正弦波或三角波)
when"0100"=>n0<=5;--输出5倍基波幅度的波形(正弦波或三角波)
when"0101"=>n0<=6;--输出6倍基波幅度的波形(正弦波或三角波)
when"0110"=>n0<=7;--输出7倍基波幅度的波形(正弦波或三角波)
when"0111"=>n0<=8;--输出8倍基波幅度的波形(正弦波或三角波)
when"1000"=>n0<=9;--输出9倍基波幅度的波形(正弦波或三角波)
when"1001"=>n0<=10;--输出10倍基波幅度的波形(正弦波或三角波)
whenothers=>n0<=1;
endcase;endif;
endprocesssinm_pro;
pulse:
process(bclk,reset,conver)--调频率进程
begin
ifreset='1'thenfss<='0';
elsifrising_edge(clk)then
ifcount8=255thencount8<=dataf0;fss<='1';
elsecount8<=count8+1;fss<='0';
endif;endif;
endprocesspulse;
process(fss)
begin
ifrising_edge(fss)then--产生64个点
ifq=63thenq<=0;else
q<=q+1;
end
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA论文基于FPGA的波形发生器设计 光学测试课程设计 模版+附件程序图片等 EDA 论文 基于 FPGA 波形 发生器 设计 光学 测试 课程设计 模版 附件 程序 图片
![提示](https://static.bingdoc.com/images/bang_tan.gif)