導讀:
在選擇FPGA時,關注LUT(Look-Up Table)和BRAM(Block RAM)是非常重要的,因為它們是FPGA架構中的兩個核心資源,對于設計的性能和資源利用至關重要。
BRAM(Block Random Access Memory,隨機存取內存塊),塊RAM是嵌在FPGA內部、固定大小(容量)的硬IP。
為什么要嵌入豐富的塊RAM?對于需要大量存儲器的應用,比如需要大規模的數據存儲,如圖像、視頻、音頻等,塊RAM是一個理想的選擇。塊RAM提供了高密度的存儲,能夠有效地存儲和檢索大量數據;對于需要頻繁訪問的數據,塊RAM可以用作數據緩存;一些算法可能需要大量的中間數據存儲,使用塊RAM可以提供快速且容量大的存儲,用來支持這些算法的運行;異步時鐘域之間的數據傳輸通常需要使用FIFO(First-In-First-Out)緩沖區。
在FPGA開發中,使用塊RAM的多少取決于設計的性質和對性能的需求。在設計過程中,通過合理的資源規劃和優化,可以有效地利用塊RAM以滿足應用的需求。
注:以xilinx7系列690T為例
塊RAM的分布
圖1:產品選型指南
一些應用可能更加側重于邏輯資源,而另一些應用可能更加側重于存儲資源,如上圖1所示,以690t為例,Block RAM總數目為1470,總容量為52920kb。上圖中的Distributed RAM 是 FPGA中的一種內置存儲器資源。與塊RAM不同,分布式RAM分散在FPGA的邏輯區域中,而不是集中在特定的塊中。分布式RAM主要由可編程邏輯元件(LUTs)和觸發器(Flip-Flops)組成。每個LUT都有一些存儲單元,用于存儲少量的數據。這些存儲單元可以被組合起來,形成一個分布式的存儲器。簡單的說Distributed RAM就是FPGA用內部的邏輯單元拼湊而來的。一般較少使用,本文不重點討論。
圖2:7系列 塊RAM資源
如圖2可知,690T一共包含1470個塊RAM,一個有15“列” 36Kb的BRAM,每“列”有100個36Kb的BRAM。結合下文圖3、圖4用Vivado打開實際device(690T)的視圖說明,看過我前面文章的讀者可知,690T一共20個時鐘區域,圖4是將圖3最上方4個時鐘區域放大后的截圖,先看圖4,其中每一個小紅箭頭代表1“列”36kb的BRAM,一共15個小紅箭頭(每以列共100個36kb的BRAM)。細心的讀者可能發現,圖2的表格一共有15列,每列100個,總數應該是1500個,為什么圖2的表格總數只有1470?答案就在圖3里面,因為有一些BRAM已經分配給一些高速硬核使用了,比如690T的PCIe 硬IP。
圖3:Device視圖
圖4:Device視圖(圖3最上方4個時鐘區域放大截圖)
圖5:工程“綜合實現”后的資源消耗指示圖
圖5是筆者基于690T開發的一個實際工程綜合實現后的資源消耗,BRAM一共使用273個,評估你所選擇的FPGA是否合適,最主要就是看邏輯資源和BRAM使用情況,當然特殊要求除外(如DSP、其他硬IP等)
塊RAM的特性和按“列”分布原因
FPGA塊RAM的特性很多,讀者不在這里細述每一個特性,讀者自行參考廠商原文檔,因為是硬IP??赡苊總€廠商支持的特性各不相同,使用時需要注意幾點的是:
- 每個塊RAM均可存儲最多36 Kbits的數據(每個廠商的內嵌的塊大小可能不一樣);
- 支持將一個單獨的36Kb塊RAM分成兩個獨立的18Kb塊使用(具體看廠商規格書);
- 兩個相鄰的塊RAM可以組合成一個更深的64K x 1內存(具體看廠商規格書);
- 支持端口模式(簡單雙端口(SDP)、真雙端口(TDP)。(具體看廠商規格書)。
FPGA中的塊RAM按列分布的設計選擇通常是出于性能和資源利用的考慮。這種設計決策涉及到FPGA內部架構和數據流的優化。
- 性能優化: FPGA內部的塊RAM通常是在每個列中集中分布。這樣設計有助于減小數據路徑的長度,從而減小延遲,提高訪問速度。如果塊RAM散布在整個FPGA芯片上,可能需要更長的路徑來連接塊RAM和其他邏輯單元,導致性能下降。
- 資源共享: FPGA中的資源是有限的,通過將塊RAM集中在每個列中,可以更好地進行資源共享。這有助于防止資源爭用和碎片化,使得在某一列中的塊RAM更容易分配給鄰近的邏輯單元,減少資源沖突。
- 時序和布線簡化: FPGA中的時序分析和布線操作通常是按列進行的。將塊RAM集中在每一列中可以簡化時序分析,減小時序問題的復雜性,使得設計更容易達到目標時鐘頻率。
總結
按列分布塊RAM是一種有效的設計選擇,有助于提高性能、優化資源利用,并簡化時序和布線操作。不過,具體的FPGA架構和設計工具可能會有一些差異,因此在具體的FPGA系列和工具鏈中可能會有一些微妙的差異。
-
FPGA
+關注
關注
1643文章
21925瀏覽量
612603 -
存儲器
+關注
關注
38文章
7617瀏覽量
166054 -
RAM
+關注
關注
8文章
1386瀏覽量
116532 -
內存
+關注
關注
8文章
3103瀏覽量
74916 -
觸發器
+關注
關注
14文章
2029瀏覽量
61782
發布評論請先 登錄
在FPGA設計中如何用LUT組建分布式的RAM
FPGA內嵌的塊RAM在FFT算法中的應用

采用FPGA與IP來實現DDR RAM控制和驗證的方法

Spartan-6 FPGA塊RAM的技術參考資料免費下載

詳細介紹關于FPGA開發板內部ram是如何操作的

FPGA的RAM存儲資源詳細資料說明

評論