1
A
回答
1
您應該只從RAM塊中讀取明智的數據,並將您讀出的向量移出以逐位進行讀取。
例如,如果ram_do是您讀出的向量,那麼只需使用ram_data <= '0' & ram_data(9 downto 1)
每次移出位1,其中ram_data(0)是每個時鐘週期可以執行的按位值。
你將得到的硬件是RAM加移位寄存器。
0
您可以實例化一個供應商特定的RAM塊,它可以這樣工作。
或者,你可以用一些綜合工具推斷出一個。例如,XST允許這樣做(參見UG687的第201頁以上代碼示例,只需更改示例代碼to use numeric_std.all
!)我不知道這種方法是否可以移植到Altera的Quartus。
0
您應該閱讀Recommended HDL Coding Style(Altera Quartus手冊)中的混合寬度雙端口RAM部分。我不確定此代碼的便攜性如何,但下面的示例顯示瞭如何在Altera器件上執行此操作:
library ieee;
use ieee.std_logic_1164.all;
package ram_types is
type word_t is array (0 to 3) of std_logic_vector(7 downto 0);
type ram_t is array (0 to 255) of word_t;
end ram_types;
library ieee;
use ieee.std_logic_1164.all;
library work;
use work.ram_types.all;
entity mixed_width_ram is
port (
we, clk : in std_logic;
waddr : in integer range 0 to 255;
wdata : in word_t;
rdata : in integer range 0 to 1023;
q : out std_llgic_vector(7 downto 0));
end mixed_width_ram;
architecture rtl of mixed_width_ram is
signal ram : ram_t;
begin -- rtl
process(clk, we)
begin
if (rising_edge(clk)) then
if(we = '1') then
ram(waddr) <= wdata;
end if;
q <= ram(raddr/4)(raddr mod 4);
end if;
end process;
end rtl;
相關問題
- 1. VHDL RAM端口映射
- 2. RAM在VHDL中讀寫
- 3. VHDL雙端口RAM意想不到的鎖存器產生
- 4. 在VHDL中創建大型雙端口RAM
- 5. 讀取,然後在VHDL中寫入RAM VHDL
- 6. VHDL設置RAM中的常量數據
- 7. VHDL PS/2接口
- 8. 單值Total Ram/Free Ram free memory/total memory
- 9. VHDL/Verilog:訪問HDMI端口
- 10. ps/2鍵盤接口VHDL
- 11. VHDL中的可選端口?
- 12. Spartan 6 SP605 VHDL外部RAM的使用情況?
- 13. 如何在VHDL中的RAM上加載文本文件?
- 14. vhdl ram模塊和寄存器的使用
- 15. VHDL簡單優化
- 16. VHDL簡單的AES
- 17. verilog中的單端口塊RAM - 斯巴達6
- 18. VHDL:從testbanch分配給inout端口
- 19. Isim Wave窗口中的VHDL編碼
- 20. 端口映射到VHDL地面
- 21. DMA傳輸RAM-RAM
- 22. 單個RAM單元有多大?
- 23. vhdl
- 24. vhdl
- 25. vhdl
- 26. 如何強制合成器使用RAM塊來存儲數據 - VHDL
- 27. VHDL:如何讀取/寫入RAM中的16位數據,每個地址8位
- 28. VHDL實體端口與組件端口的類型不匹配
- 29. VHDL - SNES使用FPGA通過控制器端口接口
- 30. VHDL - 與特定端口總線接口上
謝謝 - 我不熟悉1'b0語法或表達式。那是什麼意思? – Nektarios 2011-05-05 03:06:59
對不起。我確定了答案。 1'b0是一個verilog文字,這是我一直使用的語言。 – 2011-05-05 03:13:05
我發現奇怪的是,這個答案被接受,因爲原來的問題是一個混合寬度的RAM,而這裏描述的解決方案做出了這樣的假設,即單個位是按順序訪問的。 – trondd 2013-11-21 12:28:10