亚洲综合图片区自拍_思思91精品国产综合在线观看_一区二区三区欧美_欧美黑人又粗又大_亚洲人成精品久久久久桥本

FPGA中常用的存儲器資源

2023-08-15 17:13:39 來源:FPGA入門到精通

本文主要介紹FPGA中常用的RAMROM、CAM、SRAM、DRAM、FLASH等資源,包括特性、工作原理、應(yīng)用場景等。

一、RAM

RAM(Random Access Memory)是FPGA中最基本和常用的內(nèi)部存儲塊,根據(jù)不同架構(gòu)可以實現(xiàn)不同容量,最大可達幾十Mb。


(資料圖片僅供參考)

FPGA中的RAM主要包括:

分布式RAM:存在于邏輯塊(LE)中的小容量RAM,通常為幾百比特到幾千比特。塊RAM:FPGA中專門用于實現(xiàn)RAM功能的大容量存儲塊,每個塊RAM容量從幾kb到幾十kb不等。UltraRAM:某些高端FPGA特有的大容量RAM塊,比塊RAM具有更高的密度和帶寬。

1、分布式RAM(Distributed RAM)

分布式RAM利用查找表(LUT)的功能實現(xiàn),不需要占用額外Flip-Flop,但會占用可用于邏輯實現(xiàn)的LUT資源。

每個LUT可以實現(xiàn)一個小容量的RAM,例如6輸入LUT實現(xiàn)64位RAM。

注意分布式RAM只能實現(xiàn)同步讀寫操作。

2、塊RAM(Block RAM)

每個塊RAM通常有單端口、雙端口和四端口版本。

支持同步讀寫操作,可以通過多端口實現(xiàn)FIFO等功能。

例如Xilinx UltraScale FPGA中一個塊RAM容量為36kb,位寬可配置,延時很小,頻率可以達到550MHz。

3、UltraRAM

UltraRAM集成在部分高端FPGA中,每個UltraRAM可以達到數(shù)十Mb的容量,具有比塊RAM更高的密度和帶寬。

UltraRAM可以與塊RAM一起使用,實現(xiàn)更大容量的存儲解決方案。

Verilog代碼示例

(* ram_style = "distributed" *) reg [7:0] dist_ram[0:63]; // 64 x 8 的分布式RAM  (* ram_style = "block" *) reg [31:0] block_ram[0:1023]; // 1K x 32 的塊RAM  (* ram_style = "ultra" *) reg [7:0] ultra_ram[0:262143]; // 256K x 8 的UltraRAM

二、 ROM

ROM(Read-Only Memory)是只讀存儲器,用于存放不需修改的數(shù)據(jù)。

FPGA中的ROM主要有:

分布式ROM:使用LUT實現(xiàn),容量很小。塊ROM:使用塊RAM實現(xiàn),容量較大。

ROM在配置時寫入數(shù)據(jù)之后數(shù)據(jù)不能修改。ROM主要用于存放程序代碼等不變數(shù)據(jù)。

Verilog 代碼示例

(* rom_style = "distributed" *) reg [7:0] dist_rom[0:31]; // 32 x 8 分布式ROM  (* rom_style = "block" *) reg [31:0] block_rom[0:2047]; // 2K x 32 塊ROM

三、CAM

CAM(Content-Addressable Memory)是一種特殊類型的內(nèi)存結(jié)構(gòu),也稱為內(nèi)容可尋址存儲器,可以通過內(nèi)容查找數(shù)據(jù)所在位置。

CAM主要應(yīng)用:

網(wǎng)絡(luò)查找:根據(jù)目的地址查找路由端口。緩存查詢:根據(jù)TAG查詢緩存中是否存在數(shù)據(jù)。

CAM的工作原理:

基于硬件電路的快速匹配,當輸入一串數(shù)據(jù)時,CAM會同時比較這串數(shù)據(jù)與內(nèi)部存儲的所有數(shù)據(jù)項。如果找到完全匹配的數(shù)據(jù)項,CAM就會輸出該數(shù)據(jù)項的地址。

CAM的優(yōu)點:高速查找、精確匹配、并行處理。

CAM的缺點:容量受限、功耗較高、價格昂貴。

四、SRAM

SRAM(StaticRAM)是一種常用的隨機訪問存儲器(RAM)類型,它以靜態(tài)方式存儲數(shù)據(jù),不需要定期刷新。也稱為靜態(tài)隨機存儲器。

SRAM在速度和功率消耗方面表現(xiàn)優(yōu)異,但是容量較小,成本較高。

SRAM通常用于存儲CPU或FPGA內(nèi)部的寄存器、緩存或臨時變量等。

SRAM主要由存儲單元陣列、地址解碼器和讀寫控制電路等組成。每個存儲單元都包含一個雙口RAM,可以獨立地進行讀/寫操作。每個RAM有兩位,即一個存儲單元可以存儲一個比特(bit)的數(shù)據(jù)。

SRAM還可以實現(xiàn)預(yù)讀取功能,即在讀取數(shù)據(jù)的同時,預(yù)讀下一個數(shù)據(jù),從而提高訪問速度。此外,SRAM還可以實現(xiàn)雙端口訪問,即同時對兩個不同的存儲單元進行讀寫操作。

Verilog 代碼示例

sram_controller sram_inst (  .clk    (clk),  .addr   (addr),  .dout   (dout),  .din    (din),  .we     (we),  .ce     (ce),  .oe     (oe));

五、 DRAM

全稱動態(tài)隨機存取存儲器(Dynamic Random Access Memory),是一種用于存儲和訪問大規(guī)模數(shù)據(jù)的主要存儲器技術(shù)。

DRAM以其高密度、容量大和低功耗等特點,以Gigabit(Gb)為單位提供大容量存儲,在FPGA中得到廣泛的應(yīng)用,比如常見的DDR3、DDR4等等。

FPGA的DRAM可以使用不同的接口標準,如DDR3、DDR4、LPDDR、HBM等。這些接口標準定義了DRAM與其他系統(tǒng)組件(如處理器、其他存儲器、外設(shè)等)之間的通信協(xié)議和物理連接。

相比SRAM,DRAM擁有更大的容量,順序讀寫速度快,隨機讀寫速度慢。

Verilog 代碼示例

ddr3_controller ddr3_inst(  .clk        (clk),  .reset_n    (reset_n),  .s_axi_awid    (s_axi_awid),  .s_axi_awaddr  (s_axi_awaddr),  .s_axi_awlen   (s_axi_awlen),  .s_axi_awsize  (s_axi_awsize),  .s_axi_awburst (s_axi_awburst),  .s_axi_awlock  (s_axi_awlock),  .s_axi_awcache (s_axi_awcache),  .s_axi_awprot  (s_axi_awprot),  .s_axi_awvalid (s_axi_awvalid),  .s_axi_awready (s_axi_awready),  // Write data channel  .s_axi_wdata  (s_axi_wdata),    .s_axi_wstrb  (s_axi_wstrb),  .s_axi_wlast  (s_axi_wlast),  .s_axi_wvalid (s_axi_wvalid),  .s_axi_wready (s_axi_wready));

六、FLASH

FLASH是一種非易失存儲器,斷電后保持數(shù)據(jù),容量小,但成本低廉。

FPGA中的FLASH主要用于:

存儲配置文件:許多FPGA使用FLASH來保存配置文件。程序存儲:用于存儲代碼和數(shù)據(jù)。

FLASH存儲器以塊為單位進行擦除和寫入操作。擦除操作需要將整個塊中的數(shù)據(jù)清除,而寫入操作只需修改需要更新的部分數(shù)據(jù)。

寫入操作通常采用位編程(bit programming)的方式進行。在位編程中,根據(jù)需要將存儲單元的電荷狀態(tài)改變,以表示0或1的值。

與其他存儲器類型相比,F(xiàn)LASH存儲器的讀取延遲較高,而擦除和寫入操作的速度也相對較慢。此外,F(xiàn)LASH存儲器的擦寫次數(shù)有限,通常在百萬到數(shù)十億之間。

Verilog 代碼示例

flash_controller flash_inst(  .clk(clk),  .flash_cs(flash_cs),  .flash_clk(flash_clk),   .flash_io(flash_io),  .addr(addr),  .dout(dout),  .din(din),  .oe(oe),  .we(we) );

七、總結(jié)

FPGA提供了多種內(nèi)部和外部的存儲器解決方案,根據(jù)需要可以靈活使用,構(gòu)建存儲器系統(tǒng)。合理利用各類存儲器的優(yōu)缺點,可以在成本、容量和速度上取得最佳平衡。

標簽:

上一篇:FPGA設(shè)計中BRAM的知識科普
下一篇:最后一頁