Caleb Reister
2016-03-12 12:19:40 UTC
我在學校學習Verilog和Vivado,現在我對總線和陣列的使用感到非常困惑。有人可以澄清以下內容嗎?
- 數組和總線之間有什麼區別?
- 在聲明期間,總線的外觀類似於
reg [9:0 ] data
,而數組將是reg data [9:0]
。語言處理這些情況的方式是否有細微(或不太細微)的差異? - 為什麼在變量名前面用and索引聲明總線,而在後面用索引引用?例如,無論是否將
data
聲明為數組或總線,data [3]
都可以工作。
- 在聲明期間,總線的外觀類似於
- 我發現有可能(儘管令人困惑)創建諸如
reg [4:0] busArray [3:0]
之類的聲明,該聲明將創建4個5位寄存器。- 這是不好的做法嗎?
- 這與聲明為
reg arrayArray [4:0] [3:0]
的2d數組有何不同?
- 什麼時候應該使用總線,什麼時候應該使用數組?
我還有其他一些相關問題...
- 當您有類似
reg [7:0] data [1023:0]
的聲明時,是否可以訪問各個位和範圍?- 我在訪問範圍時遇到問題的位。例如,
data [7:0] [4]
似乎有效,但是data [0] [255:0]
或data [3:1] [512:64]
導致語法錯誤。是否有關於如何訪問總線和數組中元素的規則?
- 我在訪問範圍時遇到問題的位。例如,
- 是否可以聲明多維總線? (類似於
reg [15:0] [8:0] data
) - 是否可以通過類型轉換來轉換數組,使其像總線一樣對待?這對於將數組傳遞到旨在接受總線的模塊中可能很有用。