基于DSP的空啤酒瓶圖像數(shù)據(jù)處理系統(tǒng)研制
1 引言
空瓶檢測(cè)機(jī)的機(jī)器視覺(jué)系統(tǒng)分為基于PC機(jī)、基于DSP和基于智能相機(jī)三種結(jié)構(gòu)。不論哪種結(jié)構(gòu),成像系統(tǒng)都是采用高速工業(yè)相機(jī)和光學(xué)照明系統(tǒng)對(duì)被檢測(cè)對(duì)象進(jìn)行清晰成像,然后圖像進(jìn)行后續(xù)的轉(zhuǎn)換和處理?;谥悄芟鄼C(jī)的嵌入式系統(tǒng),將圖像的采集、傳輸、處理都在智能相機(jī)內(nèi)部完成,系統(tǒng)集成化程度高,處理速度快,但是專用性強(qiáng),開發(fā)周期長(zhǎng)。目前,主要應(yīng)用的是前兩種方式。
在對(duì)瓶口和瓶底圖像的處理中使用了包括低通濾波、邊緣提取等算法,這些卷積算法需要進(jìn)行大量的乘加運(yùn)算,而且要求很高的圖像處理速度。結(jié)合處理器速度和片上外設(shè)的要求,板上的處理器采用德州儀器(TI)的TMS320VC5502高性能數(shù)字信號(hào)處理器。
本文首先介紹了VC5502DSP的特點(diǎn),然后介紹了系統(tǒng)時(shí)鐘、擴(kuò)展內(nèi)存接口、串行通信接口等外設(shè)接口,闡述了啟動(dòng)模式和目標(biāo)程序內(nèi)存空間定址等內(nèi)容,最后給出了擴(kuò)展程序內(nèi)存的燒寫時(shí)序。
2 VC5502DSP簡(jiǎn)介
2.1 TMS320VC5502的特點(diǎn)
TMS320VC5502是一款定點(diǎn)數(shù)DSP,它的主要特征:
基于高性能,低功耗的TMS320C55x的CPU內(nèi)核。3-/5-ns的指令周期,300/200MHz的時(shí)鐘速率;16K字節(jié)指令緩存;600/400兆次/秒的乘累加運(yùn)算(MMACS)。
內(nèi)部總線結(jié)構(gòu)包括1條內(nèi)部程序總線,3條內(nèi)部數(shù)據(jù)讀總線,2條內(nèi)部數(shù)據(jù)寫總線。沒(méi)有外部總線競(jìng)爭(zhēng)時(shí),可以在一個(gè)時(shí)鐘內(nèi)實(shí)現(xiàn)三次數(shù)據(jù)讀和兩次數(shù)據(jù)寫,并行度很高。
兩個(gè)40位乘累加單元(MAC),每個(gè)都可在一個(gè)時(shí)鐘周期內(nèi)實(shí)現(xiàn)一次17bit×17bit運(yùn)算,一個(gè)40位的算術(shù)邏輯單元(ALU)輔以一個(gè)16位的算術(shù)邏輯單元。
使用可變長(zhǎng)度指令增加指令密度,指令單元(IU)每次取指32bit放入程序單元(PU)進(jìn)行排隊(duì)。PU進(jìn)行指令譯碼,執(zhí)行指令,分配任務(wù)到地址單元(AU)和數(shù)據(jù)單元(DU),并且維護(hù)完全保護(hù)性指令流水線。分支預(yù)測(cè)技術(shù)減少因?yàn)闂l件指令造成指令流水線的刷新。
EMIF接口提供對(duì)異步EPROM、SRAM、SDRAM和異步突發(fā)式SRAM(SBSRAM)的無(wú)縫連接。程序內(nèi)存和數(shù)據(jù)內(nèi)存統(tǒng)一編址,支持8M16位字的內(nèi)存空間,分為四個(gè)區(qū)域(CE)。
另外,TI還提供了一系列開發(fā)工具和開發(fā)包,包括eXpressDSP,CodeComposerStudio,DSP/BIOS,TI標(biāo)準(zhǔn)算法庫(kù),信號(hào)處理算法庫(kù),視頻和圖像處理算法庫(kù)等,提高了用戶的開發(fā)效率。
2.2 系統(tǒng)時(shí)鐘設(shè)置
TMS320VC5502可以使用外部晶振和內(nèi)部的振蕩器作為時(shí)鐘源,也可以直接使用外部的時(shí)鐘源。VC5502內(nèi)部具有鎖相環(huán),可以被使能或旁路,上電復(fù)位時(shí)鎖相環(huán)缺省被旁路。DSP的時(shí)鐘源由復(fù)位時(shí)GPIO4引腳的狀態(tài)決定。
TMS320VC5502分為四個(gè)時(shí)鐘組:C55x核系統(tǒng)時(shí)鐘組,快速外設(shè)時(shí)鐘組,慢速外設(shè)時(shí)鐘組和EMIF接口時(shí)鐘組,分別對(duì)應(yīng)CLKOUT3、SYSCLK1、SYSCLK2、SYSCLK3四個(gè)內(nèi)部時(shí)鐘信號(hào)??焖偻庠O(shè)時(shí)鐘SYSCLK1主要提供給DMA和HPI接口使用,慢速外設(shè)時(shí)鐘SYSCLK2在本應(yīng)用中主要供I2C模塊使用,EMIF接口時(shí)鐘SYSCLK3用作內(nèi)存訪問(wèn)時(shí)鐘。
在本圖像處理卡中,使用頻率為200MHz的MK1711作為外部時(shí)鐘源,MK1711是德州儀器推薦的DSP外部時(shí)鐘。GPIO4引腳在復(fù)位時(shí)接高電平,其狀態(tài)會(huì)被bootloader檢測(cè)并將CLKMD[0]位置1。
當(dāng)EMIF模塊使用內(nèi)部時(shí)鐘作為時(shí)鐘源時(shí),SYSCLK3的頻率必須小于或等于100MHz;當(dāng)EMIF模塊使用外部時(shí)鐘源時(shí),SYSCLK3的頻率必須小于或等于SYSCLK1,但是外部時(shí)鐘源CLKIN的頻率必須小于100MHz。SYSCLK2的頻率必須小于或等于SYSCLK1的頻率。
修改C55x子系統(tǒng)時(shí)鐘控制寄存器(PLLCSR),PLL分頻寄存器(PLLDIV0)和PLL倍頻器(PLLM),需要遵從一定的順序。本系統(tǒng)修改如下:
1) 將PLLCSR的PLLEN位清零,使PLL處于旁路狀態(tài);
2) 將PLLCSR的PLLRST位置位,使PLL進(jìn)入復(fù)位狀態(tài);
3) 清零PLLDIV0的D0EN位,不使能PLL分頻器;
4) 修改PLLDIV0寄存器的分頻數(shù)值為100b;
5) 置位PLLDIV0的PLLEN位,使能PLL分頻器;
6) 修改PLLM寄存器的倍頻數(shù)值為100b;
7) 延時(shí)1微秒(仍按原來(lái)頻率計(jì));
8) 清零PLLCSR的PLLRST位,使鎖相環(huán)脫離復(fù)位狀態(tài);
9) 輪詢PLLCSR的LOCK位,直到該位為1表示鎖相成功,鎖相環(huán)具有穩(wěn)定的頻率輸出;
10) 將PLLCSR的PLLEN位置1,使系統(tǒng)進(jìn)入鎖相環(huán)使能模式。
缺省時(shí),SYSCLKx這三個(gè)時(shí)鐘的分頻系數(shù)都是4,為了加快訪問(wèn)外設(shè)的速度,需要進(jìn)行修改。在修改相應(yīng)的PLLDIVx寄存器時(shí),TI推薦首先使相應(yīng)接口進(jìn)入IDLE狀態(tài),以避免外設(shè)訪問(wèn)發(fā)生錯(cuò)誤。
通過(guò)修改PLLDIV1=2使SYSCLK1時(shí)鐘頻率運(yùn)行在100MHz;PLLDIV2使用缺省值4不作修改,SYSCLK2運(yùn)行在50MHz;修改PLLDIV3=2使EMIF接口時(shí)鐘SYSCLK3運(yùn)行在100MHz。
ECLKOUTx兩個(gè)時(shí)鐘僅在使用同步動(dòng)態(tài)內(nèi)存和同步突發(fā)式SRAM時(shí)需要,使用異步SRAM時(shí)不需要。為了減少電磁干擾,將此兩個(gè)時(shí)鐘引腳關(guān)閉,可以通過(guò)設(shè)置EMIF全局控制寄存器EMIFGCRx的EKxEN和EKxHZ為0來(lái)完成。
為了加快啟動(dòng)加載過(guò)程,鎖相環(huán)和各外設(shè)時(shí)鐘分頻寄存器可以在加載應(yīng)用程序代碼前通過(guò)啟動(dòng)表格由bootloaer做修改。但是在啟動(dòng)表格中無(wú)法進(jìn)行步驟6中LOCK位的輪詢,為此可以采用一定的延時(shí)(如1微秒),只要保證PLL能夠成功鎖相有穩(wěn)定頻率輸出即可。相應(yīng)命令文件代碼參見(jiàn)啟動(dòng)表格結(jié)構(gòu)節(jié)。
2.3 擴(kuò)展內(nèi)存接口EMIF
EMIF接口支持CPU/DMA對(duì)外部數(shù)據(jù)的8位、16位、32位訪問(wèn),支持的外設(shè)包括異步內(nèi)存(SRAM、ROM、FLASH內(nèi)存),同步動(dòng)態(tài)內(nèi)存(SDRAM)和同步突發(fā)式SRAM(SBSRAM)。內(nèi)存字節(jié)順序只支持大端模式。
在圖像處理卡中,EMIF的CE1內(nèi)存空間接DSP的程序FLASH,CE2空間通過(guò)CPLD內(nèi)存切換模塊接SRAM,內(nèi)存訪問(wèn)參考時(shí)鐘選擇ECLKOUT1,時(shí)鐘頻率100MHz。
EMIF可編程控制異步內(nèi)存的時(shí)序,這些時(shí)序參數(shù)是通過(guò)各個(gè)內(nèi)存空間的CExCTL寄存器實(shí)現(xiàn)的。主要參數(shù)有:
1) 建立時(shí)間(SETUP):指從內(nèi)存訪問(wèn)周期開始到讀或?qū)戇x通信號(hào)有效的時(shí)間。最小值為1,對(duì)于一次單一或突發(fā)訪問(wèn)的幾次連續(xù)訪問(wèn)的第一個(gè)訪問(wèn),SETUP最小值為2;
2) 選通時(shí)間(STOBE):讀或?qū)戇x通信號(hào)從有效到無(wú)效的時(shí)間,最小值為1。
3) 保持時(shí)間(HOLD):指讀或?qū)戇x通信號(hào)從失效到訪問(wèn)周期結(jié)束的時(shí)間,留作地址總線的變化時(shí)間,最小值可以為0;
這些時(shí)間參數(shù)以SYSCLK3(ECLKOUT1)為基準(zhǔn)。EMIF為每個(gè)CE內(nèi)存空間的讀和寫訪問(wèn)提供獨(dú)立的SETUP、STOBE、HOLD時(shí)間。
為了使這些參數(shù)能夠在加載外部程序代碼時(shí)起作用,這些參數(shù)必須在啟動(dòng)表格中通過(guò)bootloader進(jìn)行修改,要注意保證足夠的延時(shí),使輸出時(shí)鐘穩(wěn)定。DSP的外部擴(kuò)展SRAMCY7C1061AV33的配置在CE2內(nèi)存空間,作為圖像內(nèi)存,16位字地址空間為400000H-4FFFFFH。對(duì)于讀CY7C1061AV33操作,不使用VC5502EMIF的/ARE引腳,直接用/AOE和CY7C1061AV33的/OE引腳連接,則此時(shí)地址信號(hào)、片選/CE1、輸出允許/OE會(huì)同時(shí)給出,此時(shí)CY7C1061AV33處于連續(xù)讀狀態(tài),數(shù)據(jù)的輸出只受地址總線的控制。地址總線變化時(shí),便給出相應(yīng)單元的數(shù)據(jù)
文章版權(quán)歸西部工控xbgk所有,未經(jīng)許可不得轉(zhuǎn)載。
你可能感興趣的文章