FPGA設計中BRAM的知識科普

2023-08-15 17:22:42 來源:FPGA入門到精通

FPGA設計中,BRAM是一項非常關鍵的內置存儲資源,FPGA開發需要熟練使用BRAM,今天再復習一下BRAM的知識,包括BRAM的定義、組成、應用等等。


(資料圖片)

一、BRAM介紹

1、BRAM的定義

RAM是Random Access Memory,也就是隨機訪問數據存儲器,RAM的內部是一個一個小內存單元(可以看成是一個小格子)組成。

每個內存單元都對應一個地址編號。

當我們需要讀寫數據時,就訪問對應的內存單元地址,很快地把數據寫入或者讀取出來。

BRAM是Block RAM,也就是FPGA中專用RAM資源,固定分布在FPGA內部的特定位置。

分布式RAM(Distributed RAM或DRAM)是由FPGA的LUT邏輯資源組合而成。

2、BRAM的組成

BRAM在FPGA實際對應的資源是RAMB36E1和RAMB18E1。

(1)RAMB36E1

RAMB36E1是一種具有36KB容量的Block RAM,由兩個獨立的18KB BRAM(Block RAM,RAMB18E1)組成。

一個36K的Block Memory可以配置成4種情形:

全部用于配置成36KB的BRAM;全部用于配置成36KB的FIFO;配置成18KB的BRAM和18KB的BRAM;配置成18KB的BRAM和18KB的FIFO;

這里需要注意的是,不能配置成兩個18KB的FIFO,因為一個Block Memory中間有一個FIFO Logic結構,它用于生成FIFO控制信號,包括讀/寫地址等,由于它只有1個且不能共享,所以最多只能配置一個FIFO。

(2)RAMB18E1

RAMB18E1是一種具有18KB容量的Block RAM,是Xilinx FPGA重要的內置Block RAM配置模塊,提供高速的同步存儲訪問能力。

(3)FPGA的BRAM數量

BRAM資源是FPGA中非常重要的資源,不同型號FPGA芯片的BRAM數量不一樣,以xilinx kintex 7系列為例。

(4)FPGA的BRAM性能

不同FPGA型號,是否嵌入輸出寄存器,決定了BRAM運行的時鐘頻率上限。

二、BRAM的應用

1、ROM

BRAM可以實現ROM功能,只支持讀不支持寫,只需在定義IP和調用IP時,初始化ROM值即可。

(1)單端口ROM(Single-port ROM)

只有一個端口可讀,應用于程序代碼存儲、初始化ROM。

(2)雙端口ROM(Dual-port ROM)

有兩個獨立的讀數據端口,常用于在兩個處理器/系統之間共享的單 ROM。

2、RAM

(1)單端口RAM(Single-port RAM)

只有一個端口,這個端口支持讀數據或者寫數據。

(2)簡單雙端口ROM(Simple Dual-port RAM)

有兩個端口A和B,A端口支持寫,B端口支持讀。

(3)真雙端口ROM(Simple Dual-port RAM)

有兩個端口A和B,每個端口都支持讀和寫。

3、FIFO

FIFO可以通過BRAM來實現先進先出功能,有兩種類型:同步fifo和異步fifo。

三、總結

BRAM是FPGA內部專用的存儲資源,性能優異但數量有限,每一個BRAM是36Kb大小,也可以配置成2個18Kb的BRAM,BRAM可以用來實現多種不同位寬和深度的RAM/ROM/FIFO,在FPGA中應用非常廣泛和靈活。

使用BRAM可以實現FPGA芯片內部的高速緩存、流水線等功能。合理利用這一硬件資源可以顯著優化FPGA設計。

標簽:

上一篇:一文詳解二極管的反向恢復時間
下一篇:最后一頁