使用VHDL我希望有一些寄存器可以在每個寄存器中存儲16位數據。 所以我發現VHDL有一個內置的數組,我想用它來存儲每個元素中的16位iy,所以我想知道VHDL是否將這個數組映射到實際的寄存器?VHDL中數組的硬件表示法
回答
簡短答案是否定的 - 數組類型不映射到寄存器。
長的回答:
VHDL中的數組類型只是同一類型元素的索引集合。在你的情況下,你可能會使用一個數組作爲註冊庫的輸出。
所以,假設你有一個8個寄存器組,每個寄存器有16位。該庫的輸出將是一個16位向量的數組(8)。該寄存器組組件聲明將是這個樣子:
component reg8x16 port( clock: in std_logic; reset: in std_logic; enable: in std_logic; rout : out r_array(0 to 7) ); end component;
rout
是你從寄存器組註冊輸出數組。因此,您可以使用rout(0)
取消引用來自銀行的寄存器0的輸出,該類型的類型爲std_logic_vector(15 downto 0)
。
此外,不要忘記在某處(通常在包文件中)聲明數組類型。它看起來是這樣的:
type r_array is array (integer range <>) of std_logic_vector(15 downto 0);
的(integer range <>)
聲明是一種佔位符數組索引範圍 - 這將被填充,當數組類型被使用(如我們的組件聲明以上)後。
我不確定這是否回答您的問題。我不會詳細討論如何創建reg8x16組件。基本上,您只需創建一個輸出爲std_logic_vector(15 downto 0);
的16位寄存器(您可以查看如何在線執行此操作...這是非常基本的VHDL)。然後,您只需實例化這些寄存器中的8個,並將它們放入名爲reg8x16
的組件中。
數組就像任何其他變量或信號一樣:如果您描述的行爲意味着它必須記住從一個時鐘到另一個時鐘的狀態,那麼將推出觸發器(或內存塊,如果條件正確)由合成器。
任何具有有效範圍的數組都將映射到生成的網表中的導線。這是相當明顯的 - 硬件只包含門和電線。像(3 downto 0)(1到0)這樣的東西會導致4x2或8位大小的導線。您現在將單個訪問(如(3)(1))映射到此一維數組中的索引。所以(3)(1)基本上是(7)。
- 1. VHDL中的多維數組
- 2. 以VHDL表示整數的位數
- 3. VHDL多維數組
- 4. VHDL整數二維數組
- 5. 在if語句中的數組VHDL
- 6. 在硬件中生成多個獨立的僞隨機數(Verilog或VHDL)
- 7. VHDL模擬正常,但在硬件中不起作用
- 8. 組合硬件乘法的Verilog
- 9. VHDL - 確定二維數組
- 10. 如何:多維數組vhdl
- 11. VHDL GENERIC多維數組
- 12. VHDL - 移位字節數組
- 13. 在VHDL中重新使用舊組件
- 14. 如何將整數轉換爲VHDL中的二進制表示?
- 15. 在BRAM中讀寫2d數組VHDL
- 16. 數據表中的數組元素表示法
- 17. 數組元素的總和VHDL
- 18. VHDL - std_logic_vectors的數組轉換成std_logic_vector
- 19. VIGNL類型的VHDL數組串聯
- 20. 數組名稱的C++表示法
- 21. 硬件中斷列表
- 22. VHDL中的條件語句
- 23. 硬Java數組的情況
- 24. 用於數據緩衝區的VHDL中的3D數組
- 25. 用ATI硬件渲染textue數組
- 26. VHDL:司和十進制表示
- 27. Java調用數組中沒有點表示法的方法
- 28. VHDL減法std_logic_vector
- 29. vhdl乘法器
- 30. Zend Framework:使用數組表示法中的表單元素