白會東 趙成成 田青青 魏巍


摘要:在USB協議中定義了多種類,它們不僅可以實現不同的功能,還能促進USB設備的普及。網絡攝像頭和USB采集卡中就用到了USB視頻類,它的好處是能夠實現即插即用,省去驅動的開發工作。一般情況下采用UVC協議的系統是單獨采用USB控制芯片來完成整個設計。為了增加設計的多元性,文章采用了 FPGA和USB3.0架構的方式,實現了一種基于UVC協議的圖像采集系統。
關鍵詞:UVC協議;USB3.0;圖像采集;固件
1 系統組成與工作流程
系統構成如圖1所示,分別為:含有OV5642傳感器的攝像頭模塊、Cyclone IV系列的FPGA芯片、Cypress公司的USB3.0芯片和主機[1]。系統的工作流程為:第一步,上電后在線配置USB3.0的固件程序和下載邏輯程序到FPGA中;第二步,程序加載到FPGA完成后會自動地通過SCCB接口配置攝像頭的寄存器,完成攝像頭的初始化工作;第三步,等待攝像頭模塊穩定輸出后開始接收圖像數據,并轉換成符合UVC(USB視頻類)格式;第四步,數據經過USB的DMA通道傳輸給上位機進行顯示。
2 程序設計
2.1 攝像頭配置程序設計
攝像頭的配置不是用USB芯片內的IIC接口進行加載,而是用FPGA內嵌的功能模塊完成的[2]。在FPGA中創建片上系統(SOC),用Verilog HDL語言設計硬件模塊,用C++語言設計配置邏輯程序。先調用Quartus II軟件中的Qsys工具完成硬件工程的創建,按照需求添加功能模塊,這里主要添加了Nios2處理器、On-chip Memory、oc_iic和PIO功能模塊。然后連接時鐘信號到每一個模塊上,把數據總線連接到相應的接口上,并設置中斷等級,完成硬件模塊的創建。在配置文件邏輯程序設計時,先調用Eclips完成軟件工程的創建,通過手動添加配置文件把工程映射到硬件上。同時把輸出文件配置成on-chip mm模式,然后編寫SCCB讀寫控制邏輯和配置文件。通過這種方式可以把軟件和硬件邏輯編輯到同一個文件中,減少了配置過程中多次配置的繁瑣步驟。最后由Quartus Ⅱ編譯產生包含軟件和硬件的sof文件。
2.2 USB固件程序設計
固件的開發使用了Cypress提供的框架和API。通過GPIF Ⅱ Designer工具設計通用可編程接口(GeneralProgrammable Interface,GPIF Ⅱ),生成包含接口配置信息的C頭文件[3]。其中GPIF Ⅱ接口是一個具有256種狀態的可編程狀態機,應用起來非常靈活,既可以作為主控接口也可以作為從設備接口。通過GPIF Ⅱ接口模塊把EZ-USB FX3數據傳輸通道轉變成FIFO,簡化了處理器的操作,讓數據經過DMA通道傳送給USB端點。GPIF Ⅱ接口數據傳輸的實際通道是GPIF線程,傳輸時把發送套接字映射到GPIF物理線程上,讓接口數據能夠存儲到緩沖區中。首先將第一個DMA描述符加載到套接字,獲取第一個DMA緩沖區的信息,然后把數據寫入第一個緩沖區,當第一個緩沖區寫滿時,套接字會根據描述符指針讀取第二個DMA描述符信息,把數據繼續寫入所對應的緩沖區,以此順應描述符鏈循環操作。當全部緩沖區寫滿或者收到傳輸結束信號時,自動把數據傳輸到USB端點,避免了CPU操作帶來的開銷,提高了數據傳輸速率。設計中GPIF II狀態機要滿足在VSYNC和HSYNC都有效時,才能連續傳輸一行數據,而且都要保證在每幀開始傳輸前標頭位已經更新。通過乒乓操作對兩個Buffer的交替讀寫,實現了數據的連續傳輸。
C頭文件添加到固件框架中,調用API函數實現DMA通道。DMA通道是由套接字、DMA描述符和Buffer構成的,主要用于數據的緩存和傳輸。DMA通道的啟動是用CyFxUVCApplnlnit函數完成的,而函數中的dmaMultiConfig結構里描述了DMA通道的具體信息。固件運行時通過入口函數CyU3PFirmwareEntry ()進入主程序main (),完成硬件的初始化和啟動實時操作系統,然后執行創建線程和注冊回調函數等操作,完成USB的配置[4]。
3 系統驗證
系統驗證時要先下載USB固件,再加載FPGA控制邏輯。一旦使用USB-Blaster線纜通過JTAG接口加載配置文件,程序會立即執行并進行數據的采集。PC系統中提供UVC的驅動程序,所以開源應用上位機VirtualDub可以直接進行圖像的顯示,結果如圖2所示,圖像采集系統工作穩定。
4 結語
一般UVC模式的圖像采集系統只采用USB芯片完成,為了增加設計的多樣性,充分利用開發板的功能部件,增加了 FPGA的參與。在設計中FPGA主要用作配置攝像頭模塊,主要的控制邏輯是在FX3中實現,改變以往只使用USB芯片的設計模式。實驗結果表明,基于USB和FPGA架構使用UVC協議的采集系統具有可行性,能夠滿足圖像實時采集的要求。
[參考文獻]
[1]殷開亮.基于UVC協議的USB3.0圖像采集系統設計[D].蘇州:蘇州大學,2014.
[2]李江波,馬春庭,王全,等.基于UVC協議的USB3.0視頻采集系統設計[J].單片機與嵌入式系統應用,2016(10):31-35.
[3]Cypress Semiconductor.How to implement an image sensor interface using EZ-USB FX3 in a USB video class(UVC)framework[EB/OL].(2018-01-11)[2018-06-06].http://www.cypress.com, 2018 ,1-11.
[4]張聰,張濤.基于USB3.0設備控制器的固件設計[J].電子器件,2013(3):383-388.