【发布时间】:2016-11-11 17:41:59
【问题描述】:
我想要一个让 LED 闪烁 3 次(每次灯应该亮一秒)并且亮灯之间的间隔应该是 1 秒的过程。
最快最简单的方法应该如下:
process(CLK)
begin
....
led <= '0';
led <= '1' after 1 sec,
'0' after 1 sec,
'1' after 1 sec,
'0' after 1 sec,
'1' after 1 sec,
'0' after 1 sec;
....
end process;
通过编译它没有错误......但是时钟有自己的工作频率(例如1ns)。用 Modelsim 查询这段代码会报如下错误:
run
# Cannot continue because of fatal error.
# HDL call sequence:
# Stopped at C:/User...rm.vhd 50 Process line__41
#
该行正好在 PROCESS(CLK) 行上。
我认为问题在于 CLK 具有更大的频率,所以在这种方式下一个进程在前一个完成之前开始(这让事情变得非常讨厌......)。
如果我写的是正确的,一个解决方案可以是使用时钟来获得请求的周期,但我想找到一个更快、更轻便的解决方案。
【问题讨论】:
-
天哪。这只是为了模拟,还是合成到硬件中?
-
它将用于合成到硬件中,因此我不能按照我的示例使用“之后”。