簡體   English   中英

VHDL什么是更有效的使用:帶范圍的整數或std_logic_vector

[英]VHDL what is more efficient to use : an integer with range or a std_logic_vector

如果我將信號整數聲明為0到6之間的整數,則與聲明std_logic_vector(2降至0)做完全相同的工作相反是好是壞。我指的是設計成本,以便我可以決定是否使用整數范圍較小或帶有向量的一鍵表示。

簡而言之,將為0到n的整數范圍保留多少空間?

如果綜合工具使用最少的資源實現范圍為0到N的整數,則其大小為:

integer range 0 to N : std_logic_vector(ceil(log2(N + 1)) - 1 downto 0)

因此您的integer range 0 to 6將具有std_logic_vector(2 downto 0)的大小。

但是VHDL語言本身沒有針對不同數據結構的成本函數,因為成本取決於實現方式。 仿真工具以一種方式實現數據結構,而綜合工具則以不同方式實現數據結構。

例如,FPGA中的大小取決於綜合工具的性能。 綜合工具必須在實現的設計等效於VHDL規范的情況下進行實現,但是綜合工具可以自由地進行大於要求的實現,例如,通過實現所有32位整數std_logic_vector。

找出實際大小的最佳方法是使用綜合工具進行小型實驗,由此您還將學到很多有關綜合工具和VHDL實現的知識。

在仿真中,由於向量更復雜(它們可以存儲非“ 1”和“ 0”狀態,並且技術上每個位本身就是一個信號),因此整數將更快地進行仿真,因此仿真器必須更加努力地工作,跟蹤所有潛在的獨立過渡)。 在我的模擬器上進行的一些快速測試表明,用向量而不是整數編碼時,一個簡單的31位計數器的模擬時間幾乎是原來的2倍!

關於合成,如果您只是在算術上使用對象,則合成器將針對限制范圍整數產生與包含相同范圍的向量完全相同的邏輯。 如果沒有,請退款! 如果將其用作狀態變量,則可能會將其轉換為一鍵運算,這會降低解碼邏輯,但會降低觸發器的使用成本,但是如今,觸發器非常便宜。

這里有一些整數/矢量編碼樣式的比較:

https://electronics.stackexchange.com/questions/27921/when-is-it-neater-to-use-vector-representations-vs-integers

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM