題目:設計一個異步清零、同步時鐘使能和異步數據加載型8位二進制加法計數器。
LIBRARY IEEE
USE IEEE.STD_LOGIC_1164.ALL
USE IEEE.STD_LOGIC_UNSIGNED.ALL
ENTITY BIT8 IS
PORT (CLK,CLR,EN,LOAD : IN STD_LOGIC;
DATA : IN STD_LOGIC_VECTOR(7 DOWNTO 0);--8位預置數
DOUT : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--計數值輸出
COUT : OUT STD_LOGIC);--進位輸出
END BIT8;
ARCHITECTURE BEHAV OF BIT8 IS
BEGIN
PROCESS(CLK, CLR, EN, LOAD)--輸入敏感表
VARIABLE Q : STD_LOGIC_VECTOR(7 DOWNTO 0)--定義中間變量 8位
BEGIN
IF CLR = '1' THEN Q := (OTHERS => '0');--異步清零
ELSIF LOAD = '1' THEN Q := DATA;--異步置數
ELSIF CLK'EVENT AND CLK = '1' THEN--同步時鐘使能
IF EN = '1' THEN Q := Q + 1;--使能,時鐘上升沿計數
ELSE Q := Q;
END IF;
END IF;
IF Q = B'1111_1111' THEN COUT <= '1';
ELSE COUT <= '0';
END IF;
DOUR <= Q;
END PROSECC;
END BEHAV;