📄 counter601.vhd
字号:
--******************************************************
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
--******************************************************
ENTITY COUNTER601 IS
PORT(
CP : IN STD_LOGIC; --时钟脉冲
CLR : IN STD_LOGIC; --清除信号
EC : IN STD_LOGIC;--使能计数信号
bcdg: out std_logic_vector(3 downto 0);
bcds: out std_logic_vector(3 downto 0);
CY60 : OUT STD_LOGIC --计数60进位信号
);
END COUNTER601;
--*******************************************************
ARCHITECTURE a OF COUNTER601 IS
SIGNAL Q : STD_LOGIC_VECTOR (5 DOWNTO 0) ;
SIGNAL RST, DLY : STD_LOGIC;
signal bcd: std_logic_vector(7 downto 0);
BEGIN
PROCESS (CP,RST) -- 计数60
BEGIN
IF RST = '1' THEN
Q <= "000000"; -- 复位计数器
ELSIF CP'event AND CP = '1' THEN
DLY <= Q(5);
IF EC = '1' THEN
Q <= Q+1; -- 计数值加1
END IF;
END IF;
END PROCESS;
bcdg<=bcd(3 downto 0);
bcds<=bcd(7 downto 4);
CY60 <= NOT Q(5) AND DLY; -- 进位信号微分
RST <= '1' WHEN Q=60 OR CLR='1' ELSE -- 复位信号设定
'0';
Binary_BCD : Block
BEGIN
BCD <= "00000000" WHEN q = 0 ELSE
"00000001" WHEN q = 1 ELSE
"00000010" WHEN q = 2 ELSE
"00000011" WHEN q = 3 ELSE
"00000100" WHEN q = 4 ELSE
"00000101" WHEN q = 5 ELSE
"00000110" WHEN q = 6 ELSE
"00000111" WHEN q = 7 ELSE
"00001000" WHEN q = 8 ELSE
"00001001" WHEN q = 9 ELSE
"00010000" WHEN q = 10 ELSE
"00010001" WHEN q = 11 ELSE
"00010010" WHEN q = 12 ELSE
"00010011" WHEN q = 13 ELSE
"00010100" WHEN q = 14 ELSE
"00010101" WHEN q = 15 ELSE
"00010110" WHEN q = 16 ELSE
"00010111" WHEN q = 17 ELSE
"00011000" WHEN q = 18 ELSE
"00011001" WHEN q = 19 ELSE
"00100000" WHEN q = 20 ELSE
"00100001" WHEN q = 21 ELSE
"00100010" WHEN q = 22 ELSE
"00100011" WHEN q = 23 ELSE
"00100100" WHEN q = 24 ELSE
"00100101" WHEN q = 25 ELSE
"00100110" WHEN q = 26 ELSE
"00100111" WHEN q = 27 ELSE
"00101000" WHEN q = 28 ELSE
"00101001" WHEN q = 29 ELSE
"00110000" WHEN q = 30 ELSE
"00110001" WHEN q = 31 ELSE
"00110010" WHEN q = 32 ELSE
"00110011" WHEN q = 33 ELSE
"00110100" WHEN q = 34 ELSE
"00110101" WHEN q = 35 ELSE
"00110110" WHEN q = 36 ELSE
"00110111" WHEN q = 37 ELSE
"00111000" WHEN q = 38 ELSE
"00111001" WHEN q = 39 ELSE
"01000000" WHEN q = 40 ELSE
"01000001" WHEN q = 41 ELSE
"01000010" WHEN q = 42 ELSE
"01000011" WHEN q = 43 ELSE
"01000100" WHEN q = 44 ELSE
"01000101" WHEN q = 45 ELSE
"01000110" WHEN q = 46 ELSE
"01000111" WHEN q = 47 ELSE
"01001000" WHEN q = 48 ELSE
"01001001" WHEN q = 49 ELSE
"01010000" WHEN q = 50 ELSE
"01010001" WHEN q = 51 ELSE
"01010010" WHEN q = 52 ELSE
"01010011" WHEN q = 53 ELSE
"01010100" WHEN q = 54 ELSE
"01010101" WHEN q = 55 ELSE
"01010110" WHEN q = 56 ELSE
"01010111" WHEN q = 57 ELSE
"01011000" WHEN q = 58 ELSE
"01011001" WHEN q = 59 ELSE
"00000000";
END Block Binary_BCD;
END a;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -