当前位置:文档之家› EDA课程设计_多功能波形信号发生器

EDA课程设计_多功能波形信号发生器

目录摘要 (1)一、设计要求 (3)三、系统设计思路 (4)3.1 波形函数发生装置的选择 (4)3.2 波形输入输出控制方式的选择 (5)四、各模块设计及仿真 (6)4.1函数发生模块 (6)4.1.1 正弦波模块 (6)4.1.2 方波模块 (7)4.1.3 递增锯齿波模块 (9)4.1.4 递减锯齿波模块 (10)4.1.5 阶梯波模块 (12)4.1.6 三角波模块 (13)4.2调控模块 (15)4.2.1波形输出控制单元 (15)4.2.2波形输入控制单元 (16)4.2.3频率控制单元 (18)4.2.4幅度控制单元 (20)4.3 D/A转换器 (21)4.4 总电路 (24)五、硬件测试 (25)5.1编译 (25)5.2 引脚的锁定 (26)5.3编程下载 (27)5.4 硬件验证 (28)六、课程设计心得体会 (31)参考文献 (32)附录 (33)摘要本次设计课题为应用VHDL语言及MAX+PLUSII软件提供的原理图输入设计功能,组合电子线路的设计加以完成一个任意波形信号发生器。

它具有结构紧凑,性能稳定,设计结构灵活,方便进行多功能组成的特点,经济实用,成本低廉的特点。

可产生正弦波、方波、三角波、递增锯齿波、递减锯齿波以及阶梯波,并可使用示波器观察波形。

实现了系统信号实时快速测量,也为其广泛应用于实际领域创造了条件。

在实现过程中,将整体功能模块化,分为函数发生模块和调控模块。

在调控模块中实现了调频调幅以及对于波形的输入输出控制。

对于D/A转化器,本实验选择的是TLC7528,利用简单的8进制计数控制CS和WR端口的同步输出,实现数模转换的同时,保持相应位的同步实现。

在课程设计中遇到了诸多困难,在用示波器显示波形时,却总是得不到稳定的波形,后来发现在输入控制中,仅需要3位二进制数即能完成简单的8进制计数,自己却习惯性的用了8位,这使得分频现象严重,更改后即得到了了稳定的输出波形,经过反复修改调试,最终试验成功。

关键词:智能信号发生器 VHDL MAX+PLUSII 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时,可以得到很好的正弦波。

BEGINIF RESET='1'THEND_OUT<=0;ELSIF CLK'EVENT AND CLK='1'THENIF TMP=63 THENTMP:=0;ELSETMP:=TMP+1;END IF;正弦波函数波形仿真图如下图所示:图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') THENA<='0';ELSIF CLK'EVENT AND CLK='1' THENIF (TMP="1111")THENTMP:="0000";ELSETMP:=TMP+1;END IF;IF (TMP<="1000")THENA<='1';ELSEA<='0';END IF;END IF;END PROCESS;PROCESS(CLK,A)BEGINIF CLK'EVENT AND CLK='1' THENIF A='1'THENQ<="11111111";ELSEQ<="00000000";END IF;END IF;方波函数波形仿真图:图6 方波函数波形仿真图如图所示,复位信号为高电平时,输出清零,否则正常输出。

4.1.3 递增锯齿波模块递增锯齿波的VHDL程序如附录所示,其中CLK是输入时钟端口,RESET为输入复位端口,Q_OUT[7..0]为八位二进制输出端口。

递增锯齿波函数发生模块框图如下图所示:图 7 递增锯齿波函数发生模块框图程序设计的当复位信号为1时,输出为0,无对应的波形产生。

当复位信号为0时,每当检测到时钟上升沿时,计数器值加1,当增加到最大后清零。

计数值增加呈现线性关系,因此输出的波形是递增的斜波。

从仿真波形图也能看出这种变化规律。

VHDL描述为:IF TMP="11111111" THENTMP:="00000000";ELSETMP:=TMP+1;END IF;END IF;递增锯齿波函数波形仿真图如下图所示:图 8 递增锯齿波函数波形仿真图4.1.4 递减锯齿波模块递减锯齿波的VHDL程序如附录所示,其中CLK是输入时钟端口,RESET为输入复位端口,Q_OUT[7..0]为八位二进制输出端口。

递减锯齿波函数发生模块框图如下图所示:图 9 递减锯齿波函数发生模块框图程序设计的是复位信号为0时输出为0,无对应的波形产生。

当复位信号为1时,当每当检测到时钟上升沿时,计数值减1,当减到0后赋值到最大。

计数值减少呈现线性关系,因此输出的波形是递减的锯齿波。

从仿真波形图也能看出这种变化规律。

VHDL描述为:IF RESET='1' THENTMP:="11111111";ELSIF CLK'EVENT AND CLK='1' THENIF TMP="00000000" THENTMP:="11111111";ELSETMP:=TMP-1; --阶梯为1,递减信号的变化END IF;END IF;递减锯齿波函数波形仿真图如下图所示:图10 递减锯齿波函数波形仿真图4.1.5 阶梯波模块阶梯波的VHDL程序如附录所示,其中CLK是输入时钟端口,RESET为输入复位端口,Q_OUT[7..0]为八位二进制输出端口。

阶梯波函数发生模块框图如下图所示:图 11 阶梯波函数发生模块框图阶梯波设计的是数据的递增是以一定的阶梯常数向上增加,所以输出的波形呈现是成阶梯状的,而不是,完全呈现是直线增长。

从仿真波形图也能看出这种变化规律。

VHDL描述如下:IF RESET='1' THENTMP:="00000000";ELSIF CLK'EVENT AND CLK='1' THENIF TMP="11111111"THENTMP:="10000000";ELSETMP:=TMP+16;END IF;END IF;阶梯波函数波形仿真图如下图所示:图 12 阶梯波函数波形仿真图如图所示,复位信号为高电平时,输出清零,否则正常输出。

4.1.6 三角波模块三角波的VHDL程序如附录所示,其中CLK是输入时钟端口,RESET为输入复位端口,Q_OUT[7..0]为八位二进制输出端口。

三角波函数发生模块框图如下图所示:图 13 三角波函数发生模块框图程序设计的是reset复位信号为0时输出为0,无对应的波形产生。

相关主题