西安电子科技大学VHDL与数字系统EDA设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

VHDL语言与数字系统EDA设计学院:研究生院学号:1200030066姓名:李磊提交时间:2013年6月25日VHDL语言与数字系统设计-2-目录第一部分实验.........................................................................................................31.1实验一:计数器和译码器的设计.....................................................................31.2实验二:两位加法器和两位BCD计数器的设计...........................................91.3实验三:8×8位RAM数据读写测试............................................................121.4实验四:UART串行通信的发送接收模块的设计.......................................151.5实验五:1/100s计时器的设计.......................................................................23第二部分作业.......................................................................................................352.1作业一:读程序填空.......................................................................................352.2作业二:时钟事件计数器的设计...................................................................362.3作业三:四阶移位寄存器的设计...................................................................38VHDL语言与数字系统设计-3-第一部分实验1.1实验一1.实验目的了解和学习VHDL语言的编写,以及简单组合逻辑和时序逻辑的实现,并学习使用EDA软件(QuartusII9.0)进行代码编写、仿真、分析。同时综合生成RTL电路图、逻辑结构图和时序波形图。初步掌握IF语句和CASE语句的特点。了解GENERATE语句的结构。2.实验内容1)用IF语句设计一个四-十六译码器2)用CASE语句设计一个四-十六译码器3)用GENERATE语句构造一个串行的十六进制计数器3.实验方案1)IF语句设计四-十六译码器四-十六译码器的外部接口如下图所示:图1.1四-十六译码器外部接口图四-十六译码器有4个二进制输入端a3、a2、a1、a0和16个输出端y15—y0。3个选通端口g1、g2a和g2b。只有在g1=1,g2a=0,g2b=0时,译码器才正常工作。IF语句设计四-十六译码器,经综合器综合生成的RTL框图如下:VHDL语言与数字系统设计-4-图1.2IF语句综合的四-十六译码RTL框图2)CASE语句设计四-十六译码器接口和图1.1接口完全一致。但经综合器综合后生成的RTL框图却有很大区别。图1.3CASE语句综合的四-十六译码RTL框图3)十六进制计数器十六进制计数器外部接口如下图所示图1.4十六进制计数器外部接口Clk为计数时钟,clr为清零,输出端为q。本实验先设计一个D触发器,VHDL语言与数字系统设计-5-即dffr为已生成的原件,然后利用GENERATE来循环生成串行连接的四个触发器,每个触发器的输出q为计数值的一位,最终四位组成一个十六进制的计数器。经综合器综合生成的RTL图如下。图1.5十六进制数器RTL框图4.仿真结果(QuartusII9.0)1)IF语句设计的四-十六译码器波形仿真波形g1=1,g2a=0,g2b=0时,片选选通,译码器正常译码。图1.6四-十六译码器译码波形图片选端未被选通时,译码器输出为高电平1。VHDL语言与数字系统设计-6-图1.7四-十六译码器未选通波形图2)CASE语句设计的四-十六译码器波形仿真波形片选未选通时与图1.3结果一致。当片选选通时,结果如下。图1.8四-十六译码器译码波形图3)十六进制计数器仿真波形图1.9十六进制计数器波形图VHDL语言与数字系统设计-7-5.主程序代码1)IF语句设计四-十六译码器主要程序代码端口定义:port(a:instd_logic_vector(3downto0);g1,g2a,g2b:instd_logic;y:outstd_logic_vector(15downto0));功能实现:process(g1,g2a,g2b,a)beginif(g1='1'andg2a='0'andg2b='0')thenif(a=0000)theny=1111111111111110;elsif(a=0001)theny=1111111111111101;elsif(a=0010)theny=1111111111111011;elsif(a=0011)theny=1111111111110111;elsif(a=0100)theny=1111111111101111;elsif(a=0101)theny=1111111111011111;elsif(a=0110)theny=1111111110111111;elsif(a=0111)theny=1111111101111111;elsif(a=1000)theny=1111111011111111;elsif(a=1001)theny=1111110111111111;elsif(a=1010)theny=1111101111111111;elsif(a=1011)theny=1111011111111111;elsif(a=1100)theny=1110111111111111;elsif(a=1101)theny=1101111111111111;elsif(a=1110)theny=1011111111111111;elsif(a=1111)theny=0111111111111111;elsey=XXXXXXXXXXXXXXXX;endif;elseY=1111111111111111;endif;endprocess;2)CASE语句设计四-十六译码器主要程序代码process(g1,g2a,g2b,a)beginif(g1='1'andg2a='0'andg2b='0')thencaseaiswhen0000=y=1111111111111110;when0001=y=1111111111111101;when0010=y=1111111111111011;when0011=y=1111111111110111;when0100=y=1111111111101111;when0101=y=1111111111011111;when0110=y=1111111110111111;VHDL语言与数字系统设计-8-when0111=y=1111111101111111;when1000=y=1111111011111111;when1001=y=1111110111111111;when1010=y=1111101111111111;when1011=y=1111011111111111;when1100=y=1110111111111111;when1101=y=1101111111111111;when1110=y=1011111111111111;when1111=y=0111111111111111;whenothers=y=XXXXXXXXXXXXXXXX;endcase;elseY=1111111111111111;endif;endprocess;3)十六进制计数器主要程序代码architecturebehaveofcounter_16iscomponentdffrisport(d,clr,clk:instd_logic;q,qb:outstd_logic);endcomponent;signalcount_in:std_logic_vector(4downto0);begincount_in(0)=clk;gen1:foriin0to3generateU:dffrportmap(d=count_in(i+1),clk=count_in(i),clr=clr,q=q(i),qb=count_in(i+1));endgenerate;endbehave;VHDL语言与数字系统设计-9-1.2实验二1.实验目的了解和学习VHDL语言的编写,以及简单组合逻辑和时序逻辑的实现,并学习使用EDA软件(QuartusII9.0)进行代码编写、仿真、分析。同时综合生成RTL电路图、逻辑结构图和时序波形图。初步掌握加法器的结构特点。进一步了BCD计数器。2.实验内容1)设计一个两位二进制的加法器2)设计一个两位的BCD计数器3.实验方案1)设计一个两位二进制的加法器两位二进制加法器的外部接口如下图。图2.1两位加法器外部接口图a,b分别为输入,cin为上一级的进位,sum为输出,cout为输出进位。本实验的主要思想是分两级加法运算,进位放在第二级运算中。经综合器综合后的RTL框图如下。VHDL语言与数字系统设计-10-图2.2两位加法器RTL框图2)设计一个两位的BCD计数器两位BCD计数器外部接口如图。图2.3BCD计数器外部接口图clr为异步清零端,clk为时钟信号,b为计数输出的十位,a为个位。本实验主要思想是,对脉冲计数,每来一个时时钟上升沿计数一次,a值加1,当个位计满9时,产生进位b加1同时a重新从0开始计数,当最终计数值达到99时,BCD计数器计数值满,a、b同时从0开始计数。4.仿真结果(QuartusII9.0)1)两位二进制的加法器波形仿真波形图2.4两位加法器仿真波形2)两位的BCD计数器形仿真波形图2.5BCD计数器仿真波形当a值计数满9时,b加1,a从0重新开始计数,当b、a同时计数满99时,BCD计数器重新从0开始计数。VHDL语言与数字系统设计-11-5.主程序代码1)两位二进制的加法器主要程序代码ENTITYfull_adderISPORT(a,b:INSTD_LOGIC_VECTOR(1DOWNTO0);cin:INSTD_LOGIC;sum:OUTSTD_LOGIC_VECTOR(1DOWNTO0);cout:OUTSTD_LOGIC);ENDfull_adder;ARCHITECTUREbehavOFfull_adderISSIGNALQ_TEMP:STD_LOGIC_VECTOR(2DOWNTO0);BEGINQ_TEMP='0'&a+b+cin;cout=Q_TEMP(2);sum=Q_TEMP(1DOWNTO0);ENDbehav;2)两位的BCD计数器主要程序代码process(clk,clr,one,ten,tep)begintep=ten&one;ifclr='1'thenone=0000;ten=0000;elsifclk'EVENTANDclk='1'thenifone1001thenone=one+1;elseone=0000;ten=ten+1;endif;iftep=10011001thenone=0000;ten=0000;endif;endif;a=one(3downto0);b=te

1 / 39
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功