張玉平, 葉圣江
(1. 成都工業(yè)學院 通信工程學院, 成都 611730; 2. 成都盟升科技有限公司 遙感事業(yè)部, 成都 611731)
基于FPGA的虛擬FIFO改進設計*
張玉平1, 葉圣江2
(1. 成都工業(yè)學院 通信工程學院, 成都 611730; 2. 成都盟升科技有限公司 遙感事業(yè)部, 成都 611731)
為了降低網(wǎng)絡接口緩存設計的開發(fā)難度和復雜度,對現(xiàn)有基于FPGA的DDR2虛擬FIFO設計進行了改進.提出了以FPGA(EP4CGX150F672)為核心、DDR2(MT47H128M16RT-25E)為數(shù)據(jù)緩存、采用Qsys系統(tǒng)互聯(lián)及IPCORE輔助搭建設計的改進方案,實現(xiàn)了DVB-IP分組TS流的快速緩存,平滑IP網(wǎng)絡抖動,避免了數(shù)據(jù)碼流丟失和延遲過大的問題.該設計方案在降低傳統(tǒng)設計難度和復雜度的背景下,具有良好的存儲器兼容性,同時具有系統(tǒng)資源豐富、容量大、成本低和開發(fā)周期短等優(yōu)點,在眾多DVB行業(yè)的設備中使用后效果良好.
現(xiàn)場可編程門陣列; 雙倍速率; 先入先出隊列; 系統(tǒng)互聯(lián); 知識產(chǎn)權(quán)核; 網(wǎng)絡抖動; 碼流; 節(jié)目參考時鐘
目前,在DVB業(yè)界中的網(wǎng)關(guān)、加擾機、編碼機及調(diào)制解調(diào)設備等采用千兆級以太網(wǎng)作為交互接口,要完成大容量數(shù)據(jù)簡單方便的緩存,大多采用板載FIFO、SRAM、SDRAM或DDR顆粒芯片的方案[1-3],而在一些對存儲資源要求不高但是對存儲響應速度要求高的應用中[4],大多使用FPGA內(nèi)部的存儲器資源.這些方案都有一個共同點,即存儲容量有限,在大容量實時數(shù)據(jù)緩存的實際應用中,其往往會成為制約性能提高的因素.以Cypress推出的板載FIFO顆粒芯片為例,現(xiàn)階段單顆芯片的容量僅為72 Mb,而Micron推出的SDRAM顆粒芯片容量也僅能做到512 Mb[5].若采用容量大、成本低廉的DDR2方案,使用傳統(tǒng)的設計方法不僅開發(fā)周期長,而且會增加設計難度與復雜度,從而不能使研發(fā)產(chǎn)品盡快推向并占有市場.現(xiàn)階段Micron推出的DDR2顆粒芯片容量最大能做到4 Gb,若采用一種相對于傳統(tǒng)設計較簡便的方法,便可以更快速地將DDR2應用在DVB業(yè)界的各類產(chǎn)品中,將在很大程度上增強該類產(chǎn)品在行業(yè)中的競爭力與生命力.因此,本文提出了一種基于FPGA Qsys的DDR2虛擬FIFO的改進設計方案,不僅降低了設計的難度和復雜度,而且大大縮短了設計開發(fā)周期,實際應用效果好.
傳統(tǒng)設計方法框圖如圖1所示,通常采用Altmemphy控制器IPcore驅(qū)動片外存儲芯片,數(shù)據(jù)存取協(xié)調(diào)模塊直接與Altmemphy控制器IPcore用戶接口交互的設計方法.
圖1 傳統(tǒng)DDR2虛擬FIFO的設計方法框圖
圖1中系統(tǒng)結(jié)構(gòu)框圖從左往右依次包括n通道的數(shù)據(jù)輸入緩存FIFO IPcore、數(shù)據(jù)存取協(xié)調(diào)及n通道的數(shù)據(jù)輸出緩存FIFO IPcore,在數(shù)據(jù)存取協(xié)調(diào)模塊上方是Altmemphy控制器IPcore[5-6].該種設計方法的難點主要在Altmemphy控制器IP和數(shù)據(jù)存取協(xié)調(diào)模塊的設計,Altmemphy控制器IPcore完成片外存儲芯片接口到相對簡單的用戶接口的轉(zhuǎn)換,數(shù)據(jù)存取協(xié)調(diào)模塊完成數(shù)據(jù)輸入、輸出緩存FIFO接口與Altmemphy控制器IPcore用戶接口間數(shù)據(jù)的協(xié)調(diào)存取.對于虛擬FIFO設計的外部接口包括專用存儲器IPcore接口、標準讀或?qū)慒IFO數(shù)據(jù)操作接口,因此用戶或開發(fā)者完全可將其當作FIFO來進行數(shù)據(jù)緩存使用.
由以上分析可知,雖然設計難度相對較小,但是當外部的存儲芯片發(fā)生替換后,設計也會隨之大做改動,包括用戶端接口和數(shù)據(jù)存取協(xié)調(diào)模塊都要做更改,兼容性與可重用性差.對傳統(tǒng)DDR2虛擬FIFO的改進設計如圖2所示.
圖2 DDR2虛擬FIFO的改進設計方法框圖
該方法較傳統(tǒng)設計的不同之處在于Altmemphy控制器IPcore的接口設計在Qsys環(huán)境中完成[7].對于其余類型的存儲芯片只需更換不同存儲器控制器IPcore即可,在Qsys中完成簡單的互聯(lián)操作,也即是地址映射,而不對數(shù)據(jù)存取協(xié)調(diào)模塊進行代碼級的更改,僅僅根據(jù)不同存儲器的位寬、容量進行參數(shù)化的匹配設置即可,體現(xiàn)了該設計方法強大的存儲兼容性.對于前級數(shù)據(jù)發(fā)送模塊和后級數(shù)據(jù)接收模塊而言,該設計的對外用戶接口僅為通用FIFO接口,完全屏蔽了復雜、多變的外部存儲器芯片接口.
Altmemphy控制器IPcore、主動寫IPcore、主動讀IPcore的互聯(lián)在Qsys中完成,針對不同的存儲器芯片配合相應的Altmemphy控制器IPcore,主動寫IPcore、主動讀IPcore能很好地兼容同一用戶接口,且在Qsys中完成Altmemphy控制器IPcore與主動寫IPcore、主動讀IPcore的互聯(lián),僅僅需要在配置界面簡單配置參數(shù)、連線即可[7].
對于數(shù)據(jù)輸入、輸出的處理,采用FPGA硬件存儲器資源完成FIFO的功能,解決了前級數(shù)據(jù)發(fā)送模塊、后級數(shù)據(jù)接收模塊與數(shù)據(jù)存取協(xié)調(diào)模塊間跨時鐘域的問題.FPGA內(nèi)部的FIFO完全可由用戶參數(shù)實例化,接口簡潔、通用,用戶可以配置最適合的接口用于設計,很大程度上降低了設計的復雜度[8].
圖3為改進設計關(guān)鍵部分框圖,結(jié)合系統(tǒng)改進設計原理可知,關(guān)鍵的模塊是Qsys中的Altmemphy控制器IPcore、主動寫IPcore、主動讀IPcore和數(shù)據(jù)存取協(xié)調(diào)的相互配合設計,其中Clk和Reset模塊為Qsys系統(tǒng)互聯(lián)設計提供必要的時鐘和復位信號.相對于傳統(tǒng)的設計方法,該設計的優(yōu)越性體現(xiàn)在采用了Qsys提供的強大系統(tǒng)互聯(lián)架構(gòu),一方面,該架構(gòu)將很大程度上簡化Altmemphy控制器IPcore用戶接口與數(shù)據(jù)存取協(xié)調(diào)模塊的互聯(lián),采用了Qsys提供的avalon-MM Master IPcore完成Altmemphy控制器IPcore與存取協(xié)調(diào)模塊的橋接;另一方面,該架構(gòu)中采用avalon-MM Master IPcore具備強大的系統(tǒng)兼容性,用戶只需考慮IPcore與外設接口的設計以及存取協(xié)調(diào)模塊的參數(shù)化配置.該改進設計方法可輕松移植到其他類似存儲器的設計中,例如PCI、PCIe、SRIO、SDRAM、SRAM及DDR等[7,9-10].
由于采用了Qsys強大的系統(tǒng)互聯(lián)架構(gòu)[7],很大程度上增強了設計的兼容性優(yōu)勢,結(jié)合采用參數(shù)化設計描述數(shù)據(jù)存取的協(xié)調(diào)模塊,當外部的存儲器芯片發(fā)生替換后,則只需考慮Qsys中avalon-MM Master IPcore和數(shù)據(jù)存取協(xié)調(diào)模塊的參數(shù)化
圖3 DDR2虛擬FIFO的改進設計關(guān)鍵部分框圖
配置,且Qsys能提供功能強大、簡明的用戶界面,很方便用戶使用.相對于傳統(tǒng)設計方法,減少了用戶對代碼的修改,保持了優(yōu)越的設計兼容性.
由以上設計系統(tǒng)分析可知,采用改進的設計方法可獲得優(yōu)越的設計兼容性,設計方法簡便、先進.改進設計方法的重點在于Qsys中系統(tǒng)互聯(lián)和參數(shù)化數(shù)據(jù)存取協(xié)調(diào)模塊的設計.
在Qsys設計中會用到Controller with ALTMEMPHY IPcore和avalon-MM Master IPcore,由于Controller with ALTMEMPHY IP針對不同的片外存儲器芯片(本設計針對DDR2,因此采用DDR2 SDRAM Controller with ALTMEMPHY IPcore)會使用不同的IPcore進行設計,沒有針對性,因此,重點對avalon-MM Master IPcore的Read Master做介紹說明,Write Master類同.
avalon-MM Master IPcore的主要功能是將各類Controller with ALTMEMPHY IPcore的用戶接口統(tǒng)一為相對固定的讀寫控制和讀寫FIFO接口,這樣可以保持用戶邏輯接口的兼容性.將用戶關(guān)心的設計集中在用戶邏輯和Controller with ALTMEMPHY IPcore的設計上,圖4為avalon-MM Master IPcore的Read Master功能框圖.
Read Master的配置如圖5所示,該IPcore只需配置7個參數(shù),圖5右側(cè)自上而下依次是:Master Direction(對IPcore的讀、寫工作模式進行配置)、Data Width(對IPcore的數(shù)據(jù)位寬進行設置)、Address Width(對IP的地址位寬進行設置)、Burst Capable(對IPcore的突發(fā)傳輸能力進行設置)、Maximum Burst Count(對IPcore的突發(fā)傳輸數(shù)據(jù)量進行設置)、FIFO Depth(對IPcore的FIFO深度進行設置)、Memory based FIFO(對IPcore的FIFO基于FPGA存儲器資源構(gòu)成的類型進行設置),圖5中的參數(shù)值為本設計中所采用的配置值.同理,Write Master功能模式的配置也大致相同.Qsys系統(tǒng)互聯(lián)界面簡潔直觀,極大簡化了設計的復雜度,設計者只需在Qsys的引導下完成各模塊間的互聯(lián)即可.
圖4 Read Master功能框圖
圖5 avalon-MM Read Master配置界面
其次的關(guān)鍵是對數(shù)據(jù)協(xié)調(diào)模塊的設計,設計中推薦采用參數(shù)化的設計方法,本設計的可配置參數(shù)如下:
USER_DATA_CHANNEL_AMOUNT_SQRT=3,USER_DATA_CHANNEL_AMOUNT=2**USER_DATA_CHANNEL_AMOUNT_SQRT,//數(shù)據(jù)流通道數(shù)8;
USER_FIFO_INNER_DEPTH_SQRT=8,USER_FIFO_INNER_DEPTH=2**USER_FIFO_INNER_DEPTH_SQRT,//FIFO對內(nèi)接口的數(shù)據(jù)位寬為256;
LOCAL_ADDR_WIDTH=24,//Qsys系統(tǒng)模塊地址寬度;
LOCAL_DATA_WIDTH_SQRT=6,
LOCAL_DATA_WIDTH=2**LOCAL_DATA_WIDTH_SQRT,//Qsys系統(tǒng)模塊數(shù)據(jù)寬度;
LOCAL_ADDR_INCREASE=2**(LOCAL_ADDR_WIDTH-USER_DATA_CHANNEL_AMOUNT_SQRT),
DDR2_REFRESH_COUNTER=10′d780,//DDR2刷新周期數(shù);
當片外存儲器芯片發(fā)生替換時,只需根據(jù)Qsys系統(tǒng)互聯(lián)架構(gòu)設計進行改動,更改Qsys系統(tǒng)模塊地址寬度和Qsys系統(tǒng)模塊數(shù)據(jù)寬度,不會發(fā)生大部分的代碼修改即可完成兼容性設計,大大提高了設計的可重用性.
數(shù)據(jù)協(xié)調(diào)模塊的設計推薦采用狀態(tài)機來描述,本設計的狀態(tài)機狀態(tài)轉(zhuǎn)換圖如圖6所示.由設計思路結(jié)合上圖中狀態(tài)間銜接關(guān)系可知,狀態(tài)S0為初始狀態(tài),主要完成各寄存器的初始化;狀態(tài)S1~S6完成數(shù)據(jù)輸入通道數(shù)據(jù)的緩存;狀態(tài)S7~S10主要完成已緩存數(shù)據(jù)的讀取輸出,各狀態(tài)間相互配合、銜接共同完成數(shù)據(jù)協(xié)調(diào)模塊的功能.
圖6 數(shù)據(jù)協(xié)調(diào)模塊的狀態(tài)機狀態(tài)轉(zhuǎn)換圖
Quartus Ⅱ中SignalTap Ⅱ Logic Analyzer抓取數(shù)據(jù)存取協(xié)調(diào)模塊與輸入、輸出緩存FIFO接口及Altmemphy控制器接口進行數(shù)據(jù)存取交互的在線時序圖如圖7所示.由圖可知,不同通道的測試數(shù)據(jù)不斷地向虛擬FIFO通道遍歷寫入數(shù)據(jù),然后數(shù)據(jù)存取協(xié)調(diào)模塊將各通道的數(shù)據(jù)流通過Qsys互聯(lián)和Altmemphy控制器IPcore向板載DDR2存儲顆粒寫入、緩存并讀出,將讀出的數(shù)據(jù)與寫入的數(shù)據(jù)做對比,根據(jù)對比結(jié)果來判斷設計的正確性.對比結(jié)果可通過監(jiān)測verify_ok信號的狀態(tài),若在整個存取過程中verify_ok信號為高電平,即可判斷整個設計的正確性,反之則為出現(xiàn)了數(shù)據(jù)存取錯誤的情況.利用Quartus Ⅱ SignalTap Ⅱ Logic Analyzer的單次條件觸發(fā)功能,可通過監(jiān)測該信號對設計進行長時間測試,圖中verify_ok信號在寫入與讀出的數(shù)據(jù)過程中一直為高電平.
圖7 抓取數(shù)據(jù)存取過程的時序概括圖
圖7(圖8、9同)中信號定義自上而下依次是:輸入FIFO讀請求、輸入FIFO讀數(shù)據(jù)、本地端寫請求、本地端寫數(shù)據(jù)請求、本地端寫數(shù)據(jù)、本地端讀請求、本地端讀數(shù)據(jù)有效、本地端讀數(shù)據(jù)、本地端地址、輸出FIFO寫請求、輸出FIFO寫數(shù)據(jù)、狀態(tài)跳轉(zhuǎn)和校驗信號.
圖8、9為寫入與讀出數(shù)據(jù)局部時序圖,為將寫入與讀出的數(shù)據(jù)做對比,可寫入一個數(shù)據(jù)為64′h474619C5474619C4,讀出數(shù)據(jù)也為該數(shù)據(jù),可證明數(shù)據(jù)的準確性.
圖8 寫入數(shù)據(jù)局部時序圖
圖9 讀出數(shù)據(jù)局部時序圖
圖10、11為采用該設計平滑IP網(wǎng)絡抖動前后的實測對比圖,圖10為未采用數(shù)據(jù)緩存,經(jīng)ETHERNET傳入的DVB-IP分組TS流數(shù)據(jù)的實測截圖以及PCR抖動直方圖,圖11為采用了設計緩存,輸入的TS流數(shù)據(jù)的實測截圖以及PCR
圖10 未采用緩存的截圖和直方圖
圖11 采用緩存的截圖和直方圖
抖動直方圖.按照對應的碼流速率經(jīng)碼流分析儀播放進行對比,很明顯可見圖10的圖像清晰度和PCR抖動分布均相對于圖11較差,圖10存在圖像重疊現(xiàn)象,而圖11無明顯不清晰的情況.圖10 PCR抖動分布較圖11分散,且圖11以平均PCR精度-2優(yōu)于圖10平均精度37,在同一精度的最大IP包數(shù)中,圖11以9 114包多于圖10的6 820包.
由此可知,基于FPGA的DDR2虛擬FIFO改進設計方法的正確性和合理性.基于目前DDR2存儲技術(shù)早已普及,所能提供的存儲容量能滿足絕大部分需大容量緩存項目的需要,因此將這種設計方法使用在DVB行業(yè)的眾多設備中,其強大的設計兼容性會得到眾多用戶、開發(fā)者和可編程邏輯設計師的青睞.
綜上所述,隨著FPGA在實際工程應用中的大力普及,用戶和開發(fā)者可以選擇多種解決技術(shù)問題的途徑.基于FPGA的DDR2虛擬FIFO改進設計方法就是在FPGA中利用Qsys強大的系統(tǒng)互聯(lián)功能,對傳統(tǒng)的DDR2虛擬FIFO設計方法的改進.該改進設計方法的可行性、兼容性相比于傳統(tǒng)的設計方法均有很大程度的提高,達到了預期的改進設計要求,降低了整個系統(tǒng)開發(fā)的難度.
[1]庾志衡,葉俊明,鄧迪文.基于FPGA與DDR2 SDRAM的大容量異步FIFO緩存設計 [J].微型機與應用,2011,30(4):34-36.
(YU Zhi-heng,YE Jun-ming,DENG Di-wen.A design of high speed and deep asynchronous FIFO based on FPGA and DDR2 SDRAM [J].Microcomputer & Its Applications,2011,30(4):34-36.)
[2]徐欣,周舟,李楠,等.基于DDR2 SDRAM的高速大容量異步FIFO的設計與實現(xiàn) [J].中國測試,2009,35(6):34-37.
(XU Xin,ZHOU Zhou,LI Nan,et al.Design and realization of high speed and deep asynchronous FIFO based on DDR2 SDRAM [J].China Measurement & Test,2009,35(6):34-37.)
[3]萬鵬,楊大偉.基于FPGA的視頻疊加融合系統(tǒng)設計與實現(xiàn) [J].電子技術(shù)應用,2013,39(9):44-46.
(WAN Peng,YANG Da-wei.Design and implementation of video image superimposed fusion system based on FPGA [J].Application of Electronic Technique,2013,39(9):44-46.)
[4]常麗,許會,孫明杰.光柵信號單譜線細分算法實現(xiàn) [J].沈陽工業(yè)大學學報,2013,35(3):323-328.
(CHANG Li,XU Hui,SUN Ming-jie.Implentation of subdivision algorithm of single spectral line for grating signal [J].Journal of Shenyang University of Technology,2013,35(3):323-328.)
[5]房國志,王康.高速視頻系統(tǒng)中一種異步FIFO緩存設計 [J].哈爾濱理工大學學報,2012,17(6):102-105.
(FANG Guo-zhi,WANG Kang.A kind of asynchronous FIFO buffer of high speed video system [J].Journal of Harbin University of Science and Technology,2012,17(6):102-105.)
[6]張奇山,劉安芝,劉希順.基于FPGA的FIFO設計和應用 [J].現(xiàn)代科學技術(shù),2009,18(1):50-52.
(ZHANG Qi-shan,LIU An-zhi,LIU Xi-shun.Design of application of FIFO based on FPGA [J].Modern Electronics Technique,2009,18(1):50-52.)
[7]AET.全方位解析Qsys系統(tǒng)集成工具——幫您解決三大尖銳問題 [J].電子技術(shù)應用,2012,38(5):6.
(AET.Comprehensive analytical Qsys system integration tool:help you to solve the three tough problems [J].Application of Electronic Technique,2012,38(5):6.)
[8]劉少華,陳明義.基于FPGA的高速海量FIFO的設計 [J].信息技術(shù),2009,33(9):95-97.
(LIU Shao-hua,CHEN Ming-yi.Design of high speed and great capacity FIFO based on FPGA [J].Information Technology,2009,33(9):95-97.)
[9]向興富,袁玉群,譚亞軍.基于FPGA的DDR2 SDRAM數(shù)據(jù)存儲研究 [J].貴州大學學報(自然科學版),2010,27(2):70-73.
(XIANG Xing-fu,YUAN Yu-qun,TAN Ya-jun.A design of data storage research base on FPGA DDR2 SDRAM. [J].Journal of Guizhou University(Natural Sciences),2010,27(2):70-73.)
[10]呂衛(wèi),葛長寬,宋垣.基于FPGA的數(shù)字電視廣播IP網(wǎng)關(guān)設計 [J].電視技術(shù),2013,37(22):37-39.
(Lü Wei,GE Chang-kuan,SONG Yuan.Design of IP gateway for digital TV broadcasting based on FPGA platform [J].Video Engineering,2013,37(22):37-39.)
(責任編輯:景勇英文審校:尹淑英)
Improved design of virtual FIFO based on FPGA
ZHANG Yu-ping1, YE Sheng-jiang2
(1. School of Communication Engineering, Chengdu Technological University, Chengdu 611730, China; 2. Remote Sensing Department, M&S Technology Co. Ltd., Chengdu 611731, China)
In order to reduce the development difficulty and complexity of network interface buffer design, the design of DDR2 virtual FIFO based on FPGA was improved. An improved scheme, which taking FPGA (EP4CGX150F672) as the core and DDR2 (MT47H128M16RT-25E) as the data cache, and adopting Qsys system interconnection and IPCORE auxiliary building design, was proposed. The fast cache of DVB-IP packet TS flow is realized, and the IP network jitter is smoothed. In addition, the loss of data code flow and the problem of too large delay can be avoided. Under the background of reducing the difficulty and complexity of traditional design, the proposed design scheme has good memory compatibility, possesses such advantages as rich system resources, large capacity, low cost and short development cycle, and exhibits good effect after being used for the numerous equipment in DVB industry.
field programmable gate array (FPGA); double data rate 2(DDR2); first input first output (FIFO); system interconnection; intellectual property core; network jitter; code stream; program clock reference (PCR)
2015-06-19.
四川省教育廳基金資助項目(14ZA0288).
張玉平(1976-),男,四川成都人,副教授,主要從事FPGA的數(shù)字信號處理及通信系統(tǒng)工程實踐等方面的研究.
10.7688/j.issn.1000-1646.2016.03.11
TN 914
A
1000-1646(2016)03-0298-06
*本文已于2015-12-07 16∶18在中國知網(wǎng)優(yōu)先數(shù)字出版. 網(wǎng)絡出版地址: http:∥www.cnki.net/kcms/detail/21.1189.T.20151207.1618.034.html