如何在VHDL中将std_logic初始化为“ 0”

时间:2018-10-06 16:01:08

标签: vhdl

我正在尝试使用结构建模在VHDL中构建矩阵向量乘法器。

我想将std_logic初始化为'0',但是当我运行仿真时,它将被初始化为'U',这导致连接到它的D触发器的输出保持为'U',这也是一个std_logic。

如何在不使用reset的情况下将std_logic初始化为“ 0”,例如使用

if reset = '1' then
Zindata <= '0'
end if;

在使用上面的代码时,在进行结构建模时出现错误。

有没有办法像上面的代码那样将Zindata初始化为'0'?

1 个答案:

答案 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
                   );