在VHDL中运行并递增计数器

时间:2013-05-13 14:41:17

标签: counter vhdl increment

我需要设计VHDL以在七段显示器上运行计数器。三个输入是基于三个按钮的启动,停止和增量。启动将启动计数器,直到按下停止按钮才会停止。我需要创建一个增量按钮,只需添加一次。我只需要让增量按钮工作。

process(start, stop, inc, clk)
begin

if (clk'event and clk = '1') then
    if (rst = '1') then 
    run <= '0';
    end if;
     if(start = '1') then
           run <= '1';
     end if;
          if(stop = '1') then
           run <= '0';

     end if;
     end if;


    end process;

1 个答案:

答案 0 :(得分:0)

首先将按钮与内部时钟同步 - 按顺序将每个按钮传递给几个触发器。

然后你需要对按钮进行去抖 - 一种方法是只在输入引脚处于相同状态一段时钟周期后才传递信号。开关可以反弹几毫秒,因此请确保计算时间足以处理此问题。

现在你有清晰的信号提供给你的逻辑 - 你所拥有的是一个良好的开端,现在你需要一个信号,当inc按钮从'0'转换为'时,单个时钟脉冲变高1。然后可以使用开始按钮来存储此信号,以便将计数器设置为单个勾选

例如

process(clk)
  variable last_inc := '0';
begin
  if rising_edge(clk) then
    do_increment <= '0';
    if last_inc = '0' and inc = '1' then
        do_increment <= '1';
    end if;
    last_inc := inc;
  end if;
end process;