摘 要: 結(jié)合S5933和TMS320C6000 DSP設(shè)計(jì)了高速圖像處理硬件平臺(tái),可適應(yīng)和滿(mǎn)足利用PC機(jī)進(jìn)行高速數(shù)據(jù)采集與處理設(shè)備的技術(shù)發(fā)展趨勢(shì)和應(yīng)用需求。
關(guān)鍵詞: 前端數(shù)據(jù)采集,;TMS320C6000系列DSP;PCI總線專(zhuān)用芯片,;實(shí)時(shí)高速數(shù)字圖像處理
當(dāng)前,,在計(jì)算機(jī)、多媒體,、數(shù)據(jù)通信和網(wǎng)絡(luò)技術(shù)的發(fā)展,、應(yīng)用和融合中,人們對(duì)計(jì)算機(jī)視頻應(yīng)用的要求越來(lái)越高,,這使得實(shí)時(shí),、高速、便捷、智能化,、大容量的高性能數(shù)字圖像處理設(shè)備成為未來(lái)視頻設(shè)備的發(fā)展方向,,這必然要求產(chǎn)生與之相適應(yīng)的新理論、新方法和新算法,。為了在利用和實(shí)現(xiàn)這些新技術(shù)的過(guò)程中驗(yàn)證其可行性,,突破高速DSP硬件設(shè)備的技術(shù)應(yīng)用瓶頸,,本文提出了一種基于PCI總線和TI公司C6000系列高端DSP芯片的高速數(shù)字圖像處理平臺(tái)設(shè)計(jì)方案,,從硬件和軟件上解決了通過(guò)AMCC公司的S5933 PCI總線接口芯片,由CLPD作橋,,實(shí)現(xiàn)與功能強(qiáng)大的 TMS320C6416 HPI主機(jī)接口的高速通信,,為做進(jìn)一步實(shí)時(shí)音視頻壓縮,、圖像檢測(cè)、視覺(jué)定位,、高速處理等算法研究提供了完整的實(shí)踐平臺(tái),。
1 系統(tǒng)硬件結(jié)構(gòu)
TMS320C6000系列DSP是基于TMS320C6000平臺(tái)的32 bit浮點(diǎn)DSP處理器,。它包含兩個(gè)子系列:用于定點(diǎn)計(jì)算的TMS320C62x系列和用于浮點(diǎn)計(jì)算的TMS320C67x系列。TMS320C6000系列時(shí)鐘頻率最高可達(dá)到250 MHz,。該系列DSP包含兩個(gè)通用的寄存器組A和B,,每組有16個(gè)32 bit的寄存器,。芯片內(nèi)含8個(gè)運(yùn)算功能單元:兩個(gè)乘法器(M1和M2),6個(gè)算術(shù)邏輯單元(L1,、L2,、S1,、S2、D1及D2),,所有單元都能獨(dú)立并行操縱,。以TM320C6701為例,,其工作頻率最高為167 MHz,,最快速度可達(dá)8×167=1 336 MIPS。
基于S5933的高速TMS320C6000 DSP圖像處理硬件平臺(tái)設(shè)計(jì)系統(tǒng)框圖如圖1所示,。整個(gè)系統(tǒng)由前端數(shù)據(jù)采集、DSP和PCI總線專(zhuān)用芯片組成,。
DSP芯片采用TI公司高性能數(shù)字信號(hào)處理器TMS320C6416,,芯片采用哈佛結(jié)構(gòu)、流水線操作,、專(zhuān)用硬件乘法器、快速DSP指令,。主頻可高達(dá)600 MHz~1 GHz,,片內(nèi)的RAM采用兩級(jí)高速緩存結(jié)構(gòu),程序和數(shù)據(jù)擁有獨(dú)立的緩存空間,。片內(nèi)提供多種集成外設(shè),;多通道的EMDA控制器,、多信道帶緩沖能力的串口McBSP、32 bit通用計(jì)數(shù)器和I2C總線主/從模式接口等,。
TMS320C6416的兩個(gè)獨(dú)立的外部數(shù)據(jù)總線接口EMIFA(64 bit)和EMIFB(32 bit)具有很高的數(shù)據(jù)吞吐率(最高能達(dá)到1 200 Mb/s),而且可以與目前幾乎所有類(lèi)型的存儲(chǔ)器直接連接,,完成數(shù)字圖像處理數(shù)據(jù)的大容量高速存儲(chǔ)。
前端采用兩路ADI公司的14 bit數(shù)/模轉(zhuǎn)換器AD6645(80/105 MSPS)通過(guò)SMA射頻端子進(jìn)行高速數(shù)據(jù)采樣,,其具有很高的無(wú)雜散動(dòng)態(tài)范圍和過(guò)采樣性能,,可以降低系統(tǒng)對(duì)前端射頻元器件的要求,,從而降低系統(tǒng)的復(fù)雜性和生產(chǎn)成本。數(shù)據(jù)經(jīng)FPGA進(jìn)行一定緩沖,,或是進(jìn)行FFT、濾波,、去噪,,再由64 bit的EMIFA接口發(fā)送到DSP進(jìn)行編解碼處理、MPEG4壓縮等,。最終,壓縮編碼后的視頻數(shù)據(jù)流可通過(guò)RS422將數(shù)據(jù)同步輸出或是由PCI總線發(fā)送給主機(jī)端保存或進(jìn)行進(jìn)一步驗(yàn)證,。
該平臺(tái)DSP片外提供大容量高速存儲(chǔ)器空間,。用ISSI公司的SBSRAM(128 KB×32 bit)和HYNIX的SDRAM(4 MB×16 bit),,外置4 MB的Flash,為預(yù)處理或是處理后的圖像數(shù)據(jù)提供可靠,、充裕的暫存空間,。SBSRAM和SDRAM均可由EMIFB進(jìn)行無(wú)縫連接,,為硬件的實(shí)現(xiàn)帶來(lái)了很大的便利。
PCI部分采用目前較常用的AMCC公司S5933接口芯片,,它是一種功能強(qiáng)且使用靈活的PCI總線控制器專(zhuān)用芯片,。該芯片符合PCI局部總線規(guī)范2.1版本,,既可作為PCI總線目標(biāo)設(shè)備,實(shí)現(xiàn)基本的傳送要求,,也可作為PCI總線主控設(shè)備,,訪問(wèn)其他PCI總線設(shè)備,。S5933的峰值傳送速率為132 Mb/s(32 bit PCI數(shù)據(jù)總線)。
S5933外部提供了3個(gè)物理總線:PCI總線接口,、外加總線接口(Add_On Bus)和可選的NVRAM接口。用戶(hù)可根據(jù)需要設(shè)計(jì)S5933與外加總線接口相連接的邏輯電路和配置空間的初始化,,而不必考慮PCI總線規(guī)范的眾多協(xié)議,,從而將復(fù)雜的PCI總線接口關(guān)系轉(zhuǎn)化為簡(jiǎn)單的8 bit/16 bit/32 bit外加總線接口關(guān)系,。
S5933硬件結(jié)構(gòu)及外部連接圖如圖2所示。主機(jī)端通過(guò)32 bit PCI總線與S5933進(jìn)行數(shù)據(jù)傳輸,,再由CPLD做內(nèi)部狀態(tài)機(jī),,負(fù)責(zé)DSP端HPI(Host-Port Interface)接口的時(shí)序控制,使DSP與主機(jī)端進(jìn)行16 bit/32 bit的數(shù)據(jù)交互,。
主機(jī)接口HPI是TI高性能DSP上配置的與主機(jī)進(jìn)行通信的片內(nèi)外設(shè),。通過(guò)HPI接口,,主機(jī)可以非常方便地訪問(wèn)DSP的所有地址空間,從而實(shí)現(xiàn)對(duì)DSP的控制,。例如,,TMS320C6421的HPI接口是一個(gè)16 bit寬的并行端口。主機(jī)(Host)對(duì)CPU地址空間的訪問(wèn)是通過(guò)EDMA控制器實(shí)現(xiàn)的,。HPI接口的訪問(wèn)主要通過(guò)HPI控制寄存器(HPIC)、HPI地址寄存器(HPIA)和HPI數(shù)據(jù)寄存器(HPID)三個(gè)專(zhuān)用寄存器來(lái)實(shí)現(xiàn),。
另一方面,,CPLD掛載在EMIFB上,進(jìn)行DSP端存儲(chǔ)器映射,,從而使DSP可以通過(guò)Add_On Bus接口實(shí)現(xiàn)對(duì)S5933內(nèi)部FIFO或Mailbox的控制,,達(dá)到與主機(jī)端進(jìn)行命令或狀態(tài)信息的通信。
2 系統(tǒng)軟件實(shí)現(xiàn)
使用專(zhuān)用DSP芯片進(jìn)行設(shè)計(jì)與開(kāi)發(fā),,包括硬件和軟件兩個(gè)方面。在軟件方面通常有以下三種軟件設(shè)計(jì)方式,。
?。?)完全用C語(yǔ)言開(kāi)發(fā),。TI公司提供了用于C語(yǔ)言開(kāi)發(fā)的CCS(Code Composer Studio)平臺(tái),該平臺(tái)包括優(yōu)化ANSI C編譯器,,從而可以在C源程序級(jí)進(jìn)行開(kāi)發(fā),。這種方式大大提高了軟件的開(kāi)發(fā)速度和可讀性,,方便了軟件的修改和移植。但是,,在某些情況下,,C代碼的效率還是無(wú)法與手工編寫(xiě)的匯編代碼的效率相比,如FFT編程,。這是因?yàn)榧词故亲罴训腃編譯器也無(wú)法在所有的高速下都能最合理地利用DSP芯片所提供的各種資源,。此外,用C語(yǔ)言實(shí)現(xiàn)DSP芯片的某些硬件控制也不如匯編程序方便,,有些甚至無(wú)法用C語(yǔ)言實(shí)現(xiàn)。
?。?)完全用匯編語(yǔ)言開(kāi)發(fā),。TI公司提供了用于匯編語(yǔ)言開(kāi)發(fā)的針對(duì)TMS320C54X的匯編語(yǔ)言,,用戶(hù)可以用它進(jìn)行軟件開(kāi)發(fā)。此方式可以更合理地充分利用DSP芯片提供的硬件資源,,代碼效率高,,程序執(zhí)行速度快。但是用DSP芯片的匯編語(yǔ)言編寫(xiě)程序是比較復(fù)雜的,。一般來(lái)說(shuō),,不同公司的芯片匯編語(yǔ)言是不同的,即使是同一公司的芯片,,由于芯片類(lèi)型的不同(如定點(diǎn)和浮點(diǎn))和芯片的升級(jí)換代,,其匯編語(yǔ)言也不同。因此,,用匯編語(yǔ)言開(kāi)發(fā)基于某種DSP芯片的產(chǎn)品周期較長(zhǎng),,并且軟件的修改和升級(jí)較困難,這些都是由匯編語(yǔ)言的可讀性和可移植性較差所致,。
?。?)用C語(yǔ)言和匯編語(yǔ)言混合編程開(kāi)發(fā)。為了充分利用DSP芯片的資源,,更好地發(fā)揮C語(yǔ)言和匯編語(yǔ)言的各自?xún)?yōu)點(diǎn),,可以將兩者有機(jī)結(jié)合起來(lái),兼顧兩者的優(yōu)點(diǎn),,避免其弊端,。因此,,在很多情況下,采用混合編程方法能更好地達(dá)到設(shè)計(jì)要求,,完成設(shè)計(jì)功能,。但是,,采用C語(yǔ)言和匯編語(yǔ)言混合編程必須遵循一些有關(guān)的規(guī)則,,否則會(huì)遇到一些意想不到的問(wèn)題,給開(kāi)發(fā)設(shè)計(jì)帶來(lái)許多麻煩,。
TMS320C6000在設(shè)計(jì)時(shí)采用了一種類(lèi)RISC機(jī)的結(jié)構(gòu),指令集非常簡(jiǎn)單,,運(yùn)算速度特別快,,實(shí)時(shí)性較好,但是有時(shí)又感覺(jué)匯編指令集太小,。像DSP算法中常用的乘加指令、循環(huán)操作指令等,,在C54x和C3x中兩條指令就可以完成的功能,,而在C6000中用作處理復(fù)雜并發(fā)任務(wù)時(shí)卻需要一個(gè)循環(huán)體,所以它的程序設(shè)計(jì)一般比較復(fù)雜,。要想充分發(fā)揮C6000的運(yùn)算能力,必須從其硬件結(jié)構(gòu)出發(fā),,最大限度地利用8個(gè)功能單元,,使用軟件流水線,,盡量讓程序無(wú)沖突地并行執(zhí)行,。
并行處理的長(zhǎng)處在于,在處理彼此之間沒(méi)有承接關(guān)系的運(yùn)算時(shí),,在CPU資源允許的情況下可以并行完成,。但對(duì)于前后有承接關(guān)系或者判斷,、跳轉(zhuǎn)頻繁的情況,就無(wú)法發(fā)揮并行的優(yōu)勢(shì),。一般循環(huán)體都滿(mǎn)足并行處理的條件,,并且循環(huán)體往往是程序中耗時(shí)最長(zhǎng)的,,因此用C6000進(jìn)行開(kāi)發(fā)時(shí)應(yīng)將優(yōu)化重點(diǎn)放在循環(huán)體上,。為了降低開(kāi)發(fā)難度,C6000提供了很多通過(guò)高級(jí)語(yǔ)言(如ANSI C)對(duì)程序進(jìn)行優(yōu)化的方法,。在應(yīng)用滿(mǎn)足實(shí)時(shí)性處理要求時(shí),應(yīng)盡量采用該方法,。但是這種方法的效率比較低,,C語(yǔ)言?xún)?yōu)化最好的例子是點(diǎn)乘,這種循環(huán)使用C語(yǔ)言進(jìn)行優(yōu)化的方法可以百分之百地利用CPU資源,,使程序的并行性達(dá)到最好。但經(jīng)驗(yàn)證明,,做20點(diǎn)的點(diǎn)乘的耗時(shí)是匯編語(yǔ)言程序的3倍,,所以如果系統(tǒng)對(duì)實(shí)時(shí)性要求比較高,,就不能使用這種優(yōu)化方法了?;贒SP的C語(yǔ)言和匯編語(yǔ)言混合編程的程序設(shè)計(jì)方法可以較好地解決以上問(wèn)題,。
軟件設(shè)計(jì)包括了兩個(gè)部分:主機(jī)端對(duì)DSP片內(nèi)片外存儲(chǔ)器的讀寫(xiě)和DSP端對(duì)片外存儲(chǔ)器的讀寫(xiě),。
主機(jī)端和DSP端的軟件流程如圖3所示,。
主機(jī)端用Visual C++開(kāi)發(fā)生成,其中利用了WIN32的API函數(shù),,封裝在EVM6X.LIB庫(kù)中,。在應(yīng)用程序中,需要包含頭文件evm6xdll.h,,在這個(gè)頭文件中,包含對(duì)各個(gè)WIN32 API函數(shù)的定義,,具體定義可以參看參考文獻(xiàn)[4],。
由圖3中可知,主機(jī)端通過(guò)HPI口把COFF文件加載到DSP片內(nèi)運(yùn)行,,由S5933的Mailbox做橋梁,實(shí)現(xiàn)了與DSP之間消息的通信,。從而達(dá)到了主機(jī)端對(duì)DSP片內(nèi)和片外所有存儲(chǔ)器的高速讀寫(xiě),,保證了數(shù)據(jù)處理的實(shí)時(shí)性和可靠性。
需要注意的是,,在主機(jī)端和DSP端之間Mailbox的傳遞,,在硬件上是通過(guò)DSP芯片的外部管腳EXT_INT4來(lái)發(fā)起的,并且每次跳出中斷服務(wù)程序都應(yīng)該對(duì)S5933的Add_On Bus端的imcoming mailbox實(shí)行中斷清零操作,。
例如,,實(shí)現(xiàn)PC機(jī)對(duì)DSP攝像系統(tǒng)的攝像控制以及圖像的傳輸,主要使用的API函數(shù)是DeviceIOControl(),、ReadFile()和WriteFile()。其中DeviceIOControl()用于PC機(jī)(主機(jī))向DSP圖像采集系統(tǒng)發(fā)送請(qǐng)求,;ReadFile()和WriteFile()分別用于從圖像采集系統(tǒng)中讀出數(shù)據(jù)以及向圖像采集系統(tǒng)中寫(xiě)入數(shù)據(jù),。在設(shè)計(jì)過(guò)程中必須注意的問(wèn)題是,由于USB接口為主-從方式,,其一切傳輸過(guò)程都必須通過(guò)主機(jī)向外設(shè)發(fā)送請(qǐng)求后才可以開(kāi)始,因此在使用ReadFile(),、WriteFile()讀寫(xiě)數(shù)據(jù)之前,,必須先通過(guò)DeviceIOControl()向圖像采集系統(tǒng)發(fā)送請(qǐng)求。
實(shí)驗(yàn)數(shù)據(jù)表明,,DSP數(shù)據(jù)吞吐率>500 Mb/s,PCI傳送速率>100 Mb/s,。采用PCI接口芯片S5933,、DSP芯片TMS320C6416設(shè)計(jì),,再配置視頻輸入處理芯片SAA7113,實(shí)現(xiàn)的視頻圖像處理實(shí)驗(yàn)平臺(tái)系統(tǒng)可實(shí)現(xiàn)圖像的高速連續(xù)采集,,進(jìn)行圖像壓縮,、圖像處理等算法的驗(yàn)證,,達(dá)到了系統(tǒng)設(shè)計(jì)的目標(biāo),。本系統(tǒng)具有使用靈活,、升級(jí)TI更新芯片方便等特點(diǎn)。此外,,TMS320C64x系列自帶有PCI橋,,HPI接口有16 bit/32 bit兩種數(shù)據(jù)寬度,可由外部PCI_EN和HD5管腳進(jìn)行靈活配制,。利用TMS320C64x自帶的PCI橋,,可更加節(jié)省硬件的開(kāi)發(fā)成本,,但卻缺少了PCI總線主控操作,主機(jī)端與DSP通信靈活性沒(méi)有本文提出的方案高,,在實(shí)際工程應(yīng)用中根據(jù)設(shè)計(jì)人員的具體要求而定,。
參考文獻(xiàn)
[1] TI Inc.. Interfacing the TMS320C6000 EMIF to a PCI bus using the AMCC S5933 PCI controller[Z]. 2001.
[2] TI Inc.. TMS320C6414, TMS320C6415,, TMS320C6416 fixed-point digital signal processors[Z]. 2005.
[3] AMCC Inc.. PCI products data book[Z]. 1998.
[4] TI Inc.. TMS320C62016701 evaluation module[Z]. 2004.
[5] TI Inc.. TMS320C6000 optimizing compiler user′s guide([SPRU187L])[Z]. 2004.
[6] TI Inc.. TMS320C6000 programmer′s guide([SPRU198G])[Z]. 2002.
[7] TI Inc.. TMS320C6000 assembly language tools user′s guide([SPRU186N])[Z]. 2004.
[8] 陳利學(xué).微機(jī)總線與接口設(shè)計(jì)[M].成都:電子科技大學(xué)出版社,1998.