实验四 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、功能仿真
因篇幅问题不能全部显示,请点此查看更多更全内容