摘要:本文介紹了一種利用DSP處理DM642,、CPLD及USB芯片等器件構(gòu)造的帶有USB接口的圖像采集和處理系統(tǒng),。設(shè)計(jì)了USB通信接口的硬件電路,在DSP/BIOS架構(gòu)上編寫了USB的固件程序和主機(jī)端的設(shè)備驅(qū)動(dòng)程序,。該系統(tǒng)可用于香煙包裝流水線上的條包檢測(cè)等對(duì)生產(chǎn)速度要求較高的工業(yè)流程領(lǐng)域,。
1 引言
目前國內(nèi)各大煙草制造企業(yè)的香煙包裝都是在高速流水線上進(jìn)行的,設(shè)備自動(dòng)化程度 高,,機(jī)械和電氣控制復(fù)雜,,生產(chǎn)中經(jīng)常產(chǎn)生包裝不合格的產(chǎn)品。目前的解決方法主要是通過 采集卡將煙包圖像傳輸?shù)焦た貦C(jī)中,,應(yīng)用圖像處理技術(shù)[1],,檢測(cè)出不合格的產(chǎn)品。這是一種 PC-based 的檢測(cè)方法?,F(xiàn)有的采集卡一般不具備圖像處理的能力并且多是PCI 接口,,存在 安裝和使用不方便,不支持熱插拔等問題,。
本文提出了一種應(yīng)用TI 公司高性能DSP 處理器TMS320DM642,,視頻解碼器和Altera 新推出的CPLD EPM240 組成的嵌入式的具有初步圖像處理功能的采集系統(tǒng)[2]。應(yīng)用USB 接口將檢測(cè)到的不合格產(chǎn)品圖像信息實(shí)時(shí)傳輸?shù)焦た貦C(jī)上,,供生產(chǎn)人員做進(jìn)一步分析和統(tǒng)計(jì) 包裝中出現(xiàn)的問題,,以及時(shí)對(duì)生產(chǎn)設(shè)備進(jìn)行維護(hù),降低企業(yè)生產(chǎn)成本,。
2 系統(tǒng)設(shè)計(jì)
DSP 處理器[3]的視頻口接收視頻解碼器輸出的視頻數(shù)據(jù),,采集一幀圖像,通過EDMA[4] 將緩存在視頻口FIFO 中的數(shù)據(jù)搬移到SDRAM 中,。經(jīng)過圖像處理判定有無反包,,拉線錯(cuò)位 及破損等錯(cuò)誤。若要剔除煙包,,工控機(jī)發(fā)出讀請(qǐng)求喚醒USB 芯片EZ-USB SX2(CY7C68001) [5],,DSP 啟動(dòng)EDMA 將SDRAM 中的圖像傳輸?shù)経SB 的FIFO(EP6)中。系統(tǒng)框圖如圖1 所示,。
DM642 是TI 公司推出的一款面向多媒體應(yīng)用的定點(diǎn)數(shù)字信號(hào)處理器,,設(shè)計(jì)主頻為 500~ 720MHz,采用C64x 內(nèi)核,,2 級(jí)存儲(chǔ)器結(jié)構(gòu),,同時(shí)片上還集成了視頻口(VP),外部 存儲(chǔ)器接口(EMIF)等豐富的資源,。DM642 特有的EDMA 負(fù)責(zé)片內(nèi)L2 存儲(chǔ)器與其他外設(shè) 之間的數(shù)據(jù)傳輸,。EPM240Z 是Altera 最新推出的MAX II Z 系列CPLD。該系列采用非易失 的嵌入Flash 工藝,,以及創(chuàng)新的查找表(LUT)邏輯結(jié)構(gòu),,突破了傳統(tǒng)宏單元器件的成本和功 耗限制。在MAX 系列基礎(chǔ)之上,,功耗只有十分之一,,而容量增加了四倍,,性能提升了一倍。
EZ-USB SX2(CY7C68001)集成有USB2.0 收發(fā)器,,串行接口引擎SIE,,4KB 的FIFO, 可以選擇的8 位或16 位總線方式,。片上SIE 能完成大部分的USB 協(xié)議操作,,簡(jiǎn)化了用戶設(shè) 置代碼,但由于其內(nèi)部不含微處理器,,應(yīng)用層協(xié)議由DSP 編程實(shí)現(xiàn)。
3 USB 通信接口硬件設(shè)計(jì)
系統(tǒng)中將 SX2 配置在DM642 的CE1 空間,,四個(gè)端點(diǎn)(EP2,EP4,EP6,EP8)的地址空 間是0xA0000000~0xA0001BFF,。控制接口(EP0)的地址空間為0xA0002000~0xA000203F,。 CY7C68001 與DSP 之間使用異步讀寫方式完成二者之間數(shù)據(jù)和命令的交換,。中斷信號(hào)占用 DM642 的外部中斷EXT_INT5,四個(gè)狀態(tài)信號(hào)(READY,、FLAGA,、FLAG 和FLAGC)和 喚醒信號(hào)分別配置在EPM240G[6]中的USB 狀態(tài)寄存器(USB_STS)和USB 喚醒積存器中 (USB_WAKEUP) 。EPM240G 占用DM642 的CE1 空間,, 地址范圍是 0x9A080000~0x9A080020,。接口電路如圖2 所示。
主要接口信號(hào)包括控制信號(hào),,數(shù)據(jù)總線和地址總線,。
控制信號(hào): USBINT:中斷信號(hào)。由SX2 提供,,SX2 有六個(gè)中斷源,,中斷發(fā)生時(shí),DSP 讀數(shù)據(jù)總線,, 獲取中斷標(biāo)志位判斷具體哪個(gè)中斷發(fā)生了,。
FLAGA,F(xiàn)LAGB,,F(xiàn)LABC:狀態(tài)信號(hào),。由SX2 提供,分別反映當(dāng)前選中的FIFO 的狀態(tài),,可編程,,滿,空,。
CE1,,CE2:片選信號(hào)。由DSP 提供,選中CE1 或CE2 空間,。
OE,,RE,WE:輸出允許信號(hào),,讀使能信號(hào),,寫使能信號(hào)。由DSP 提供,。
地址總線:
AEA22,,AEA[15..13],AEA[7..3]:地址總線,。由DSP 提供,,設(shè)定外設(shè)地址。
4 USB 通信接口DSP 端軟件設(shè)計(jì)
DSP 圖像采集與處理系統(tǒng)的軟件包括設(shè)備驅(qū)動(dòng)和客戶應(yīng)用程序,。系統(tǒng)軟件是在TI DSP/BIOS 操作系統(tǒng)的基礎(chǔ)上開發(fā)的,,如圖3 所示。DSP/BIOS 是整個(gè)DSP 系統(tǒng)軟件的核心,, 各底層設(shè)備驅(qū)動(dòng)程序完成硬件的驅(qū)動(dòng)與管理,,并對(duì)上層提供統(tǒng)一的接口;各應(yīng)用任務(wù)模塊完 成相應(yīng)的應(yīng)用功能,,并由DSP/BIOS 提供實(shí)時(shí)任務(wù)調(diào)度與操作系統(tǒng)的支撐,。VP driver、USB driver[7]分別是DM642 視頻口和與SX2 通信的EMIF 口的底層驅(qū)動(dòng),,完成對(duì)相應(yīng)硬件外設(shè)的 硬件抽象與配置管理,。
DSP/BIOS[8]中的設(shè)備驅(qū)動(dòng)程序由兩層組成,上層是類驅(qū)動(dòng)(Class driver),,其典型功能 是提供多線程的串行化與服務(wù)請(qǐng)求的同步,,另外還要處理設(shè)備實(shí)例的管理。這一層與驅(qū)動(dòng)無 關(guān),,它是DSP/BIOS 本身所集成的一部分模塊,,主要包括SIO、PIP 及GIO 三種類驅(qū)動(dòng)模型,, 本系統(tǒng)采用的是GIO 類驅(qū)動(dòng),。下層是微驅(qū)動(dòng)程序(Mini driver),GIO 類驅(qū)動(dòng)使用與具體設(shè) 備相關(guān)的微驅(qū)動(dòng)程序來操作SX2,,以實(shí)現(xiàn)主機(jī)應(yīng)用程序圖像發(fā)送與接收的功能,。微驅(qū)動(dòng)程序 對(duì)SX 的配置過程見圖4。
5 USB 通信接口主機(jī)端驅(qū)動(dòng)程序設(shè)計(jì)
與傳統(tǒng)的 PC 總線(如PCI 總線)設(shè)備的驅(qū)動(dòng)程序相比,,USB 設(shè)備驅(qū)動(dòng)程序不直接與硬 件對(duì)話,。這些工作由微軟提供的USBD.SYS 來完成,。USB 設(shè)備驅(qū)動(dòng)程序的主要工作就把客 戶軟件的請(qǐng)求翻譯成USBD.SYS 能執(zhí)行的事務(wù)。USB 設(shè)備驅(qū)動(dòng)程序主要完成以下功能:發(fā) 現(xiàn),、配置,、關(guān)閉USB 設(shè)備。
USB 設(shè)備驅(qū)動(dòng)程序向主機(jī)應(yīng)用程序提供函數(shù)接口,,如像Ezusb_Creat(),,Ezusb_Close() 等函數(shù)。應(yīng)用程序調(diào)用函數(shù)Ezusb_Create(),,返回唯一的Windows 句柄后,,才能調(diào)用驅(qū)動(dòng)程 序的其他函數(shù)。應(yīng)用程序通過調(diào)用標(biāo)準(zhǔn)Win32 API 函數(shù)CreateFile()來實(shí)現(xiàn)對(duì)Ezusb_Create() 的訪問,。 控制與數(shù)據(jù)傳送接口,。應(yīng)用程序使用 API 函數(shù)DeviceIoCONtrol()來執(zhí)行這樣的操作。 驅(qū)動(dòng)程序?qū)⑦@個(gè)函數(shù)調(diào)用轉(zhuǎn)化為一個(gè)帶IRP_MJ_DEVICE_CONTROL 功能碼的IRP,。像讀取與寫 入FIFO 數(shù)據(jù)、endpoint0 的操作均是通過異步IO 的方式來完成的,。
6 結(jié)論
本文所設(shè)計(jì)的帶有 USB 接口的DM642 圖像采集與處理系統(tǒng),,一方面充分利用了DM642 的強(qiáng)大處理能力和豐富的外設(shè)功能,另一方面使用了新架構(gòu)的MAXIIZ 系列CPLD 有效的 降低系統(tǒng)的功耗,。軟件方面,,以DSP/BIOS 為核心,實(shí)現(xiàn)了USB 的固件程序,,并在主機(jī)端 開發(fā)USB 的設(shè)備驅(qū)動(dòng)程序,。該嵌入式圖像采集與處理系統(tǒng)針對(duì)香煙生產(chǎn)流水線上的包裝檢 測(cè)而設(shè)計(jì),基本上滿足香煙條包在線檢測(cè)的需要,。