Что если в архитектуре есть 2 разных назначения для одного и того же сигнала, но одно из них в процессе? - PullRequest
0 голосов
/ 10 мая 2019

Я хотел бы знать, как мы должны интерпретировать этот vhdl-код. Какое оборудование описывается описанием vhdl?

 LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY Example IS
PORT ( A,B : IN std_logic,
Y : OUT std_logic); 
END Example;
ARCHITECTURE test OF example IS BEGIN
Y <=A AND B;
proc1 : PROCESS (A,B) IS
BEGIN
IF (A = ’1’) THEN Y <=B;
END IF;
END PROCESS proc1;
END test;

Примет ли Y значения, заданные процессом, или примет A и Bигнорировать процесс?

1 Ответ

1 голос
/ 10 мая 2019

Как говорит пользователь 1155120, у вас фактически есть два параллельных процесса, каждый из которых управляет Y.Думайте о процессе (неявном и явном) как о программном обеспечении, которое немного моделирует аппаратное обеспечение.У двух есть два процесса, поэтому у вас есть два маленьких кусочка оборудования.

Каждое маленькое аппаратное обеспечение передает один и тот же сигнал (маленький кусочек провода, если хотите).Итак, у вас короткое замыкание.Таким образом, если оба процесса используют одно и то же значение, Y примет это значение.Однако, если они задают разные значения, значение сигнала Y будет разрешено до 'X' (неизвестно) - точно так же, как это происходит с реальным оборудованием.


Кстати: ваш явный процесс не моделирует комбинационную логику, он моделирует последовательную логику.Он ведет себя как защелка.Это связано с тем, что вы не указали значение для Y, если A не равно '1'.

...