基于vhdl的混合函数发生器

基于vhdl的混合函数发生器

ID:18701389

大小:907.04 KB

页数:14页

时间:2018-09-20

基于vhdl的混合函数发生器_第1页
基于vhdl的混合函数发生器_第2页
基于vhdl的混合函数发生器_第3页
基于vhdl的混合函数发生器_第4页
基于vhdl的混合函数发生器_第5页
资源描述:

《基于vhdl的混合函数发生器》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、自由设计报告报告名称:混合函数发生器的设计姓名:学号:【摘要】:本设计根据移位寄存器的相关知识,利用VHDL语言设计出混合函数发生器,主要是正弦波,方波,三角波,递增,递减斜波五种函数发生器,然后通过函数选择器进行选择,决定要输出的函数。并通过利用QuartusII模拟仿真得到相应的波形。关键词:QuartusII、函数发生器一、选题背景在课程实验中,我们采用DDS技术,用ISE产生了正弦波。DDS技术是从相位概念出发之结合成所需要波形的一种频率合成技术。以正弦波为例,首先要按照一定的采样点数将正弦波

2、形一个周期的数据信息存于ROM表中,表中包含着一个周期正弦波的数字幅度信息,每个地址对应正弦波中0到360度范围内的一个相位点的幅度值,查找表时即是把输入的地址相位信息映射成正弦波幅度的数字量信号,通过设置的输出端口输出。在实物设计中,可以使用D/A接口来实现波形信号的输出。在这里,如果可以产生正弦波或者其他波形,则可以构建一个混合函数发生器,来产生不同的函数,并通过不同的输入来选择输出波形。事实上,函数发生器在生产实践和科技领域有着和广泛的应用。只要用到波形传输的技术和产业,都与函数发生器有着密不可

3、分的关系。通过本次自由设计,可以了解并掌握VHDL硬件描述语言的设计方法和思想,通过对函数函数发生器的设计,也可以巩固和综合运用所学知识。二、函数发生器概述2.1、设计思想要设计一个函数发生器,就要先确定需要生成的函数种类。一般函数发生器能够产生递增斜波、递减斜波、方波、三角波、正弦波、及阶梯波等。本设计是基于VHDL语言设计的混合函数发生器,本实验选择产生的的波形是正弦波,方波,三角波,递增,递减斜波。虽然用模拟电子线路的方法也很容易得到这些波形,但是这种方法会使硬件线路较为繁琐,而且模拟线路会受到

4、干扰。如果可以采用综合设计方法使用FPGA来实现混合函数发生器,它可以由六个波形产生模块及波形选择输出模块组成,波形选择模块的输出Q接在D/A转换的数据端,就可以在D/A输出端得到想要的其中之一的任一种光滑的波形。2.2、QuartusII与ISE的选择ISE是产生高质量函数波形的很好的软件,但是其必须要实物来进行实现。且由于自己的私人电脑无法安装ISE软件,故选用QuartusII来进行模拟与仿真。QuartusII是另一种FPGA工具,它可以脱离电路板进行模拟,方便快捷,提供了完全集成且与电路结构

5、无关的开发包环境,具有数字逻辑设计的全部特性;占用空间小,一般学生使用电脑即可以承受并安装。一、函数发生器设计3.1、系统结构混合函数发生器主要由六大模块组成,其中五大模块是用来产生常用的波形图,包括正弦波,方波,三角波,递增,递减谐波五种波。在这六个模块中,每个都有两个输入端口,分别是时钟信号端口CLK,CLK输入时钟脉冲,时钟上升沿有效,和复位清零信号RESET,当高电平有效时,系统恢复初始状态;每个模块还有一个输出端口,输出对应的波形函数。另一大模块就是波形选择模块,SEL【2..0】为输出选择

6、信号,该信号的不同取值对应递增斜波、递减斜波、方波、三角波、正弦波、阶梯波六种不同的输出;Q【7..0】为输出信号,根据输出函数选择信号SEL【2..0】的取值输出相应的波形。以下是混合函数发生器的主要系统结构示意图:图1系统流程图3.2、顶层结构顶层结构事实上是一个多路选通器,利用它来控制输出哪一个函数波形:图2将上述6个模块(递增锯齿波、递减锯齿波、三角波、方波、5选1数据选择器)封装成为模块文件,供顶层电路调用。则可以得到以下顶层文件电路:图3总的顶层模块3.3、模块文件设计1、三角波图中CLK

7、为时钟输入信号,CLR为复位清零信号,Q【7..0】为输出波形函数。图42、递减锯齿波图53、递增锯齿波图64、方波图75、正弦波在一个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

8、:1:64quzhi(i)=255*sin((i-1)*2*pi/63)+255;endinterger=round(quzhi);unsign=interger;fori=1:1:64k=1;yu=unsign(i);while(yu~=0)binary_chu(i,k)=yu-floor(yu/2)*2;yu=floor(yu/2);k=k+1;endbinary_chu(i,10)=i;endfori=1:1:64k=10;forj=1:1:10b

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。