LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY ESJZ IS
PORT(
CLK :IN STD_LOGIC; --時鐘
EN :IN STD_LOGIC; --使能端
CR :IN STD_LOGIC; --清零端,低電平有效
LD :IN STD_LOGIC; --數(shù)據(jù)載入控制,低電平有效
D :IN STD_LOGIC_VECTOR(5 DOWNTO 0); --載入數(shù)據(jù)端
CO : OUT STD_LOGIC; --進位
Q :OUT STD_LOGIC_VECTOR(5 DOWNTO 0) --計時輸出
);
END ESJZ ;
ARCHITECTURE a OF ESJZ IS
SIGNAL QN :STD_LOGIC_VECTOR(5 DOWNTO 0);
BEGIN --進位控制
CO<='1' WHEN(QN=X"23" AND EN='1')
ELSE'0';
PROCESS(CLK,CR)
BEGIN
IF (CR='0')THEN
QN<="000000";
ELSE
IF (CLK'EVENT AND CLK='1') THEN
IF (LD='0') THEN --數(shù)據(jù)加載
QN<=D;
ELSIF(EN='1') THEN
IF (QN(3 DOWNTO 0)=3 and QN(5 DOWNTO 4)=2) or QN(3 DOWNTO 0)=9 THEN
QN(3 DOWNTO 0)<="0000"; --個位數(shù)進位
IF QN(5 DOWNTO 4)=2 THEN
QN(5 DOWNTO 4)<="00"; --十位數(shù)進位
ELSE
QN(5 DOWNTO 4)<= QN(5 DOWNTO 4)+1;
END IF;
ELSE
QN(3 DOWNTO 0)<= QN(3 DOWNTO 0)+1;
END IF ;
END IF;
END IF ;
END IF;
END PROCESS;
Q<=QN;
end a;
三、對源程序進行編譯仿真并分析
為了驗證設(shè)計的正確性,利用美國 Altera公司開發(fā)的 EDA工具軟件用MAX+PLUSⅡ, 對ESJZ.vhd 進行編譯,出現(xiàn)一處警告,但能編譯成功,不會影響其功能效果。