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