基于VHDL语言信号发生器的设计EDA课程设计_第1页
基于VHDL语言信号发生器的设计EDA课程设计_第2页
基于VHDL语言信号发生器的设计EDA课程设计_第3页
基于VHDL语言信号发生器的设计EDA课程设计_第4页
基于VHDL语言信号发生器的设计EDA课程设计_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于VHDL语言信号发生器的设计1、设计目的 1) 掌握使用EDA工具设计信号发生器系统的设计思路和设计方法,体会使用EDA综合过程中电路设计方法和设计思路的不同,理解层次化设计理念。2) 熟悉在Quartus II环境中,用文本输入方式与原理图输入方式完成电路的设计,同时掌握使用这两种方式相结合的EDA设计思路。3) 通过这一部分的学习,对VHDL语言的设计方法进行进一步的学习,对其相关语言设计规范进行更深层次的掌握,能够更加熟练的做一些编程设计2、设计的主要内容和要求 通过使用VHDL语言及Quartus II软件,设计多功能信号发生器的每个模块,将正弦波模块,方波模块,三角波模块,阶梯波

2、模块创建相应的元件符号,同时设计好4选1数据选择器模块,再通过原理图输入方式,将各个模块组合起来,设计成一个完整的多种信号发生器电路,同时将各个模块单独进行仿真,设计各个模块的仿真波形,最后进行总原理图电路仿真,设计该信号发生器的总的仿真波形。信号发生器:体现在它能自动的实现四种波形的转换。根据题目的分析与整体构思可知,要完成设计任务必须完成以下要求: 1、设计好用于波形切换的四路数据选择器selector4_1;2、设计好用于总电路设计的各个信号输出模块;3、设计好数模(D/A)转换器。3、整体设计方案基本设计方案:在现有单一信号发生器的基础上,加上其它信号模块,通过组合与设计,用数模转换器

3、(D/A)将选中的信号源发出的信号由数字信号转换为模拟信号,再用示波器显示出来,其信号发生器的结构框图如图3.1所示。信号发生器由各个单一信号模块组合而成,其中信号产生模块将产生所需的各种信号,信号发生器的控制模块可以用数据选择器实现,用4选1数据选择器实现对四种信号的选择。最后将波形数据送入D/A转换器,将数字信号转换为模拟信号输出。用示波器测试D/A转换器的输出,可以观测到4种信号的输出。图3.1 信号发生器结构框图通过查找资料把各类信号模块的程序输入到Quartus 中进行运行仿真,每一步都要慎重小心,错误难免的,还需要通过课本和资料一一更正。最后,在前面模块做好的基础上再考虑如何输出波

4、形的问题,通过对四种波形采样就可以得到。4、硬件电路的设计与软件设计根据题目分析与整体构思可知,要完成设计任务必须设计出以下模块: 4.1正弦波发生器的实现该模块产生以64个时钟为一个周期的正弦波。其VHDL语言源程序代码如下所示:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;-打开库文件USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY sinqi ISPORT ( clk : IN STD_LOGIC;-声明clk是标准逻辑位类型的输入端口 clr : IN STD_LOGIC; -声明clr是标准逻辑位类型的输入端口 d :

5、OUT integer range 0 to 255); -声明d是标准逻辑向量类型的 -输出端口END sinqi;ARCHITECTURE sinb OF sinqi ISBEGIN PROCESS(clr,clk) variable temp:integer range 0 to 63; BEGIN IF clr='0' THEN d<=0; -clr为低电平d为0 ELSIF clk'EVENT AND clk= '1' THEN -clk为上升沿 IF temp=63 THEN temp:=0; ELSE temp:=temp+1; EN

6、D IF; CASE temp IS when 00=>d<=255;when 01=>d<=254;when 02=>d<=252; when 03=>d<=249;when 04=>d<=245;when 05=>d<=239; when 06=>d<=233;when 07=>d<=225;when 08=>d<=217; when 09=>d<=207;when 10=>d<=197;when 11=>d<=186; when 12=>d

7、<=174;when 13=>d<=162;when 14=>d<=150; when 15=>d<=137;when 16=>d<=124;when 17=>d<=112; when 18=>d<=99;when 19=>d<=87;when 20=>d<=75; when 21=>d<=64;when 22=>d<=53;when 23=>d<=43; when 24=>d<=34;when 25=>d<=26;when 26=&

8、gt;d<=19; when 27=>d<=13;when 28=>d<=8;when 29=>d<=4; when 30=>d<=1;when 31=>d<=0;when 32=>d<=0; when 33=>d<=1;when 34=>d<=4;when 35=>d<=8; when 36=>d<=13;when 37=>d<=19;when 38=>d<=26; when 39=>d<=34;when 40=>d<=

9、43;when 41=>d<=53; when 42=>d<=64;when 43=>d<=75;when 44=>d<=87; when 45=>d<=99;when 46=>d<=112;when 47=>d<=124; when 48=>d<=137;when 49=>d<=150;when 50=>d<=162; when 51=>d<=174;when 52=>d<=186;when 53=>d<=197; when 54=>

10、;d<=207;when 55=>d<=217;when 56=>d<=225; when 57=>d<=233;when 58=>d<=239;when 59=>d<=245; when 60=>d<=249;when 61=>d<=252;when 62=>d<=254; when 63=>d<=255;when others=>null; -当temp值不是选择值,Q作未知 -处理END CASE; END IF;END PROCESS;END sinb;4.2 方波信

11、号发生器的实现该模块产生方波,是通过交替送出全0和全1实现,每16个时钟翻转一次。其VHDL语言源程序代码如下所示: LIBRARY IEEE;-打开库文件USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY fangboqi IS PORT (clk: IN STD_LOGIC;-声明clk是标准逻辑位类型的输入端口 clr: IN STD_LOGIC;-声明clr是标准逻辑位类型的输入端口 q: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);-声明q是标准逻辑 -向量类型的输出端口END f

12、angboqi;ARCHITECTURE fangbo1 OF fangboqi IS -结构体说明SIGNAL a: STD_LOGIC;BEGIN PROCESS(clk,clr) VARIABLE tmp:std_logic_vector(3 downto 0); -变量定义 BEGIN IF clr='0' THEN a<='0' ELSIF clk'event AND clk= '1' THEN -clk为上升沿 IF tmp="1111" THEN tmp:="0000" ELSE

13、 tmp:=tmp+1; END IF; IF tmp<"1000" THEN a<='1' ELSE a<='0' END IF; END IF; END PROCESS; PROCESS(clk,a) BEGIN IF clk'event AND clk= '1' THEN -clk为上升沿 IF a='1' THEN q<="11111111" -q赋值 ELSE q<="00000000" -q赋值 END IF; END I

14、F; END PROCESS; -结束进程END fangbo1; -结束结构体4.3 三角波信号发生器的实现该模块产生的三角波形以64个时钟为一个周期,输出q每次加减8其VHDL语言源程序代码如下所示: LIBRARY IEEE; -打开库文件 USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY sjbo IS PORT (clk : IN STD_LOGIC;-声明clk是标准逻辑位类型的输入端口 clr : IN STD_LOGIC;-声明clr是标准逻辑位类型的输入端口 q: OUT STD_LOGIC_

15、VECTOR(7 DOWNTO 0);-声明q是标准逻辑 -向量类型的输出端口END sjbo;ARCHITECTURE sjqi OF sjbo IS -结构体说明 BEGIN PROCESS(clk,clr) VARIABLE tmp:STD_LOGIC_VECTOR(7 DOWNTO 0); -变量说明 VARIABLE a:STD_LOGIC; BEGIN IF clr='0' THEN tmp:="00000000" ELSIF clk'event AND clk='1' THEN -clk为上升沿 IF a='0&

16、#39; THEN IF tmp="11111000" THEN tmp:="11111111" a:='1' ELSE tmp:=tmp+8; END IF; ELSE IF tmp="00000111" THEN tmp:="00000000" a:='0' ELSE tmp:=tmp-8; END IF; END IF; END IF; q<=tmp; -q赋值 END PROCESS; END sjqi;4.4 阶梯波信号发生器的实现该模块产生的是阶梯波形。其VHDL语

17、言源程序代码如下所示:LIBRARY IEEE;-打开库文件USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY jietiboqi IS PORT (clk : IN STD_LOGIC;-声明clk是标准逻辑位类型的输入端口 clr : IN STD_LOGIC;-声明clr是标准逻辑位类型的输入端口 Q: BUFFER STD_LOGIC_VECTOR(7 DOWNTO 0); END jietiboqi;ARCHITECTURE jietibo OF jietiboqi IS -结构体说明 BEGIN PR

18、OCESS(clk,clr) VARIABLE tmp:STD_LOGIC_VECTOR(7 DOWNTO 0); -变量定义 BEGIN IF clr='0' THEN tmp:="00000000"-变量赋值 ELSE IF clk'event AND clk='1' THEN -clk为上升沿 IF tmp="11111111" THEN tmp:="00000000" ELSE tmp:=tmp+30; END IF; END IF; END IF; Q<=tmp; END PRO

19、CESS; -结束进程END jietibo;4.5 四选一数据选择器的实现该模块的VHDL语言源程序代码如下所示: LIBRARY IEEE; -打开库文件USE IEEE.STD_LOGIC_1164.ALL;ENTITY selector4_1 IS -实体说明PORT( -端口说明 sel:IN STD_LOGIC_VECTOR(1 DOWNTO 0); D0,D1,D2,D3:IN STD_LOGIC_VECTOR(7 DOWNTO 0); Q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END selector4_1;ARCHITECTURE one OF s

20、elector4_1 IS -结构体说明BEGIN PROCESS(sel, D0,D1,D2,D3) BEGIN CASE sel IS WHEN "00"=>Q<=D0; WHEN "01"=>Q<=D1; WHEN "10"=>Q<=D2; WHEN "11"=>Q<=D3; WHEN others =>Q<=null; -当sel的值不是选择值时,Q作未知处理 END CASE; END PROCESS;END one;4.6 数模转换器(D/A)

21、图4.6 数模转换器DAC0832的连接电路图选择一个D/A转换器,将数据选择器的输出信号与D/A转换器的输入端相连接,D/A转换器的可选择范围很宽,这里选择常用的DAC0832,其DAC0832的连接电路如上图4.6所示。4.7 信号发生器程序流程框图当输入端有时钟信号输入时,各个信号发生器模块独立运行,独立存在,发出各种信号,这些信号作为数据选择器的输入信号,在数据选择器的作用下,波形切换到相应的模块输出,再通过数模转换器(D/A),将通过示波器显示出相应的波形图,其程序流程图如下图4.7所示:输入信号各个信号发生器模块开始输出信号数模转换器(D/A)四选一数据选择器复位图4.7 信号发生

22、器程序流程框图5、系统仿真 通过Quartus软件设计出各个模块的原理图及其相关仿真波形示意图如下:在Quartus II的软件环境下,通过文本方式编写各个信号波形模块的VHDL语言源程序,且进行仿真。接下来将各个信号波形模块产生相应的元件符号,新建一个工程,加载上述模块,利用原理图输入法生成整体多波形信号发生器。5.1正弦波发生器的原理图及其仿真波形图:正弦波信号发生器的原理图如下图所示:图5.1.1正弦波信号发生器原理图正弦波信号发生器的仿真波形图如下图所示:图5.1.2正弦波信号发生器仿真波形图 Clk由0到1交替变更,clr 一直处于高电平状态,Q端则由00001000到0001000

23、0并依次加000010005.2方波发生器的原理图及其仿真波形图: 方波信号发生器的原理图如下图所示:图5.2.1方波信号发生器的原理图 方波信号发生器的仿真波形图如下图所示:图5.2.2方波信号发生器的仿真波形图 Clk由0到1交替变更,clr 一直处于高电平状态,q端则由00000000到11111111并依次交替下去5.3三角波发生器的原理图及其仿真波形图: 三角波信号发生器的原理图如下图所示:图5.3.1三角波信号发生器的原理图 三角波信号发生器的仿真波形图如下图所示:图5.3.2 三角波信号发生器的仿真波形图 Clk、clr均同时由0到1交替变更Q端则由00000000到000000

24、01并依次加00000001进行下去5.4阶梯波发生器的原理图及其仿真波形图 阶梯波信号发生器的原理图如下图所示:图5.4.1阶梯波信号发生器的原理图 阶梯波信号发生器的仿真波形图如下图5.8所示:图5.4.2 阶梯波信号发生器的仿真波形图 Clk由0到1交替变更,clr 一直处于高电平状态,Q端从00000000开始则高四位依次由0001每次加0010进行下去,第四位依次由1110每次减0010进行下去。5.5 4选1数据选择器的原理图及其仿真波形图4选1数据选择器的原理图如下图所示:图5.5.1 4选1数据选择器的原理图4选1数据选择器的仿真波形图如下图所示:图5.5.2 4选1数据选择器

25、的仿真图 sel由00每次加01交替变更,依次选择Q的输出值。5.6信号发生器的原理图及其仿真波形图整体信号发生器的原理图如下图所示:图5.6.1信号发生器原理图整体信号发生器的仿真波形图如下图所示:图5.6.2多功能信号发生器的仿真图 clk由0到1交替变更,clr 一直处于高电平状态,Q端则由56每次加8依次进行下去。6、使用说明 6.1 从Quartus II软件环境中编写各个相关信号模块的VHDL语言源程序及生成相关模块的元件符号名称:sinqi: 正弦波信号发生器模块;fangboqi: 方波信号发生器模块;sjqi1: 三角波信号发生器模块;jietiboqi: 阶梯波信号发生器模块;selector4_1: 四选一数据选择器输出模块;多功能信号发生器输出波形可以由sel中位的组合形式选择,从而控制信号发生器波形的输出,通过sel的不同值可以选取正弦波信号发生

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论