??? 摘 要: 在圖像壓縮" title="圖像壓縮">圖像壓縮調(diào)試過程中,壓縮數(shù)據(jù)在實(shí)時(shí)硬盤存儲(chǔ)的基礎(chǔ)上,還要與PC機(jī)連接進(jìn)行效果評(píng)估。為了解決數(shù)據(jù)壓縮板在通用串行接口(USB)高速數(shù)據(jù)傳輸" title="高速數(shù)據(jù)傳輸">高速數(shù)據(jù)傳輸中雙重角色(主機(jī)/外設(shè)" title="外設(shè)">外設(shè))的矛盾,本文采用具有OTG功能的USB芯片ISP1761實(shí)現(xiàn)了協(xié)議轉(zhuǎn)換、主從自動(dòng)切換控制以及上/下行高速數(shù)據(jù)傳輸。針對(duì)ISP1761支持PowerPC微處理器接口的高速性能,采用Xilinx公司的Virtex4系列FPGA芯片,通過其內(nèi)嵌的PowerPC硬核" title="硬核">硬核處理器完成芯片初始化以及DMA數(shù)據(jù)傳輸控制。實(shí)現(xiàn)了對(duì)JPEG2000壓縮后圖像的45.5Mb/s上/下行有效數(shù)據(jù)傳輸,滿足了實(shí)時(shí)存儲(chǔ)和調(diào)試的要求。
??? 關(guān)鍵詞: FPGA;PowerPC;USB;OTG;數(shù)據(jù)傳輸
?
??? 在測繪、遙感等諸多圖像相關(guān)領(lǐng)域,需要壓縮圖像數(shù)據(jù)用以平衡數(shù)據(jù)量與傳輸帶寬之間的矛盾。隨著圖像傳感技術(shù)的進(jìn)步以及對(duì)圖像質(zhì)量要求的提高,對(duì)不同設(shè)備中通用標(biāo)準(zhǔn)接口之間的數(shù)據(jù)傳輸有了更高的要求。通用串行接口(USB)的熱插拔、高速特性使其成為各個(gè)系統(tǒng)數(shù)據(jù)高速連接的通用標(biāo)準(zhǔn)。選擇USB接口進(jìn)行數(shù)據(jù)傳輸?shù)那疤嵯?,滿足各種設(shè)備的小型化、低功耗要求,需要脫離體積較大的PC機(jī)來實(shí)現(xiàn)系統(tǒng)的嵌入式操作。為了解決圖像壓縮調(diào)試中壓縮板傳輸數(shù)據(jù)的雙重角色矛盾——直接硬盤存儲(chǔ)中圖像壓縮板為主機(jī)(Host),高速USB硬盤為外設(shè);電腦調(diào)試中PC機(jī)為主機(jī),圖像壓縮板為外設(shè)(Peripheral)。本文采用具有USB OTG(On-the-Go)技術(shù)的協(xié)議芯片ISP1761來完成同一端口的雙重操作,并且實(shí)現(xiàn)了自動(dòng)切換。
1 OTG技術(shù)及ISP1761特性分析
??? USB OTG是USB2.0規(guī)范的補(bǔ)充,在兼容所有USB2.0特性的前提下,結(jié)合了對(duì)嵌入式應(yīng)用的新特性,其中包括低功耗、更小的USB接頭以及在同一個(gè)USB端口上實(shí)現(xiàn)主機(jī)和外設(shè)雙重角色(OTG)的功能。OTG適用于在沒有PC機(jī)(主設(shè)備)的情況下,實(shí)現(xiàn)從設(shè)備相互之間的對(duì)等連接。
??? USB2.0協(xié)議本身支持高達(dá)480Mb/s的高速數(shù)據(jù)傳輸,并且與USB1.1規(guī)范后向兼容,而后者僅支持全速12Mb/s和低速1.5Mb/s。在具有OTG技術(shù)的USB協(xié)議芯片中,Philips公司生產(chǎn)的芯片ISP1761不但在同一接口具有主機(jī)/外設(shè)雙重功能(OTG),而且實(shí)現(xiàn)主機(jī)/外設(shè)的高速傳輸(支持480Mb/s)。
??? ISP1761采用低功耗設(shè)計(jì),正常工作時(shí)Icc<100mA,便于嵌入式應(yīng)用。
??? (1)接口形式:ISP1761是單片高速USB OTG控制器,配備了一個(gè)OTG接口和兩個(gè)主機(jī)控制器接口,OTG接口可以通過控制線在主機(jī)/外設(shè)角色間隨時(shí)轉(zhuǎn)換,使得系統(tǒng)可以隨時(shí)連接PC機(jī)和USB高速硬盤進(jìn)行數(shù)據(jù)傳輸調(diào)試。
??? (2)數(shù)據(jù)傳輸:集成PLL鎖相環(huán)獲得穩(wěn)定的傳輸采樣,內(nèi)部FIFO進(jìn)行數(shù)據(jù)緩沖,支持DMA傳輸方式,支持主機(jī)通信協(xié)議HNP(Host Negotiation Protocol)和對(duì)話請(qǐng)求協(xié)議SRP(Session Request Protocol)技術(shù),采用請(qǐng)求/應(yīng)答機(jī)制進(jìn)行快速數(shù)據(jù)交換。
??? (3)控制方面:采用通用處理器接口,可以方便地連接到各種CPU單元。特別是支持PowerPC RISC處理器接口,能夠和Xilinx FPGA硬核直接相連,實(shí)現(xiàn)高速控制。
2 PowerPC系統(tǒng)結(jié)構(gòu)及其ISP1761連接方法
??? Xilinx公司Virtex系列FPGA芯片廣泛采用PowerPC作為硬核。PowerPC是32位,采用IBM′ PowerPC體系結(jié)構(gòu)的嵌入式微處理器?;谇度胧皆O(shè)計(jì)的PowerPC系統(tǒng)如圖1所示(圖中主要列出本系統(tǒng)所用部分)。從圖1可以看出,PowerPC硬核通過設(shè)備控制寄存器總線DCR與內(nèi)部總線橋連接,通過處理器局部總線PLB、片上外設(shè)總線OPB和各種外設(shè)接口連接。
?
??? PowerPC具有5階段流水線:取指、譯碼、執(zhí)行、寫-回、裝載-寫回;分離的指令Cache和數(shù)據(jù)Cache,便于流水操作;
??? PowerPC硬核處理器" title="硬核處理器">硬核處理器與ISP1761連接操作示意圖如圖2所示。
?
??? 內(nèi)部可尋址的主機(jī)控制器緩沖存儲(chǔ)器(即內(nèi)部RAM)大小為63KB,包括傳輸描述和有效載荷PTD(Philips Transfer Descriptor)和payload兩部分。PTD區(qū)域和payload區(qū)域都被分成三個(gè)部分:ISO(Isochronous)、INT(Interrupt)、ATL(Acknowledged Transfer List),可以進(jìn)行如圖2所示的分區(qū)管理。無論是與PowerPC還是與USB硬盤進(jìn)行數(shù)據(jù)傳輸都需要訪問ISP1761內(nèi)部RAM,即數(shù)據(jù)必須通過PIO模式或DMA模式傳輸?shù)絇TD區(qū)域和payload區(qū)域才能進(jìn)行協(xié)議轉(zhuǎn)換等操作,具體區(qū)域需要由ISP1761內(nèi)部的仲裁機(jī)構(gòu)裁定。
??? 因?yàn)镮SP1761的初始化主要是對(duì)內(nèi)部寄存器賦值,因此采用PIO模式。通過CS_N、WR_N、RD_N訪問寄存器和存儲(chǔ)器。當(dāng)USB接口進(jìn)行高速數(shù)據(jù)傳輸時(shí),則采用DMA方式。通過DACK、WR_N、RD_N來訪問。ISP1761的DMA傳輸長度支持1、4、8、16個(gè)字,在DMA傳輸開始時(shí),DREQ有效。DMA訪問時(shí)序如圖3所示。
?
3 調(diào)試系統(tǒng)硬件實(shí)現(xiàn)以及工作過程
3.1 調(diào)試系統(tǒng)硬件組成
??? 本系統(tǒng)實(shí)現(xiàn)的是測繪圖像數(shù)據(jù)壓縮以及USB接口的數(shù)據(jù)傳輸。如圖4所示,由圖像傳感器獲取的圖像數(shù)據(jù)經(jīng)過FIFO緩存后,經(jīng)由FPGA進(jìn)行JPEG2000標(biāo)準(zhǔn)下的圖像壓縮,壓縮程序由Verilog HDL硬件描述語言實(shí)現(xiàn),壓縮后的數(shù)據(jù)流在PowerPC405硬核處理器的控制下,暫存到DDR RAM中,進(jìn)行連續(xù)相關(guān)圖像比較及其處理,最后將圖像數(shù)據(jù)存儲(chǔ)到高速USB硬盤中。但在調(diào)試過程中,需要對(duì)壓縮算法進(jìn)行驗(yàn)證和評(píng)估,即將需要存儲(chǔ)到高速USB硬盤的數(shù)據(jù)流直接連接輸入到PC機(jī)中,在PC機(jī)中進(jìn)行數(shù)據(jù)顯示、處理和識(shí)別等方面的評(píng)估。因此調(diào)試中要頻繁地將同一個(gè)USB OTG高速接口在高速USB硬盤和PC機(jī)USB接口中調(diào)換。
?
??? 設(shè)計(jì)中CCD傳感器采用2200萬像素(4008×5344)的超大分辨率全幀CCD圖像傳感器FTF4052M。FIFO采用IDT公司的IDT72V2113,容量為512K×9bit。FPGA采用Xilinx公司的Virtex4 FX12,它集成PowerPC405硬核處理器和MicroBlaze軟核處理器,可以通過IP核方便地連接SRAM 和DDR SDRAM進(jìn)行數(shù)據(jù)暫存或高速緩沖存儲(chǔ),DDR RAM采用HYB25D256160BT,硬核也可以針對(duì)ISP1761的預(yù)留PowerPC接口直接對(duì)其進(jìn)行高速控制,其中JPEG2000壓縮部分為自己編制的已做成用戶自定義IP核,直接添加到PowerPC硬核處理器中。
3.2 PowerPC硬件配置流程
??? 系統(tǒng)采用ISE EDK(Embedded Development Kit)中的BaseSystem BuilderWizard來快速構(gòu)建基于PowerPC405的硬核處理系統(tǒng)。在XPS(Xilinx Platform Studio)平臺(tái)下進(jìn)行硬核配置。首先定義內(nèi)部所用各種存儲(chǔ)器(BRAM,DDR RAM)以及應(yīng)用總線(PLB,OPB)和接口,之后添加JPEG2000的IP核,對(duì)用戶IP核進(jìn)行各種導(dǎo)入操作,包括總線形式選擇、主從配置、分配地址空間、添加端口信號(hào)、將端口信號(hào)連接到FPGA管腳上,并且定義成外部管腳。軟件工程設(shè)計(jì)主要包括:軟件工作環(huán)境設(shè)置,對(duì)設(shè)備驅(qū)動(dòng)進(jìn)行調(diào)整,添加應(yīng)用軟件,自己編寫的應(yīng)用C固件程序添加到軟件工程之中,最后產(chǎn)生位流文件。
3.3 OTG芯片控制流程
??? OTG引腳可以分別連接到PC機(jī)和高速USB硬盤,而OTG的主機(jī)/外設(shè)作用選擇取決于ISP1761中的ID引腳,引腳值由連接到USB mini-AB插座上的插頭類型決定。如果ID為低(mini-A插頭),則為主機(jī)A-device;如果ID為高(mini-B插頭),則為外圍設(shè)備B-device。這樣就實(shí)現(xiàn)了智能主從選擇,方便隨時(shí)改變硬件進(jìn)行壓縮調(diào)試。
??? ISP1761引腳VBUS開/關(guān)之間的時(shí)間(session)是交換數(shù)據(jù)過程。主機(jī)和外設(shè)都可以開始一個(gè)數(shù)據(jù)傳輸過程,在一個(gè)傳輸過程中主機(jī)的作用能夠通過HNP在A、B設(shè)備中隨時(shí)改變。如果主機(jī)開始一個(gè)數(shù)據(jù)傳輸,通過使能電荷泵來有效VBUS。外設(shè)檢測到VBUS有效后,通過使能DP線上的上拉電阻確定自己外設(shè)地位。主機(jī)檢測到遠(yuǎn)程上拉電阻,則也確定了自己的主機(jī)地位,主機(jī)就可以和外設(shè)進(jìn)行通信。結(jié)束通信則通過無效VBUS來實(shí)現(xiàn)。
??? 如果外設(shè)開始一個(gè)數(shù)據(jù)傳輸,必須通過數(shù)據(jù)線脈沖或者VBUS脈沖來初始化SRP。當(dāng)主機(jī)檢測到SRP事件,則有效VBUS(只有主機(jī)才能有效VBUS),這時(shí)就確定了自己的地位。SRP初始化過程如表1所示。主機(jī)對(duì)兩件SRP事件有反應(yīng):數(shù)據(jù)線脈沖或VBUS脈沖。當(dāng)用數(shù)據(jù)線脈沖時(shí),ISP1761能夠檢測DP脈沖。這意味著僅為外圍設(shè)備必須通過DP初始化數(shù)據(jù)線脈沖。
?
??? 當(dāng)主機(jī)通過 OTG描述符而檢測到支持HNP的外設(shè)時(shí),主機(jī)就會(huì)通過使用SetFeature(b_hnp_enable)命令使能HNP hand-off,之后進(jìn)入懸空狀態(tài)。外設(shè)信號(hào)就會(huì)通過無效自己的上拉電阻來獲得主機(jī)地位,而主機(jī)則認(rèn)可了自己的外設(shè)地位。此時(shí),外設(shè)就作為主機(jī)來進(jìn)行各種通信,直到外設(shè)結(jié)束通信,兩者又返回各自狀態(tài)。HNP是對(duì)話時(shí)用來在默認(rèn)主機(jī)(A-device)和默認(rèn)外設(shè)(B-device)之間傳輸主機(jī)控制。如果B-device想利用總線,就給A-device發(fā)送斷開信號(hào)。這樣,A-device就獲得外設(shè)地位,B-device則獲得主機(jī)地位。
??? 通過將壓縮后的協(xié)議轉(zhuǎn)換前圖像、讀出高速USB硬盤中的圖像、連接到主機(jī)USB接口采集的圖像,三者對(duì)比后達(dá)到完全一致,驗(yàn)證了通過單片協(xié)議芯片ISP1761實(shí)現(xiàn)了USB OTG標(biāo)準(zhǔn)下的高速數(shù)據(jù)傳輸,實(shí)現(xiàn)了同一壓縮板端口的上/下行數(shù)據(jù)調(diào)試。CCD傳感器數(shù)據(jù)量為100Mb/s的情況下,采用JPEG2000標(biāo)準(zhǔn)對(duì)圖像數(shù)據(jù)進(jìn)行無損壓縮,實(shí)測壓縮率約為2.2:1,因此通過USB接口實(shí)現(xiàn)了約45.5Mb/s的上/下行(OTG)有效數(shù)據(jù)傳輸,遠(yuǎn)遠(yuǎn)超過USB低速、全速的傳輸速度,實(shí)現(xiàn)了真正意義上的高速數(shù)據(jù)傳輸。
參考文獻(xiàn)
[1] ISP1761Hi-Speed Universal Serial Bus On-The-Go controller.www.nxp.com.
[2] ISP1761 Hi-Speed USB Host/On-The-Go Demo Board for BSQUARE DevIDP PXA255.www.nxp.com.
[3] 宋宇寧,周兆英,趙煥軍,等.USB OTG擴(kuò)展子板的實(shí)現(xiàn),電子技術(shù)應(yīng)用,2006,32(5):112-114.
[4] 魏春鳳.基于USB接口的OTG應(yīng)用技術(shù)開發(fā),世界電子元器件,2005,(11):52-55.