韓 笑 ,閆永立 ,2,李勇彬 ,馬嘉莉 ,2,吳 斌 ,2
(1.中國科學(xué)院大學(xué),北京 100049;2.中國科學(xué)院微電子研究所,北京 100029;3.湖南大學(xué),湖南 長沙 410082)
隨著現(xiàn)代社會數(shù)字化的高速發(fā)展,大容量數(shù)據(jù)存儲系統(tǒng)作為各個系統(tǒng)中的核心子部分,其重要性不言而喻,對數(shù)據(jù)處理的速度、實時性、穩(wěn)定性以及功耗等要求也越來越重要。市面上可供選的主流存儲器有FLASH,DRAM,SRAM等,而由于JEDEC標(biāo)準(zhǔn)的DDR SRAM系列存儲器相較于FLASH、DRAM,可以在時鐘雙沿工作,數(shù)據(jù)傳輸速率高,帶寬大,并且存儲相同數(shù)據(jù)量信息消耗更少晶體管,因此也有容量大、功耗低等優(yōu)點,特別適合對海量數(shù)據(jù)存儲的場景。鑒于DDR接口讀寫時序不是特別容易簡單實現(xiàn),這就推動了商家研發(fā)對用戶使用友好的存儲器控制器。控制器可以完成自動刷新、存儲器掉電重啟、讀寫時序控制等底層基本功能,使用者基于簡單控制器接口進行二次開發(fā),就可以向存儲器正確讀寫數(shù)據(jù)。這樣可以縮短開發(fā)周期,減少設(shè)計人員的工作量,簡化系統(tǒng)設(shè)計??紤]到DDR系列存儲器性價比等實際因素,設(shè)計選用DDR2作為緩存存儲器,使用Synopysy公司設(shè)計的DDR2 Controller商用IP[1]。在驗證硬件平臺方面,選用Altera公司StraixIII開發(fā)板外接DDR2 SDRAM內(nèi)存條。此外,因為產(chǎn)品接口標(biāo)準(zhǔn)不統(tǒng)一,為了在信號時序方面將Synopysy與Altera兩家廠商的存儲器控制器模塊與PHY模塊匹配,設(shè)計了專門接口轉(zhuǎn)換模塊。
綜合上述分析,文中在Stratix系列FPGA開發(fā)板上借助硬件描述語言設(shè)計了一套控制器用戶接口設(shè)計方案。
系統(tǒng)使用Altera公司開發(fā)的EDA軟件Quartus II例化的Uniphy IP[2]模塊作為PHY(Physical Layer Interface,物理層接口)層,整體架構(gòu)如圖1所示。
圖1 整體架構(gòu)圖
整體模塊一共包括四大模塊:
1)用戶接口模塊:上位機數(shù)據(jù)的接收、緩存,通過AXI 3.0協(xié)議[3]接口將配置信息、待存數(shù)據(jù)及相關(guān)控制命令發(fā)送給DDR2控制器模塊。
2)DDR2控制器模塊:上電后對存儲器進行一系列配置,完成初始化操作;在使用者進行數(shù)據(jù)讀寫任務(wù)時,將用戶單沿操作的數(shù)據(jù)鏈路通過電路轉(zhuǎn)換成符合存儲器雙沿數(shù)據(jù)的傳輸要求。在寫操作時將用戶發(fā)送過來的待發(fā)送數(shù)據(jù)以及數(shù)據(jù)寫傳輸控制信息,編碼成符合存儲器接口標(biāo)準(zhǔn)制定的寫操作指令,在讀操作時先將用戶側(cè)發(fā)來的讀地址、讀數(shù)據(jù)長度編碼成讀指令發(fā)送給存儲器,控制存儲器讀出相應(yīng)數(shù)據(jù),然后從存儲器反饋回的信息中解析出讀出的數(shù)據(jù)發(fā)送給用戶端??刂破髅扛粢欢螘r間都會啟動自動刷新命令,用于保證存儲器內(nèi)數(shù)據(jù)不丟失。
3)橋接模塊:主要負責(zé)Synopysy控制器IP與Altera Uniphy硬核IP接口信號轉(zhuǎn)換,實現(xiàn)不同時序要求的IP間信號正常交互。
4)PHY:使用Quartus II軟件提供Uniphy硬核IP作為PHY層,發(fā)送控制器信號和接收來自物理通路的信號[5-6]。
作為數(shù)據(jù)緩存系統(tǒng)的核心模塊之一,用戶接口模塊細分成控制邏輯模塊Cu、配置模塊、數(shù)據(jù)發(fā)送接收模塊等3個小模塊。
通過異步FIFO進行時鐘域隔離并將上位機指令信息緩存,控制邏輯模塊Cu負責(zé)協(xié)調(diào)配置模塊Configure和數(shù)據(jù)發(fā)送接收模塊Host的工作,分別啟動兩個模塊通過AXI 3.0協(xié)議接口與控制器模塊交互,交互內(nèi)容包括上位機提供的配置、控制命令及緩存數(shù)據(jù)等。
cal_success為Uniphy IP發(fā)出的校準(zhǔn)信號[7],為高電平時表示已完成PHY層校準(zhǔn),可以與存儲器進行數(shù)據(jù)傳輸。init為控制器IP模塊反饋的信號,為低電平時指DDR2 SDRAM與控制器已經(jīng)完成初始化操作。在控制器上電初始化期間根據(jù)用戶端配置指令安排,完成控制器工作模式設(shè)置、存儲器時序參數(shù)設(shè)定等任務(wù)[8]。
在完成PHY校準(zhǔn)和初始化操作以后,數(shù)據(jù)發(fā)送接收模塊Host就可以根據(jù)用戶端讀寫指令,在需要存入數(shù)據(jù)時發(fā)出寫操作指令,同時將要寫入存儲器的地址與待寫數(shù)據(jù)一并發(fā)出,與之類似,需要讀取數(shù)據(jù)時發(fā)送給控制器讀操作指令并將要讀取存儲器的地址信息一并發(fā)出。
由于DDR2操作流程復(fù)雜,因此要想正確地讀寫數(shù)據(jù),就需要遵循相應(yīng)JEDEC標(biāo)準(zhǔn)設(shè)計存儲器工作流程,圖2介紹了DDR2存儲器在工作時完整的狀態(tài)轉(zhuǎn)換[9-10],由該圖可以清楚地看到各狀態(tài)跳轉(zhuǎn)所需要的命令或者需滿足的條件。
狀態(tài)機描述了DDR2各個狀態(tài)的轉(zhuǎn)換以及轉(zhuǎn)換時所涉及的一些命令。DDR2控制器的設(shè)計實質(zhì)上是圍繞著該狀態(tài)機的設(shè)計進行的,以確保進行正常工作。
正如圖2所示,在用戶端發(fā)起讀寫操作前,需要存儲器在上電狀態(tài)下進行校準(zhǔn)和若干初始化過程。在這期間,根據(jù)用戶端配置要求,將控制器中對工作模式寄存器(MR)等多個配置寄存器進行設(shè)定。為了配置這些寄存器,用戶端需要提供CAS指令延遲、DRAM大小、DRAM數(shù)量、自刷新的周期等配置信息。只有在控制器初始化完成后,用戶端才可以對DDR2存儲器進行正式的讀寫任務(wù),并且由于DDR2的結(jié)構(gòu)特點,需先選定Bank以及該Bank下所在行(Bank地址和行地址同時發(fā)出)后,再選定列地址及發(fā)出讀寫指令。
圖2 DDR2簡單狀態(tài)轉(zhuǎn)換圖
橋接模塊處理Synopsys的Controller信號,根據(jù)不同的類別做處理(分成控制通路信號、寫數(shù)據(jù)通路、讀數(shù)據(jù)通路)以匹配UniPHY接口連接與時序[12],并增加UniPHY所需要的控制信號處理。兩家公司在PHY-Controller之間存在接口時序和連接的差別。
2.3.1 接口對比
Altera的UniPHY與controller之間的接口有自己定義的AFI接口規(guī)范,接口分類為SDR系列、MEM接口、時鐘及復(fù)位。
SynPHY的接口信號包括DLL的配置、IO的配置及控制、SDR系列(和Altera的部分相似,還有一些時序上不同)、PHY的配置部分、MEM接口。
2.3.2 工作模式對比
Altera controller工作方式主要有Half rate與Full rate模式,在Full rate模式時,和Synopsys的模式相似,即Local側(cè)、Controller側(cè)與Memory側(cè)工作時鐘相同,單沿觸發(fā)(均在上升沿工作),數(shù)據(jù)位寬是Memory側(cè)的兩倍。
2.3.3 時鐘域?qū)Ρ?/p>
從時鐘域看(full rate前提下)[13],Altera UniPHY提供給Memory和Local、Controller側(cè)的時鐘同頻同相,而SynPHY的是同頻不同相,Memory側(cè)的時鐘要滯后 90°。
2.3.4 接口時序?qū)Ρ?/p>
1)指令與地址不同,Synopsys指令持續(xù)時間為兩個clock,而Altera相同功能指令只維持一個clock,指令格式相同,連續(xù)的寫指令之間Synopsys夾的是nop指令,Altera的是 deselect device指令[14]。
2)都是通過數(shù)據(jù)有效信號標(biāo)志輸入數(shù)據(jù)有效及維持的時間。
3)Synopsys中沒有類似的afi_dqs_burst信號,UniPHY中afi_dqs_burst必須比afi_wdata_valid信號提前一個周期到達。
4)Memory側(cè),Altera的 UniPHY命令和SynPHY的一致。
5)對于寫數(shù)據(jù)和寫數(shù)據(jù)有效信號的延遲,UniPHY中根據(jù)afi_wlat需要調(diào)整數(shù)據(jù)相對于指令的延遲,范圍為0~63。
Synopsys中的數(shù)據(jù)與指令的時序關(guān)系是固定的,相當(dāng)于Altera的afi_wlat=0情況。
PHY指的是DDR2控制器和DDR2存儲芯片之間的電路部分,保證讀寫過程中DQS信號能夠以精確的相位偏移發(fā)送和采集數(shù)據(jù)[15],目的是實現(xiàn)數(shù)據(jù)高速穩(wěn)定地傳輸。
文中基于Intel的EP3SL150F1152C2器件進行了設(shè)計實現(xiàn),并在Intel FPGA Stratix III開發(fā)板上進行功能驗證。
Modelsim仿真AXI突發(fā)長度為1,大小為4 kB數(shù)據(jù)的測試案例,讀寫命令正確寫入,讀出數(shù)據(jù)結(jié)果正確,如圖3所示。
圖3 仿真測試
多組測試案例如表1所示。
表1 測試案例
利用Quartus II 13.1 EDA工具進行了綜合、時序約束、生成網(wǎng)表等。處理后綜合結(jié)果如圖4所示,報告表明,系統(tǒng)可以達到200 MHz頻率設(shè)計要求。
在進行系統(tǒng)硬件功能驗證時,使用ROM IP預(yù)先存入待存數(shù)據(jù)代替上位機指令緩存FIFO,使用SignalTap導(dǎo)出讀出數(shù)據(jù)文件,并與寫入數(shù)據(jù)文件對比,結(jié)果正確。
針對現(xiàn)代數(shù)據(jù)緩存系統(tǒng)的要求,文中在Stratix系列FPGA開發(fā)板上借助硬件描述語言設(shè)計了一套控制器用戶接口設(shè)計方案。保證數(shù)據(jù)實時緩存。使用硬件語言實現(xiàn)了用戶接口模塊和橋接模塊的設(shè)計,解決了控制器與PHY層的接口匹配問題,達到了大批量連續(xù)數(shù)據(jù)讀寫存儲的目的。最后通過FPGA完成了對系統(tǒng)整體的功能驗證。
圖4 綜合報告