在测试平台中编写一个inout Port

时间:2015-05-09 09:38:39

标签: vhdl

我目前正在开展一个我想要实现双向总线的项目。对于这个项目,我得到了一个我不应该编辑的实体。 该实体有两个输入端口(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;

1 个答案:

答案 0 :(得分:2)

sdascl信号为std_ulogic,其中“u”代表未解析,这意味着信号只能有一个驱动程序,因为没有附加解析功能在多个驱动程序的情况下确定信号值的类型。

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

signal sda: std_logic;
signal scl: std_logic;

您可以查看here以获取“VHDL解析功能”的一些描述,或者搜索它。