如果在体系结构中,对于同一信号有2种不同的分配,但其中有一个正在分配中,该怎么办?

时间:2019-05-10 12:31:12

标签: process vhdl

我想知道我们应该如何解释这个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 AND B并忽略过程?

1 个答案:

答案 0 :(得分:1)

正如user1155120所说,您实际上有两个并发进程,每个进程驱动Y。可以将一个过程(隐式和显式)视为一点点软件来模拟一点点硬件。两个有两个过程,因此您有两个小小的硬件。

每个硬件都会驱动相同的信号(如果您愿意的话,也可以接一点线)。因此,您发生短路。因此,如果两个进程驱动相同的值,则Y将采用该值。但是,如果它们驱动不同的值,则信号Y的值将被解析为 'X'(与真实硬件一样)。


顺便说一句:您的显式过程不对组合逻辑建模,而对顺序逻辑建模。它的行为就像一个闩锁。这是因为如果Y不等于A,则没有为'1'指定值。