我目前正在用VHDL进行一个项目,其中我有一个需要在100ms内更新的计数器,如果按下一个键则需要在1000毫秒内更新。
示例:
on_create
我想知道如何在VHDL中做到这一点。
我相信我应该使用一个进程(时钟,Key3),但我不知道如何根据时间段使计数器增加。
提前感谢!
答案 0 :(得分:1)
我认为你是那里的一部分:
我相信我应该使用一个进程(时钟,Key3),但我不知道如何根据时间段使计数器增加。
将问题视为数字设计问题,而不是编码问题。您将用什么来衡量真实数字系统中的时间流逝?从那里使用它作为参考来确定是否已经过了100ms或1000ms。
一旦你可以衡量时间,你如何确定特定事件的持续时间?
答案 1 :(得分:0)
如果c
是类型时间的变量(在进程中),那么
if some_condition then
c := c + 100 ms;
else
c := c + 1000 ms;
end if;
是有效的VHDL,并且可以在模拟中工作,虽然时间不太适合合成。
最简单的解决方案是C
计算时间步长 - 例如时钟周期的倍数,并添加1或10个。
例如,如果您有10MHz时钟:
constant Clock_Period : time := 100 ns;
constant ms_100 : natural := 100 ms / Clock_Period;
constant ms_1000 : natural := 1000 ms / Clock_Period;
signal c : natural;
...
if some_condition then
c <= c + ms_100;
else
c := c + ms_1000;
end if;
如果您更改时钟频率,请调整clock_period声明以匹配。