你好我想知道信号声明在VHDL中是如何工作的。它是否意味着延迟,因为它是一个内部信号?信号有内部存储器吗? 例如:
Architecture SD_BEH of SD is
signal C: std_logic;
begin
process (A)
begin
C<=A;
if (C='1') then B<=A;
else B<= '0';
end if;
end process;
end SD_BEH;
这个C声明是否会引入δ延迟?如果是这样的话?它是VHDL的标准吗?感谢。
答案 0 :(得分:3)
信号仅在增量循环结束时传播,因此您可以以某种方式调用具有“内存”的信号。将VHDL视为真实硬件的描述,信号没有任何存储器,除非它们被建模,例如通过使用时钟过程来描述寄存器。
假设您上面所做的是尝试对组合逻辑进行建模,它将无法正确模拟,因为灵敏度列表并不完整。要清楚,它将根据VHDL语言规则模拟“正确”,但它不会描述任何类型的普通实际硬件。为了使其匹配,请考虑以下微小变化:
Architecture SD_BEH of SD is
signal C: std_logic;
begin
process (A, C) -- add C to the sensitivity list
begin
C<=A;
if (C='1') then B<=A;
else B<= '0';
end if;
end process;
end SD_BEH;