基于FPGA的信号发生器的设计6波形汇总Word文件下载.docx

上传人:b****2 文档编号:14752573 上传时间:2022-10-24 格式:DOCX 页数:30 大小:237.04KB
下载 相关 举报
基于FPGA的信号发生器的设计6波形汇总Word文件下载.docx_第1页
第1页 / 共30页
基于FPGA的信号发生器的设计6波形汇总Word文件下载.docx_第2页
第2页 / 共30页
基于FPGA的信号发生器的设计6波形汇总Word文件下载.docx_第3页
第3页 / 共30页
基于FPGA的信号发生器的设计6波形汇总Word文件下载.docx_第4页
第4页 / 共30页
基于FPGA的信号发生器的设计6波形汇总Word文件下载.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

基于FPGA的信号发生器的设计6波形汇总Word文件下载.docx

《基于FPGA的信号发生器的设计6波形汇总Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于FPGA的信号发生器的设计6波形汇总Word文件下载.docx(30页珍藏版)》请在冰豆网上搜索。

基于FPGA的信号发生器的设计6波形汇总Word文件下载.docx

要求学生使用硬件描述语言设计信号发生器的FPGA源程序,实现如下功能:

设计智能信号发生器,要求实现正弦波、方波、三角波、递增、递减斜波和阶梯波六种波形。

基本要求:

1、掌握FPGA的程序设计方法。

2、掌握硬件描述语言语法。

3、程序设计完成后要求在软件中实现功能仿真。

主要参考资料:

1、姜雪松,吴钰淳.VHDL设计实例与仿真.机械工业出版社,2007.

2、黄志伟.FPGA系统设计与实践[M].北京:

电子工业出版社,2005.

完成期限:

2013.6.21—2013.6.25

指导教师签名:

课程负责人签名:

2013年6月18日

目录

摘要I

1题目分析1

2方案选择2

2.1波形函数发生方案对比选择2

2.2波形函数输出控制方式选择2

3系统细化框图4

4各模块程序设计及仿真5

4.1递增斜波模块5

4.2递减斜波模块6

4.3三角波模块7

4.4阶梯波模块8

4.5正弦波模块10

4.6方波模块11

4.7输出波形选择模块12

5系统联调测试分析14

6设计总结16

参考文献17

附录18

基于FPGA的函数发生器设计

摘要

随着基于CPLD的EDA技术的发展和应用领域的扩大与深入,EDA技术在电子信息、通信、自动控制及计算机等领域的重要性日益突出。

作为一个学电子信息专业的学生,我们必须不断地去了解更多的新产品信息,这就更加要求我们对EDA有个全面的认识。

信号发生器在我们的日常中有很重要的应用,用VHDL语言去实现设计将会使我们对本学科知识可以更好地掌握。

函数发生器是一种多波形的信号源,它可以产生方波、三角波、锯齿波,甚至任意波形。

本设计是一个基于VHDL的采用自顶向下设计方法实现的信号发生器,该设计方法具有外围电路简单,程序修改灵活和调试容易等特点,并通过计算机仿真和实验证明了设计的正确性。

关键字FPGAVHDL函数发生器

1题目分析

要求设计一个函数发生器,该函数发生器能够产生递增斜波、递减斜波、方波、三角波、正弦波、及阶梯波,并且可以通过选择开关选择相应的波形输出;

系统具有复位的功能;

通过按键确定输出的波形及确定是否输出波形。

FPGA是整个系统的核心,构成系统控制器,波形数据生成器,加法器,运算/译码等功能。

通过以上分析设计要求完成的功能,确定函数发生器可由递增斜波产生模块、递减斜波产生模块、三角波产生模块、阶梯波产生模块、正弦波产生模块、方波产生模块和输出波形选择模块组成,以及按键复位控制和时钟输入。

由此可确定为:

图1-1系统的总体原理框

2方案选择

2.1波形函数发生方案对比选择

波形函数发生是本设计的最重要的部分,实现函数发生的途径也有很多,因此必须选择一种易于实现且精度高的方案,以此来提高本设计的实用性。

方案一:

通过单片机控制D/A,输出三种波形。

此方案输出的波形不够稳定,抗干扰能力弱,不易调节,而且达不到题目要求的六种波形。

方案二:

使用传统的锁相频率合成方法。

通过芯片IC145152,压控振荡器搭接的锁相环电路输出稳定性极好的正弦波,再利用过零比较器转换成方波,积分电路转换成三角波。

此方案,电路复杂,干扰因素多,不易实现。

方案三:

利用MAX038芯片组成的电路输出波形。

MAX038是精密高频波形产生电路,能够产生准确的三角波、方波和正弦波三种周期性波形,但无法实现阶梯波和递增递减斜波的产生。

方案四:

利用在系统编程技术和FPGA芯片产生。

用VHDL语言编写程序,调试成功后下载至实验装置的芯片上,再利用外接D/A转换电路实现以上设计功能。

此种方案完全可以生成设计要求的6种波形,而且通过软件仿真可以直观的观测的输出的波形参数,方便调试和更改波形参数,外围电路简单,减少器件损耗,精度高。

基于方案四的外围电路简单容易实现、波形产生精度高、易于仿真观测调试的优点,因此本设计的函数发生器选择方案四完成波形发生的全部功能。

2.2波形函数输出控制方式选择

控制多路D/A开关输出方式

此种方案为每一路输出的波形函数使用一路D/A转换后输出,通过控制开关控制每一路D/A是否工作,决定输出的波形。

此种方案可以同时输出多路波形,但是需要路D/A转化器,外围电路复杂,制作成本较高而且控制复杂。

采用数据选择器方式

此种方案可以利用VHDL语言写出数据选择器,然后每种函数发生器的输出和数据选择器输入相连接,通过控制开关选择对应的波形输出。

方案二完全可以得到方案一的设计要求,而且只需一个D/A转换器就可以。

电路不需要外部搭建,节约成本且控制简单方便。

在实验课时候已经完成8选1数据选择器的设计制作,因此本次设计可以直接调用。

采用数据分配器方式

此种方案利用数据分配器的功能,通过控制开关选择相应的函数发生器模块,使之产生相应的波形输出,并通过数据分配器的使能复位控制决定是否输出波形,此种方案和方案二很相似,也能够实现设计的功能也具有方案二的优点,。

基于方案二的设计简便、节约制作元件和成本、控制简便等优点,选择方案二作为波形函数输出控制方式。

3系统细化框图

系统时钟输入后,通过复位开关选择是否产生波形,当各个模块产生相应的信号波形后,通过波形选择模块波形选择开关选泽输出不同的波形,再通过D/A转换器转换,就可以把数字信号(由FPGA输出)变成了相应模拟的信号波形。

整个系统设计的核心就是FPGA部分。

图3系统的最终整体的原理图

4各模块程序设计及仿真

4.1递增斜波模块

递增斜波icrs的VHDL程序如附录所示,其中clk是输入时钟端口,reset为输入复位端口,q为八位二进制输出端口。

图4-1-1斜波框图

图4-1-2递增斜波模块仿真图

程序设计的当复位信号为0时,输出为0,无对应的波形产生。

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

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

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

VHDL描述为:

ARCHITECTUREbehaveOFicrsIS

BEGIN

PROCESS(clk,reset)

VARIABLEtmp:

STD_LOGIC_VECTOR(7DOWNTO0));

BEGIN

IFreset='

0'

THEN

tmp:

="

00000000"

;

--复位信号清零

ELSIFclk'

EVENTANDclk='

1'

IFtmp="

11111111"

="

--递增到最大值清零

ELSE

=tmp+1;

--递增运算

ENDIF;

q<

=tmp;

ENDPROCESS;

ENDbehave;

4.2递减斜波模块

递减斜波dcrs的VHDL程序如附录所示,其中clk是输入时钟端口,reset为输入复位端口,q为八位二进制输出端口。

图4-2-1递减斜波框图

图4-2-2递减斜波模块仿真图

程序设计的是复位信号为0时输出为0,无对应的波形产生。

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

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

ARCHITECTUREbehaveOFdcrsIS

--复位信号置最大值

THEN--检测时钟上升沿

IFtmp="

--递减到0置最大值

ELSE

=tmp-1;

--递减运算

4.3三角波模块

三角波波delat的VHDL程序如附录所示,其中clk是输入时钟端口,reset为输入复位端口,q为八位二进制输出端口。

图4-3-1三角波框图

图4-3-2三角波模块仿真图

三角波波形是对称的,每边呈线形变化,所以可以根据数据做简单运算,就可以得到三角波。

程序设计的是reset复位信号为0时输出为0,无对应的波形产生。

当复位信号为1时,当每当检测到时钟上升沿时,当计数的数据不是最大值时,数值做递增运算,当增大到最大时,然后再做递减运算,因此输出的波形便呈现出三角波的形状。

VHDL描述如下:

ARCHITECTUREbehaveOFdelatIS

VARIABLEa:

STD_LOGIC;

--复位信号为0,置最小值

ELSIFclk'

IFa='

11111110"

tmp:

--置最大值

a:

='

ELSE--不是最大值时递增

ENDIF;

IFtmp="

00000001"

--置最小值

ELSE--a为1时,执行递减运算

4.4阶梯波模块

阶梯波ladder的VHDL程序如附录所示,其中clk是输入时钟端口,reset为输入复位端口,q为八位二进制输出端口。

图4-4-1阶梯波框图

图4-4-2阶梯波模块仿真图

阶梯波设计的是数据的递增是以一定的阶梯常数向上增加,所以输出的波形呈现是成阶梯状的,而不是完全呈现是直线增长。

ARCHITECTUREbehaveOFladderIS

VARIABLEa:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 互联网

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1