基于FPGA/CPLD和USB技術的無損圖像采集卡
USB的開發包括USB的固件程序、Windows設備驅動程序和Windows主機應用程序的編制,限于篇幅,這里只簡單介紹一下USB固件程序(Firmware)的編制。USB固件程序的具體流程如圖3所示,在源程序的TD_Poll()中加入了對比度、亮度及飽和度的調節,以做到在硬件上對圖像處理中的上述重要參數的調節,在外部中斷1中完成一幀數據的快速傳輸。 由于采用了外部中斷1,為了避免與USB中斷的沖突,需要在工程中自己編寫一個匯編文件,內容如下: cseg at 43h ljmp 1800h end 此外,在編寫的Keil C源程序中需要加兩句話,以解決USB中斷和外部中斷的地址重疊問題。 #pragma intvector (0x17FD) #pragma interval(4) 為了增加USB傳輸數字視頻信號的速度,采用USB的快速讀寫模式,在Keil C源程序中內嵌對USB進行寄存器設置的匯編代碼。配置了USB的時鐘控制寄存器,采用全速訪問數據存儲器,MOVX指令在兩個機器周期內實行,時鐘頻率為24MHz,因此USB產生的讀選通寬度為83.3ns。配置端口A,使能PORTACFG(16進制地址為7F93H)寄存器中的快速讀FRD。配置快速傳輸控制寄存器FASTXFR(16進制地址為7FE2 H),采用快速塊傳輸,使能快速讀寫信號。為了將端點2緩沖匹配置成FIFO,增加讀寫速度,8051將端點2緩沖區(IN2)的首地址7E00H裝入自動指針AUTOPTRH(16進制地址為7FE3H)和AUTOPTRL(16進制地址為7FE4H),并且dptr指向AUTODATA(16進制地址為7FE5H),也就是指向了FIFO寄存器,這樣8051可以完全像FIFO一樣訪問端點2緩沖區。 2.4 PC機端的圖像還原 在PC機端,用Visual C++ 6.0編寫客戶應用程序,應用程序通過USB接收原始的奇數場和偶數場圖像數據,待接收完奇數場和偶數場圖像數據后,應用程序把它們組成完整的一幀圖像,并且把該幀圖像數據存儲到硬盤上,然后把這幀圖像轉化成BMP格式的圖像,以BMP格式再次在硬盤上存儲圖像數據,同時以BMP的形式顯示圖像。 3 應用前景 該無損圖像采集卡雖然是針對特殊的圖像處理應用而研發的,但它的作用很廣,能應用于嵌入式系統中的圖像傳輸、集成電路和精密機械領域中的器件定位等。此外,如果用USB2.0代替USB1.1,則能實時傳輸圖像數據到PC機或嵌入式系統,用軟件進行圖像數據的壓縮處理,這塊外置式圖像采集卡可以作為一個很好的實時監控設備,以降低硬件成本。



評論