VHDL:concat inout std_logic转换为std_logic_vector信号

时间:2014-02-27 16:13:53

标签: vhdl

我的顶级端口声明中定义了几个tri-stateable(inout)std_logic端口引脚。我有一个需要使用它们的专用内部组件,但它的端口被定义为具有inout std_logic_vector(不是我的代码而且我无法更改),我需要将std_logic连接到std_logic_vector以使其满意。

问题是:我不知道该怎么做。

我认为ALIAS是正确的路由,但显然在定义别名时不能使用连接运算符。

然后我想我只是使用std_logic_vector内部信号:

mySignal <= inOutBit2 & inOutBit1 & inOutBit0; --Input route

componentPort => mySignal, --Component use

inOutBit2 <= mySignal(2);
inOutBit1 <= mySignal(1);
inOutBit0 <= mySignal(0); --Output route

但是这不会合成,因为它在onOutBitn中看到有多个驱动程序。

我能做些什么才能让它合成?我知道我可以将我的顶级inout端口声明为std_logic_vector,但这是次优的,因为我们有一个明确定义的端口标签约定。

1 个答案:

答案 0 :(得分:0)

根据您的描述,我了解顶级端口和组件端口都是模式inout

如果是这样,那么如果您将组件端口直接连接到inout级别的外部std_logic端口,则可能会有所帮助,例如:

componentPort(0) => inOutBit0,  --Component use
componentPort(1) => inOutBit1,  --Component use
componentPort(2) => inOutBit2,  --Component use

然后不需要中间mySignal

但是,说明说综合报告了inOutBitn的多个驱动程序,但我希望它在原始代码中报告了mySignal的多个驱动程序。