BJ-EPM CPLD開發(fā)板:VHDL入門例程3(3)

2012年05月16日 11:01 來(lái)源:本站整理 作者:秩名 我要評(píng)論(0)

--消抖后鍵值鎖存

  process(Clk,Rst_n)

  begin

  if (Rst_n = '0') then --異步復(fù)位

  key_value <= "111";

  elsif (Clk'event AND Clk = '1') then --時(shí)鐘上升沿

  if (cnt20ms = 10#1000000#) then --計(jì)數(shù)值到20ms

  key_value <= key_inr1; --鎖存鍵值

  end if;

  end if;

  end process;

  --消抖后第一拍按鍵鎖存

  process(Clk,Rst_n)

  begin

  if (Rst_n = '0') then --異步復(fù)位

  key_valuer0 <= "111";

  elsif (Clk'event AND Clk = '1') then --時(shí)鐘上升沿

  key_valuer0 <= key_value; --鎖存上一拍鍵值

  end if;

  end process;

  --消抖后第二拍按鍵鎖存

  process(Clk,Rst_n)

  begin

  if (Rst_n = '0') then --異步復(fù)位

  key_valuer1 <= "111";

  elsif (Clk'event AND Clk = '1') then --時(shí)鐘上升沿

  key_valuer1 <= key_valuer0; --鎖存上一拍鍵值

  end if;

  end process;

  --消抖后按鍵下降沿檢測(cè)

  key_valueneg <= key_valuer1 AND (NOT key_valuer0); --消抖后按鍵下降沿標(biāo)志位,高電平有效一個(gè)時(shí)鐘周期

  --按鍵控制LED控制位狀態(tài)(流水燈工作/停止)

  process(Clk,Rst_n)

  begin

  if (Rst_n = '0') then --異步復(fù)位

  led_display <= '0';

  elsif (Clk'event AND Clk = '1') then --時(shí)鐘上升沿

  if (key_valueneg(2) = '1') then --控制流水燈工作/停止

  led_display <= NOT led_display; --鎖存鍵值

  end if;

  end if;

  end process;

  

上一頁(yè)1234下一頁(yè)

本文導(dǎo)航