亚洲人成网站18禁止天堂-国产精品一区在线观看网站-欧美精品在线播放第一页-中文字幕亚洲综合小综合

網(wǎng)站首頁

HOME

關(guān)于我們

ABOUT US

產(chǎn)品展示

PRODUCT

新聞中心

NEWS

成功案例

CASE

下載中心

DOWNLOAD

人才招聘

RECRUIT

在線留言

MESSAGE

聯(lián)系我們

CONTACT US

    技術(shù)文章
    聯(lián)系我們
    西安航普電子有限責(zé)任公司
    電話:029-81870107
    郵箱:hangpudianzi@163.com
    網(wǎng)址:www.dofazy.com
    公司地址:西安市電子四路西京三號(hào)2號(hào)樓17層
     
     
    技術(shù)文章
    利用FPGA和USB總線的視頻圖像的采集與處理系統(tǒng)設(shè)計(jì)
    更新時(shí)間:2017-09-07 12:53:00    點(diǎn)擊:858次



    摘要 構(gòu)建了以FPGA為核心芯片的高速圖像采集與處理系統(tǒng),圖形采集頻率可達(dá)13.5 MHz在該系統(tǒng)中,采用了視頻A/D芯片SAA7111A將電視信號(hào)轉(zhuǎn)換成數(shù)字信號(hào),并由FPGA作為控制器將數(shù)字信號(hào)存入SRAM中,以便進(jìn)行處理,提取有用數(shù)據(jù);系統(tǒng)還采用了EZUSB2131Q芯片來進(jìn)行處理后的數(shù)據(jù)與PC機(jī)的傳輸.
    關(guān)鍵詞 視頻圖像;信號(hào)處理;FPGA;VHDL;EZUSB;視頻A/D


        傳統(tǒng)的基于ISA,PCI等總線的圖像采集卡已經(jīng)應(yīng)用非常廣泛,但速度慢、處理功能簡(jiǎn)單,對(duì)于特殊要求往往需要后續(xù)處理部分 因此,本文構(gòu)建了一種高速圖像采集系統(tǒng)它主要由FPGA(field programmable gate array)、視頻A/D芯片SAA7111A以及USB總線構(gòu)成.該系統(tǒng)可以根據(jù)需要進(jìn)行現(xiàn)場(chǎng)可編程,具有通用性好、成本低等優(yōu)點(diǎn).在FPGA中利用硬件描述語言VHDL編程實(shí)現(xiàn)FPGA可以在數(shù)據(jù)采集系統(tǒng)中取代單片機(jī)和DSP對(duì)數(shù)據(jù)采集過程進(jìn)行控制.
        PHILIP公司的視頻A/D芯片SAA7111A具有四路視頻輸入,抗混濾波、梳狀濾波都被集成到芯片內(nèi)部,帶來了極大的方便,但系統(tǒng)內(nèi)部鎖相環(huán)技術(shù)的集成使得可靠性和設(shè)計(jì)復(fù)雜度都有極大的降低.
        CYPRESS的EZUSB2131QC芯片是針對(duì)USB 1.1協(xié)議開發(fā)的,兼容全速和低速傳輸,功能高度集成化.該芯片集成了一個(gè)增強(qiáng)型8051處理器、一個(gè)“智能型”串行接口引擎(SIE)、一個(gè)USB收發(fā)器、集成I2C總線控制器、片上RAM和FIFO.


    1 圖像采集與處理系統(tǒng)設(shè)計(jì)
        
    系統(tǒng)由視頻A/D芯片、FPGA控制模塊、數(shù)據(jù)存儲(chǔ)模塊SRAM、EZUSB接口模塊和PC機(jī)應(yīng)用程序組成.FPGA程序用VHDL語言編寫.整體框圖如圖1所示.


    2 視頻信號(hào)的A/D轉(zhuǎn)換
        SAA7111A提供了 4個(gè)模擬輸入通道,可以編程選擇使用其中的一個(gè)或多個(gè)通道視頻信號(hào)輸入芯片后,一路經(jīng)過緩沖器從AOUT引腳輸出,這個(gè)信號(hào)作為視頻監(jiān)控信號(hào),以檢測(cè)是否有視頻信號(hào)輸入;另外一路信號(hào)經(jīng)過模/數(shù)轉(zhuǎn)換后產(chǎn)生數(shù)字色度信號(hào)和亮度信號(hào),分別進(jìn)行亮度信號(hào)處理和色度信號(hào)處理.亮度信號(hào)處理的結(jié)果,一路送到色度信號(hào)處理器,以進(jìn)行綜合處理,產(chǎn)生灰度信號(hào)Y和UV信號(hào),格式化后從數(shù)據(jù)線VPO[15:00]輸出,其中高8位為Y、低8位為UV;另一路進(jìn)入同步分離器,經(jīng)過PLL產(chǎn)生相應(yīng)的行同步信號(hào)HS和場(chǎng)同步信號(hào)VS,同時(shí)數(shù)字PLL驅(qū)動(dòng)時(shí)鐘發(fā)生器模塊,從而產(chǎn)生視頻信號(hào)上作頻率為27MHz的LLC和13.5MHz的LLC2時(shí)鐘信號(hào).
        SAA7111A正常工作需要對(duì)內(nèi)部32個(gè)寄存器正確配置,通過I2C總線由EZUSB AN2131Q寫入SAA7lllA的內(nèi)部寄存器.


    3 FPGA控制模塊
        
    經(jīng)過對(duì)系統(tǒng)功能的分析和劃分,可以將設(shè)計(jì)劃分為若干個(gè)子模塊.每個(gè)子模塊通過內(nèi)部握手信號(hào)相互關(guān)聯(lián)并完成相對(duì)獨(dú)立的功能.最后將子模塊組合起來就能得到系統(tǒng)級(jí)的功能芯片.將FPGA劃分為以下幾個(gè)功能子模塊:輸入信號(hào)緩沖模塊、消除抖動(dòng)模塊、SAA7111A接口模塊、SRAM接口模塊、實(shí)時(shí)插入結(jié)束標(biāo)識(shí)模塊、緩沖模塊FIF0、多路選擇器DATA-MUX、數(shù)據(jù)處理模塊DATA_Proc等幾個(gè)部分,如圖2所示模塊之間通過中間信號(hào)進(jìn)行通訊,從而實(shí)現(xiàn)數(shù)據(jù)的傳輸和控制.

    3.1 SAA-INTERFACE模塊
        SAA_INTERFACE模塊的主要功能是接收來自SAA7111A的數(shù)據(jù)信號(hào)和狀態(tài)信號(hào),實(shí)現(xiàn)FPGA與視頻A/D芯片SAA7111A的接口,并根據(jù)這些信號(hào)產(chǎn)生相應(yīng)像素灰度信息的存儲(chǔ)地址,在時(shí)鐘信號(hào)LLC2的控制下,完成數(shù)據(jù)在SRAM中的存儲(chǔ)寫入地址和讀出地址及對(duì)兩片SRAM進(jìn)行乒乓操作的指示信號(hào)的生成.
        分析SAA7111A輸出的狀態(tài)信號(hào)的時(shí)序圖,可以分析得到以下結(jié)論:
        (1)每行圖像共有864個(gè)像素,其中0~719為有效像素、720~863為水平消隱階段,在消隱期間的像素為無效像素.
        (2)每行圖像起始條件是:場(chǎng)參考信號(hào)VREF為邏輯‘1’時(shí),HREF產(chǎn)生一個(gè)上升沿.每行圖像結(jié)束條件是:HREF信號(hào)的出現(xiàn)下降沿當(dāng)VREF為邏輯‘0’狀態(tài)時(shí),處于場(chǎng)消隱階段,此時(shí)為無效圖像.
        (3)每幀圖像起始的條件是:RTS0為邏輯‘l’期間,VREF產(chǎn)生一個(gè)上升沿.而每幀圖像結(jié)束的條件是:RTS0為邏輯‘O’期間,VREF產(chǎn)生一個(gè)下降沿.
        由于復(fù)合視頻信號(hào)CVBS是由隔行掃描的方式得到的,而計(jì)算機(jī)顯示器是逐行掃描來顯示圖像的,所以寫入SRAM的數(shù)據(jù)必須隔行寫入,而讀山SRAM的數(shù)據(jù)必須逐行讀出.讀取SRAM時(shí),由于奇偶場(chǎng)已經(jīng)“隔行”寫入SRAM中,所以只需要逐行順序讀取即可.
    3.2 SRAM_INTERFACE模塊

        接口模塊SRAM_INTERFACE的主要功能是完成與SRAM存儲(chǔ)器的接口工作.由于采用了兩片SRAM,所以FPGA中的SRAM接口模塊也應(yīng)該有兩個(gè),該模塊根據(jù)當(dāng)前狀態(tài)做出判斷,從而對(duì)SRAM發(fā)出相應(yīng)的控制信號(hào)和地址信號(hào),完成數(shù)據(jù)的寫入和讀出工作.
    3.3 INSERT_FLAGS模塊
        
    為了在上位機(jī)顯示所采集到的圖像,除了需要相應(yīng)的像素信息外,還必須提供行同步信號(hào)和、場(chǎng)同步信號(hào)本系統(tǒng)沒有另外提供專門的行同步信號(hào)、幀同步信號(hào),而是通過在恰當(dāng)?shù)臅r(shí)刻插入標(biāo)識(shí)數(shù)據(jù)的方法來代替視頻流的行同步信號(hào)和幀同步信號(hào).
        INSERT_FLAGS模塊將在行結(jié)束時(shí),將自定義的行結(jié)束標(biāo)識(shí)插入到數(shù)據(jù)流中;在幀結(jié)束時(shí),將幀結(jié)束標(biāo)識(shí)插入到視頻流中,從而為上位機(jī)實(shí)現(xiàn)對(duì)圖像信息的再現(xiàn)和處理創(chuàng)造了方便條件.
    3.4 DATA_MUX模塊
        DATA_M(jìn)UX模塊實(shí)現(xiàn)了對(duì)數(shù)據(jù)的流向的控制和數(shù)據(jù)處理工作.它接收來自SAA71llA的原始數(shù)據(jù)VPO和實(shí)時(shí)插入的行、幀結(jié)束標(biāo)識(shí)信號(hào)VP()_FLAGS,并產(chǎn)生最終的連續(xù)的含有場(chǎng)、幀結(jié)束標(biāo)識(shí)的數(shù)據(jù)流VPO_ALL,并控制VPO_ALL的流向.當(dāng)WRlRD2為邏輯‘1’時(shí),VPO_ALL寫入SRAMl,同時(shí)將已經(jīng)存儲(chǔ)到SRAM2的數(shù)據(jù)讀出到DATA_Proc模塊中;當(dāng)WRlRD2為邏輯‘0’時(shí),VPO_ALL的數(shù)據(jù)寫入SRAM2中,同時(shí)將SRAM1的數(shù)據(jù)讀出到DATA_Proc模塊中.
    3.5 DATA_Proc數(shù)據(jù)處理模塊
        DATA_Proc模塊用于對(duì)采集的數(shù)據(jù)進(jìn)行處理,根據(jù)項(xiàng)目要求,其上作主要是對(duì)信號(hào)進(jìn)行濾波和邊緣提取,從而提取有效數(shù)據(jù),減少數(shù)據(jù)的傳輸量.為了減少工作量,采用了Xilinx公司的SystemGenerator軟件來設(shè)計(jì)這部分模塊.
        System(Ceneratcor是Xilinx公司和Mathworks合作開發(fā)的FPGA輔助設(shè)計(jì)工具,只需在simulink中完成模型的搭建,啟動(dòng)SystemGenerator,就能自動(dòng)生成VHDL源程序及其他一些工程文件,并將系統(tǒng)模型映射到目標(biāo)器件FPGA上進(jìn)行硬件實(shí)現(xiàn).
    3.6 FIFO模塊
        
    視頻信號(hào)進(jìn)入FPGA的時(shí)鐘為13.5 MHz,而USB接口芯片的時(shí)鐘為12MHz,兩者時(shí)鐘速率不匹配.這就出現(xiàn)了異步時(shí)序設(shè)計(jì)問題.由于需要進(jìn)行跨時(shí)鐘領(lǐng)域的數(shù)據(jù)傳輸,必須在FPGA和EZ_USB之間加入緩沖數(shù)據(jù)單元.這個(gè)緩沖器一般由異步First-In-First-Out(FIFO)實(shí)現(xiàn).異步FIFO在每個(gè)寫時(shí)鐘時(shí)寫入數(shù)據(jù),而用每一個(gè)讀時(shí)鐘時(shí)讀出數(shù)據(jù),這兩個(gè)時(shí)鐘是異步的.
        FIFO的工作原理是:在寫時(shí)鐘的上升沿,當(dāng)寫允許有效時(shí),將寫數(shù)據(jù)總線上的數(shù)據(jù)寫入雙口RAM中寫地址對(duì)應(yīng)的存儲(chǔ)單元中;而始終將讀地址對(duì)應(yīng)的雙口RAM中的數(shù)據(jù)輸出到讀數(shù)據(jù)總線上,在讀允許有效時(shí),輸出數(shù)據(jù).


    4 EZUSB模塊
        
    在系統(tǒng)中,EZUSB2131主要完成兩方面的工作:完成對(duì)SAA7111A的配置和基于快速同步傳輸方式的數(shù)據(jù)傳輸.
        為了使視頻解碼芯片SAA7111A正常工作,必須通過I2C總線對(duì)其內(nèi)部的寄存器進(jìn)行正確的配置,當(dāng)通過I2C配置SAA7111A時(shí),寫入數(shù)據(jù)格式為:首先為起始信號(hào),然后是7位的從機(jī)地址和方向位(‘0’表示寫入SAA7111A寄存器,‘l’表示讀出相應(yīng)寄存器)共8位數(shù)據(jù),此時(shí)從機(jī)應(yīng)該向主機(jī)發(fā)送一位響應(yīng)信號(hào).然后是從機(jī)中被寫入的寄存器的地址和從機(jī)的響應(yīng)信號(hào),然后才是要寫入子地址寄存器的的數(shù)據(jù),最后是結(jié)束信號(hào).
        USB總線支持4種數(shù)據(jù)傳輸方式:控制傳輸、中斷傳輸、等時(shí)傳輸和塊傳輸.EZUSB系列的2131Q支持快速等時(shí)傳輸方式,為了提高數(shù)據(jù)傳輸?shù)乃俣龋瑧?yīng)用這種方式進(jìn)行數(shù)據(jù)傳輸,能夠使FPGA內(nèi)部的FIFO模塊直接與EZUSB內(nèi)部的數(shù)據(jù)總線通訊.
        為了使用快速同步方式傳輸數(shù)據(jù),需對(duì)2131進(jìn)行如下設(shè)置:
        (1)能使SOF中斷,使51內(nèi)核能接受SOF中斷,從而保證1 ms傳輸一楨數(shù)據(jù).
        (2)本系統(tǒng)使用了等時(shí)傳輸IN8端點(diǎn),所以須設(shè)置INISOVAL為“00000001”.
        (3)設(shè)置IN8端點(diǎn)將使用的等時(shí)FIFO的大小為了加快數(shù)據(jù)傳輸?shù)乃俣?,這里設(shè)置該FIFO的大小為1024.
        (4)設(shè)置寄存器PORTACFG,設(shè)置PA口第4位和第5位復(fù)用功能.其復(fù)用功能是快速等時(shí)傳輸?shù)腇RD和FWR信號(hào).
        (5)設(shè)置寄存器FASTXFR,使能快速等時(shí)傳輸方式,設(shè)置nFRD低電平有效,并且設(shè)置了nFRD的寬度和相位.
        為了響應(yīng)SOF中斷,需要在中斷響應(yīng)函數(shù)ISR_Sof()中編寫數(shù)據(jù)處理程序,將數(shù)據(jù)傳送到內(nèi)部寄存器IN8DATA,另一方面清SOF中斷請(qǐng)求和USB中斷請(qǐng)求,以便程序能對(duì)下一個(gè)SOF做出正確的響應(yīng).


    5  PC機(jī)應(yīng)用程序
        EZUSB通用驅(qū)動(dòng)程序GPD(general purposedriver)用來和EZUSB外設(shè)接口的通用設(shè)備驅(qū)動(dòng)程序,為應(yīng)用程序訪問EZUSB硬件提供了途徑.EZUSB開發(fā)包提供了默認(rèn)的驅(qū)動(dòng)程序文件:EZUSB.SYS.
        對(duì)于應(yīng)用程序而言,調(diào)用CreateFile()來打開設(shè)備并取得訪問設(shè)備驅(qū)動(dòng)程序的句柄.用戶程序使用函數(shù)DeviceIoControl()來提交控制碼,并為CreateFile()函數(shù)返回的設(shè)備句柄設(shè)置I/O緩沖區(qū).
        連接到主機(jī)的EZUSB設(shè)備,GPD為其創(chuàng)建一個(gè)鏈接符.一個(gè)鏈接符.調(diào)用函數(shù)CreateFile(),實(shí)質(zhì)上就是獲取驅(qū)動(dòng)程序產(chǎn)生的目標(biāo)設(shè)備句柄.EZIU3SHW 開發(fā)包中提供了 I/O控制碼,使用這些I/O控制碼能非常方便地實(shí)USB通訊當(dāng)使用快速傳輸方式時(shí),需要將IOCTL_EZUSB_START_ISO_STREAM,IOCTL_EZUSB_READ_ISO_BUFFER,IOCTL_EZUSB_STOP_ISO_STREAM等控制碼提供給函數(shù)DcviceIoControl(),從而實(shí)現(xiàn)開啟等時(shí)傳輸、讀取等時(shí)傳輸數(shù)據(jù)、停止等時(shí)傳輸?shù)裙δ埽?


    6 結(jié)論
        
    系統(tǒng)采用FPGA作為采集處理部分,可以提高系統(tǒng)處理的速度,大大增強(qiáng)系統(tǒng)的靈活性和適應(yīng)性,具體表現(xiàn)為:
        (1)系統(tǒng)性能得到大大提高.由于采用雙SRAM作為數(shù)據(jù)交換區(qū),F(xiàn)PGA采用乒乓技術(shù)傳輸數(shù)據(jù),提高了傳輸?shù)乃俣龋?br />     (2)系統(tǒng)的適應(yīng)性與靈活性強(qiáng)由于采用FPGA可編程邏輯器件采集與處理數(shù)據(jù),對(duì)于不同的視頻圖像信號(hào),只要對(duì)FPGA邏輯稍作修改,便可實(shí)現(xiàn)信號(hào)采集.
        (3)設(shè)計(jì)結(jié)構(gòu)簡(jiǎn)單,調(diào)試方便.FPGA的外圍硬件電路簡(jiǎn)單,在硬件設(shè)計(jì)中,可以大大地減小硬件設(shè)計(jì)的復(fù)雜程度.
        FPGA技術(shù)和USB的組合,數(shù)據(jù)處理能力得到了極大的提高,且有利于系統(tǒng)升級(jí).本設(shè)計(jì)用于傳輸當(dāng)前處理后的數(shù)據(jù)量已經(jīng)足夠,采用EZUSB2131芯片已經(jīng)可以完成.如果需要傳輸更大數(shù)據(jù)量,可以采用CPYRESS公司USB2.0芯片cy7c68013代替.該實(shí)例還可應(yīng)用于實(shí)時(shí)數(shù)據(jù)采集、音頻及壓縮視頻數(shù)據(jù)傳輸?shù)阮I(lǐng)域.

    上一篇: 射頻電路PCB設(shè)計(jì)
    下一篇: 嵌入式系統(tǒng)調(diào)試中偶發(fā)性問題解決技巧
    ?
    版權(quán)所有 ? 西安航普電子有限責(zé)任公司 未經(jīng)許可

    嚴(yán)禁復(fù)制 陜ICP備08100257號(hào) 建站/推廣/維護(hù)/安全:西安利友科技