新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于PCI總線的嵌入式實時DSP圖像采集系統(tǒng)

基于PCI總線的嵌入式實時DSP圖像采集系統(tǒng)

作者: 時間:2007-03-09 來源:網(wǎng)絡(luò) 收藏
摘要:以交通十字路口實時DSP圖像采集系統(tǒng)為例,說明了基于PCI總線的DSP圖像采集系統(tǒng)的優(yōu)點,并詳細闡明了系統(tǒng)的硬件結(jié)構(gòu)和基于VxWorks操作平臺的軟件實現(xiàn),最后介紹了系統(tǒng)實現(xiàn)的效果。關(guān)鍵詞:PCI總線 DSP VxWorks操作系統(tǒng) 圖像采集系統(tǒng) 本文從實時性和大容量兩方面介紹了在通用計算機上加入DSP加速卡實現(xiàn)的圖像采集系統(tǒng)。利用DSP芯片的高速處理特性完成大部分的圖像處理工作,上位機只完成輔助操作和存儲系統(tǒng)。這種方法發(fā)揮了DSP的高速性能又具有相當(dāng)大的靈活性,而且開發(fā)工具比較完善。 實時性要求足夠的傳輸速度,PCI總線速度最高可達528MB/s(66MHz、64位)。這是其他總線無法比擬的速度,如ISA總線速度只有5MB/s。另外,系統(tǒng)中DSP的可擴展存儲空間高達1GB。這完全可以滿足一般圖像處理系統(tǒng)的需要。 1 基于PCI總線的DSP圖像采集系統(tǒng) 本系統(tǒng)主要用于路口違章車輛抓拍,包括闖紅燈抓拍、超速行駛抓拍等。通過攝像頭對車流進行監(jiān)測,當(dāng)有車輛在紅燈期間越過停止線或在限速地段超速行駛,系統(tǒng)拍下車輛的行為并把數(shù)據(jù)傳送到DSP進行處理,然后經(jīng)PCI總線把處理后的數(shù)據(jù)上傳到上位機。當(dāng)然這套系統(tǒng)也可用于其他的監(jiān)控系統(tǒng),如樓宇監(jiān)控等,其硬件系統(tǒng)基本一致,只是軟件功能有所區(qū)別。本系統(tǒng)采用TI公司C6000系列DSP中的TMS320C6211作為系統(tǒng)的CPU。圖像數(shù)據(jù)通過攝像機采集并輸出模擬圖像信號。這些信號經(jīng)視頻解碼芯片轉(zhuǎn)換為數(shù)字信號;再經(jīng)FIFO輸入DSP進行圖像的增強、分割、特征提取和數(shù)據(jù)壓縮等;然后輸出信號經(jīng)PCI解碼芯片轉(zhuǎn)換為符合PCI總線規(guī)范的標(biāo)準(zhǔn)信號,通過PCI總線接口傳到上位機。系統(tǒng)的控制邏輯由EPLD(Erasable Programmable Logic Device)控制器實現(xiàn)。系統(tǒng)結(jié)構(gòu)圖如圖1。 (1)視頻解碼芯片 系統(tǒng)中采集的圖像信號采用Philips公司的SAA7111A完成A/D轉(zhuǎn)換。SAA7111A允許四路模擬視頻輸入,具有兩個模擬處理通道,支持四路CVBS模擬信號或二路Y/C模擬信號或二路CVBS信號和一路Y/C信號。SAA7111A對攝像頭輸入的標(biāo)準(zhǔn)PAL格式的模擬圖像信號進行A/D轉(zhuǎn)換,然后輸出符合CCIR601格式的4:2:2的16位YUV數(shù)據(jù)到FIFO。其中亮度信號Y為8位、色度信號Cr和Cb合為8位數(shù)據(jù)。FIFO采用IDT公司的IDT72V215LB芯片,FIFO的深度為512%26;#215;18bit,支持STANDARD(標(biāo)準(zhǔn))和FWFT(First Word Fall-Through,首字直接通過)兩種工作模式。按照CCIR601格式,YUV圖像分辨率為720%26;#215;576象素,當(dāng)按行輸出時,SAA7111A輸出數(shù)據(jù)流大小為:720%26;#215;16=1440bit。因為DSP通過32位的SBSRAM接口與FIFO通信,故YUV數(shù)據(jù)寫入FIFO時需要在FIFO之間實現(xiàn)乒乓切換。這時一行720%26;#215;16bit的數(shù)據(jù)在兩片FIFO中存儲變?yōu)椋常叮?26;#215;32bit。兩片FIFO可以滿足上述要求。FIFO的初始化及時序由EPLD實現(xiàn)。(2)DSP圖像處理模塊 TMS320C6211是TI公司發(fā)布的面向視頻處理領(lǐng)域的新款高速數(shù)字處理芯片,適用于移動通信基站、圖像監(jiān)控、雷達系統(tǒng)等對速度要求高和高度智能化的應(yīng)用領(lǐng)域。存儲空間分兩部分:運行過程的臨時數(shù)據(jù)存在Winbond公司的兩片128Mbit的W981216BH中;系統(tǒng)程序則固化在FLASH存儲器中,該存儲器選用AMD公司生產(chǎn)的8Mbit的AM29LV800B。Flash存儲器具有在線重寫入功能。這對系統(tǒng)啟動程序的修改和升級都帶來了很大的方便。DSP處理模塊結(jié)構(gòu)如圖2所示。圖2中的HPI(Host Port Interface)為主機口;EMIF(External Memory Interface)為外部存儲器接口,兼容同步/異步傳輸方式。 TMS320C6211 DSP的高速性能主要體現(xiàn)在以下方面:①TMS320C6211的存儲空間最大可擴展到1GB,完全可以滿足各種圖像處理系統(tǒng)所需的內(nèi)存空間,而且其最高時鐘可達200MHz,峰值性能可達1600MIPS(百萬條指令/秒)、2400MOPS(百萬次操作/秒)。②并行處理結(jié)構(gòu)。TMS320C6211芯片內(nèi)有8個并行處理單元,分為相同的兩組,并行結(jié)構(gòu)大大提高芯片的性能。③芯片體系采用VelociTI結(jié)構(gòu)。VelociTI是一種高性能的甚長指令字(VLIW)結(jié)構(gòu),單指令字字長為32bit,8個指令組成一個指令包,總字長為256bit。即每秒鐘可以執(zhí)行8條指令。VelociTI結(jié)構(gòu)大大提高了DSP芯片的性能。④采用流水線操作實現(xiàn)高速度、高效率。TMS320C6211只有在流水線充分發(fā)揮作用的情況下,才能達到最高的峰值性能。與其他系列DSP相比,優(yōu)勢在于簡化了流水線的控制以消除流水線互鎖,并增加流水線的深度來消除傳統(tǒng)流水線的取指、數(shù)據(jù)訪問和乘法操作上的瓶頸。 本系統(tǒng)DSP主要完成從FIFO讀出數(shù)據(jù)的處理以及壓縮等。數(shù)據(jù)處理由自行編寫的算法實現(xiàn),數(shù)據(jù)壓縮算法采用JPEG(Joint Photographic Expert Group)標(biāo)準(zhǔn)。當(dāng)攝像頭采集速度為每秒25幀圖像時,它留給DSP處理的時間最多為每幀40ms。如果考慮系統(tǒng)有一定的延時以及處理后圖像的存儲時間,那么DSP處理一幅圖像時間不能超過30ms。按照C6211的處理速度,在30ms內(nèi)可以處理48M(0.03%26;#215;1600MIPS)條指令。DSP讀出FIFO中的行數(shù)據(jù)并存入SDRAM,一幀圖像有576行,在最后一行時會收到系統(tǒng)的幀中斷,這時SDRAM中的圖像數(shù)據(jù)總共有1440%26;#215;576=810KB。讓C6211用36M條指令周期的時間處理810KB的數(shù)據(jù)顯然綽綽有余。粗略的計算過程如下: 系統(tǒng)采用快速DCT(離散余弦變換),每8%26;#215;8矩陣需要11次乘法、29次加法,因此一幀圖像的FDCT,共需要(11+29)%26;#215;720%26;#215;576%26;#215;2/64=518400個指令周期;對于量化模塊,每8%26;#215;8矩陣需要64個量化指令周期,一幀需要64%26;#215;720%26;#215;576%26;#215;2/64=829440個指令周期;對于編碼部分,假設(shè)編碼后非0元素占25%,對每8%26;#215;8矩陣進行Zig-Zag掃描、編碼估計需要120個指令周期,則共需120%26;#215;720%26;#215;576%26;#215;2/64=1555200個指令周期。按以上計算,在系統(tǒng)中進行JPEG編碼大約需要2903040個指令周期,耗時19.3536ms(TMS320C6211工作在150MHz時)??梢钥闯?,實際需要的指令遠小于36M條,而時間也遠小于30ms,DSP完全可以實時處理從FIFO傳過來的數(shù)據(jù)。 (3)PCI總線模塊 PCI總線規(guī)范吸引人的地方不僅是其高速度,更在于它適應(yīng)了現(xiàn)代I/O設(shè)備對系統(tǒng)的要求,對PCI擴展卡及器件能進行全自動配置,并且只需很少的接口邏輯就可以實現(xiàn)并支持其他總線系統(tǒng)。 TMS320C6211的HPI口不支持PCI總線的無縫接口。本系統(tǒng)采用TI公司的PCI2040實現(xiàn)DSP的HPI與PCI總線的連接。DSP處理后的數(shù)據(jù)經(jīng)HPI口輸出到PCI2040進行解碼,然后輸出到PCI總線上。其邏輯結(jié)構(gòu)如圖3所示。 PCI2040是TI公司設(shè)計的專門用來完成C5000系列和C6000系列DSP與PCI總線進行接口的專用芯片。PCI2040符合PCI局部總線2.2規(guī)范,能夠方便地實現(xiàn)PCI總線與TMS320C54X或TMS320C6X DSP的HPI接口的無縫連接。PCI2040可以兼容3.3V和5V,以適應(yīng)不同的PCI總線電壓。PCI2040與C6211之間不需要信號的電平轉(zhuǎn)換,也不需要額外的控制邏輯電路,接口電路十分簡單。 在本系統(tǒng)中,PCI2040上存在兩種電壓:5V和3.3V。其中3.3V是HPI口電壓,5V是PCI總線電壓。PCI2040啟動時需要對其PCI總線寄存器和HPI寄存器參數(shù)進行預(yù)加載。系統(tǒng)中PCI解碼模塊包括一塊配置ROM——AT24C08A,屬于EEPROM型ROM,便于對配置參數(shù)修改和升級。當(dāng)系統(tǒng)啟動時,存儲在AT24C08A的數(shù)據(jù)下載到PCI2040的寄存器中并進行配置。 圖3中HINT[3:0]、HCS[3:0]、HRDY[3:0]、HRST[3:0]分別與四片DSP中的相應(yīng)信號相連。即PCI2040可以同時與四片DSP接口。 2 系統(tǒng)的軟件設(shè)計 本軟件系統(tǒng)包括兩部分,即底層軟件和系統(tǒng)軟件。 底層軟件主要是DSP圖像處理算法以及啟動等運行程序。這些程序主要在CCS環(huán)境下由C語言編寫并進行匯編優(yōu)化。CCS即Code Composer Studio,是TI公司發(fā)布的DSP軟件運行環(huán)境。 在系統(tǒng)軟件方面,基于PCI總線的圖像處理系統(tǒng)面臨的難點頗多,其中難度最大的是PCI驅(qū)動問題。當(dāng)然這對于不同的系統(tǒng)軟件可能難度各異。若在Windows操作系統(tǒng)下,可以充分利用Windows的窗口特性:一方面,因為Windows技術(shù)成熟,軟件編寫相對比較簡單;另一方面,在Windows平臺下,PCI驅(qū)動無需開發(fā),可以直接利用Windows的PCI驅(qū)動程序?qū)崿F(xiàn)圖像卡的驅(qū)動。但是Windows操作系統(tǒng)比較龐大,而且無法依照系統(tǒng)的需要進行自由裁減,不適合做成系統(tǒng)。這里主要闡述在VxWorks操作系統(tǒng)下的軟件設(shè)計方法。 相對于Windows操作系統(tǒng),VxWorks的優(yōu)點表現(xiàn)在:①VxWorks系統(tǒng)具有較好的可裁減性,可裁剪的組件超過80個,用戶可根據(jù)自己系統(tǒng)的功能目標(biāo)通過交叉開發(fā)環(huán)境方便地配置;②VxWorks支持應(yīng)用程序的動態(tài)鏈接和動態(tài)下載,開發(fā)者省去了每次調(diào)試都將應(yīng)用程序與操作系統(tǒng)內(nèi)核進行鏈接和下載的步驟,縮短了編輯/調(diào)試周期;③VxWorks具有較好的兼容性,它是最早兼容POSIX1003.1b標(biāo)準(zhǔn)的實時操作系統(tǒng)之一;④VxWorks具有很高的可靠性和穩(wěn)定性;⑤VxWorks具有很好的實時性,實時性的強弱以完成規(guī)定功能和做出響應(yīng)時間的長短來衡量。VxWorks的多任務(wù)機制對任務(wù)的控制采用了優(yōu)先級搶占(Preemptive Priority Scheduling)和輪轉(zhuǎn)調(diào)度(Round-Robin Scheduling)機制。這充分保證了可靠的實時性,使同樣的硬件配置能滿足更強的實時性要求,為應(yīng)用的開發(fā)留下更大的余地。 為闡明如何在VxWorks操作系統(tǒng)下實現(xiàn)PCI總線的驅(qū)動,還需了解PCI設(shè)備的配置空間。PCI設(shè)備有三種物理存儲空間:配置空間、存儲器空間和I/O空間。配置空間是長度為256字節(jié)的一段連續(xù)空間,空間的定義如圖4?眼1?演。在配置空間中只讀空間有設(shè)備標(biāo)識、供應(yīng)商代碼、修改版本、分類代碼以及頭標(biāo)類型。其中供應(yīng)商代碼用來標(biāo)識設(shè)備供應(yīng)商的代碼;設(shè)備標(biāo)識用來標(biāo)識某一特殊的設(shè)備;修改版本標(biāo)識設(shè)備的版本號;分類代碼用來標(biāo)識設(shè)備的種類;而頭標(biāo)類型用來標(biāo)識頭類型以及是否為多功能設(shè)備。除供應(yīng)商代碼之外,其他字段的值由供應(yīng)商分配。 基地址寄存器最重要的功能是分配PCI設(shè)備的系統(tǒng)地址空間。在基地址寄存器中bit0(最低位)用來標(biāo)識存儲器空間還是I/O地址空間,基地址寄存器映射到存儲器空間時bit0為“0”,映射到I/O地址空間時bit0為“1”。PCI設(shè)備的驅(qū)動過程主要包括下面幾個步驟: 首先,PCI設(shè)備的查找。在操作系統(tǒng)中一般提供相應(yīng)的API函數(shù)查找。在VxWorks操作系統(tǒng)中通過函數(shù)pciFindDevice(PCI_VENDOR_ID,PCI_DEVICE,index, &pciBus, &pciDevice,&pciFunc_可以找到供應(yīng)商代碼為PCI_VENDOR_ID、設(shè)備標(biāo)識為PCI_DEVICE的第n(index+1)個設(shè)備,并且返回總線號、設(shè)備號以及功能號,分別保存于&pciBus、&pciDevice、&pciFunc中。 其次,PCI設(shè)備的配置。通過操作系統(tǒng)提供的API函數(shù)訪問PCI設(shè)備的配置空間,配置PCI設(shè)備基址寄存器的配置、中斷配置、ROM基地址寄存器的配置等,這樣可以得到PCI的存儲器空間和I/O地址空間映射、設(shè)備的中斷號等。在VxWorks操作系統(tǒng)中訪問PCI設(shè)備配置空間的API函數(shù)有pciConfigOutLong、pciConfigInLong等,它們分別完成對PCI設(shè)備配置空間的讀寫操作。 然后,根據(jù)PCI設(shè)備的配置參數(shù),對不同的設(shè)備編寫初始化程序、中斷服務(wù)程序以及對PCI設(shè)備存儲空間的訪問程序。 很顯然,用VxWorks操作系統(tǒng)實現(xiàn)雖然有一定的難度,但是系統(tǒng)具有很大的靈活性,系統(tǒng)比較小、適應(yīng)性強,并且可以在工業(yè)控制計算機上運行。 圖像采集系統(tǒng)的關(guān)鍵在于如何對大容量的信息進行暫存、壓縮和傳輸?shù)葐栴}進行處理。本系統(tǒng)很好地解決了這三個難題。在圖像信息暫存方面充分利用了DSP存儲空間的可擴展性,保證了系統(tǒng)可暫存的信息量足夠大;信息壓縮是DSP最擅長做的事情,可以在很短的時間內(nèi)完成大量的信息壓縮工作;PCI總線的引入保證了信息在足夠的帶寬下進行快速傳輸。采用嵌入式VxWorks操作系統(tǒng)實現(xiàn)使得系統(tǒng)具有良好的靈活性和適應(yīng)性,并大大降低了系統(tǒng)的成本。 linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉