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

本文导航