我目前正在开展一个我想要实现双向总线的项目。对于这个项目,我得到了一个我不应该编辑的实体。 该实体有两个输入端口(sda和scl)。 我现在想通过inout端口sda从TestBench写入实体。为此,我将一个值赋给连接到sda的信号。
当我这样做时,我得到的错误是我有多个未解决的信号sda的来源。一个是指定值,一个是实体本身。 我不明白如何在不触发此错误的情况下为此inout端口分配值。
这个问题有快速解释吗?否则,什么流行语对于搜索此问题的解决方案很有用?
我的代码:
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity i2c_slave_tb is
end i2c_slave_tb;
architecture arch of i2c_slave_tb is
-- signal declaration
-- sim signals
-- uut signals
signal sda: std_ulogic;
signal scl: std_ulogic;
begin -- arch
uut : entity work.i2c_slave
port map (
sda=>sda,
scl=>scl
);
stim_gen :process
begin
wait for 10 ns;
sda<='1';
wait;
end process stim_gen;
end arch;
答案 0 :(得分:2)
sda
和scl
信号为std_ulogic
,其中“u”代表未解析,这意味着信号只能有一个驱动程序,因为没有附加解析功能在多个驱动程序的情况下确定信号值的类型。
对于具有标准分辨率功能的类型,将类型更改为std_logic
,如:
signal sda: std_logic;
signal scl: std_logic;
您可以查看here以获取“VHDL解析功能”的一些描述,或者搜索它。