您的位置:電子發(fā)燒友網(wǎng) > 電子技術(shù)應(yīng)用 > 實驗中心 > 編程實驗 >
BJ-EPM CPLD開發(fā)板:VHDL入門例程3(2)
2012年05月16日 11:01 來源:本站整理 作者:秩名 我要評論(0)
process(Clk,Rst_n)
begin
if (Rst_n = '0') then --異步復(fù)位
key_inr0 <= "111";
elsif (Clk'event AND Clk = '1') then --時鐘上升沿
key_inr0 <= Key_in; --鎖存上一拍鍵值
end if;
end process;
--第二拍按鍵鎖存
process(Clk,Rst_n)
begin
if (Rst_n = '0') then --異步復(fù)位
key_inr1 <= "111";
elsif (Clk'event AND Clk = '1') then --時鐘上升沿
key_inr1 <= key_inr0; --鎖存上一拍鍵值
end if;
end process;
--按鍵邊沿檢測
key_posedge <= (NOT key_inr1) AND key_inr0; --按鍵上升沿標(biāo)志位,高電平有效一個時鐘周期
key_negedge <= key_inr1 AND (NOT key_inr0); --按鍵下降沿標(biāo)志位,高電平有效一個時鐘周期
--20ms計數(shù)
process(Clk,Rst_n)
begin
if (Rst_n = '0') then --異步復(fù)位
cnt20ms <= x"00000";
elsif (Clk'event AND Clk = '1') then --時鐘上升沿
if ((key_posedge /= "000") OR (key_negedge /= "000")) then --鍵值邊沿標(biāo)志位復(fù)位計數(shù)器,此處理目的為消除抖動
cnt20ms <= x"00000";
elsif (cnt20ms < 10#1000000#) then --20ms計數(shù)
cnt20ms <= cnt20ms+1;
else
cnt20ms <= x"00000";
end if;
end if;
end process;
本文導(dǎo)航
- 第 1 頁:BJ-EPM CPLD開發(fā)板:VHDL入門例程3(1)
- 第 2 頁:第一拍按鍵鎖存
- 第 3 頁:消抖后鍵值鎖存
- 第 4 頁:水燈左移/右移
標(biāo)簽:VHDL(159)分頻計數(shù)器(5)J-EPM CPLD(4)