2014-02-27 51 views
0

我在頂層端口聲明中定義了幾個三態(inout)std_logic端口引腳。我有一個專用的內部組件需要利用這些,但它的端口被定義爲有一個ind std_logic_vector(不是我的代碼,我無法更改),我需要將std_logic連接到std_logic_vector以使它快樂。VHDL:Concat inout std_logic into 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 

但這不能合成,因爲它認爲inOutBitn具有多個驅動程序。

有什麼我可以做得到這個綜合?我知道我可以聲明我的頂級inout端口是std_logic_vector,但這是次優的,因爲我們有一個定義良好的端口標籤約定。

+0

你不能使用'mySignal(0)<= inOutBit0'等而不是第一行嗎? – sinelaw

+0

對於標準的VHDL信號,分配向量的每一位或使用連接來分配1行中的整個向量並沒有區別。或者你是否說過在端口上有區別? – jerp

+1

我的錯誤;你是對的。你可以添加更多的代碼(定義)和綜合錯誤/錯誤的結果? – sinelaw

回答

0

根據您的描述,我瞭解到頂級端口和組件端口均爲inout模式。

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

中間mySignal然後不要求:

如果是這樣的話,那麼它可能會,如果你在std_logic水平直接連接的分量端口到外部inout端口,比如幫助。

但是,該描述表明綜合報告多個驅動程序爲inOutBitn,但我期望它在原始代碼中報告mySignal的多個驅動程序。

+0

很感謝!它完全放棄了我的想法,你可以用這種方式實例化組件。 – jerp