【发布时间】:2017-08-08 10:52:28
【问题描述】:
考虑这个 VHDL 代码:
process(a, b)
begin
equal <= '0'; --default
gt <= '0'; --default
if a=b then
equal <= '1';
end if;
if a>b then
gt <= '1';
end if;
end process;
所谓的“默认”值是为了防止信号gt 和equal 出现锁存器。但是,由于这不是一个时钟进程,这不应该是信号gt 和equal 的多个驱动程序的错误吗?
【问题讨论】:
-
不,这很好,因为您只有一个进程驱动信号。
-
IEEE Std 1076-2008 14.7.2 驱动程序,第 1 段(部分):进程语句中的每个信号分配语句都为某些标量信号定义了一组 驱动程序。进程语句中的给定标量信号 S 有一个驱动程序,前提是该进程语句中至少有一个信号赋值语句,并且该信号赋值语句的目标信号的最长静态前缀表示 S 或表示S 为子元素的复合信号。 ...
-
那么写 a
-
有或没有时钟。 10.5.2.2 执行简单赋值语句,第 1 段(部分):执行简单波形赋值语句的效果是根据其对代表当前和未来值的投影输出波形(见 14.7.2)的影响来定义的信号的驱动程序。 (规则在 10.5 中描述,对于任何一次,只有一个投影输出波形(一个队列),没有延迟提供当前 sim 时间。第二个波形替换第一个。要查看两者,需要中间等待.)
-
在尝试避免锁存器时,没有时钟对于易于编码是有意义的。但是有时钟吗?它不会造成不必要的电路吗?