BJ-EPM CPLD开发板:VHDL入门例程3

BJ-EPM CPLD开发板:VHDL入门例程3,第1张



  -- Filename ﹕ SW_DEBOUNCE.vhd

  -- Author ﹕ wuhouhang

  -- DescripTIon ﹕ 三个独立按键控制四个LED流水灯工作/停止或者左移/右移

  library IEEE;

  use IEEE.std_logic_1164.all;

  use IEEE.std_logic_arith.all;

  use IEEE.std_logic_unsigned.all;

  enTIty JOHNSON is

  port(

  Clk: in STD_LOGIC; --50MHz输入时钟

  Rst_n: in STD_LOGIC; --低电平复位信号

  Key_in: in STD_LOGIC_VECTOR (2 downto 0); --三个独立按键,低表示按下

  --Key_in(2): 控制流水灯工作/停止

  --Key_in(1): 控制流水灯右移

  --Key_in(0): 控制流水灯左移

  Led_out: buffer STD_LOGIC_VECTOR (3 downto 0) --发光二极管,分别由按键控制

  );

  end enTIty JOHNSON;

  --20ms按键消抖处理

  --消抖后按键下降沿检测

  --按键控制LED控制位状态

  --LED显示控制

  architecture KEY_CONTROL_OF_LED of JOHNSON 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); --按键上升沿标志位,高电平有效一个时钟周期

  signal key_negedge: STD_LOGIC_VECTOR (2 downto 0); --按键下降沿标志位,高电平有效一个时钟周期

  signal cnt20ms: STD_LOGIC_VECTOR (19 downto 0); --20ms计数寄存器

  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); --消抖后按键下降沿标志位,高电平有效一个时钟周期

  signal led_display: STD_LOGIC; --LED流水灯工作,1--开启,0--停止

  signal led_direcTIon: STD_LOGIC; --LED流水灯方向,1--右移,0--左移

  signal cnt320ms: STD_LOGIC_VECTOR (23 downto 0); --320ms计数寄存器

  begin

  

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2484394.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-04
下一篇 2022-08-04

发表评论

登录后才能评论

评论列表(0条)

保存