原代码如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY bio_buffer IS
PORT(a,b:INOUT STD_LOGIC;
en,dr :IN STD_LOGIC
);
END ENTITY;
ARCHITECTURE behaver OF bio_buffer IS
SIGNAL aout: STD_LOGIC;
SIGNAL bout: STD_LOGIC;
BEGIN
PROCESS(a,dr,en)
BEGIN
IF((en='0')AND(dr='1')) THEN bout<=a;
ELSE bout<='Z';
END IF;
b<=bout;
END PROCESS;
PROCESS(b,dr,en)
BEGIN
IF((en='0')AND(dr='0'))THEN aout<=b;
ELSE aout<='Z';
END IF;
a<=aout;
END PROCESS;
END ARCHITECTURE;
仿真结果如下:
可以看到在输入信号a改变后,用以接手输入信号值的bout赋值正确,同时也有写b<=bout这条语句,为什么b信号始终为高阻状态,求大神解答。
|