我正在尝试使用结构建模在VHDL中构建矩阵向量乘法器。
我想将std_logic初始化为'0',但是当我运行仿真时,它将被初始化为'U',这导致连接到它的D触发器的输出保持为'U',这也是一个std_logic。
如何在不使用reset的情况下将std_logic初始化为“ 0”,例如使用
if reset = '1' then
Zindata <= '0'
end if;
在使用上面的代码时,在进行结构建模时出现错误。
有没有办法像上面的代码那样将Zindata
初始化为'0'?
答案 0 :(得分:2)
您可以在声明信号时为其赋予初始值:
signal Zindata : std_logic := '0';
如果您未明确给它提供初始值,它将在类型声明中获得最左边的值。这就是为什么您的信号值为“ U”的原因。
在std_logic_1164.vhd中,std_ulogic的定义(std_logic是std_ulogic的已解析类型):
TYPE std_ulogic IS ( 'U', -- Uninitialized
'X', -- Forcing Unknown
'0', -- Forcing 0
'1', -- Forcing 1
'Z', -- High Impedance
'W', -- Weak Unknown
'L', -- Weak 0
'H', -- Weak 1
'-' -- Don't care
);