EDA课程设计多功能波形信号发生器.docx
- 文档编号:8887137
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:37
- 大小:421.43KB
EDA课程设计多功能波形信号发生器.docx
《EDA课程设计多功能波形信号发生器.docx》由会员分享,可在线阅读,更多相关《EDA课程设计多功能波形信号发生器.docx(37页珍藏版)》请在冰豆网上搜索。
EDA课程设计多功能波形信号发生器
摘要
本次设计课题为应用VHDL语言及MAX+PLUS
软件提供的原理图输入设计功能,组合电子线路的设计加以完成一个任意波形信号发生器。
它具有结构紧凑,性能稳定,设计结构灵活,方便进行多功能组成的特点,经济实用,成本低廉的特点。
可产生正弦波、方波、三角波、递增锯齿波、递减锯齿波以及阶梯波,并可使用示波器观察波形。
实现了系统信号实时快速测量,也为其广泛应用于实际领域创造了条件。
在实现过程中,将整体功能模块化,分为函数发生模块和调控模块。
在调控模块中实现了调频调幅以及对于波形的输入输出控制。
对于D/A转化器,本实验选择的是TLC7528,利用简单的8进制计数控制CS和WR端口的同步输出,
实现数模转换的同时,保持相应位的同步实现。
在课程设计中遇到了诸多困难,在用示波器显示波形时,却总是得不到稳定的波形,后来发现在输入控制中,仅需要3位二进制数即能完成简单的8进制计数,自己却习惯性的用了8位,这使得分频现象严重,更改后即得到了了稳定的输出波形,经过反复修改调试,最终试验成功。
关键词:
智能信号发生器VHDLMAX+PLUS
TLC7528
一、设计要求
要求设计一个智能函数发生器,该智能函数发生器能够产生递增锯齿波、递减锯齿波、方波、三角波、正弦波以及阶梯波,并且可以通过选择开关选择输出相应波形,具有一定的调幅和调频功能。
同时具有复位的功能,通过按键确定输出的波形及确定是否输出波形。
二、系统设计方案
1、系统的整体原理框图:
图1系统的整体原理框图
2、系统框图
图2任意波形信号发生器系统框图
三、系统设计思路
3.1波形函数发生装置的选择
波形函数发生方案众多,我们要选择一种易于实现且精度高的方案,以此来提高本设计的实用性。
方案一:
通过单片机控制D/A,输出三种波形。
此方案输出的波形不够稳定,抗干扰能力弱,不易调节。
方案二:
利用MAX038芯片组成的电路输出波形。
MAX038是精密高频波形产生电路,无法实现阶梯波和递增递减锯齿波的产生,所以舍弃此方案。
方案三:
用VHDL语言编写程序,调试成功后下载至实验装置的芯片上,再利用外接D/A转换电路(TLC7528)实现以上设计功能。
此种方案完全可以生成设计要求的6种波形,而且通过软件仿真可以直观的观测的输出的波形参数,方便调试和更改波形参数,外围电路简单,减少器件损耗,精度高。
因此在本次设计中我们选择了VHDL。
3.2波形输入输出控制方式的选择
方案一:
控制多路D/A开关输出方式
此种方案为每一路输出的波形函数使用一路D/A转换后输出,通过控制开关控制每一路D/A是否工作,决定输出的波形。
此种方案可以同时输出多路波形,但是需要路D/A转化器,外围电路复杂,制作成本较高而且控制复杂。
方案二:
采用数据选择器方式
此种方案可以利用VHDL语言写出数据选择器,然后每种函数发生器的输出和数据选择器输入相连接,通过控制开关选择对应的波形输出。
方案二完全可以得到方案一的设计要求,而且只需一个D/A转换器就可以。
电路不需要外部搭建,节约成本且控制简单方便。
基于方案二的设计简便、节约制作元件和成本、控制简便等优点,选择方案二作为波形函数输出控制方式。
四、各模块设计及仿真
经过功能分析,将系统分为两大模块,分别为函数发生模块和调控模块。
函数发生模块包括:
正弦波模块、三角波模块、方波模块、阶梯波模块、递增或递减锯齿波模块;调控模块包括:
选频模块、调幅模块、输入控制模块以及输出控制模块。
4.1函数发生模块
4.1.1正弦波模块
正弦波sin的VHDL程序如附录所示,其中CLK是输入时钟端口,RESET为输入复位端口,D_OUT[7..0]为八位二进制输出端口。
SIN_ROM正弦波函数发生模块框图如下图所示:
图3正弦波函数发生模块框图
正弦波可用两种方法,即计算法和查表法产生。
计算法要用浮点运算,复杂且耗时太长,一般不采用。
查表法是事先将正弦波的数据计算出来,列表放在程序中,运行时直接调取数据。
用公式y=127.5+127.5sin(360n/m)可计算出正弦波的输出值,公式中的m为输出点数,n=1,2,…m。
m值取小一些可以提高波形频率,但波形畸变会增大,增加输出点虽然可以改善波形,但输出频率会降低,实践表明,m取64时,可以得到很好的正弦波。
BEGIN
IFRESET='1'THEN
D_OUT<=0;
ELSIFCLK'EVENTANDCLK='1'THEN
IFTMP=63THEN
TMP:
=0;
ELSE
TMP:
=TMP+1;
ENDIF;
正弦波函数波形仿真图如下图所示:
图4正弦波函数波形仿真图
如图所示,复位信号为高电平时,输出清零,否则正常输出,但幅度未从0-255,原因是考虑到示波器基准电平的问题,人为的提高最低电平到50.
4.1.2方波模块
方波的VHDL程序如附录所示,其中CLK是输入时钟端口,RESET为输入复位端口,Q_OUT[7..0]为八位二进制输出端口。
方波波函数发生模块框图如下图所示:
图5方波函数发生模块框图
方波只有两个值,可以采用两个极端值0和FFH。
根据输出标志A的数值输出对应的数值,当A=0输出0,也即是方波周期中的低电平,当A=1,输出255,也即是方波周期中的高电平。
连续的输出便成了观测到的方波波形。
其VHDL描述如下:
IF(RESET='1')THEN
A<='0';
ELSIFCLK'EVENTANDCLK='1'THEN
IF(TMP="1111")THEN
TMP:
="0000";
ELSE
TMP:
=TMP+1;
ENDIF;
IF(TMP<="1000")THEN
A<='1';
ELSE
A<='0';
ENDIF;
ENDIF;
ENDPROCESS;
PROCESS(CLK,A)
BEGIN
IFCLK'EVENTANDCLK='1'THEN
IFA='1'THEN
Q<="11111111";
ELSE
Q<="00000000";
ENDIF;
ENDIF;
方波函数波形仿真图:
图6方波函数波形仿真图
如图所示,复位信号为高电平时,输出清零,否则正常输出。
4.1.3递增锯齿波模块
递增锯齿波的VHDL程序如附录所示,其中CLK是输入时钟端口,RESET为输入复位端口,Q_OUT[7..0]为八位二进制输出端口。
递增锯齿波函数发生模块框图如下图所示:
图7递增锯齿波函数发生模块框图
程序设计的当复位信号为1时,输出为0,无对应的波形产生。
当复位信号为0时,每当检测到时钟上升沿时,计数器值加1,当增加到最大后清零。
计数值增加呈现线性关系,因此输出的波形是递增的斜波。
从仿真波形图也能看出这种变化规律。
VHDL描述为:
IFTMP="11111111"THEN
TMP:
="00000000";
ELSE
TMP:
=TMP+1;
ENDIF;
ENDIF;
递增锯齿波函数波形仿真图如下图所示:
图8递增锯齿波函数波形仿真图
4.1.4递减锯齿波模块
递减锯齿波的VHDL程序如附录所示,其中CLK是输入时钟端口,RESET为输入复位端口,Q_OUT[7..0]为八位二进制输出端口。
递减锯齿波函数发生模块框图如下图所示:
图9递减锯齿波函数发生模块框图
程序设计的是复位信号为0时输出为0,无对应的波形产生。
当复位信号为1时,当每当检测到时钟上升沿时,计数值减1,当减到0后赋值到最大。
计数值减少呈现线性关系,因此输出的波形是递减的锯齿波。
从仿真波形图也能看出这种变化规律。
VHDL描述为:
IFRESET='1'THEN
TMP:
="11111111";
ELSIFCLK'EVENTANDCLK='1'THEN
IFTMP="00000000"THEN
TMP:
="11111111";
ELSE
TMP:
=TMP-1;--阶梯为1,递减信号的变化
ENDIF;
ENDIF;
递减锯齿波函数波形仿真图如下图所示:
图10递减锯齿波函数波形仿真图
4.1.5阶梯波模块
阶梯波的VHDL程序如附录所示,其中CLK是输入时钟端口,RESET为输入复位端口,Q_OUT[7..0]为八位二进制输出端口。
阶梯波函数发生模块框图如下图所示:
图11阶梯波函数发生模块框图
阶梯波设计的是数据的递增是以一定的阶梯常数向上增加,所以输出的波形呈现是成阶梯状的,而不是,完全呈现是直线增长。
从仿真波形图也能看出这种变化规律。
VHDL描述如下:
IFRESET='1'THEN
TMP:
="00000000";
ELSIFCLK'EVENTANDCLK='1'THEN
IFTMP="11111111"THEN
TMP:
="10000000";
ELSE
TMP:
=TMP+16;
ENDIF;
ENDIF;
阶梯波函数波形仿真图如下图所示:
图12阶梯波函数波形仿真图
如图所示,复位信号为高电平时,输出清零,否则正常输出。
4.1.6三角波模块
三角波的VHDL程序如附录所示,其中CLK是输入时钟端口,RESET为输入复位端口,Q_OUT[7..0]为八位二进制输出端口。
三角波函数发生模块框图如下图所示:
图13三角波函数发生模块框图
程序设计的是reset复位信号为0时输出为0,无对应的波形产生。
当复位信号为1时,当每当检测到时钟上升沿时,当计数的数据不是最大值时,数值做递增运算,当增大到最大时,然后再做递减运算,因此输出的波形便呈现出三角波的形状。
从仿真波形图也能看出这种变化规律。
VHDL描述如下:
IFA='0'THEN
IFTMP="11111110"THEN
TMP:
="11111111";
A:
='1';
ELSE
TMP:
=TMP+1;
ENDIF;
ELSE
IFTMP="00000001"THEN
TMP:
="00000000";
A:
='0';
ELSE
TMP:
=TMP-1;
ENDIF;
ENDIF;
ENDIF;
三角波函数波形仿真图如下图所示:
图14三角波函数波形仿真图
4.2调控模块
4.2.1波形输出控制单元
波形输出控制单元中只包括一个数据选择器模块。
该模块为6选1的数据选择器,包括6个数据输入端,3个数据选择输入端和一个数据输出端。
其元件框图如下图所示:
图15波形输出控制单元模块框图
其功能是根据数据选择输入端输入的数据来选择相应的数据送到输出端。
从而实现数据的选择输出。
其VHDL描述如下所示:
ARCHITECTUREBEHAVOFMUX61IS
SIGNALSEL:
STD_LOGIC_VECTOR(2DOWNTO0);
BEGIN
SEL<=S2&S1&S0;
PROCESS(S2,S1,S0,D0,D1,D2,D3,D4,D5)
BEGIN
CASESELIS
WHEN"000"=>Q<=D0;--递减锯齿波形输出
WHEN"001"=>Q<=D1;--递增锯齿波形输出
WHEN""=>Q<=D2;--三角波形输出
WHEN"011"=>Q<=D3;--阶梯波形输出
WHEN"100"=>Q<=D4;--方波输出
WHEN"101"=>Q<=D5;--正弦波形输出
WHENOTHERS=>NULL;
ENDCASE;
ENDPROCESS;
ENDBEHAV;
仿真波图如下图所示:
图16波形输出控制单元波形仿真图
当S2S1S0="000"时,选着输出信号一。
4.2.2波形输入控制单元
波形输入控制单元中不仅包括一个数据选择器模块,该模块为6选1的数据选择器,而且更重要的是还有D/A控制信号CS和WR的控制程序,包括1个数据输入端、3个数据选择输入端、6个数据输出端以及2个控制信号输出端。
其元件框图如下图所示:
图17波形输入控制单元模块框图
其功能是选择要控制的函数单元模块,并且实现数据和TLC7528的同步。
CS和WR的VHDL描述如下所示:
IF(S='1')THEN
Q<=Q+1;
IFQ>1THEN
CS<='0';
ELSE
CS<='1';
ENDIF;
IF(Q>3ANDQ<6)THEN
WR<='0';
ELSE
WR<='1';
ENDIF;
IFQ="111"THEN
COUT<='1';
Q<="000";
ELSE
COUT<='0';
ENDIF;
ENDIF;
仿真波图如下图所示:
图18波形输入控制单元波形仿真图
当A2A1A0=""时,选着输出信号Y3。
4.2.3频率控制单元
频率控制单元中包括一个分频模块同时也包括一个挑频模块,挑频模块为简单的四选一数据选择器,分频模块将输入的时钟信号进行2、4、8、16分频,其元件框图如下图所示:
图19分频单元模块框图
分频模块VHDL语言描述:
IF(clk'EVENTANDclk='1')THEN
IF(count="1111")THEN
Count<=(OTHERS=>'0');
ELSE
Count<=count+1;
ENDIF;
ENDIF;
仿真波图如下图所示:
图20分频控制单元波形仿真图
4.2.4幅度控制单元
幅度控制单元中包括一个除法模块同时也包括一个选择模块,选择模块为四选一数据选择器,除法模块将输入的信号进行1、1/2、1/4、1/8调幅,其元件框图如下图所示:
图21幅度控制单元元件框图
除法模块利用二进制数每右移一位,高位补零,相当于二进制数除以二的特点,进行了调幅的相应操作。
VHDL描述如下所示:
CASESCOPE_MODEIS
WHEN"00"=>FF:
=SCOPE_IN;
WHEN"01"=>FF(6DOWNTO0):
=SCOPE_IN(7DOWNTO1);
FF(7):
='0';
WHEN"10"=>FF(5DOWNTO0):
=SCOPE_IN(7DOWNTO2);
FF(7):
='0';FF(6):
='0';
WHENOTHERS=>FF(4DOWNTO0):
=SCOPE_IN(7DOWNTO3);
FF(7):
='0';FF(6):
='0';FF(5):
='0';
ENDCASE;
仿真波图如下图所示:
图22幅度控制单元波形仿真图
当MODE1MODE0="01"时,进行1/2调幅。
4.3D/A转换器
在整体系统中,波形的幅度值被量化成数字值,通过一组数据线输出代表二进制编码的电平信号,为了将数字信号装换成模拟信号,需要用到数-模转换器,简称DAC(Digital-AnalogConverter)。
为了数据处理的准确性,DAC转换器必须有足够的转换精度。
同时为了能够在较高频率下工作,它必须有足够快的转换速度。
因此,转换精度和转换速度是衡量DAC转换器性能优劣的主要指标。
本实验采用的D/A转换器是TLC7528,他的引脚图如下图所示:
图23TLC7528引脚图
TLC7528通过数据总线,DACB控制信号与微处理器接口。
当和均为低电平时,TCL7528模拟输出(由DACA/DACB控制线指定)对DB0~DB7数据总线输入端的活动做出响应。
在此方式下,输入锁存器是透明的,输入数据直接影响模拟输出。
当或信号变为高电平时,DB0~DB7输入端上的数据被锁存,直至或信号再次变低为止。
当为高电平时,不管WR信号的状态如何,数据输入被禁止。
图24TLC7528时序图
根据的他的时序电路图,由于当CS和WR同时低电平有效时才能输出数据,在输入控制模块设计了一段时序控制程序如下所示:
IF(S='1')THEN
Q<=Q+1;
IFQ>1THEN
CS<='0';
ELSE
CS<='1';
ENDIF;
IF(Q>3ANDQ<6)THEN
WR<='0';
ELSE
WR<='1';
ENDIF;
IFQ="111"THEN
COUT<='1';
Q<="000";
ELSE
COUT<='0';
ENDIF;
ENDIF;
控制部分波形图如下所示:
图25TLC7528控制信号波形图
4.4总电路
通过以上各个模块的细化和分析,最终在Max+plusⅡ中完成了整个系统的联合调试,并通过示波器读输出信号的波形符合设计的要求。
调试整个系统了原理图如下图所示:
图26总电路图
整图仿真
图27总电路图仿真波形
由此图得出的结论:
此为二分频,幅度不变,方波信号,根据TLC7528的时序特点,在CS和WR同为低电平时,有模拟方波的输出。
五、硬件测试
5.1编译
(1)选择目标器件
Assign---Device---DeviceFamily---FLEX10K---EPF10K10LC84-3---OK
图28器件选择窗口
(2)启动编译器
Max+PlusII---Compiler---Start
将以上模块分别编译通过,并将它们全部保存到自己所建的工程文件夹:
kechengsheji-1中。
5.2引脚的锁定
确定设计实体输入输出端口与目标芯片引脚的对应关系
图29引脚锁定界面
将管脚安排写成表格形式如下表所示:
表1器件管脚安排
端口
管脚安排
端口
管脚安排
端口
管脚安排
CLK
INPUT=1
DATA5
OUTPUT=19
S2
INPUT=37
DATA0
OUTPUT=61
DATA6
OUTPUT=21
TIAOFU0
INPUT=36
DATA1
OUTPUT=62
DATA7
OUTPUT=22
TIAOFU1
INPUT=35
DATA2
OUTPUT=64
RESET
INPUT=28
TIAOPIN0
INPUT=30
DATA3
OUTPUT=65
SO
INPUT=39
TIAOPIN1
INPUT=29
DATA4
OUTPUT=18
S1
INPUT=38
WR
OUT=23
5.3编程下载
1.用下载电缆把计算机的并口与目标板(实验开发系统),连接好并打开电源。
2.将已经完成好的顶层原理图设一次当前工程,然后将其在Max+plusⅡ--Compiler下编译一次,将引脚锁定图在Max+plusⅡ--FloorplanEditor中打开,再编译一次管脚。
3.Max+plusⅡ--Programmer--Option--HardwareSetup---ByteBlaster(编程方式为)---Configute,双击Enter键,进行硬件验证。
5.4硬件验证
下载完成后,把示波器连接到实验箱上,并在实验箱上选择适当的时钟频率(以示波器上显示的波形清晰为标准)。
准备工作完成后按下实验箱的键K1即复位键,键K2和K3即为频率选择开关,键K4和键K5即为幅度选择开关。
键K6、键K7、键K8组合为波形选择键,组合键的键值与对应波形关系如下表:
表2频控按键
键K2
键K3
对应产生的分频
0
0
二分频
0
1
四分频
1
0
八分频
1
1
十六分频
表3幅控按键
键K4
键K5
对应产生的调幅
0
0
幅度不变
0
1
二分之一调幅
1
0
四分之一条幅
1
1
八分之一条幅
表4按键与波形对应关系
键K6
键K7
键K8
对应产生的波形
0
0
0
递减锯齿波
0
0
1
递增锯齿波
0
1
0
三角波
0
1
1
阶梯波
1
0
0
方波
1
0
1
正弦波
当K1K2K3K4K5K6K7K8=00000101;输出的是正弦波信号
当K1K2K3K4K5K6K7K8=00001101;输出的是2分频后的正弦波信号
当K1K2K3K4K5K6K7K8=00101101;输出的是2分频和1/2调幅后的正弦波信号。
六、课程设计心得体会
本次课程设计完成了智能函数信号发生器的设计与实现,前后经历了几周的时间,前期初步设计可谓是顺风顺水,但是由于试验箱使用的D/A转换器是TLC7528,中期在控制TLC7528的和上遇到了一些困难,后来在输入控制模块中采用了一个简单的8进制计数器,实现了,与时钟信号同步,继而得到了模拟信号的输出,不过在用示波器显示波形时,却总是得不到稳定的波形,后来发现在输入控制中,仅需要3位二进制数即能完成简单的8进制计数,自己却习惯性的用了8位,这使得分频现象严重,更改后即得到了了稳定的输出波形,但是波形的下半部分却被消隐了,怀疑是基准电平的问题,对信号波形发生器进行了微调,如:
对于正弦波发生器,本来取值围是从0-255,人为的提高了最低电平,采取了所有电平值除二加50的措施,最后果然波形输出稳定完好,试验成功。
当然本次课程还有很多不足之处,对于函数信号发生仍然可以使用LPM——ROM模块,同时可以采用数控分频对调频智能控制,虽然连续调幅困难相当大,但是还是可以有时间一试。
总的来说,在设计中遇到了很多问题,最后在老师的指导下,终于迎刃而解,有点小小的成就感,终于觉得平时所学的知识有了实用的价值,还使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从而提高自己的实际动手能力和独立思考的能力。
不仅学到了不少知识,而且锻炼了自己的能力。
参考文献
[1]卢毅,赖杰.VHDL与数字电路设计.北京:
科学.
[2]焦素敏.EDA应用技术.北京清华大学,2005
[3]王志鹏,付丽琴.可编程逻辑器件开发技术MAX+PLUSII.北京国防工业.2005.3
[4]徐志军.CPLD/FPGA的开发与应用.北京电子工业出版
[5]宋万杰,罗丰,吴顺君.CPLD技术及其应用.:
电子科技大学,1999
附录
分频模块:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCT74161IS
PORT(clk:
INSTD_LOGIC;
clk_div2:
OUTSTD_LOGIC;
clk_div4:
OUTSTD_LOGIC;
clk_div8:
OUTSTD_LOGIC;
clk_div16:
OUTSTD_LOGIC);
ENDCT74161;
ARCHITECTURErtlO
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 课程设计 多功能 波形 信号发生器