您的位置:電子發(fā)燒友網(wǎng) > 電子技術(shù)應(yīng)用 > 實(shí)驗(yàn)中心 > 編程實(shí)驗(yàn) >
BJ-EPM CPLD開發(fā)板:VHDL入門例程2
2012年05月16日 10:52 來源:本站整理 作者:秩名 我要評(píng)論(0)
-- Filename ﹕ SW_DEBOUNCE.vhd
-- Author ﹕ wuhouhang
-- Description ﹕ 三個(gè)獨(dú)立按鍵控制LED燈亮滅
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.std_logic_unsigned.all;
entity SW_DEBOUNCE is
port(
Clk: in STD_LOGIC; --50MHz輸入時(shí)鐘
Rst_n: in STD_LOGIC; --低電平復(fù)位信號(hào)
Key_in: in STD_LOGIC_VECTOR (2 downto 0); --三個(gè)獨(dú)立按鍵,低表示按下
Led_out: buffer STD_LOGIC_VECTOR (2 downto 0) --發(fā)光二極管,分別由按鍵控制
);
end entity SW_DEBOUNCE;
--20ms按鍵消抖處理
--消抖后按鍵下降沿檢測(cè)
--LED的鍵值控制
architecture KEY_CONTROL_OF_LED of SW_DEBOUNCE 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); --按鍵上升沿標(biāo)志位,高電平有效一個(gè)時(shí)鐘周期
signal key_negedge: STD_LOGIC_VECTOR (2 downto 0); --按鍵下降沿標(biāo)志位,高電平有效一個(gè)時(shí)鐘周期
signal cnt20ms: STD_LOGIC_VECTOR (19 downto 0); --20ms計(jì)數(shù)寄存器
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); --消抖后按鍵下降沿標(biāo)志位,高電平有效一個(gè)時(shí)鐘周期
begin
--第一拍按鍵鎖存
process(Clk,Rst_n)
begin
if (Rst_n = '0') then --異步復(fù)位
key_inr0 <= "111";
elsif (Clk'event AND Clk = '1') then --時(shí)鐘上升沿
key_inr0 <= Key_in; --鎖存上一拍鍵值
end if;
end process;
本文導(dǎo)航
- 第 1 頁:BJ-EPM CPLD開發(fā)板:VHDL入門例程2(1)
- 第 2 頁:第二拍按鍵鎖存
- 第 3 頁:消抖后第一拍按鍵鎖存
標(biāo)簽:VHDL(159)分頻計(jì)數(shù)器(5)J-EPM CPLD(4)