基于VHDL语言信号发生器的设计EDA课程设计.docx
- 文档编号:60948
- 上传时间:2022-10-01
- 格式:DOCX
- 页数:18
- 大小:199.93KB
基于VHDL语言信号发生器的设计EDA课程设计.docx
《基于VHDL语言信号发生器的设计EDA课程设计.docx》由会员分享,可在线阅读,更多相关《基于VHDL语言信号发生器的设计EDA课程设计.docx(18页珍藏版)》请在冰豆网上搜索。
基于VHDL语言信号发生器的设计EDA课程设计
基于VHDL语言信号发生器的设计
1、设计目的
1)掌握使用EDA工具设计信号发生器系统的设计思路和设计方法,体会使用EDA综合过程中电路设计方法和设计思路的不同,理解层次化设计理念。
2)熟悉在QuartusII环境中,用文本输入方式与原理图输入方式完成电路的设计,同时掌握使用这两种方式相结合的EDA设计思路。
3)通过这一部分的学习,对VHDL语言的设计方法进行进一步的学习,对其相关语言设计规范进行更深层次的掌握,能够更加熟练的做一些编程设计
2、设计的主要内容和要求
通过使用VHDL语言及QuartusII软件,设计多功能信号发生器的每个模块,将正弦波模块,方波模块,三角波模块,阶梯波模块创建相应的元件符号,同时设计好4选1数据选择器模块,再通过原理图输入方式,将各个模块组合起来,设计成一个完整的多种信号发生器电路,同时将各个模块单独进行仿真,设计各个模块的仿真波形,最后进行总原理图电路仿真,设计该信号发生器的总的仿真波形。
信号发生器:
体现在它能自动的实现四种波形的转换。
根据题目的分析与整体构思可知,要完成设计任务必须完成以下要求:
1、设计好用于波形切换的四路数据选择器selector4_1;
2、设计好用于总电路设计的各个信号输出模块;
3、设计好数模(D/A)转换器。
3、整体设计方案
基本设计方案:
在现有单一信号发生器的基础上,加上其它信号模块,通过组合与设计,用数模转换器(D/A)将选中的信号源发出的信号由数字信号转换为模拟信号,再用示波器显示出来,其信号发生器的结构框图如图3.1所示。
信号发生器由各个单一信号模块组合而成,其中信号产生模块将产生所需的各种信号,信号发生器的控制模块可以用数据选择器实现,用4选1数据选择器实现对四种信号的选择。
最后将波形数据送入D/A转换器,将数字信号转换为模拟信号输出。
用示波器测试D/A转换器的输出,可以观测到4种信号的输出。
图3.1信号发生器结构框图
通过查找资料把各类信号模块的程序输入到QuartusⅡ中进行运行仿真,每一步都要慎重小心,错误难免的,还需要通过课本和资料一一更正。
最后,在前面模块做好的基础上再考虑如何输出波形的问题,通过对四种波形采样就可以得到。
4、硬件电路的设计与软件设计
根据题目分析与整体构思可知,要完成设计任务必须设计出以下模块:
4.1正弦波发生器的实现
该模块产生以64个时钟为一个周期的正弦波。
其VHDL语言源程序代码如下所示:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;--打开库文件
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYsinqiIS
PORT(clk:
INSTD_LOGIC;--声明clk是标准逻辑位类型的输入端口clr:
INSTD_LOGIC;--声明clr是标准逻辑位类型的输入端口
d:
OUTintegerrange0to255);--声明d是标准逻辑向量类型的--输出端口
ENDsinqi;
ARCHITECTUREsinbOFsinqiIS
BEGIN
PROCESS(clr,clk)
variabletemp:
integerrange0to63;
BEGIN
IFclr='0'THENd<=0;--clr为低电平d为0
ELSIFclk'EVENTANDclk='1'THEN--clk为上升沿
IFtemp=63THENtemp:
=0;
ELSE
temp:
=temp+1;
ENDIF;
CASEtempIS
when00=>d<=255;when01=>d<=254;when02=>d<=252;
when03=>d<=249;when04=>d<=245;when05=>d<=239;
when06=>d<=233;when07=>d<=225;when08=>d<=217;
when09=>d<=207;when10=>d<=197;when11=>d<=186;
when12=>d<=174;when13=>d<=162;when14=>d<=150;
when15=>d<=137;when16=>d<=124;when17=>d<=112;
when18=>d<=99;when19=>d<=87;when20=>d<=75;
when21=>d<=64;when22=>d<=53;when23=>d<=43;
when24=>d<=34;when25=>d<=26;when26=>d<=19;
when27=>d<=13;when28=>d<=8;when29=>d<=4;
when30=>d<=1;when31=>d<=0;when32=>d<=0;
when33=>d<=1;when34=>d<=4;when35=>d<=8;
when36=>d<=13;when37=>d<=19;when38=>d<=26;
when39=>d<=34;when40=>d<=43;when41=>d<=53;
when42=>d<=64;when43=>d<=75;when44=>d<=87;
when45=>d<=99;when46=>d<=112;when47=>d<=124;
when48=>d<=137;when49=>d<=150;when50=>d<=162;
when51=>d<=174;when52=>d<=186;when53=>d<=197;
when54=>d<=207;when55=>d<=217;when56=>d<=225;
when57=>d<=233;when58=>d<=239;when59=>d<=245;
when60=>d<=249;when61=>d<=252;when62=>d<=254;
when63=>d<=255;whenothers=>null;--当temp值不是选择值,Q作未知
--处理
ENDCASE;
ENDIF;
ENDPROCESS;
ENDsinb;
4.2方波信号发生器的实现
该模块产生方波,是通过交替送出全0和全1实现,每16个时钟翻转一次。
其VHDL语言源程序代码如下所示:
LIBRARYIEEE;--打开库文件
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYfangboqiIS
PORT(clk:
INSTD_LOGIC;--声明clk是标准逻辑位类型的输入端口
clr:
INSTD_LOGIC;--声明clr是标准逻辑位类型的输入端口
q:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));--声明q是标准逻辑--向量类型的输出端口
ENDfangboqi;
ARCHITECTUREfangbo1OFfangboqiIS--结构体说明
SIGNALa:
STD_LOGIC;
BEGIN
PROCESS(clk,clr)
VARIABLEtmp:
std_logic_vector(3downto0);--变量定义
BEGIN
IFclr='0'THENa<='0';
ELSIFclk'eventANDclk='1'THEN--clk为上升沿
IFtmp="1111"THENtmp:
="0000";
ELSE
tmp:
=tmp+1;
ENDIF;
IFtmp<"1000"THEN
a<='1';
ELSE
a<='0';
ENDIF;
ENDIF;
ENDPROCESS;
PROCESS(clk,a)
BEGIN
IFclk'eventANDclk='1'THEN--clk为上升沿
IFa='1'THEN
q<="11111111";--q赋值
ELSE
q<="00000000";--q赋值
ENDIF;
ENDIF;
ENDPROCESS;--结束进程
ENDfangbo1;--结束结构体
4.3三角波信号发生器的实现
该模块产生的三角波形以64个时钟为一个周期,输出q每次加减8
其VHDL语言源程序代码如下所示:
LIBRARYIEEE;--打开库文件
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYsjboIS
PORT(clk:
INSTD_LOGIC;--声明clk是标准逻辑位类型的输入端口
clr:
INSTD_LOGIC;--声明clr是标准逻辑位类型的输入端口
q:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));--声明q是标准逻辑--向量类型的输出端口
ENDsjbo;
ARCHITECTUREsjqiOFsjboIS--结构体说明
BEGIN
PROCESS(clk,clr)
VARIABLEtmp:
STD_LOGIC_VECTOR(7DOWNTO0);--变量说明
VARIABLEa:
STD_LOGIC;
BEGIN
IFclr='0'THENtmp:
="00000000";
ELSIFclk'eventANDclk='1'THEN--clk为上升沿
IFa='0'THEN
IFtmp="11111000"THEN
tmp:
="11111111";
a:
='1';
ELSE
tmp:
=tmp+8;
ENDIF;
ELSE
IFtmp="00000111"THEN
tmp:
="00000000";
a:
='0';
ELSE
tmp:
=tmp-8;
ENDIF;
ENDIF;
ENDIF;
q<=tmp;--q赋值
ENDPROCESS;
ENDsjqi;
4.4阶梯波信号发生器的实现
该模块产生的是阶梯波形。
其VHDL语言源程序代码如下所示:
LIBRARYIEEE;--打开库文件
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYjietiboqiIS
PORT(clk:
INSTD_LOGIC;--声明clk是标准逻辑位类型的输入端口
clr:
INSTD_LOGIC;--声明clr是标准逻辑位类型的输入端口
Q:
BUFFERSTD_LOGIC_VECTOR(7DOWNTO0));
ENDjietiboqi;
ARCHITECTUREjietiboOFjietiboqiIS--结构体说明
BEGIN
PROCESS(clk,clr)
VARIABLEtmp:
STD_LOGIC_VECTOR(7DOWNTO0);--变量定义
BEGIN
IFclr='0'THENtmp:
="00000000";--变量赋值
ELSEIFclk'eventAN
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 VHDL 语言 信号发生器 设计 EDA 课程设计
![提示](https://static.bdocx.com/images/bang_tan.gif)