📄 counter.vhd
字号:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL ;
USE IEEE.STD_LOGIC_UNSIGNED.ALL ;
ENTITY counter IS
PORT(CLK_40M:IN STD_LOGIC;
CLK:OUT STD_LOGIC;
CLK_KEYBOARD:BUFFER STD_LOGIC_VECTOR(1 DOWNTO 0);
CLK_DISPLAY:OUT STD_LOGIC_VECTOR(1 DOWNTO 0);
CLK_SCAN:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
END ENTITY counter;
ARCHITECTURE ART OF counter IS
Signal Q : STD_LOGIC_VECTOR(23 DOWNTO 0); --24位的矢量方便时钟的设置
Signal SEL : STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
CLK_SCAN <=SEL; --键盘扫描信号
PROCESS (Clk_40M)
Begin
IF CLK_40M'Event AND CLK_40M = '1' then
Q <= Q+1; --自由计数
END IF;
END PROCESS;
CLK <= Q(15) ; --消抖时钟信号
CLK_KEYBOARD <= Q(21 DOWNTO 20) ; -- ***00-01-10-11
CLK_DISPLAY <= Q(15 DOWNTO 14) ; --数码管动态扫描信号
--用于产生动态扫描序列
-- 生成键盘扫描序列 1110->1101->1011->0111
SEL <= "0111" WHEN CLK_KEYBOARD=0 ELSE
"1011" WHEN CLK_KEYBOARD=1 ELSE
"1101" WHEN CLK_KEYBOARD=2 ELSE
"1110" ;
END ARCHITECTURE ART;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -