在FPGA中block ram是很常見的硬核資源,合理的利用這些硬件資源一定程度上可以優(yōu)化整個設計,節(jié)約資源利用率,充分開發(fā)FPGA芯片中的潛在價值,本文根據前人總結的一些用法,結合安路科技FPGA做簡單總結,說明基本原理。
用法一:使用雙口模式拆分成2個小容量的BRAM
基本原理如下:
· 以1K*9bit雙端口配置模式為例,一個bram9k,可以當作兩個512*9k rom
· 將A端口的地址最高位固定接0,B端口的地址最高位固定接1,則通過A端口只能訪問0~511的地址空間,通過B端口只能訪問512~1023地址空間,互不沖突,相當于兩個小容量的rom
用法二:用作并行數據的多周期延時
· 將bram例化成簡單雙端口模式,并將寫端口固定使能為寫,讀端口固定使能為讀。
· 將ram模式配置成 “讀優(yōu)先模式”,每次在寫某個地址之前會先把該地址的數據輸出
· 用一個模長為N(N=4)的計數器,反復向ram中寫數據,會得到一個延時為N+1的輸出數據
如下圖:
用法三:用作高速大規(guī)模計數器
基本原理如下:
· 以9Kbit bram為例,設置成雙端口,1k*9bit模式
· A端口doa[7:0]是低8bit 計數器輸出,doa[8]是進位信號,給到B端口的使能
· B端口dob[7:0]是高8bit計數器輸出。
· 由于B端口數據有一個周期延時,將A端口數據延時一個周期之后與B端口構成16bit計數器
· 也即一個9Kbit bram可以構造成一個16bit的計數器
· 設計原型是兩個8bit的計數器級聯(lián)構造16bit計數
· rom初始化文件
用法四:構造高速復雜的狀態(tài)機
一般狀態(tài)機原理框圖如下:
基于rom的狀態(tài)機原理如下:
· 首先明確 狀態(tài)劃分,狀態(tài)跳轉條件,狀態(tài)輸出
· 將現(xiàn)態(tài)輸出與輸入給到rom_a的地址端,初始化值為輸出值
· 將現(xiàn)態(tài)輸出與跳轉條件給到rom_b的地址端,初始化值為次態(tài)輸出
· 若狀態(tài)不多,可以將rom_a與rom_b合并成一個真雙口的rom
關于更多細節(jié)請參考如下相關文檔:
1.《基于FPGA的數字信號處理》 高亞軍 電子工業(yè)出版社
2.EF2_datahseet_V3.9
(免責聲明:本網站內容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網站出現(xiàn)的信息,均僅供參考。本網站將盡力確保所提供信息的準確性及可靠性,但不保證有關資料的準確性及可靠性,讀者在使用前請進一步核實,并對任何自主決定的行為負責。本網站對有關資料所引致的錯誤、不確或遺漏,概不負任何法律責任。
任何單位或個人認為本網站中的網頁或鏈接內容可能涉嫌侵犯其知識產權或存在不實內容時,應及時向本網站提出書面權利通知或不實情況說明,并提供身份證明、權屬證明及詳細侵權或不實情況證明。本網站在收到上述法律文件后,將會依法盡快聯(lián)系相關文章源頭核實,溝通刪除相關內容或斷開相關鏈接。 )