楊 斌,段哲民,高 峰
(西北工業(yè)大學(xué) 電子信息學(xué)院,陜西 西安 710129)
現(xiàn)如今,隨著電子技術(shù)和通信技術(shù)的飛速發(fā)展,電路設(shè)計對存儲器的要求也越來越高,其主要體現(xiàn)在對存儲器的容量和存儲操作速度兩個方面。鑒于此,JEDEC定義了DDR2[1]SDRAM技術(shù)標(biāo)準(zhǔn)[2],其以低能耗、低發(fā)熱量、高密度以及高頻率成為了現(xiàn)代存儲技術(shù)的核心器件。DDR2自身的工作頻率可以達(dá)到677 MHz,幾乎可以滿足所有電路設(shè)計的要求。而這也就使得整個電路設(shè)計的頻率瓶頸出現(xiàn)在了用戶設(shè)計部分與DDR2存儲器之間的邏輯上,主要是因為DDR2本身的結(jié)構(gòu)特性使得DDR2的操作時序很復(fù)雜苛刻。而這之間的部分又主要分為DDR2存儲控制器和用戶接口部分[3]?,F(xiàn)如今已經(jīng)有了很多的廠家在生產(chǎn)DDR2存儲控制器,其中以XILINX公司設(shè)計的DDR2存儲控制器效率最高使用最為廣泛,該存儲控制器的單獨操作頻率非常高,完全不會影響DDR2存儲器的操作,因此這又將整個電路系統(tǒng)的頻率瓶頸縮小到了用戶接口部分。用戶接口的設(shè)計有很多種方案,而FPGA以其高速度、豐富的片上資源、靈活的設(shè)計以及簡單方便的調(diào)試特性成為了用戶接口設(shè)計的必然選擇。
DDR2存儲器一般作為片上系統(tǒng)的輔助器件,其應(yīng)用的一般模式如圖1所示。
圖1 DDR2存儲器一般的應(yīng)用模式框圖Fig.1 Block diagram of DDR2 memory general application model
用戶設(shè)計部分是整個片上系統(tǒng)的核心,主要是完成系統(tǒng)要實現(xiàn)的所有任務(wù),對整個系統(tǒng)進(jìn)行整體的調(diào)度和控制。
用戶接口部分主要是接收用戶設(shè)計部分傳送的操作數(shù)據(jù),以及與這些操作數(shù)據(jù)相對應(yīng)的控制指令,之后將這些數(shù)據(jù)進(jìn)行整理,然后按照一定的時序要求發(fā)出。如果操作的是多路不同種類的數(shù)據(jù)時,則還要將這多路數(shù)據(jù)進(jìn)行仲裁,保證所有數(shù)據(jù)都不會被發(fā)錯或者丟失。
DDR2存儲控制器主要是接收用戶接口部分發(fā)給的特定的讀寫操作控制指令和已經(jīng)整理好的數(shù)據(jù),將這些指令進(jìn)行進(jìn)一步的解析,最后將經(jīng)過解析產(chǎn)生的那些DDR2存儲器硬件可以識別的信號以及與讀寫有效信號有關(guān)的寫數(shù)據(jù)輸出給DDR2,讀數(shù)據(jù)從DDR2存儲器中讀回。
DDR2存儲器主要是按照讀寫有效信號將要處理的數(shù)據(jù)進(jìn)行讀出和寫入操作。
用戶接口設(shè)計的原理如圖2所示。
其主要包括寫數(shù)據(jù)通路、讀數(shù)據(jù)通路以及接口控制3大模塊。
圖2 用戶接口設(shè)計的原理框圖Fig.2 Principle block diagram of user interface design
寫數(shù)據(jù)通路按照輸入存儲器路數(shù)的不同分為以下兩種:只有一路數(shù)據(jù)輸入時只有控制模塊和地址計算模塊;當(dāng)有多路數(shù)據(jù)輸入時,不僅有控制模塊和地址計算模塊還有仲裁模塊。
控制模塊主要是將輸入的數(shù)據(jù)進(jìn)行一次2乒乓操作的緩存,再將緩存后的數(shù)據(jù)拼接成64位數(shù)據(jù),之后在仲裁模塊允許該路數(shù)據(jù)寫操作時將這些數(shù)據(jù)發(fā)送給仲裁模塊。
地址計算模塊主要是計算每路信號的每個數(shù)據(jù)的存儲地址,由于每路數(shù)據(jù)都是不同數(shù)據(jù)類型的,因此必須要將每路地址的計算與其數(shù)據(jù)嚴(yán)格地對應(yīng)起來,要正確的保存好每次寫數(shù)據(jù)操作的地址,以便產(chǎn)生下次操作的正確地址。
仲裁模塊主要是保證多路數(shù)據(jù)對DDR2控制器的訪問可以正確進(jìn)行。DDR2存儲控制器采用的是高效的burst操作[4](對于本設(shè)計采用的是burst為30),也就是在一次讀操作或者是寫操作的過程中要連續(xù)處理burst長度所定義的數(shù)據(jù)個數(shù)(在本設(shè)計中每次讀寫操作要完成30個64位數(shù)據(jù)的讀出或?qū)懭耄?。這樣在一次請求操作被響應(yīng)之后,在接下來的15個周期只能傳輸這路數(shù)據(jù),在將這路數(shù)據(jù)傳輸完成之前不能再響應(yīng)其他路數(shù)據(jù)的操作請求,這樣就有可能導(dǎo)致其他多路數(shù)據(jù)的操作請求在本次操作結(jié)束之后同時到來,這樣就要求仲裁模塊必須要很好地控制每路數(shù)據(jù)之間的操作順序,使得多路信號對存儲器的訪問機(jī)率大致相同。鑒于此,本設(shè)計中采用了輪詢的機(jī)制[5]。
讀通路和寫通路基本類似,只是讀通路不需要對數(shù)據(jù)進(jìn)行拼接,相反的需要對數(shù)據(jù)進(jìn)行拆分,將DDR2存儲器輸出的64位數(shù)據(jù)拆分成原始輸入時的數(shù)據(jù),并將這些數(shù)據(jù)存入讀操作端的FIFO中。這樣在外部請求數(shù)據(jù)數(shù)據(jù)時,若要求的數(shù)據(jù)已經(jīng)在FIFO中則直接將數(shù)據(jù)輸出即可,不需要再向DDR2存儲控制器請求,若要求的數(shù)據(jù)還沒在FIFO中則要先向DDR2存儲控制器請求數(shù)據(jù),將數(shù)據(jù)存入該FIFO,之后再將FIFO中本次要求讀出的數(shù)據(jù)輸出。
接口控制模塊主要是接收寫通路的寫操作請求信號以及它對應(yīng)的地址信號和數(shù)據(jù)信號,讀通路的讀操作請求信號以及它對應(yīng)的地址信號,并將這些信號按照DDR2存儲控制器的時序要求發(fā)送給DDR2存儲控制器,之后再接收DDR2存儲控制器發(fā)回的讀數(shù)據(jù)。DDR2存儲控制器的讀寫操作時序如圖3所示[6]。
圖3 DDR2存儲控制器的讀寫時序Fig.3 Read and write timing of DDR2 memory controller
對本設(shè)計的驗證采用的是6路8位數(shù)據(jù)以27 MHz的頻率寫入讀出操作。對其進(jìn)行整體讀寫仿真的時序結(jié)果如圖4所示。
由該圖可知,當(dāng)將數(shù)據(jù)寫入到DDR2中的數(shù)量到達(dá)一定程度時,開始向向外讀出數(shù)據(jù),寫入的時序和讀出的時序整體上符合設(shè)計要求。
圖4 整體讀寫時序Fig.4 Overall read and write timing
對讀寫操作的具體仿真時序如圖5所示。
由該圖可知,寫操作時的各種控制指令以及地址和數(shù)據(jù)的發(fā)送都是完全正確的;讀操作時的各種控制指令以及地址和數(shù)據(jù)的發(fā)送也是完全正確的。
對該設(shè)計采用XILINX Spartan6系列的xc6slx16-2ftg256器件進(jìn)行綜合,其結(jié)果如圖6所示。
圖5 具體讀寫時序Fig.5 Specific read and write timing
圖6 綜合結(jié)果Fig.6 Synthesis result
由該圖可知該設(shè)計使用的邏輯資源相當(dāng)小,其中寄存器還不到總數(shù)的百分之一,查找表也只使用了總數(shù)的百分之二。
在一般情況下,DDR2的硬件存儲速率很快,其會等待存儲控制器發(fā)送下一個操作指令,而DDR2存儲控制器的操作指令是由用戶接口發(fā)出的,因此可以提出以下改進(jìn)方案??梢栽诖鎯刂破髑岸颂砑佣鄠€FIFO,將與操作有關(guān)的所有指令、地址以及數(shù)據(jù)對應(yīng)起來存入這些FIFO中,這樣等到DDR2存儲控制器將本次操作完成之后自動將所有FIFO中與下次操作有關(guān)的指令和數(shù)據(jù)讀出,直接進(jìn)行下一次DDR2的操作,與此同時用戶接口部分在這些FIFO沒滿的情況下,還仍然向這些FIFO中寫入要操作的所有指令和數(shù)據(jù)。
由以上仿真結(jié)果可知,該設(shè)計在整個設(shè)計讀寫頻率很高時仍然可以保證所有數(shù)據(jù)的正確操作,不會存在數(shù)據(jù)的丟失或者錯誤。由以上綜合結(jié)果可知,該設(shè)計占用的FPGA片上資源很少[7],運(yùn)行頻率很高,基本可以滿足所有設(shè)計的要求。因此可知,該設(shè)計具有很高的工作頻率,解決了電路設(shè)計中DDR2存儲器讀寫操作頻率的瓶頸問題,使得整個設(shè)計的工作效率得到很大的提高。
[1]羅朝霞,高書莉.CPLD/FPGA設(shè)計及應(yīng)用[M].北京:人民郵電出版社,2007.
[2]Hynix DDR2 SDRAM Device Operation&Timing Diagram[D].Hynix Semiconducter Inc,2004.
[3]Janzen J.DDR2 Offers New Features and Functionality[M].Micron Technology,2003.
[4]鄧麗.高帶寬低延時的DDR2內(nèi)存控制器的研究與實現(xiàn)[D].長沙:國防科學(xué)技術(shù)大學(xué),2006.
[5]張凱,李云崗.基于AMBA總線的DDR2 SDRAM控制器研究與實現(xiàn)[J].微電子學(xué)與計算機(jī),2005,22(9):117-119,122.ZHANG Kai,LI Yun-gang.Based on the AMBA bus DDR2 SDRAM Controller[J].Microelectronics and Computer,2005,22(9):117-119,122.
[6]趙天云,王洪迅.DDR2 SDRAM控制器的設(shè)計與實現(xiàn)[J].微電子學(xué)與計算機(jī),2005(3):203-207.ZHAOTian-yun,WANGHong-xun.Design and implementation of DDR2 SDRAM controller[J].Microelectronics and Computer,2005(3):203-207.
[7]須文波,胡丹.DDR2 SDRAM控制器的FPGA實現(xiàn)[J].江南大學(xué)學(xué)校:自然科學(xué)版,2006,5(2):145-148.XU Wen-bo,HU Dan.FPGA implementation of the DDR2 SDRAM Controller [J].Journal of Southern Yangtze University:Natural Science Edition,2006,5(2):145-148.