基于視頻處理的DSP系統(tǒng)通用設計模式及其實現(xiàn)
引言
本文引用地址:http://www.ex-cimer.com/article/81627.htm目前,隨著視頻處理領域的不斷深入發(fā)展,作為其實現(xiàn)的主要平臺——DSP系統(tǒng)的設計成為了決定視頻處理算法是否能高速實時運行的首要因素。一個優(yōu)秀的DSP系統(tǒng)框架應該至少具有功能的高效實施性和良好的軟硬件擴展性。本文介紹的這種基于視頻處理的DSP系統(tǒng)的框架正是以傳統(tǒng)的數字信號處理方式為基礎,以高效性和擴展性為目標,并且能夠適應大多數的器件而提出的在硬件上和在軟件上的解決方案。
可通用設計模式的思路
硬件結構
傳統(tǒng)的數字信號處理過程是由“ADC + DSP + DAC”這種模式構成的,其中并未具體的明確指出存儲器的如何使用以及ADC、DSP和DAC之間的數字邏輯電路關系如何,而這兩點正是實現(xiàn)高效實時系統(tǒng)的關鍵所在。
以視頻處理為背景,基于可通用設計模式的思路從硬件功能上將DSP系統(tǒng)按圖1中所示的模塊框圖設計。從圖中可以看到整個DSP系統(tǒng)被分為六大模塊:DSP模塊、ADC模塊、DAC模塊、存儲器模塊、數字邏輯電路模塊和其它模塊。其中,數字邏輯電路模塊起到了模塊間相互通信的中間“橋”作用,通常選用具有足夠的可編程引腳和內部邏輯單元的CPLD或FPGA加上適當數目的開關器件來實現(xiàn);而存儲器模塊則由針對DSP模塊、ADC模塊和DAC模塊的三個獨立且結構相同的子模塊組成。
由于各存儲器子模塊間的地址總線、數據總線和控制總線的相互獨立,通過數字邏輯電路模塊可以使ADC、DSP和DAC三個模塊在同一時刻擁有各自獨立的存儲空間從而為三者的并行無阻礙運行提供了有效的硬件保證。如圖2中所示,三個存儲器子模塊處于循環(huán)式的流水線工作狀態(tài),它們在系統(tǒng)中的地位等價;其中每個存儲器子模塊一般都以整幀圖像為存儲單位,故可簡稱為幀存。整個系統(tǒng)處于ADC、DSP和DAC三個模塊同步并行的工作方式,即DSP處理當前幀圖像的同時ADC正采集下一幀圖像而DAC正傳送上一幀圖像給顯示設備,這樣DSP只負責圖像的處理過程而不涉及圖像在存儲空間中的簡單搬移。
相應的數字邏輯電路模塊按圖3中所示的互相關聯(lián)的各子模塊來設計。其中,操作控制子模塊用于實現(xiàn)DSP對ADC及DAC的控制(復位或下電ADC及DAC、選擇標準I2C或模擬I2C進行配置、同步三者的并行等)與DSP外部中斷的使能,并控制圖3中其它的子模塊;狀態(tài)計數子模塊用于產生四類狀態(tài):上電初始態(tài)和三類工作態(tài);ADC或DAC譯址及控制轉化子模塊用于產生ADC或DAC控制相應存儲空間的邏輯;狀態(tài)切換控制子模塊則通過接收圖3中其它子模塊的信息來最終實現(xiàn)存儲空間與ADC、DSP及DAC的相互對應。
當系統(tǒng)設計中不要求使用DAC或ADC時,圖4中示出了圖1中模塊互連部分與圖2的簡化;由此可以看出以上基于可通用設計模式的DSP系統(tǒng)框架簡化為了具有以乒乓式存取的雙存儲器子模塊的情況,故基于乒乓式存取的數據系統(tǒng)是其特例。此外,該框架可以實現(xiàn)多路ADC及多路DAC的并行工作,通常選用相應數目的SDRAM作為存儲器子模塊來配合使用。
圖5中示出了一種使用雙乒乓式存儲器模塊的DSP系統(tǒng)主要部分,與圖1中模塊互連部分相比,此硬件結構顯得冗余,實現(xiàn)上會使用較多的器件并使制板連線更為復雜,但性能上不會有所提升。圖6中示出了一種使用FPGA以實現(xiàn)FIFO功能為主的DSP系統(tǒng)主要部分,與圖1中模塊互連部分相比,此硬件結構較為簡單,但圖像的采集和顯示要配合軟件上的協(xié)作予以實現(xiàn)從而增加了軟件開發(fā)的復雜性,此外由于該存儲器模塊的總線結構單一至使總線復用從而在某些情況下降低了系統(tǒng)性能。
軟件構架
TI推薦的RF5(Reference Framework Level 5)是基于DSP/BIOS和TMS320 DSP算法標準的一般性DSP軟件構架要素的源代碼,用戶可以根據具體應用在其基礎上搭建適合需求的自定義OS?;赗F5的軟件構架設計大體分為三步:
1) 針對具體的硬件電路開發(fā)相應的底層驅動,對于ADC和DAC來說主要是通過I2C總線對其進行配置;
2) 借助RF5來構建不拘于底層電路的OS層代碼,并嵌入相應的硬件驅動及標準的算法接口;
3) 按TMS320 DSP算法標準編制具體的視頻處理算法,并通過標準的接口定義將其集成到OS層代碼中。
其中,每一步的設計相對獨立,這樣在更改具體電路的情況下只需修改1),在變化算法功能的情況下只需修改3),而在擴充軟件整體應用范圍的情況下只需修改2)。
RF5具有良好的擴展性及高集成度特性,支持動態(tài)對象的創(chuàng)建和基于任務的多線程,提供了可以自定義擴充的代碼要素和有效的跟蹤調試工具,通過其可實現(xiàn)下列三方面的結構化設計從而明了OS層的數據流通路徑:
1) 數據處理方面。RF5提供了四種關于數據處理方面的要素:任務、通道、外包單元和算法接口。OS層由不同的多個任務組成,每個任務可以包含一系列的通道,而每個通道又可以包含一系列的外包單元,其中一個外包單元對應一個算法接口的封裝;每個算法代碼都可以重復使用,通過調用不同的對象來實現(xiàn)一個算法的多個例程在不同通道中的使用。
2) 數據傳遞方面:
A. 任務級的數據傳遞,是基于旗語同步的。在任務與驅動之間通常采用DSP/BIOS中的SIO對象(針對音頻系統(tǒng))或GIO對象(針對視頻系統(tǒng))指明數據的位置來進行交互,而在多個任務之間則采用RF5提供的SCOM消息隊列機制通過識別不同的隊列名和指明相應的數據位置來互傳信息。
B. 外包單元級的數據傳遞。每個外包單元都有其輸入列表和輸出列表,這些列表里存放了由RF5提供的ICC對象用于指明數據的位置,通過各列表中包含相同的ICC對象來實現(xiàn)各外包單元間的交互。此外,通過ICC對象可以完成任務級數據和外包單元級數據之間的交互。
3) 消息控制。對于信息少的控制消息可以采用DSP/BIOS中的郵箱機制通過搬移指令的內容單向的在任務間傳遞指令,而對于信息多的控制消息則可以使用SCOM消息隊列機制通過識別不同的隊列名和指明相應的數據位置在任務間傳遞指令。
圖7中示出了基于視頻處理與RF5的一般OS層構架示意圖,可以通過增加任務來擴充其它如網絡傳輸、音頻處理等功能(需要相應的硬件和底層驅動支持)。從圖中可以看到,以雙通道及每通道內兩外包單元的情況為例,圖像數據從ADC出來后經過輸入設備驅動存放在GIO對象所指的數據位置,任務tskCapture通過調用GIO對象對其所指的數據進行格式及大小等的簡單變換,再將結果數據存入SCOM消息指定的位置并通過SCOM隊列向任務tskProcess發(fā)送該消息;當任務tskProcess接收到該消息后,對其所指的數據按具體要求的算法進行處理,其中一個外包單元實現(xiàn)一個算法例程,一個通道則實現(xiàn)一路功能上已獨立且算法間先后關聯(lián)的算法組;當任務tskProcess處理數據完成后,將結果再次存入SCOM消息指定的位置并向任務tskDisplay發(fā)送消息;任務tskDisplay收到消息后會對所指數據做格式及大小等的簡單變換,以便通過GIO對象發(fā)送給輸出設備驅動從而在DAC后端顯示;任務tskControl通過接收主機端的控制消息來對任務tskProcess的處理過程進行控制。
基于本文上述討論的系統(tǒng)框架模型可通過圖7定制適合其硬件結構的如圖8中所示的簡化的OS層構架。與圖7中相比,圖8中只有算法的處理和控制兩個任務從而提高了DSP在算法處理上的效率,而ADC和DAC的配置則在系統(tǒng)上電后的初始化中完成,此后ADC和DAC不需要DSP的介入而通過CPLD/FPGA中的邏輯實現(xiàn)了圖像數據按要求的格式和大小在存儲器子模塊中的存放從而在某種程度上減輕了DSP的負擔。
設計思路的具體應用
依照以上的思路實現(xiàn)整個系統(tǒng)的設計主要通過下列四步的完成:
1) 根據實際需要選擇適當的器件,完成整個系統(tǒng)硬件層次上的連接;
2) 針對具體情況定制系統(tǒng)中使用的可編程邏輯器件的內部邏輯;
3) 編寫適合具體電路的程序代碼,實現(xiàn)整個系統(tǒng)軟件層次上的構架;
4) 將指定的視頻處理算法嵌入在該構架中。
按上述四步,選用TVP5150A(ADC)、SAA7105(DAC)、XC95288XL(CPLD)各一片和三片IS61LV2568L(SRAM)為主要器件,在數字信號處理仿真/教學實驗系統(tǒng)DES3200的二次開發(fā)接口上完成了基于可通用模式的DES3200圖像處理子卡II的設計,如圖9中左所示;并配合TMS320C6713B(DSP)子卡得到了CIF格式的視頻預處理的顯示結果,如圖9中右所示。進而,證明該通用設計模式是可行的。
參考文獻:
1. Reference Frameworks for eXpressDSP software: RF5, An Extensive, High-Density System, SPRA795A. Texas Instruments, April 2003.
2. TMS320 DSP/BIOS User's Guide, SPRU423E. Texas Instruments, March 2004.
3. TMS320C6713B Floating-Point Digital Signal Processor, SPRS294B. Texas Instruments, June 2006.
4. TVP5150APBS Ultralow Power NTSC/PAL/SECAM Video Decoder with Robust Sync Detector, SLES087. Texas Instruments, September 2003.
5. SAA7104H; SAA7105H Digital Video Encoder. Philips Semiconductors, March 2004.
評論