下载此文档

基于VHDL的混合函数发生器.docx


文档分类:通信/电子 | 页数:约14页 举报非法文档有奖
1/14
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/14 下载此文档
文档列表 文档介绍
自由设计报告报告名称:混合函数发生器的设计姓名:学号:【摘要】:本设计根据移位寄存器的相关知识,利用 VHDL 语言设计出混合函数发生器,主要是正弦波,方波,三角波,递增,递减斜波五种函数发生器,然后通过函数选择器进行选择,决定要输出的函数。并通过利用 QuartusII 模拟仿真得到相应的波形。关键词:QuartusII、函数发生器一、 选题背景在课程实验中,我们采用 DDS 技术,用 ISE 产生了正弦波。DDS 技术是从相位概念出发之结合成所需要波形的一种频率合成技术。以正弦波为例,首先要按照一定的采样点数将正弦波形一个周期的数据信息存于 ROM 表中,表中包含着一个周期正弦波的数字幅度信息,每个地址对应正弦波中 0 到 360 度范围内的一个相位点的幅度值,查找表时即是把输入的地址相位信息映射成正弦波幅度的数字量信号,通过设置的输出端口输出。在实物设计中,可以使用 D/A 接口来实现波形信号的输出。在这里,如果可以产生正弦波或者其他波形,则可以构建一个混合函数发生器,来产生不同的函数,并通过不同的输入来选择输出波形。事实上,函数发生器在生产实践和科技领域有着和广泛的应用。只要用到波形传输的技术和产业,都与函数发生器有着密不可分的关系。通过本次自由设计,可以了解并掌握 VHDL 硬件描述语言的设计方法和思想,通过对函数函数发生器的设计,也可以巩固和综合运用所学知识。二、 、设计思想要设计一个函数发生器,就要先确定需要生成的函数种类。一般函数发生器能够产生递增斜波、递减斜波、方波、三角波、正弦波、及阶梯波等。本设计是基于 VHDL 语言设计的混合函数发生器,本实验选择产生的的波形是正弦波,方波,三角波,递增,递减斜波。虽然用模拟电子线路的方法也很容易得到这些波形,但是这种方法会使硬件线路较为繁琐,而且模拟线路会受到干扰。如果可以采用综合设计方法使用 FPGA 来实现混合函数发生器,它可以由六个波形产生模块及波形选择输出模块组成,波形选择模块的输出 Q 接在 D/A 转换的数据端,就可以在 D/A 输出端得到想要的其中之一的任一种光滑的波形。、QuartusII 与 ISE 的选择ISE 是产生高质量函数波形的很好的软件,但是其必须要实物来进行实现。且由于自己的私人电脑无法安装 ISE 软件,故选用 QuartusII 来进行模拟与仿真。QuartusII 是另一种 FPGA 工具,它可以脱离电路板进行模拟,方便快捷,提供了完全集成且与电路结构无关的开发包环境,具有数字逻辑设计的全部特性;占用空间小,一般学生使用电脑即可以承受并安装。三、 、系统结构混合函数发生器主要由六大模块组成,其中五大模块是用来产生常用的波形图,包括正弦波,方波,三角波,递增,递减谐波五种波。在这六个模块中,每个都有两个输入端口,分别是时钟信号端口 CLK,CLK 输入时钟脉冲,时钟上升沿有效,和复位清零信号 RESET,当高电平有效时,系统恢复初始状态;每个模块还有一个输出端口,输出对应的波形函数。另一大模块就是波形选择模块,SEL【2..0】为输出选择信号,该信号的不同取值对应递增斜波、递减斜波、方波、三角波、正弦波、阶梯波六种不同的输出; Q【7..0】为输出信号,根据输出函数选择信号 SEL【2..0】的取值输出相应的波形。以下是混合函数发生器的主要系统结构示意图:图 1 、顶层结构顶层结构事实上是一个多路选通器,利用它来控制输出哪一个函数波形:图2将上述 6 个模块(递增锯齿波、递减锯齿波、三角波、方波、5 选 1 数据选择器)封装成为模块文件,供顶层电路调用。则可以得到以下顶层文件电路:图 3 、模块文件设计1、三角波图中 CLK 为时钟输入信号,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;for i=1:1:64quzhi(i)=255*sin((i-1)*2*pi/63)+255;endinterger=round(quzhi);unsign=interger;for i=1:1:64k=1;yu=unsign(i);while(yu~=0)binary_chu(i,k)=yu-floor(yu/2)*

基于VHDL的混合函数发生器 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数14
  • 收藏数0 收藏
  • 顶次数0
  • 上传人diqiuren3210
  • 文件大小2.48 MB
  • 时间2020-09-24