2013-04-12 67 views
2

VHDL中有一種方法,我可以聲明一個std_logic_vector,使它的大小根據輸入的大小不斷變化?VHDL - 動態std_logic_vector大小

我想要做的是,輸入一個8位的std_logic_vector,然後有一個動態的std_logic_vector信號存儲輸入值。然後,再次接收輸入值時,我將該值連接到動態信號的末尾,依此類推。

+3

VHDL是一種硬件描述語言。實現std_logic_vector就像安裝一堆電線。線的數量不能動態改變! – baldyHDL

+1

目前尚不清楚你到底想達到什麼目的。如果您試圖實現編譯和闡述後動態更改的std_logic_vector,則無法執行此操作。如果你正在尋找它動態的一次,在闡述,那麼這是可能的(通過不指定範圍)。通常情況下,如果您需要真正的「動態寬度」,則需要指定與最寬可能輸入一樣寬的寬度,然後再填充其他輸入(通常爲0)。 – Josh

+0

謝謝Josh,我將用你用0填充無用位的建議。 – Triple777er

回答

3

您正在尋找的行爲是不可能的。在編譯時必須知道std_logic_vector的大小。因爲使用VHDL來描述硬件,所以具有動態大小的std_logic_vector將對應於動態硬件(例如,在運行期間被實例化的更多寄存器)。這不可能。

您所描述的內容聽起來像是移位寄存器。您可以定義一個std_logic_vector(MAX_LEN-1 downto 0),然後在收到一個新值時將每個字節移到一個更高位的字節位置。

+0

謝謝你的清理。 – Triple777er