我需要设计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;
答案 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;