您的位置:電子發燒友網 > 電子技術應用 > 實驗中心 > 編程實驗 >
BJ-EPM CPLD開發板:VHDL入門例程3
2012年05月16日 11:01 來源:本站整理 作者:秩名 我要評論(0)
-- Filename ﹕ SW_DEBOUNCE.vhd
-- Author ﹕ wuhouhang
-- Description ﹕ 三個獨立按鍵控制四個LED流水燈工作/停止或者左移/右移
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.std_logic_unsigned.all;
entity JOHNSON is
port(
Clk: in STD_LOGIC; --50MHz輸入時鐘
Rst_n: in STD_LOGIC; --低電平復位信號
Key_in: in STD_LOGIC_VECTOR (2 downto 0); --三個獨立按鍵,低表示按下
--Key_in(2): 控制流水燈工作/停止
--Key_in(1): 控制流水燈右移
--Key_in(0): 控制流水燈左移
Led_out: buffer STD_LOGIC_VECTOR (3 downto 0) --發光二極管,分別由按鍵控制
);
end entity JOHNSON;
--20ms按鍵消抖處理
--消抖后按鍵下降沿檢測
--按鍵控制LED控制位狀態
--LED顯示控制
architecture KEY_CONTROL_OF_LED of JOHNSON is
signal key_inr0: STD_LOGIC_VECTOR (2 downto 0); --第一拍按鍵鎖存寄存器
signal key_inr1: STD_LOGIC_VECTOR (2 downto 0); --第二拍按鍵鎖存寄存器
signal key_posedge: STD_LOGIC_VECTOR (2 downto 0); --按鍵上升沿標志位,高電平有效一個時鐘周期
signal key_negedge: STD_LOGIC_VECTOR (2 downto 0); --按鍵下降沿標志位,高電平有效一個時鐘周期
signal cnt20ms: STD_LOGIC_VECTOR (19 downto 0); --20ms計數寄存器
signal key_value: STD_LOGIC_VECTOR (2 downto 0); --消抖后的鍵值鎖存寄存器
signal key_valuer0: STD_LOGIC_VECTOR (2 downto 0); --消抖后第一拍按鍵鎖存寄存器
signal key_valuer1: STD_LOGIC_VECTOR (2 downto 0); --消抖后第二拍按鍵鎖存寄存器
signal key_valueneg: STD_LOGIC_VECTOR (2 downto 0); --消抖后按鍵下降沿標志位,高電平有效一個時鐘周期
signal led_display: STD_LOGIC; --LED流水燈工作,1--開啟,0--停止
signal led_direction: STD_LOGIC; --LED流水燈方向,1--右移,0--左移
signal cnt320ms: STD_LOGIC_VECTOR (23 downto 0); --320ms計數寄存器
begin
標簽:VHDL(159)分頻計數器(5)J-EPM CPLD(4)