Vhdl 在测试台上编写inout端口

Vhdl 在测试台上编写inout端口,vhdl,Vhdl,我目前正在从事一个项目,我想实现一个双向总线。对于这个项目,我得到了一个不应该编辑的实体。 此实体有两个输入输出端口(sda和scl)。 现在我想通过inout端口sda从测试台写入实体。为此,我为连接到sda的信号赋值 当我这样做时,我得到一个错误,即我有多个未解析信号sda的源。一个是赋值,一个是实体本身。 我不明白如何在不触发此错误的情况下将值分配给此inout端口 这个问题有没有快速的解释?否则,哪些流行语对搜索此问题的解决方案有用 我的代码: library ieee; use iee

我目前正在从事一个项目,我想实现一个双向总线。对于这个项目,我得到了一个不应该编辑的实体。 此实体有两个输入输出端口(sda和scl)。 现在我想通过inout端口sda从测试台写入实体。为此,我为连接到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;
ieee库;
使用ieee.std_logic_1164.all;
使用ieee.numeric_std.all;
实体i2c_从机__tb为
端i2c_从机__tb;
i2c_从__tb的体系结构是
--信号声明
--sim信号
--受测试单元信号
信号sda:标准逻辑;
信号scl:标准逻辑;
开始——拱
uut:实体工作.i2c_从机
港口地图(
sda=>sda,
症状自评量表=>scl
);
刺激:过程
开始
等待10纳秒;

sdasda
和scl信号是
std_ulogic
,其中“u”表示未解析,这意味着信号只能有一个驱动器,因为在多个驱动器的情况下,类型没有解析函数来确定信号值

对于具有标准分辨率功能的类型,将类型更改为
std_logic
,如:

signal sda: std_logic;
signal scl: std_logic;

您可以查找“VHDL解析函数”的一些描述,也可以搜索它。

它成功了。谢谢你快速准确的回答!