DDR3存儲器接口控制器IP加速了數據處理應用
DDR3存儲器系統可以大大提升各種數據處理應用的性能。然而,和過(guò)去幾代(DDR和DDR2)器件相比,DDR3存儲器器件有了一些新的要求。為了充分利用和發(fā)揮DDR3存儲器的優(yōu)點(diǎn),使用一個(gè)高效且易于使用的DDR3存儲器接口控制器是非常重要的。視屏處理應用就是一個(gè)很好的示例,說(shuō)明了DDR3存儲器系統的主要需求以及在類(lèi)似數據流處理系統中DDR3接口所需的特性。
本文引用地址:http://dyxdggzs.com/article/201706/349327.htm視頻處理系統將對于數據帶寬的要求推高到了極致:系統可以處理越多的數據,就具有越高的性?xún)r(jià)比。視頻聚合器和路由器可并行處理多個(gè)視頻流,因此對于匹配數據處理能力和視頻帶寬的需求就成為了設計的一大挑戰。FPGA可通過(guò)在單個(gè)FPGA中實(shí)現多個(gè)視頻處理器來(lái)提供強大的處理能力。那么現在的挑戰就變成了要使數據盡快且高效地從FPGA進(jìn)出。DDR3存儲器系統在大多數情況下可以為這些基于FPGA的系統提供足夠的帶寬。
視頻處理設計說(shuō)明
我們的目標視頻處理設計將同時(shí)處理四個(gè)視頻源,將視頻數據轉換和壓縮為一種可以通過(guò)PCI Express接口傳輸到存儲器hub的格式。系統的主要功能塊如圖1所示。
圖1:視頻處理器框圖
FPGA獲取并緩存四個(gè)視頻源的數據流。這些FIFO緩沖器由DDR3存儲器控制器清空并保存在DDR3存儲器中。一旦一個(gè)完整的視頻數據包存儲完畢,視頻處理器會(huì )向DDR3存儲器控制器申請數據,存儲器控制器讀取數據并將其傳到視頻處理器。視頻處理器對視頻數據進(jìn)行格式化和壓縮,并通過(guò)DDR3存儲器控制器寫(xiě)回存儲器。當一個(gè)視頻數據包全部處理完畢,并準備通過(guò)PCI Express接口進(jìn)行傳輸,DDR3存儲器控制器從視頻處理器獲取數據并將其傳到PCI Express接口。
DDR3存儲器接口控制器概述
從零開(kāi)始設計一個(gè)DDR3存儲器控制器是非常困難的。需要考慮許多特性之間的權衡和互相影響。使用一個(gè)經(jīng)驗證的IP核可以省去了大量的開(kāi)發(fā)、測試和調試時(shí)間,否則就需要花費許多時(shí)間來(lái)進(jìn)行in-house設計開(kāi)發(fā)。一個(gè)經(jīng)驗證的IP核還可以減少后續支持的負擔,因為這將由專(zhuān)門(mén)的開(kāi)發(fā)人員來(lái)支持。最重要的是,使用一個(gè)經(jīng)驗證的IP核可以使設計師將精力集中在其設計的獨特特性上,從而向最終客戶(hù)交付高價(jià)值的產(chǎn)品設計。例如,LatticeECP3 DDR3存儲器控制器IP核已經(jīng)通過(guò)了一個(gè)第三方驗證套件的驗證。該IP核使用LatticeECP3 I/O協(xié)議板來(lái)實(shí)現并通過(guò)全部測試。
圖2展示了一個(gè)存儲器控制器的框圖。圖最上面的配置接口用于設置設計的各個(gè)選項。DDR3 I/O模塊使用I/O 基元來(lái)實(shí)現。指令譯碼模塊根據每個(gè)bank和每一行,對用戶(hù)指令進(jìn)行譯碼,產(chǎn)生內部存儲器指令序列。指令應用模塊將每條指令序列轉換為滿(mǎn)足目標存儲器件功能和時(shí)序要求的存儲器指令。數據通路模塊與DDR3 I/O模塊連接,并且在讀操作時(shí)產(chǎn)生讀數據和讀取數據有效信號。讀數據偏移校正模塊對齊每一條8位數據線(xiàn)上的數據,調整任何可能的時(shí)鐘偏移。這使得用戶(hù)端的讀數據總線(xiàn)與系統時(shí)鐘準確校準。寫(xiě)調整模塊為了正確的捕獲數據,調整了DQS對CK的關(guān)系。ODT塊通過(guò)為任意或所有DDR3 SDRAM器件提供單獨的終端阻抗控制,提高了存儲器通道的信號完整性。
圖2:DDR3存儲器控制器IP核框圖
DDR3存儲器控制器應支持廣泛的存儲器速率和配置,以滿(mǎn)足各種應用需求。例如,Lattice ECP3 DDR3存儲器控制器支持高達800Mb/s的DDR3器件速率,8至64位的存儲器數據通道(帶有x8或x16 DDR3器件),并且同時(shí)支持雙列直插式存儲器塊(Dual Inline Memory Modules,DIMM)和單個(gè)存儲器的器件。
DDR3存儲器控制器必須為各種存儲器訪(fǎng)問(wèn)實(shí)現不同的時(shí)序要求。一些要求對于我們的目標應用來(lái)說(shuō)非常重要,包括以下幾個(gè)方面:
DDR3存儲器使用“類(lèi)似cache”的bank進(jìn)行組織,每個(gè)器件帶有8個(gè)bank。訪(fǎng)問(wèn)最近工作(打開(kāi))的bank比訪(fǎng)問(wèn)未工作的(關(guān)閉)的bank速度快。 可使用4位、8位或交叉存取方式進(jìn)行突發(fā)(burst)模式讀訪(fǎng)問(wèn)。 根據存儲器速率和用戶(hù)設置,CAS和寫(xiě)延遲都是可變的。從讀請求轉換為寫(xiě)請求需要額外的延遲時(shí)間,因為雙向的數據總線(xiàn)必須改變傳輸方向。
針對視頻處理的IP核實(shí)現
為了使存儲器數據帶寬和效率最大化,針對視頻處理設計的IP核實(shí)現需根據DDR3存儲器特性使用相匹配的算法。下面列出了一些重要的實(shí)現考慮。
使用突發(fā)(Burst)模式的數據訪(fǎng)問(wèn)
DDR3存儲器可通過(guò)突發(fā)模式訪(fǎng)問(wèn),突發(fā)模式在數據以數據塊形式存放(如視頻處理應用)的應用中是非常有效的。同樣,通過(guò)將視頻數據以?xún)?yōu)化的方式放入8個(gè)bank中,數據傳輸帶寬和之后的數據處理率可維持在一個(gè)高速的水平。在我們的示例中有4個(gè)視頻源,因此如果我們?yōu)槊總€(gè)視頻源使用2個(gè)bank(一個(gè)用作存儲緩沖器,另一個(gè)用作處理緩沖器),這將使DDR3保持高傳輸效率。高效的DDR3存儲器控制器應當基于每個(gè)bank的狀態(tài),使用最快的訪(fǎng)問(wèn)時(shí)間處理突發(fā)讀和寫(xiě)。此外,視頻處理器將事務(wù)分組,使總線(xiàn)換向時(shí)間最小化并進(jìn)一步提高存儲器帶寬。
更高帶寬的數據緩沖分配
來(lái)自視頻源1的數據可通過(guò)FIFO讀取并存儲到DDR3存儲器中的Bank 1。這將是一個(gè)只寫(xiě)操作,可以使用突發(fā)模式來(lái)保持傳輸的高效。一旦一個(gè)數據包保存到Bank 1,視頻處理器可從Bank 1讀出數據,對其進(jìn)行操作并存入Bank 2。這些操作都可使用突發(fā)模式,因此總線(xiàn)換向的花銷(xiāo)僅占用存儲器帶寬的很小的百分比。一旦Bank 2中的數據經(jīng)過(guò)處理后可被讀出,還是使用突發(fā)模式,然后發(fā)送到PCI Express接口,再傳輸到hub。盡可能地保持存儲器bank為打開(kāi)狀態(tài)可使得控制器使用最短的存儲器訪(fǎng)問(wèn)時(shí)間,從而提高了效率。
使用交叉存取的并行數據處理
數據讀可在bank之間切換或交叉存取,而無(wú)需大量延遲或總線(xiàn)換向時(shí)間。因此,只要處理硬件能夠支持,多個(gè)視頻流可通過(guò)視頻處理器同時(shí)處理。當處理好的數據寫(xiě)回DDR3存儲器時(shí),多個(gè)寫(xiě)操作也可以通過(guò)交叉存取來(lái)提高帶寬。一個(gè)易于使用和可預測的存儲器控制器,如:ECP3 DDR3存儲器控制器,在用戶(hù)基于其對數據處理的基本算法的了解的情況下來(lái)分配存儲器緩沖區時(shí),可以最小的硬件和軟件開(kāi)銷(xiāo)來(lái)實(shí)現最大的帶寬。
刷新和初始化
因為DDR3存儲器中的數據必須定期進(jìn)行刷新,一些存儲器訪(fǎng)問(wèn)必須分配給刷新操作。DDR3控制器應支持自動(dòng)刷新指令隊列,它可能是深度為8的指令集,可以作為一個(gè)指令組來(lái)執行,以使效率最大化。DDR3器件的初始化過(guò)程是非常繁復的并且很容易出錯,特別是在手動(dòng)執行時(shí)。DDR3控制器的初始化模塊應該通過(guò)與用戶(hù)邏輯的一次簡(jiǎn)單的握手,自動(dòng)初始化存儲器,從而極大地簡(jiǎn)化了接口設計。
流水線(xiàn)的指令處理
存儲器控制器應當使用指令流水線(xiàn)來(lái)提高吞吐率,在當前指令出現在存儲器接口時(shí),譯碼隊列中的下一條指令。這種方法提供了高于雙周期存儲器控制器100%的吞吐量。
功耗管理
在一些DDR3應用中,功耗管理可能是一個(gè)需要考慮問(wèn)題。在一些設計中,使用Power Down指令是非常有用的。該指令在沒(méi)有數據訪(fǎng)問(wèn)需求的時(shí)候,降低功耗。在power down狀態(tài)下,器件功耗的降低可達90%。萊迪思DDR3存儲器控制器支持該指令。此外,萊迪思ECP3為帶有SERDES和高速接口,如DDR3存儲器控制器的應用提供最低功耗的可編程解決方案。
設計和驗證流程
DDR3存儲器控制器IP核必須易于配置、生成并應用到一個(gè)目標設計中。使用圖形化用戶(hù)界面(GUI)來(lái)配置各種DDR3控制器參數是一種簡(jiǎn)便的方法,為目標系統快速創(chuàng )建正確的控制器。所有的參數都需要確定,如:存儲器寬度、深度、速度和延遲。每一類(lèi)配置參數都有其獨立的選項卡,有助于將設計任務(wù)分為一個(gè)個(gè)可管理的“任務(wù)塊”。一旦參數選定,生成代碼(用VHDL或Verilog)和生成相應的測試基準應當是比較容易的。
例如,萊迪思IPexpress工具只需三個(gè)步驟,如圖3所示,在ispLEVER設計軟件中創(chuàng )建ECP3 DDR3存儲器控制器IP核:
1)從萊迪思網(wǎng)站下載IPexpress工具并將IP核導入。
2)IP核參數可通過(guò)每個(gè)配置組對應的選項卡進(jìn)行選擇,配置組有:類(lèi)型、設置、時(shí)序、引腳和設計工具。
3)基于Verilog或VHDL的IP核和測試基準一起生成,包括頂層、監視器、指令生成器、用于A(yíng)ldec或ModelSim的配置和腳本文件。
圖3:下載、配置和生成IP核設計流程
小結
在數據處理應用的設計中,如本文中視頻處理的例子,當存儲器具有足夠的帶寬時(shí),可以充分利用FPGA的并行處理能力的優(yōu)勢。DDR3存儲器具有靈活、易于使用的存儲器控制器,如:萊迪思ECP3 DDR3存儲器控制器IP核,加上正確使用突發(fā)模式訪(fǎng)問(wèn)、數據緩沖器分配和存儲器交叉存取可以大大加快數據處理速度。此外,一個(gè)經(jīng)驗證的IP核與可靠的設計和驗證環(huán)境也加速了這些應用的上市。
評論