我的顶级端口声明中定义了几个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,但这是次优的,因为我们有一个明确定义的端口标签约定。
答案 0 :(得分:0)
根据您的描述,我了解顶级端口和组件端口都是模式inout
。
如果是这样,那么如果您将组件端口直接连接到inout
级别的外部std_logic
端口,则可能会有所帮助,例如:
componentPort(0) => inOutBit0, --Component use
componentPort(1) => inOutBit1, --Component use
componentPort(2) => inOutBit2, --Component use
然后不需要中间mySignal
。
但是,说明说综合报告了inOutBitn
的多个驱动程序,但我希望它在原始代码中报告了mySignal
的多个驱动程序。