基于VHDL的混合函数发生器.docx
- 文档编号:4432860
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:13
- 大小:718.02KB
基于VHDL的混合函数发生器.docx
《基于VHDL的混合函数发生器.docx》由会员分享,可在线阅读,更多相关《基于VHDL的混合函数发生器.docx(13页珍藏版)》请在冰豆网上搜索。
基于VHDL的混合函数发生器
自由设计报告
报告名称:
混合函数发生器的设计
姓名:
学号:
【摘要】:
本设计根据移位寄存器的相关知识,利用VHDL语言设计出混合函数发生器,主要是正弦波,方波,三角波,递增,递减斜波五种函数发生器,然后通过函数选择器进行选择,决定要输出的函数。
并通过利用QuartusII模拟仿真得到相应的波形。
关键词:
QuartusII、函数发生器
一、选题背景
在课程实验中,我们采用DDS技术,用ISE产生了正弦波。
DDS技术是从相位概念出发之结合成所需要波形的一种频率合成技术。
以正弦波为例,首先要按照一定的采样点数将正弦波形一个周期的数据信息存于ROM表中,表中包含着一个周期正弦波的数字幅度信息,每个地址对应正弦波中0到360度范围内的一个相位点的幅度值,查找表时即是把输入的地址相位信息映射成正弦波幅度的数字量信号,通过设置的输出端口输出。
在实物设计中,可以使用D/A接口来实现波形信号的输出。
在这里,如果可以产生正弦波或者其他波形,则可以构建一个混合函数发生器,来产生不同的函数,并通过不同的输入来选择输出波形。
事实上,函数发生器在生产实践和科技领域有着和广泛的应用。
只要用到波形传输的技术和产业,都与函数发生器有着密不可分的关系。
通过本次自由设计,可以了解并掌握VHDL硬件描述语言的设计方法和思想,通过对函数函数发生器的设计,也可以巩固和综合运用所学知识。
二、函数发生器概述
2.1、设计思想
要设计一个函数发生器,就要先确定需要生成的函数种类。
一般函数发生器能够产生递增斜波、递减斜波、方波、三角波、正弦波、及阶梯波等。
本设计是基于VHDL语言设计的混合函数发生器,本实验选择产生的的波形是正弦波,方波,三角波,递增,递减斜波。
虽然用模拟电子线路的方法也很容易得到这些波形,但是这种方法会使硬件线路较为繁琐,而且模拟线路会受到干扰。
如果可以采用综合设计方法使用FPGA来实现混合函数发生器,它可以由六个波形产生模块及波形选择输出模块组成,波形选择模块的输出Q接在D/A转换的数据端,就可以在D/A输出端得到想要的其中之一的任一种光滑的波形。
2.2、QuartusII与ISE的选择
ISE是产生高质量函数波形的很好的软件,但是其必须要实物来进行实现。
且由于自己的私人电脑无法安装ISE软件,故选用QuartusII来进行模拟与仿真。
QuartusII是另一种FPGA工具,它可以脱离电路板进行模拟,方便快捷,提供了完全集成且与电路结构无关的开发包环境,具有数字逻辑设计的全部特性;占用空间小,一般学生使用电脑即可以承受并安装。
三、函数发生器设计
3.1、系统结构
混合函数发生器主要由六大模块组成,其中五大模块是用来产生常用的波形图,包括正弦波,方波,三角波,递增,递减谐波五种波。
在这六个模块中,每个都有两个输入端口,分别是时钟信号端口CLK,CLK输入时钟脉冲,时钟上升沿有效,和复位清零信号RESET,当高电平有效时,系统恢复初始状态;每个模块还有一个输出端口,输出对应的波形函数。
另一大模块就是波形选择模块,SEL【2..0】为输出选择信号,该信号的不同取值对应递增斜波、递减斜波、方波、三角波、正弦波、阶梯波六种不同的输出;Q【7..0】为输出信号,根据输出函数选择信号SEL【2..0】的取值输出相应的波形。
以下是混合函数发生器的主要系统结构示意图:
图1系统流程图
3.2、顶层结构
顶层结构事实上是一个多路选通器,利用它来控制输出哪一个函数波形:
图2
将上述6个模块(递增锯齿波、递减锯齿波、三角波、方波、5选1数据选择器)封装成为模块文件,供顶层电路调用。
则可以得到以下顶层文件电路:
图3总的顶层模块
3.3、模块文件设计
1、三角波
图中CLK为时钟输入信号,CLR为复位清零信号,Q【7..0】为输出波形函数。
图4
2、递减锯齿波
图5
3、递增锯齿波
图6
4、方波
图7
5、正弦波
在一个sin周期内采集64个点,用MATLAB编出这64个点对应的二进制值,然后赋给程序里面的number信号。
图8
其中MATLAB程序如下:
quzhi=zeros(1,64);
interger=zeros(1,64);
unsign=zeros(1,64);
binary_chu=zeros(64,10);
binary=zeros(64,10);
k=1;
yu=1;
fori=1:
1:
64
quzhi(i)=255*sin((i-1)*2*pi/63)+255;
end
interger=round(quzhi);
unsign=interger;
fori=1:
1:
64
k=1;
yu=unsign(i);
while(yu~=0)
binary_chu(i,k)=yu-floor(yu/2)*2;
yu=floor(yu/2);
k=k+1;
end
binary_chu(i,10)=i;
end
fori=1:
1:
64
k=10;
forj=1:
1:
10
binary(i,k)=binary_chu(i,j);
k=k-1;
end
end
unsign
binary
四、VHDL程序实现
4.1、多路选通器
4.2、三角波
4.3、递减锯齿波
4.4、递增锯齿波
4.5、方波
4.6、正弦波
五、系统仿真
通过选择不同的sel值,可以实现不同的波形输出。
仿真中reset复位信号一直置高电平,即没有仿真复位情况。
5.1、三角波
信号发生器顶层电路的仿真输出波形为三角波。
输出的波形线性减小到最小值0后,再线性增加。
图9
5.2、递减锯齿波
信号发生器顶层电路的仿真输出波形为递减锯齿波。
输出的波形线性递减。
图10
5.3、递增锯齿波
信号发生器顶层电路的仿真输出波形为递增锯齿波。
输出的波形线性递增。
图11
5.4、方波
信号发生器顶层电路的仿真输出波形为方波。
输出的波形为周期性的全0或全1。
图12
5.5、正弦波
图13
六、心得及体会
6.1、关于实现方法的选择
想要做一个函数发生器有很多方法。
比如说我们可以完全采用采点赋值的方法,像构建正弦发生器一样构建其他的函数发生器。
但是这样一来比较麻烦,每个函数都需要写相应的MATLAB的生成代码,二来觉得如果可以采用系统自动发生的方法,效果会更好。
6.2、学习心得
本次设计完成了以下几点目标:
(1)信号发生器的功能测试与仿真实验结果表明,时序和波形正确,达到了设计的功能要求,说明该设计是行之有效的。
(2)为了可以选择不同信号的波形,系统设计了函数选择调用模块,来完成不同函数信号的输出。
其实在设计过程中,也可以将一些常用的模块定义为相应的逻辑元件符号,以便共享和复用,使设计具有可重用性和可移植性,可以实现一些复杂系统的设计,提高工作效率。
参考文献:
【1】、《智能函数发生器的VHDL设计与仿真》,梁向红,《江苏工业学院学报》第20卷第1期,2008年3月
【2】、《基于VHDL语言的函数发生器的设计》,刘冬香,《机电工程技术》,2007年,第36卷第8期
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 VHDL 混合 函数 发生器