VHDL 键盘程序
2007 年 04 月 10 日 下午 02:39
键盘部分 VHDL 代码是这样的
-- Keyboard
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY keyboard IS
PORT(
CLK_1K: IN STD_LOGIC; --系统原始时钟脉
冲(1KHz)
KEY_IN: IN STD_LOGIC_VECTOR(3 DOWNTO
0); --按键输入
CLK_SCAN,CC: OUT STD_LOGIC_VECTOR(3 DOWNTO
0); --键盘扫描输出
KBY_OUT: OUT STD_LOGIC_VECTOR(9 DOWNTO
0)); --键盘数据输出
END ENTITY KEYBOARD;
ARCHITECTURE ART OF KEYBOARD IS
COMPONENT DEBOUNCING IS
PORT(
D_IN,CLK:IN STD_LOGIC;
D_OUT: OUT STD_LOGIC);
END COMPONENT DEBOUNCING; --其中DEBOUNCING是消抖电路
SIGNAL CLK:STD_LOGIC; --电路工作时钟脉冲
SIGNAL C_KEYBOARD:STD_LOGIC_VECTOR(1 DOWNTO 0); --键扫信号
“00-01-10-11”寄存器
SIGNAL C_DEBOUNCE:STD_LOGIC; --去抖
动电路时钟
SIGNAL C:STD_LOGIC_VECTOR(3 DOWNTO 0); --
键盘输入去抖动后的寄存器
SIGNAL N,F:STD_LOGIC_VECTOR(3 DOWNTO 0); --数字、功能按
键译码值的寄存器
SIGNAL FN,FF: STD_LOGIC; --数字、功能按
键标志值数字、功能按键
SIGNAL SEL: STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
KBY_OUT <= FF & FN & F & N;