我在我的顶级端口声明中定义了几个三状态(inout) std_logic端口引脚。我有一个专用的内部组件,需要利用这些组件,但是它的端口被定义为有一个inout std_logic_vector (不是我的代码,我不能更改),我需要将std_logic连接到一个std_logic_vector中,以使它快乐。
问题是:我不知道该怎么做。
我认为别名是正确的路由,但显然在定义别名时不能使用级联操作符。
然后我想我应该用一个std_logic_vector内部信号:
mySignal <= inOutBit2 & inOutBit1 & inOutBit0; --Input route
componentPort => mySignal, --Component use
inOutBit2 <= mySignal(2);
inOutBit1 <= mySignal(1);
inOutBit0 <= mySignal(0); --Output route但这不会综合,因为它认为inOutBitn有多个驱动程序。
我能做些什么让它合成吗?我知道我可以声明我的顶级inout端口为std_logic_vector,但这不是最优的,因为我们有一个定义良好的端口标记约定。
发布于 2014-02-27 17:51:55
根据您的描述,我理解顶级端口和组件端口都是inout模式。
如果是这样,那么如果您将组件端口直接连接到inout级别的外部std_logic端口,则可能会有所帮助,例如:
componentPort(0) => inOutBit0, --Component use
componentPort(1) => inOutBit1, --Component use
componentPort(2) => inOutBit2, --Component use因此,不需要中间mySignal。
但是,描述说,合成报告了inOutBitn的多个驱动程序,但我认为它在原始代码中报告了mySignal的多个驱动程序。
https://stackoverflow.com/questions/22074107
复制相似问题