基于DSP的圖象采集與處理系統(tǒng)的設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
圖像處理系統(tǒng)的一個(gè)關(guān)鍵問(wèn)題就是數(shù)據(jù)量龐大,數(shù)據(jù)處理相關(guān)性高,實(shí)時(shí)實(shí)現(xiàn)比較困難。即使采用高速單片機(jī)也無(wú)法滿足實(shí)時(shí)處理的需求,而DSP芯片則具有速度快,信號(hào)處理功能強(qiáng)大,實(shí)時(shí)性好等特點(diǎn),因此,將DSP用于圖像處理可使這一難題得到較好的解決。
1 系統(tǒng)構(gòu)成
本系統(tǒng)采用基于CameraLink接口的圖像輸出相機(jī)。DSP采用TI的TMS320C6711,這是一種高性能DSP處理器,其工作頻率為150 MHz,最大處理能力高達(dá)900MFLOps,該DSP既可滿足高速處理要求,又可滿足高精度運(yùn)算時(shí)的浮點(diǎn)要求。
本圖像處理系統(tǒng)主要包括圖像采集模塊(由MDR26連接器DS90CR288A和IDT72V283組成)、圖像處理模塊(由DSP器件TMS320C6711、SDRAM圖像存儲(chǔ)器和FLASH程序存儲(chǔ)器等組成)以及圖像輸出系統(tǒng)(USB和FPGA)等。該系統(tǒng)的構(gòu)成原理框圖如圖1所示。其基本工作過(guò)程是將高速CCD相機(jī)采集到的圖像數(shù)據(jù)通過(guò)電纜接入MDR26連接器,然后再接入LVDS線路接收器DS90CR288A以將其恢復(fù)成并行TTL信號(hào),同時(shí)分離出8位圖像數(shù)據(jù)和3個(gè)控制信號(hào)。而同步FIFO作為數(shù)據(jù)緩存則不會(huì)造成數(shù)據(jù)的丟失。當(dāng)其數(shù)據(jù)達(dá)到半滿時(shí),HF有效,此時(shí)可觸發(fā)DSP中斷以通知DSP將FIFO中的數(shù)據(jù)取走,并開(kāi)始進(jìn)行數(shù)據(jù)處理。DSP與USB的數(shù)據(jù)傳遞建立在消息和中斷信號(hào)基礎(chǔ)上,當(dāng)DSP或USB任何一方有數(shù)據(jù)發(fā)送時(shí),發(fā)送方先將數(shù)據(jù)和消息送到FPGA,然后用I/O腳觸發(fā)中斷至接收方,接收方接到中斷后再到FPGA中讀取消息,然后根據(jù)消息的內(nèi)容讀取數(shù)據(jù)。
本系統(tǒng)設(shè)計(jì)充分利用了TMS320C6711中EDMA的優(yōu)勢(shì),并用EDMA來(lái)進(jìn)行整個(gè)系統(tǒng)的數(shù)據(jù)傳輸。由于EDMA可以進(jìn)行背景操作,因而其整個(gè)采樣和輸出過(guò)程基本不影響操作。同時(shí),也利用了TMS320C6711的二級(jí)緩存結(jié)構(gòu),再加上系統(tǒng)外圍采用高速的數(shù)據(jù)存儲(chǔ)器芯片,因而大大提高了整個(gè)系統(tǒng)的處理速度。
2 圖像采集與處理
2.1 Camera Link技術(shù)
Camera Link技術(shù)的核心是美國(guó)NS(NationalSemiconductor)提出的一種高速數(shù)據(jù)傳輸方法—Channel Link傳輸方法技術(shù),該技術(shù)主要用于數(shù)字圖像數(shù)據(jù)的高速傳輸。該技術(shù)采用LVDS信號(hào)模式,但比先前的RS644傳輸方法具有明顯的優(yōu)點(diǎn)。LVDS(Low Voltage Differential Signaling)是最近發(fā)展起來(lái)的一種利用低電壓差分信號(hào)模式的傳輸技術(shù)。LVDS信號(hào)是以+1.2 V為基準(zhǔn)的300 mV差分形式,其低電壓擺幅差分模式具有高速傳輸數(shù)據(jù)時(shí)交叉干擾小,EMI干擾小等特點(diǎn)。ChannelLink采用LVDS方式傳輸數(shù)據(jù),它將28位數(shù)據(jù)轉(zhuǎn)換成串行方式在4對(duì)線路上進(jìn)行傳輸,然后再用另外一對(duì)線路傳輸時(shí)鐘信號(hào),其最高傳輸率可達(dá)2.38 Gb/s。傳輸距離可達(dá)10 m。NS的LVDS發(fā)送器DS90CR287可用于完成并行TTL/CMOS信號(hào)到LVDS信號(hào)的轉(zhuǎn)換,LVDS線路接收器DS90CR288則用來(lái)將LVDS信號(hào)還原成并行TTL/CMOS信號(hào)。
2.2 TMS320C6711 DSK簡(jiǎn)介
本系統(tǒng)采用美國(guó)TI公司的TMS320C6711DSK(DSP Starter Kit)開(kāi)發(fā)工具。這是由TI公司提供的一套獨(dú)立的C6000開(kāi)發(fā)實(shí)驗(yàn)平臺(tái),這種開(kāi)發(fā)工具集成了一些基本的應(yīng)用電路,它既可以幫助用戶評(píng)估和開(kāi)發(fā)C6000系列DSP的功能,也可以作為DSP初學(xué)者的學(xué)習(xí)工具。它的硬件由6711 DSP構(gòu)成,主頻為150 MHz,憑借其二級(jí)高速緩存及VLIW (very long instruction word)架構(gòu),每秒可執(zhí)行900萬(wàn)次浮點(diǎn)運(yùn)算(MFLOPS)。DSK可以提供雙時(shí)鐘,通過(guò)設(shè)定可使CPU工作在150 MHz,而使擴(kuò)展存儲(chǔ)器接口(EMIF)工作在100 MHz。 DSK上設(shè)計(jì)有16 M字節(jié)/100 MHz的SDRAM和128 K字節(jié)的ROM。SDRAM由TMS320C6711為其產(chǎn)生所需的控制信號(hào)和刷新信號(hào)。最大刷新周期可達(dá)15.625 ms。HPI接口可通過(guò)并口連接所有的DSP存儲(chǔ)空間,并有子卡接口所需的存儲(chǔ)器和外圍連接接口及嵌入式JTAG仿真功能。
2.3 圖像采集與處理接口設(shè)計(jì)
根據(jù)CameraLink標(biāo)準(zhǔn),CCD輸出圖像數(shù)據(jù)經(jīng)Camera link后,可由LVDS線路接收器DS90CR288將其恢復(fù)成并行的TTL/CMOS信號(hào),并分離出8位圖像數(shù)據(jù)和3個(gè)控制信號(hào)(LVAL,DVAL,STROBE)接人同步FIFO(IDT72V283),再通過(guò)DSP的外部存儲(chǔ)器接口(EMIF)接入TMS320C6711DSK開(kāi)發(fā)板進(jìn)行圖像數(shù)據(jù)處理。其具體的圖像采集電路原理圖如圖2所示。
3 圖像輸出系統(tǒng)
3.1 USB芯片AN2131QC
USB芯片選用CYPRESS半導(dǎo)體公司的EZUSB(AN2131QC)芯片,AN2131 QC具有一個(gè)USB接口、8位數(shù)據(jù)線和16位地址線,以及3個(gè)8位I/O端口,其片內(nèi)帶有增強(qiáng)型8051核,該8051核與傳統(tǒng)8051的區(qū)別在于其速度較快。傳統(tǒng)的8051標(biāo)準(zhǔn)指令周期是12個(gè)CLOCK,而在這里只需要4個(gè)CLOCK,因而大大提高了指令執(zhí)行的時(shí)間。由于其帶有增強(qiáng)8051核,故可以將固件儲(chǔ)存在主機(jī)上,每次上電時(shí),再將固件調(diào)用到芯片的RAM存儲(chǔ)器單元,這樣可使固件升級(jí)非常容易。另外,CYPRESS公司還提供了一個(gè)不需要修改就可以使用的驅(qū)動(dòng)程序ezusb.Sys,這個(gè)驅(qū)動(dòng)程序允許任何傳輸類(lèi)型與EZ-USB芯片構(gòu)建的系統(tǒng)進(jìn)行通信。CPU的時(shí)鐘頻率為24 MHz,使用RAM作為程序存貯器,其8051程序代碼及設(shè)備描述表可以每次從主機(jī)中下載。
3.2 圖像輸出接口設(shè)計(jì)
TMS320C6711與AN2131QC采用并口方式進(jìn)行通訊。DSP為32位處理器,其并行接口數(shù)據(jù)線為32根,而AN213 I QC的并行口為8位,若將DSP32根數(shù)據(jù)線中的8根數(shù)據(jù)線直接與USB并口相連,則DSP傳送一個(gè)32位數(shù)據(jù)需進(jìn)行4次操作,這顯然會(huì)影響系統(tǒng)的效率。因此,可采用8位/32位數(shù)據(jù)線轉(zhuǎn)換和數(shù)據(jù)緩沖設(shè)備來(lái)將兩者相連??紤]到性能價(jià)格等因素,本設(shè)計(jì)采用FPGA作為兩者之間的緩沖設(shè)備,實(shí)現(xiàn)從DSP到USB數(shù)據(jù)傳輸緩沖以及32位數(shù)據(jù)線轉(zhuǎn)8位數(shù)據(jù)線功能。FPGA采用X ilinx公司SpartanIIE系列的XC2SSOE芯片作為轉(zhuǎn)換器。其圖像傳輸電路原理圖如圖3所示。
4 系統(tǒng)軟件設(shè)計(jì)
4.1 DSP的軟件開(kāi)發(fā)
TMS320C6000軟件開(kāi)發(fā)的一切過(guò)程都可在CCS集成環(huán)境下進(jìn)行,包括項(xiàng)目的建立、源代碼的編輯以及程序的編譯和調(diào)試。圖4所示是TMS320C6000的軟件開(kāi)發(fā)流程圖。其中黑體部分是開(kāi)發(fā)C代碼的常規(guī)流程,其它功能可用于輔助和加速軟件開(kāi)發(fā)過(guò)程。
該CCS能對(duì)用戶開(kāi)發(fā)的源代碼進(jìn)行優(yōu)化。目的是縮短代碼長(zhǎng)度并提高代碼執(zhí)行效率。其中,C優(yōu)化器對(duì)C源代碼進(jìn)行優(yōu)化,所進(jìn)行的優(yōu)化包括針對(duì)C代碼的一般優(yōu)化和針對(duì)C6000的優(yōu)化,如重新安排語(yǔ)句和表達(dá)式、把變量分配給寄存器、打開(kāi)循環(huán)和模塊級(jí)優(yōu)化(把若干個(gè)文件組成1個(gè)模塊進(jìn)行優(yōu)化)等。C優(yōu)化器完成的最重要的優(yōu)化處理是軟件流水(software pipeline)。軟件流水是專門(mén)針對(duì)循環(huán)代碼的一種優(yōu)化技術(shù),利用軟件流水可以生成非常緊湊的循環(huán)代碼,這也是C6000的C編譯器能夠達(dá)到較高編譯效率的主要原因。
匯編優(yōu)化器是C6000代碼產(chǎn)生工具內(nèi)極具特色的一部分。它在DSP業(yè)界首創(chuàng)了對(duì)線性匯編代碼自動(dòng)進(jìn)行優(yōu)化的技術(shù)。線性匯編語(yǔ)言是為簡(jiǎn)化C6000匯編語(yǔ)言程序的開(kāi)發(fā)而設(shè)計(jì)的,它不是獨(dú)立的編程語(yǔ)言。它可用用戶編寫(xiě)的線性匯編代碼作為輸入,同時(shí)產(chǎn)生一個(gè)標(biāo)準(zhǔn)匯編代碼作為輸出。與C6000的標(biāo)準(zhǔn)匯編語(yǔ)言相比,采用線性匯編不需要考慮并行指令安排、指令延遲和寄存器,而由匯編優(yōu)化器自動(dòng)完成,其所產(chǎn)生的代碼效率可以達(dá)到人工編寫(xiě)代碼效率的95%-100%,同時(shí)還可以降低編程工作量,縮短開(kāi)發(fā)周期。
C6000程序的調(diào)試和仿真有兩種模式:軟件仿真和硬件仿真。軟件仿真時(shí),其程序的執(zhí)行完全靠主機(jī)上的仿真軟件模擬,程序單步或者運(yùn)行的結(jié)果都是仿真軟件“計(jì)算”出來(lái)的。而硬件仿真需要目標(biāo)板。仿真程序利用開(kāi)發(fā)系統(tǒng)將代碼下載到DSP,程序是在芯片上直接運(yùn)行的。仿真軟件只是把運(yùn)行結(jié)果讀出來(lái)顯示。軟件仿真無(wú)需目標(biāo)板就可以開(kāi)始軟件編程,但仿真速度較慢,而且無(wú)法仿真某些外設(shè)的功能。硬件仿真的優(yōu)點(diǎn)是仿真速度快,仿真結(jié)果與實(shí)際結(jié)果一致。
4.2 系統(tǒng)的上電引導(dǎo)
C6711的引導(dǎo)裝載方式有三種:一是無(wú)引導(dǎo),二是ROM/FLASH引導(dǎo),三是主機(jī)引導(dǎo)。本設(shè)計(jì)采用FLASH引導(dǎo)。根據(jù)DSK開(kāi)發(fā)板上EMIF與FIASH硬件電路連接設(shè)計(jì)的引導(dǎo)程序如圖5所示。
(1)FLASH存儲(chǔ)器的擦除
擦除FLASH存儲(chǔ)器的關(guān)鍵源代碼如下:
至此FLASH內(nèi)部地址已經(jīng)映射到C6711的CE1空間,其開(kāi)始地址為0X90000000H,因此其FLASH_ADR1,F(xiàn)LSH_ADR2的定義如下:
#define FLASH_ADR1 0X90000555
#define FLASH_ADR2 0X900002AA
(2)匯編源代碼文件
本引導(dǎo)代碼的主要功能是將用戶程序段從FLASH復(fù)制到DSP內(nèi)部RAM中。然后再跳轉(zhuǎn)到程序的入口處開(kāi)始執(zhí)行主程序。這里采用的是EDMA快速實(shí)現(xiàn)DSP存儲(chǔ)空間數(shù)據(jù)搬移的方式?;贓DMA傳輸參數(shù)的設(shè)置方法如表1所列。其核心引導(dǎo)程序如下:
啟動(dòng)EDMA復(fù)制主程序段:CPU可以通過(guò)寫(xiě)事件置位寄存器(ESR)啟動(dòng)一個(gè)EDMA通道,ESR中某一位寫(xiě)1時(shí),將強(qiáng)行觸發(fā)對(duì)應(yīng)的事件。程序如下:
(3)鏈接命令文件
系統(tǒng)中的鏈接命令文件(boot.cmd)如下:
VEC,PMEM代表內(nèi)部RAM的兩個(gè)存儲(chǔ)空間,而CEVEC,CEPMEM代表FLASH內(nèi)的兩塊存儲(chǔ)空間,對(duì)目標(biāo)文件中各段的加載地址和運(yùn)行地址可在SECTIONS段實(shí)現(xiàn):
引導(dǎo)裝載是設(shè)計(jì)DSP系統(tǒng)所必需的過(guò)程。本設(shè)計(jì)采用EDMA方式來(lái)實(shí)現(xiàn)程序的快速搬移,故可在自制的PCB板上正確地實(shí)現(xiàn)脫機(jī)運(yùn)行。
(4)對(duì)DSP寄存器的設(shè)置
只有對(duì)相應(yīng)的寄存器實(shí)現(xiàn)EMIF初始化,DSP才能訪問(wèn)外部存儲(chǔ)器的數(shù)據(jù),其源代碼如下:
5 結(jié)束語(yǔ)
本文介紹了為了在線線圈直徑的測(cè)量而開(kāi)發(fā)線陣CCD圖像采集和處理設(shè)備的具體方法,該系統(tǒng)利用TI公司的高性能浮點(diǎn)DSP-TMS320C6711實(shí)現(xiàn)了對(duì)dalsa公司的Piranha2 P2—2x Camera輸出數(shù)據(jù)的采集與處理。給出了一種通用的實(shí)時(shí)圖像處理系統(tǒng),并詳細(xì)討論了系統(tǒng)的具體結(jié)構(gòu)。在該系統(tǒng)中運(yùn)行一些基本的圖像處理(銳化,平滑,邊緣檢測(cè))和壓縮算法(JPEG,H.263),都能達(dá)到實(shí)時(shí)處理的目的。但在實(shí)際應(yīng)用中,由于要求進(jìn)行連續(xù)采集與處理,最好能采用多個(gè)DSP并行工作方式。若物體的運(yùn)動(dòng)速度更快或圖像處理更復(fù)雜時(shí),還應(yīng)采用性能更強(qiáng)的DSP(如TI的64X系列DSP或采用多個(gè)DSP并行處理)。另外,在DSP與USB通訊設(shè)計(jì)中引人FPGA可使系統(tǒng)的設(shè)計(jì)更加靈活,同時(shí)也可為系統(tǒng)以后的擴(kuò)展提供方便。