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

2012年05月16日 10:52 來源:本站整理 作者:秩名 我要評論(0)

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

  process(Clk,Rst_n)

  begin

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

  key_valuer0 <= "111";

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

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

  end if;

  end process;

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

  process(Clk,Rst_n)

  begin

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

  key_valuer1 <= "111";

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

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

  end if;

  end process;

  --消抖后按鍵下降沿檢測

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

  --LED狀態控制

  process(Clk,Rst_n)

  begin

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

  Led_out <= "000";

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

  if (key_valueneg(0) = '1') then --按鍵0按下

  Led_out(0) <= NOT Led_out(0); --LED0亮滅狀態更替

  end if;

  if (key_valueneg(1) = '1') then --按鍵1按下

  Led_out(1) <= NOT Led_out(1); --LED1亮滅狀態更替

  end if;

  if (key_valueneg(2) = '1') then --按鍵2按下

  Led_out(2) <= NOT Led_out(2); --LED2亮滅狀態更替

  end if;

  end if;

  end process;

  end architecture KEY_CONTROL_OF_LED;

上一頁123

本文導航