基于FPGA技術(shù)的存儲器設計及其應用
復雜可編程邏輯器件—FPGA技術(shù)在近幾年的電子設計中應用越來(lái)越廣泛。FPGA具有的硬件邏輯可編程性、大容量、高速、內嵌存儲陣列等特點(diǎn)使其特別適合于高速數據采集、復雜控制邏輯、精確時(shí)序邏輯等場(chǎng)合的應用。而應用FPGA中的存儲功能目前還是一個(gè)較新的技術(shù)。本文將介紹在FPGA中構造存儲器的方法,特別是結合高速數據采集的特點(diǎn)重點(diǎn)描述雙端口RAM的構造方法及其應用。
本文引用地址:http://dyxdggzs.com/article/148988.htm在FPGA中構造存儲器
許多系列的FPGA芯片內嵌了存儲陣列,如ALTERA EPlK50芯片內嵌了5K字節的存儲陣列。因此,在FPGA中實(shí)現各種存儲器,如單/雙端口RAM、單/雙端口ROM、先進(jìn)先出存儲器FIFO等非常方便,而且具有諸多優(yōu)點(diǎn)。其硬件可編程的特點(diǎn)允許開(kāi)發(fā)人員靈活設定存儲器數據的寬度、存儲器的大小、讀寫(xiě)控制邏輯等,尤其適用于各種特殊存儲要求的場(chǎng)合。FPGA/FPGA器件可工作于百兆頻率以上,其構造的存儲器存取速度也可達百兆次/秒以上,這樣構成的高速存儲器能夠勝任存儲數據量不太大,但速度要求很高的工作場(chǎng)合。
FPGA中構造存儲器主要有兩種方法實(shí)現。一是通過(guò)硬件描述語(yǔ)言如VHDL、AHDL、Verilog HDL等編程實(shí)現。二是調用MAX+PLUSⅡ自帶的庫函數實(shí)現。調用庫函數方法構造存儲器較硬件描述語(yǔ)言輸入方式更為方便、靈活、快捷和可靠,故也更常用之。
利用庫函數構造雙端口RAM
在MAX+PLUSⅡ中有幾個(gè)功能單元描述庫。prim邏輯元庫,包括基本邏輯單元電路,如與、或、非門(mén),觸發(fā)器、輸入、輸出引腳等;mf宏功能庫,包括TTL數字邏輯單元如74系列芯片;而下文將要詳細介紹的參數化雙端口RAM模塊所在的參數化模塊庫(mega-lpm)中,包括各種參數化運算模塊(加、減、乘、除)、參數化存儲模塊(單、雙端口RAM、ROM、FIFO等)以及參數化計數器、比較器模塊等等。庫中的這些元件功能邏輯描述經(jīng)過(guò)了優(yōu)化驗證,是數字電路設計中的極好選擇。
mega-lpm庫中共有五種參數化雙端口RAM模塊:ALTDPRAM、LPM_RAM_DP、CSDPRAM、LPM_RAM_DQ和LPM_RAM_IO。其中ALTDPRAM和LPM_RAM_DP模塊讀寫(xiě)有兩套總線(xiàn),讀和寫(xiě)有各自的時(shí)鐘線(xiàn)、地址總線(xiàn)、數據總線(xiàn)和使能端,可同時(shí)進(jìn)行讀寫(xiě)操作。除此之外,ALTDPRAM模塊還有一個(gè)全局清零端口。CSDPRAM模塊則有a、b兩組寫(xiě)端時(shí)鐘線(xiàn)、地址總線(xiàn)、數據總線(xiàn)和使能端,可同時(shí)對RAM進(jìn)行寫(xiě)操作,但對RAM讀、寫(xiě)只能分時(shí)進(jìn)行。LPM_RAM_DQ模塊相對簡(jiǎn)單,讀與寫(xiě)共用一組地址總線(xiàn),有各自的數據線(xiàn)和時(shí)鐘線(xiàn)。LPM_RAM_IO模塊只有一組地址總線(xiàn)和數據總線(xiàn)。
mega-1pm函數庫中的雙端口RAM模塊全是參數化調用,這為設計帶來(lái)極大的方便。通過(guò)對各種參數的取舍、參數設置和組合,再結合讀寫(xiě)控制邏輯就可以構造出設計需要的存儲器模塊。雙端口RAM常見(jiàn)的應用模式主要有以下兩種:
1.存儲器映像方式。該方式可以隨意對存儲器的任何單元進(jìn)行讀寫(xiě)操作。其主要應用于多CPU的共享數據存儲、數據傳送等。該方式中,讀、寫(xiě)控制線(xiàn)、地址總線(xiàn)和數據總線(xiàn)有兩套。根據兩端口之間數據的傳送方向為單向或雙向,又有單向數據總線(xiàn)和雙向數據總線(xiàn)之分。
2.順序寫(xiě)方式。該方式對RAM的寫(xiě)操作只能順序寫(xiě)入。這種情況適用于對象特性與時(shí)間緊密相關(guān)或傳送數據與順序密切相關(guān)的場(chǎng)合,如文件傳送、時(shí)序過(guò)程、波形分析等。根據寫(xiě)控制邏輯的不同,可對RAM進(jìn)行循環(huán)寫(xiě)入或一次寫(xiě)入方式。該方式下的讀操作可以是存儲器映像讀或順序讀,前一種有較大的靈活性,而后一種則類(lèi)似于FIFO形式。
在讀、寫(xiě)使用獨立的地址總線(xiàn)和數據總線(xiàn)時(shí),可以同時(shí)對RAM不同單元進(jìn)行讀寫(xiě)操作。根據不同控制邏輯的要求,對讀寫(xiě)時(shí)鐘、時(shí)鐘使能端口可以適時(shí)設置,以滿(mǎn)足控制需要。
下面以L(fǎng)PM_RAM_DP模塊為例介紹庫函數法構造雙端口RAM的步驟。
首先在MAX+PLUSⅡ中建立一個(gè)圖形編輯文件。雙擊文件任意空白處彈出庫函數選擇窗口。然后從mega-lpm庫中選擇LPM_RAM_DP模塊。
在LPM_RAM_DP模塊中共有9個(gè)可配置參數:
LPM_FILE——指定存儲器的初始化數據文件;
LPM_INDATA——選擇輸入數據采用寄存方式還是非寄存方式;
LPM_NUMWORDS——設置存儲器的深度(大?。?;
LPM_OUTDATA——選擇輸出數據采用寄存方式還是非寄存方式;
LPM_RDADDRESS_CONTROL——決定讀地址控制信號是寄存方式還是非寄存方式;
LPM_WIDTH——設置存儲數據寬度;
LPM_WIDTHAD——設置地址總線(xiàn)寬度;
LPM_WRADDRESS_CONTROL——選擇寫(xiě)地址控制信號是寄存方式還是非寄存方式;
USE_EAB——決定是否使用嵌入式陣列塊。
雙擊雙端口RAM參數列表可彈出引腳/參數設置窗口。在引腳/參數設置窗口可以具體對雙端口RAM進(jìn)行引腳、參數設置??梢愿鶕唧w的對存儲器的功能要求,決定各種口線(xiàn)的使用與否。例如不想使用rdclken(讀時(shí)鐘使能)信號,則可以將其Status設置為Unused即可。同時(shí)還可以通過(guò)Inversion項設定該信號的初始狀態(tài)(初始值)。在窗口的Parameters參數設置處,選擇不同的參數項后,通過(guò)ParameterValue項可以改變或設置其相應的狀態(tài)或數值。如想設置存儲數據為8位寬度,則選擇LPM_WIDTH項,然后將Parameter Value設置為8。
例如要設計一個(gè)11位寬數據,512個(gè)存儲單元,使用讀寫(xiě)同步時(shí)鐘、不需要讀寫(xiě)使能端及時(shí)鐘使能端的雙端口RAM。則可以打開(kāi)引腳/參數設置窗口,設置LPM_NUMWORDS為512,LPM_WIDTH為11,LPM_WIDTHAD為9,LPM_INDATA、LPM_OUTDATA、LPM_RDADDRESS_CONTROL和LPM_WRADDRESS_CONTROL為寄存方式,使用嵌入式陣列;rdaddress、rdclock、data、wraddress、wrclock、q為Used,rden、rdclken、wren、wrclken為Unused。
評論