您的当前位置:首页正文

实验四 VHDL设计有时钟使能的两位十进制计数器

2020-01-17 来源:易榕旅网


实验四 VHDL设计有时钟使能的两位十进制计数器

一、 实验目的

1. 进一步掌握基本组合逻辑电路的实现方法;

2. 进一步了解VHDL顺序语句的设计方法;

3. 学习用if语句和case语句设计译码器的实现方法;

4. 掌握时序逻辑电路的实现方法;

5. 进一步了解VHDL并行语句的设计方法;

6. 学习用process并行语句和串行语句实现计数器的方法;

7. 进一步了解VHDL元件例化的设计方法;

8. 进一步了解图形输入设计方法;

二、 实验内容

1. 用VHDL设计法设计CT7448BCD七段显示译码器。VHDL文件编辑结束后,以CT7448.VHD为文件名,保存,并编辑波形,进行仿真,验证设计的电路。执行“FILE”菜单的“Greate Default Symbol”命令,为CT7448生成元件符号,作为共享文件。

2. 用VHDL设计法设计有时钟使能的两位十进制计数器。VHDL文件编辑结束后,以counter8.VHD为文件名,保存,并编辑波形,进行仿真,验证设计的电路。执行“FILE”菜单的“Greate Default Symbol”命令,为有时钟使能的两位十进制计数器生成元件符号,作为共享文件。

3. 将前面实验内容生成的符号图,以图形输入方式新建一个顶层文件,通过连线,完成实验。

三、实验步骤

1. 建立工程

2、选择Stratix EP1S10F484C5芯片,

3、创建VHDL文件

4、输入BCD七段显示译码器程序

library ieee;

use ieee.std_logic_1164.all;

entity CT7448BCD_ljj is

port(a,b,c,d:in std_logic;

ltn,rbin,bin:in std_logic;

oa,ob,oc,od,oe,of1,og,rbon:out std_logic);

end CT7448BCD_ljj;

architecture ljj_7448 of CT7448BCD_ljj is

begin

process(bin)

variable i:std_logic_vector (3 to 0);

variable o:std_logic_vector (6 to 0);

begin

i(0):=a;

i(1):=b;

i(2):=c;

i(3):=d;

if(bin='1')then

case i is

when \"0000\"=>o:=\"0111111\";

when \"0001\"=>o:=\"0000110\";

when \"0010\"=>o:=\"1011011\";

when \"0011\"=>o:=\"1001111\";

when \"0100\"=>o:=\"1100110\";

when \"0101\"=>o:=\"1101101\";

when \"0110\"=>o:=\"1111101\";

when \"0111\"=>o:=\"0100111\";

when \"1000\"=>o:=\"1111111\";

when \"1001\"=>o:=\"1101111\";

when others=>o:=\"0000000\";

end case;

if(ltn ='0')then

o:=\"1111111\";

end if;

if(rbin='0'and i=\"0000\")then

o:=\"0000000\";

end if;

else

o:=\"1000000\";

end if;

oa<=o(0);

ob<=o(1);

oc<=o(2);

od<=o(3);

oe<=o(4);

of1<=o(5);

og<=o(6);

end process;

end ljj_7448;

5、设置顶层实体名

6、进行综合编译

7、新建波形文件

8、导入引脚

9.生成网表

10、进行功能仿真

分析波形图可知结果正确。

11、生成元件 执行“File”菜单下的“Greate Symbol Files For Current Files”

12、再进行下一个设计,新建VDH文件

13、输入两位十进制计数器的程序

LIBRARY ieee;

USE ieee.std_logic_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY COUNTER8_ljj IS

PORT (ENA,CLK,CLR:IN STD_LOGIC;

Q1,Q2:OUT STD_LOGIC_VECTOR (3 DOWNTO 0);

COUT:OUT STD_LOGIC);

END COUNTER8_ljj;

ARCHITECTURE COUNTER8 OF COUNTER8_ljj IS

BEGIN

PROCESS(ENA)

VARIABLE H:STD_LOGIC_VECTOR (3 DOWNTO 0);

VARIABLE L:STD_LOGIC_VECTOR (3 DOWNTO 0);

BEGIN

IF CLR='1' THEN

H:=\"0000\";

L:=\"0000\";

ELSIF(ENA='1')THEN

IF (CLK'EVENT AND CLK='1') THEN

IF L=\"1111\" THEN

L:=\"0000\";

H:=H+1;

IF H=\"1111\" THEN

H:=\"0000\";

COUT<='1';

END IF;

ELSE

L:=L+1;

END IF;

END IF;

END IF;

Q1<=H;

Q2<=L;

END PROCESS;

END COUNTER8

14、设置顶层文件Assignments->Setting

16、进行综合编译

17、新建波形文件

19、导入引脚

18、设置仿真文件

20、进行波形仿真

由波形图可知结果正确 。

21、生成元件

22、新建原理图文件

23、导入新建的元件,连线

24进行综合编译

25、新建波形仿真文件

26、设置引脚

27、生成网表

28、功能仿真

因篇幅问题不能全部显示,请点此查看更多更全内容