基于MIMO技術(shù)的視頻緩存器設(shè)計方案
隨著高速處理器的不斷發(fā)展,嵌入式系統(tǒng)應用的領(lǐng)域越來越廣泛,高速大容量緩存器被廣泛應用于音視頻系統(tǒng)中,然而專用的高速大容量緩存芯片價格過于昂貴,傳統(tǒng)SDRAM在帶寬上已經(jīng)逐漸無法滿足應用要求,特別是對于多路數(shù)據(jù)多進多出時,兩者都無法很好的滿足要求,這里提出一種利用雙沿隨機動態(tài)存儲器(DDR SDRAM)結(jié)合外加專用電路的設(shè)計方案。
設(shè)計應用在基于DVB-C的EOAM調(diào)制器系統(tǒng)中,該系統(tǒng)的基本要求能夠緩存集合多路視頻TS流的千兆IP數(shù)據(jù),并對IP數(shù)據(jù)進行多路高速分發(fā);輸入為2個千兆網(wǎng)口,輸出至RF射頻接口的數(shù)百個數(shù)據(jù)分發(fā)通道。
在以往系統(tǒng)設(shè)計中,有人提出使用普通SDRAM芯片作為物理緩存單元,但是由于該類芯片工作速度限制,在基本位寬條件下,達不到上述系統(tǒng)的高帶寬要求。若不提高芯片速度,單純提高位寬,由于各位數(shù)據(jù)的延時不同,且SDRAM采用的3.3 V電壓的上升下降沿過渡較寬,將導致芯片數(shù)據(jù)采樣的穩(wěn)定時間窗變窄,數(shù)據(jù)傳輸可靠性下降;同時由于位寬增大,引腳變多,造成設(shè)計復雜度的直線上升。本文使用DDR SDRAM作為存儲單元,在不改變系統(tǒng)時鐘的情況下,利用時鐘雙沿傳輸數(shù)據(jù),將同頻率芯片的傳輸帶寬在SDRAM基礎(chǔ)上提高了一倍,很好地滿足了高帶寬緩存的需要。
1 DDR存儲器簡介
DDR存儲器即雙數(shù)據(jù)率同步動態(tài)隨機訪問存儲器,它和早期的單數(shù)據(jù)率同步動態(tài)隨機訪問存儲器一樣,內(nèi)部存儲單元采用電容充電來保存數(shù)據(jù),因此必須不斷地對電容充電以保持數(shù)據(jù),這就是所謂的“刷新”。SDRAM的數(shù)據(jù)總線在每個時鐘的上升沿存取數(shù)據(jù),而DDR SDRAM則在每個時鐘的上升沿和下降沿都存取數(shù)據(jù),這樣在數(shù)據(jù)總線寬度和時鐘頻率不變的條件下數(shù)據(jù)總線帶寬得到了一倍的提升。
2 系統(tǒng)設(shè)計
設(shè)計采用Xilinx公司的Sptan3a-dsp 1800a作為主控制器,使用Micron公司的MT64V32X16芯片作為存儲介質(zhì),最大存儲容量為512M。本系統(tǒng)的邏輯部分由仲裁模塊、輸入緩存模塊、調(diào)度判決模塊、地址轉(zhuǎn)換模塊和DDR接口控制模塊等部分組成,結(jié)構(gòu)框圖如圖1所示。
核心控制器中的仲裁模塊產(chǎn)生相應的控制命令。完成上電后的初始化復位,并在系統(tǒng)運行過程中,針對工作優(yōu)先級,發(fā)出刷新指令、寫操作指令和讀操作指令;DDR接口控制模塊根據(jù)DDR芯片操作的基本時序,實現(xiàn)核心控制器指令的針對物理芯片的信息傳輸;南于DDR芯片具有不可實時操作特性,必須使用內(nèi)部輸入緩存RAM進行基本的實時數(shù)據(jù)緩沖;而地址轉(zhuǎn)換模塊、調(diào)度判決模塊則和內(nèi)部輸入緩存RAM配合,完成對DDR芯片內(nèi)部存儲空間的映射工作。
3 DDR核心控制器設(shè)計
DDR存儲器是一種指令相對復雜的高速存儲芯片,它在上電后必須完成初始化才能進行其它操作;而且不支持單周期讀寫操作,只支持周期為2、4、8突發(fā)讀寫操作。另外,DDR芯片由于其電容特性,數(shù)據(jù)保存在其中是不穩(wěn)定的,需要在一定時間周期內(nèi)對其進行刷新操作,以保證數(shù)據(jù)不會丟失,因此,在DDR操作過程中有數(shù)十條指令。但在本設(shè)計中DDR接口控制器采用的是Xilinx提供的DDR IP,這樣核心控制器中的仲裁模塊只需要使用空閑、初始化、讀操作和寫操作等4個指令就可以完成對DDR-SDRAM的操作,大大降低了設(shè)計難度。由于設(shè)計目的在于消除來自網(wǎng)絡(luò)對IP數(shù)據(jù)的抖動,并且最終要將IP數(shù)據(jù)分發(fā)至512個通道,大大超出了以往設(shè)計對DDR的使用需求,因此本文在這里提出圖1所示設(shè)計,即可完成DDR存儲器對高速大容量多通道的設(shè)計應用:
(1)輸入緩存模塊
輸入緩存器由一個RAM加外部邏輯電路構(gòu)成,緩沖已輸入但還沒來得及寫到DDR中的TS分組凈荷。待仲裁模塊發(fā)出允許寫入的信號后,再將輸入緩存中的數(shù)據(jù)包傳遞給仲裁模塊,并且釋放相應的存儲空間。根據(jù)DDR的工作模式和DVB-C特性,輸入緩存的數(shù)據(jù)傳輸以TS包為單位,實現(xiàn)192個字節(jié)連續(xù)突發(fā)傳輸。
(2)調(diào)度判決模塊
調(diào)度判決模塊接收讀請求隊列信息,實現(xiàn)讀數(shù)據(jù)時將同一個bank內(nèi)數(shù)據(jù)量最大的FIFO進行調(diào)度出隊列的判決。該模塊保存各個通道FIFO當前的數(shù)據(jù)包數(shù)量。
(3)地址轉(zhuǎn)換模塊
地址轉(zhuǎn)換模塊負責實現(xiàn)通道號和DDR SDRAM芯片內(nèi)部存儲空間的映射。該模塊中保存的變量包括各個通道在DDR SDRAM中的塊起始地址、塊終止地址、FIFO頭偏移量、FIFO尾偏移量。
(4)仲裁模塊
仲裁模塊產(chǎn)生相應控制命令,針對工作優(yōu)先級,發(fā)出空閑指令、初始化指令、寫操作指令和讀操作指令。
4 資源消耗結(jié)構(gòu)的改進
4.1 標準的MIMO結(jié)構(gòu)的緩存器
針對多路數(shù)據(jù)的緩存,設(shè)計了多進多出的緩存結(jié)構(gòu),對物理通道輸入的數(shù)據(jù)流首先進行識別與分發(fā),給每一路節(jié)目流配置一個輸入緩存FIFO和一個輸出緩存FIFO,結(jié)構(gòu)如圖2所示。
這種結(jié)構(gòu)的優(yōu)點在于,對每一路節(jié)目,都有單獨的緩存空間對其進行緩存,各路節(jié)目相對獨立,互不干擾;在節(jié)目路數(shù)較少的情況下,該結(jié)構(gòu)效率較高,便于擴展。
但上述結(jié)構(gòu)存在的問題在于,如果節(jié)目路數(shù)過多,輸入數(shù)據(jù)流量過大,會導致FPGA內(nèi)部緩存數(shù)量成幾何上升,極大的消耗FPGA資源,降低運行時鐘頻率,造成系統(tǒng)綜合后速度下降。
4.2 端口固定的MIMO結(jié)構(gòu)緩存器
由于標準的MIMO結(jié)構(gòu)存在的問題,難以達到本文所需的應用要求,因此存這里提出的一種改進型設(shè)計。這種設(shè)計不像標準的MIMO那樣對DDR進行邏輯結(jié)構(gòu)上的緩存,而是通過固定DDR高位地址,采用物理結(jié)構(gòu)緩存的方式進行快速存儲,如圖1所示。
在這種結(jié)構(gòu)中,外部流處理模塊先將數(shù)據(jù)流與該數(shù)據(jù)流存儲的通道號分發(fā)至緩存RAM和地址轉(zhuǎn)換模塊,再由調(diào)度模塊調(diào)度轉(zhuǎn)換后的對應地址指針,將其發(fā)送到DDR上對應的物理存儲空間而在輸出端口也以同樣的方式只針對物理輸出端口,這就要求有一個讀請求隊列,以便將要讀的目的通道提前發(fā)送。在這里調(diào)度模塊能夠?qū)崟r檢測各個通道使用情況,并將數(shù)據(jù)流快速分發(fā)。這種結(jié)構(gòu)對于EQAM這種一個物理IP端口輸入幾百路流的設(shè)備,可以極大地降低FPGA內(nèi)部RAM的消耗,且對DDR影響也較小,不會過多降低系統(tǒng)性能。而且在前端數(shù)據(jù)緩存中直接使用RAM而不使用FIFO更有利于同步數(shù)據(jù)流和對應地址。
5 系統(tǒng)測試
為了測試本設(shè)計止確性,將上述模塊嵌入EQAM系統(tǒng)后,接收來至網(wǎng)絡(luò)的IP視頻數(shù)據(jù),通過碼流分析儀檢測數(shù)據(jù)結(jié)果后發(fā)現(xiàn),經(jīng)DDR緩存后數(shù)據(jù)流包計數(shù)器沒有錯誤,沒有出現(xiàn)丟包情況,碼流分析儀自帶播放器能夠清晰連續(xù)播放節(jié)日,如圖3所示。但在節(jié)目轉(zhuǎn)換過程中由于節(jié)目不同會產(chǎn)生PAT錯誤,該錯誤不影響節(jié)目正常播放。
6 結(jié)束語
本文在這里提出了一種改進MIMO結(jié)構(gòu)DDR緩存器,并對核心控制模塊實現(xiàn)功能進行了描述,討論了改進后的設(shè)計對系統(tǒng)的影響。最終測試結(jié)果也表明,本設(shè)計完全可以應用于多通道大容量的視頻設(shè)備的緩存中。
評論