Как инициализировать std_logic в '0' в VHDL - PullRequest
0 голосов
/ 06 октября 2018

Я пытаюсь построить матричный векторный множитель в VHDL, используя структурное моделирование.

Я хочу инициализировать std_logic равным '0', но когда я запускаю симуляцию, он инициализируется как 'U', чтоприводит к тому, что выход D-триггера, подключенного к нему, остается «U», что также является std_logic.

Как инициализировать std_logic в «0» без использования сброса, используя любой оператор if-else, например

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

Я получаю ошибку, когда использую вышеуказанный фрагмент кода, когда я занимаюсь структурным моделированием.

Есть ли способ инициализировать Zindata в '0' безделать как в коде выше?

1 Ответ

0 голосов
/ 07 октября 2018

Вы можете дать сигналу начальное значение при его объявлении:

signal Zindata : std_logic := '0';

Если вы явно не дадите ему начальное значение, он получит самое левое значение в объявлении типа.Вот почему ваш сигнал имеет значение «U».

From 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
                   );
...