實時視頻處理系統(tǒng)中乒乓緩存控制器的設計
引言
緩存技術是分布式計算環(huán)境中的重要技術,它可以改善系統(tǒng)的整體性能(如吞吐量、查詢響應時間等),構(gòu)建大規(guī)模視頻服務系統(tǒng)時,可以減少對磁盤的訪問,提高系統(tǒng)性能。在高速數(shù)據(jù)采集系統(tǒng)中,通常在存儲設備的前端加一級緩存,可以使低速存儲設備無丟失地記錄高速數(shù)據(jù)[1]。不僅如此,現(xiàn)在,在比較高速cpu的性能參數(shù)時,一個重要的指標就是看其是否具有高速緩存。
隨著數(shù)字多媒體技術的不斷發(fā)展,實時視頻數(shù)據(jù)處理的一個突出的問題就是數(shù)據(jù)量龐大,特別是在圖像幀率及分辨率要求比較高的場合,僅用專用的視頻壓縮芯片(video asic)、專用的視頻信號處理器(video dsp)或通用的高性能數(shù)字信號處理芯片(dsp),均無法獲得令人滿意的效果,為此,人們提出了多種解決方案,其中比較有代表性的方案有以下兩種:一是在中央控制器的調(diào)度下,兩片或多片視頻處理芯片并行對實時視頻進行處理。二是整個實時視頻處理系統(tǒng)由視頻采集系統(tǒng)和視頻壓縮系統(tǒng)組成,其中視頻采集系統(tǒng)負責接收原始的視頻數(shù)據(jù)并對其進行一定的預處理;視頻壓縮系統(tǒng)負責接收視頻采集系統(tǒng)預處理后的數(shù)據(jù)并進行壓縮[2]。本文將采用第二種方法,并在此方法中應用fpga設計乒乓緩存控制器,從而實現(xiàn)實時視頻數(shù)據(jù)流的無縫緩沖和處理。
常用數(shù)據(jù)緩存結(jié)構(gòu)的比較
實時視頻處理系統(tǒng)中,輸入緩沖和輸出緩沖電路的作用主要是為恒速的視頻編解碼與變速的dsp圖像處理過程之間提供適應通道,輸入和輸出緩沖電路一般有三種結(jié)構(gòu)形式:
(1)雙口ram結(jié)構(gòu)
雙口ram是在一個sram存儲器上具有兩套完全獨立的數(shù)據(jù)線、地址線、讀寫控制線、并允許兩個獨立的系統(tǒng)同時對該存儲器進行隨機訪問。
(2)fifo結(jié)構(gòu)
fifo可以進行雙端操作,但是數(shù)據(jù)必須先進先出,不能進行隨機性的訪問,從容量大小來看,雙口ram比fifo要大一些,但總的來說,這兩種緩沖結(jié)構(gòu)的存儲容量還是相對較小,對高速圖像處理系統(tǒng)而言,還不是特別適合。
(3)乒乓緩存結(jié)構(gòu)
這種結(jié)構(gòu)是將輸入數(shù)據(jù)流通過輸入數(shù)據(jù)選擇單元等時地將數(shù)據(jù)流分配到兩個數(shù)據(jù)緩沖區(qū)。在第1個緩沖周期,將輸入的數(shù)據(jù)流緩存到數(shù)據(jù)緩沖模塊1上,在第2個緩沖周期,通過輸入數(shù)據(jù)選擇單元的切換,將輸入的數(shù)據(jù)流緩存到數(shù)據(jù)緩沖模塊2,同時,將數(shù)據(jù)緩沖模塊1緩存的第1個周期的數(shù)據(jù)通過輸出數(shù)據(jù)選擇單元的選擇,送到運算處理單元進行處理,第3個緩沖周期,再次切換數(shù)據(jù)的輸入與輸出緩沖模塊。如此循環(huán),周而復始。
綜上所述,乒乓緩存結(jié)構(gòu)實際上相當于一個雙口ram,但它與普通的雙口ram又有所不同,主要表現(xiàn)在以下幾方面:
◆普通雙口ram是單個存儲體構(gòu)成的ic,乒乓緩存結(jié)構(gòu)則由包含兩個相互獨立存儲體的多片ic構(gòu)成,從而使其在結(jié)構(gòu)、速度、容量等方面具有更大的靈活性;
◆若雙口在訪問同一地址時,普通雙口sam指向的必定是存儲體內(nèi)的同一存儲單元,而乒乓緩存結(jié)構(gòu)則分別指向?qū)儆趕ram1和sram2的兩個不同的存儲單元;
◆乒乓緩存結(jié)構(gòu)的雙口指向的存儲區(qū)(sram1還是sram2)可以由外部信號來控制,而普通雙口ram則必須由地址線來控制。
乒乓緩存結(jié)構(gòu)的上述特點決定了可以相對較便宜的高速大容量sram、外圍邏輯器件構(gòu)成比雙口ram以及高速fifo更適合視頻處理的系統(tǒng)所需要的緩沖存儲器。
實時視頻處理系統(tǒng)結(jié)構(gòu)
數(shù)字視頻處理系統(tǒng)的突出特點是視頻數(shù)據(jù)的流量非常大,且對系統(tǒng)處理的實時性要求也比較高,因此,系統(tǒng)必須建立快速、有序的視頻數(shù)據(jù)輸入、輸出機制、盡可能采用高速的fpga,在此基礎上,采用適應于高速dsp和fpga處理系統(tǒng)的乒乓緩存結(jié)構(gòu)。
雖然視頻信號處理的需求多種多樣,但數(shù)據(jù)處理的流程都遵循數(shù)據(jù)采集、格式轉(zhuǎn)換、數(shù)據(jù)接收、數(shù)據(jù)計算、數(shù)據(jù)通信的步驟,圖1所示是基于fpga和dsp的實時視頻信號處理框架。
視頻信號轉(zhuǎn)換模塊由視頻信號處理器完成視頻信號從模擬信號到數(shù)字信號的轉(zhuǎn)換、圖像信號與其他信號的分離、視頻信號的格式轉(zhuǎn)換等,最終提供供給后端可以處理的數(shù)字視頻數(shù)據(jù);視頻數(shù)據(jù)計算模塊首先接受來自前一個模塊的數(shù)字視頻數(shù)據(jù),然后完成對數(shù)字視頻數(shù)據(jù)的計算,數(shù)據(jù)接收由fpga完成,數(shù)據(jù)計算由dsp完成,通信模塊則實現(xiàn)與外界的數(shù)據(jù)交換。
本文重點介紹的是視頻數(shù)據(jù)計算模塊中的輸入乒乓緩存結(jié)構(gòu)(如果經(jīng)dsp編碼的信號需要輸出并解碼的話,同樣可以設計輸出乒乓緩存結(jié)構(gòu),原理一樣。)
乒乓緩存控制器分析
由上文可知,實現(xiàn)乒乓緩存結(jié)構(gòu)的關鍵是sram的選擇以及控制器的設計,下面對這兩個問題進行探討:
一般情況下,sram1和sram2需選用兩個速度、容量以及其他特性完全相同的靜態(tài)存儲器,這是由乒乓緩存結(jié)構(gòu)實際工作時,電路狀態(tài)轉(zhuǎn)換的對稱性決定的,sram器件的速度應高于外部電路所要求的數(shù)據(jù)輸入、輸出速度,其容量應不小于需要緩存的數(shù)據(jù)量,對于一個圖像處理系統(tǒng)而言,假如需要緩存的數(shù)據(jù)量是一幀256×256的圖像,那么所需單片sram的容量應大于或等于64k字節(jié)。
實現(xiàn)乒乓緩存結(jié)構(gòu)的外部邏輯一般較復雜,故常用高速fpga來實現(xiàn)其控制,這種方式的優(yōu)點是:
(1)將所有的控制邏輯集成在一塊芯片上,減小了控制器的體積;
(2)根據(jù)外部信號處理電路的特點,可以靈活設計雙口p1、p2以及控制信號vs的輸入形式這種普通雙口ram所不具備的一個重要特點;
(3)sram存儲器接口sr1、sr2的信號位置也可以根據(jù)電路板的實際需要來設計。
實際上,若系統(tǒng)電路所決定的乒乓緩存結(jié)構(gòu)雙口p1和p2是包含地址、數(shù)據(jù)、以及控制線在內(nèi)的普通并行口,那么控制器實際上就是一組“單刀雙擲開關”。具體方式如圖2所示。
乒乓緩存控制器接口
在圖2中,輸入緩沖電路的上游接視頻解碼器saa7113,下游接dsp(需要解碼時,輸出緩沖電路上游接dsp,下游接視頻編碼器)。對于大多數(shù)a/d轉(zhuǎn)換器,由于其僅具有并行數(shù)據(jù)輸入輸出端口,而沒有地址和控制信號輸出口,故它無法直接對普通sram進行讀/寫操作,因而要求乒乓緩存控制器本身具有地址產(chǎn)生功能,故必須增加地址產(chǎn)生邏輯,其中,clk為ad(或da)轉(zhuǎn)換時鐘,它作為計數(shù)器的脈沖源,而計數(shù)器的輸出端則提供了sram尋址線。該圖中,db1接ad轉(zhuǎn)換器saa7113的數(shù)據(jù)輸出端(或da轉(zhuǎn)換器的數(shù)據(jù)輸入端),cb1為讀寫使能信號,而對ad轉(zhuǎn)換器而言,因其是恒定輸出器件,故p1口cb1的/re應恒接高,/we恒接低(對da轉(zhuǎn)換器而言,因其是恒定輸入器件,故p1口cb1的/re應恒接低,/we恒接高),p2口接dsp外存接口(emif)之ce0空間,db2接dsp的數(shù)據(jù)總線ed,ab2接dsp的地址總線ad。工作時,數(shù)據(jù)從視頻解碼器輸出到乒乓緩沖器,經(jīng)緩沖之后輸入到dsp的emif外存空間,以備處理。其中,ad轉(zhuǎn)換時鐘saa7113 clk作為計數(shù)器的計數(shù)脈沖,以產(chǎn)生地址線ab1;場同步信號vs用于復位計數(shù)器,這意味著乒乓緩存的容量(亦即sr1、sr2的容量)為一場的視頻數(shù)據(jù)。
這樣,從saa7113過來的數(shù)字信號就可以在乒乓緩存控制器的控制下,像單刀雙擲開關一樣交替接通,從而將數(shù)據(jù)寫入sdram以便dsp進行處理,這樣就很好地解決了對高速數(shù)據(jù)的緩沖。
仿真流程與結(jié)果
乒乓緩存控制器程序可采用verilog hdl編寫,并可在modelsim下實現(xiàn)邏輯仿真,仿真程序包括3部分:一是處于top的主體程序,用于控制其他各個部分程序的運行;二是視頻圖像采集程序,用于從saa7113獲得數(shù)據(jù)圖像數(shù)據(jù)并保存到sram中,三是乒乓緩存控制器,用于實現(xiàn)對sram數(shù)據(jù)讀寫的切換,限于篇幅,這是只列出整體控制過程流程圖,見圖3。
圖4是其仿真波形。在控制信號toggle=1時,dsp的emif連接到sr1,以從sram1中讀取視頻數(shù)據(jù),同時saa7113將數(shù)據(jù)寫到sram2,在控制信號toggle=0時,dsp的emif連接到sr2,以從sram2中讀取視頻數(shù)據(jù),同時saa7113寫數(shù)據(jù)到sram1,此過程如此循環(huán),便可實現(xiàn)大量高速視頻數(shù)據(jù)流的無縫緩沖和處理。
結(jié)論
本文討論了乒乓緩存控制器的實現(xiàn)方法,實踐證明,乒乓操作的最大特點是可通過輸入數(shù)據(jù)選擇單元和輸出數(shù)據(jù)選擇單元按節(jié)拍相互配合切換,從而將經(jīng)過緩沖的數(shù)據(jù)流停頓地送到運算處理單元,以進行運算和處理,如果把乒乓操作模塊當做一個整體,站在這個模塊的兩端看數(shù)據(jù),那么,輸入數(shù)據(jù)流和輸出數(shù)據(jù)流都是連續(xù)不斷的,沒有任何停頓,因此非常適合對數(shù)據(jù)流進行流水線式處理,以高效完成大量事實時頻數(shù)據(jù)的無縫緩沖和處理。
評論