一、实验目的
1.进一步掌握VHDL语言中元件例化语句的使用
2.通过本实验,巩固利用VHDL语言进行EDA设计的流程
二、实验原理
1.先分别设计一个六进制和十进制的计数器,并生成符号文件2.利用生成的底层元件符号,设计六十进制计数器顶层文件
三、实验步骤
(略)
四、实验结果
六进制计数器源程序cnt6.vhd:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE. STD_LOGIC_UNSIGNED.ALL;
ENTITY CNT6 IS
PORT (CLK, CLRN, ENA, LDN: IN STD_LOGIC;
D: IN STD_LOGIC_VECTOR(3 DOWNTO 0);
Q: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
COUT: OUT STD_LOGIC);
END CNT6;
ARCHITECTURE ONE OF CNT6 IS
SIGNAL CI: STD_LOGIC_VECTOR(3 DOWNTO 0):="0000"; BEGIN
PROCESS(CLK, CLRN, ENA, LDN)
BEGIN
IF CLRN='0' THEN CI<="0000";
ELSIF CLK'EVENT AND CLK='1' THEN
IF LDN='0' THEN CI<=D;
ELSIF ENA='1' THEN
IF CI<5 THEN CI<=CI+1;
ELSE CI<="0000";
END IF;
END IF;
END IF;
Q<=CI;
END PROCESS;
COUT<= NOT(CI(0) AND CI(2));
END ONE;
十进制计数器源程序cnt10.vhd:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE. STD_LOGIC_UNSIGNED.ALL;
ENTITY CNT10 IS
PORT (CLK, CLRN, ENA, LDN: IN STD_LOGIC;
D: IN STD_LOGIC_VECTOR(3 DOWNTO 0);
Q: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
COUT: OUT STD_LOGIC);
END CNT10;
ARCHITECTURE ONE OF CNT10 IS
SIGNAL CI: STD_LOGIC_VECTOR(3 DOWNTO 0):="0000"; BEGIN
PROCESS(CLK, CLRN, ENA, LDN)
BEGIN
IF CLRN='0' THEN CI<="0000";
ELSIF CLK'EVENT AND CLK='1' THEN
IF LDN='0' THEN CI<=D;
ELSIF ENA='1' THEN
IF CI<9 THEN CI<=CI+1;
ELSE CI<="0000";
END IF;
END IF;
END IF;
Q<=CI;
END PROCESS;
COUT<= CI(0) AND CI(3);
END ONE;
设计两输入端与门元件:
将要使用的元件包装入库:
使用元件例化语句设计的六十进制计数器源程序cnt60top.vhd:
六十进制计数器的顶层文件原理图CNT60TOP.gdf。