MicroBlaze在圖像高速雙向USB傳輸中的應(yīng)用
摘要:在空間飛行器的遙感過(guò)程中,測(cè)獲的海量數(shù)據(jù)在實(shí)時(shí)壓縮、硬盤(pán)存儲(chǔ)的基礎(chǔ)上,還要與PC機(jī)進(jìn)行通信。為了解決數(shù)據(jù)壓縮板在通用串行接口高速數(shù)據(jù)傳輸中雙重角色(主機(jī)/外設(shè))的矛盾,本文采用具有OTG功能的USB 芯片ISP1761實(shí)現(xiàn)了協(xié)議轉(zhuǎn)換、主從自動(dòng)切換控制以及上/下行高速數(shù)據(jù)傳輸。針對(duì)ISP1761支持微處理器接口的高速性能,采用Xilinx公司的Virtex4系列FPGA芯片,通過(guò)其內(nèi)嵌的MicroBlaze軟核處理器完成芯片初始化以及DMA數(shù)據(jù)傳輸控制,實(shí)現(xiàn)了對(duì)JPEG2000壓縮后圖像的45.8Mbps上/下行有效數(shù)據(jù)傳輸。
本文引用地址:http://m.butianyuan.cn/article/149594.htm1.緒言
在空間飛行器的遙感測(cè)繪過(guò)程中,由于受到有限信道帶寬的限制,數(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ù)那疤嵯?,?duì)各種設(shè)備的小 型化、低功耗要求,需要脫離體積較大的PC 機(jī)來(lái)實(shí)現(xiàn)系統(tǒng)的嵌入式操作。為了解決圖像壓 縮調(diào)試中壓縮板傳輸數(shù)據(jù)的雙重角色矛盾——直接硬盤(pán)存儲(chǔ)中圖像壓縮板為主機(jī)(Host), 高速USB 硬盤(pán)為外設(shè);電腦調(diào)試中PC 機(jī)為主機(jī),圖像壓縮板為外設(shè)(Peripheral)。本文采 用具有USB OTG(On-the-Go)技術(shù)的協(xié)議芯片ISP1761 來(lái)完成同一端口的雙重操作,并且 實(shí)現(xiàn)了自動(dòng)切換。
2.OTG 技術(shù)及ISP1761 特性分析
USB OTG 在兼容所有USB2.0 特性的前提下,結(jié)合了對(duì)嵌入式應(yīng)用的新特性,其中包 括低功耗、更小的USB 接頭以及在同一個(gè)USB 端口上實(shí)現(xiàn)了雙重角色(OTG)的功能—— 作為主機(jī)和外設(shè)的功能。OTG 適用于沒(méi)有PC 機(jī)(主設(shè)備)的情況下,實(shí)現(xiàn)從設(shè)備相互之間 的對(duì)等連接。
USB2.0 協(xié)議本身支持高達(dá)480Mbps 的高速(high speed)數(shù)據(jù)傳輸,并且與USB1.1 規(guī) 范后向兼容,而后者僅支持全速(full speed)12Mbps 和低速(low speed)1.5Mbps。在具有 OTG 技術(shù)的USB 協(xié)議芯片之中,Philips 公司生產(chǎn)的芯片ISP1761 不但在同一接口具有了主 機(jī)/外設(shè)雙重功能(OTG),而且實(shí)現(xiàn)主機(jī)/外設(shè)的高速傳輸(high speed 支持480Mbps)。
ISP1761采用低功耗設(shè)計(jì),正常工作時(shí)Icc100mA,便于嵌入式應(yīng)用。
在接口形式上:ISP1761 是單片高速USB OTG 控制器,配備了一個(gè)OTG 接口和兩個(gè)主 機(jī)控制器接口,OTG 接口可以通過(guò)控制線在主機(jī)/外設(shè)角色間隨時(shí)轉(zhuǎn)換,使得本系統(tǒng)可以隨 時(shí)連接PC 機(jī)和USB 高速硬盤(pán)進(jìn)行數(shù)據(jù)傳輸調(diào)試。
在數(shù)據(jù)傳輸上:集成PLL鎖相環(huán),可以獲得穩(wěn)定的傳輸采樣;內(nèi)部FIFO進(jìn)行數(shù)據(jù)緩沖; 支持DMA傳輸方式,支持HNP (Host Negotiation Protocol主機(jī)通信協(xié)議)和SRP(Session Request Protocol)對(duì)話請(qǐng)求協(xié)議技術(shù),采用請(qǐng)求/應(yīng)答機(jī)制進(jìn)行快速數(shù)據(jù)交換。
在控制方面:采用通用處理器接口,可以方便的連接到各種CPU單元。特別是支持RISC 處理器接口,能夠和Xilinx FPGA軟核MicroBlaze直接相連,實(shí)現(xiàn)高速控制。
3. MicroBlaze 系統(tǒng)結(jié)構(gòu)及其ISP1761 連接方法
MicroBlaze嵌入式軟核是一個(gè)被Xilinx公司優(yōu)化過(guò)的可以嵌入在FPGA中的RISC處理器 軟核,MicroBlaze采用的數(shù)據(jù)總線和指令總線是分開(kāi)的,總線接口有LMB和IBM的OPB兩種, 其中,LMB為有效的塊RAM傳輸提供簡(jiǎn)單的同步協(xié)議,而OPB接口提供片上、片外設(shè)備和 外設(shè)存儲(chǔ)器之間的連接,MicroBlaze還提供Xilinx CacheLink(XCL)的接口,XCL為Caches和 特定的外部存儲(chǔ)器控制器提供一個(gè)快速的從設(shè)備方仲裁流接口,MicroBlaze也支持高達(dá)8個(gè) 快速單一連接端口(FSL), FSL提供一個(gè)快速的非仲裁流通信機(jī)制,而每一個(gè)又可分主接口和 從接口。
MicroBlaze 軟核處理器與ISP1761 連接操作示意圖如圖1 所示。
內(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ū)管理。無(wú)論是與MicroBlaze還是與USB硬盤(pán)進(jìn)行數(shù)據(jù)傳輸都需要訪問(wèn)1761內(nèi)部 RAM,即數(shù)據(jù)必須通過(guò)PIO模式或DMA模式傳輸?shù)絇TD區(qū)域和payload區(qū)域才能進(jìn)行協(xié)議轉(zhuǎn)換等操作,具體區(qū)域需要由ISP1761內(nèi)部的仲裁機(jī)構(gòu)來(lái)裁定。
因?yàn)镮SP1761的初始化主要是對(duì)內(nèi)部寄存器賦值,因此采用PIO模式。通過(guò)CS_N、WR_N、 RD_N來(lái)訪問(wèn)寄存器和存儲(chǔ)器。當(dāng)USB接口進(jìn)行高速數(shù)據(jù)傳輸時(shí),則采用DMA方式。通過(guò)DACK、 WR_N、RD_N來(lái)訪問(wèn)。ISP1761的DMA傳輸長(zhǎng)度支持1,4,8,16個(gè)字,在DMA傳輸開(kāi)始的時(shí) 候,DREQ有效。DMA訪問(wèn)時(shí)序如圖2所示.
4.調(diào)試系統(tǒng)硬件實(shí)現(xiàn)以及工作過(guò)程
4.1 調(diào)試系統(tǒng)硬件組成
本系統(tǒng)所實(shí)現(xiàn)的是測(cè)繪圖像數(shù)據(jù)壓縮以及 USB 接口的數(shù)據(jù)傳輸。如圖3 所示,由圖像 傳感器獲取的圖像數(shù)據(jù)經(jīng)過(guò)FIFO 緩存后,經(jīng)由FPGA 進(jìn)行JPEG2000 標(biāo)準(zhǔn)下的圖像壓縮, 壓縮程序由Verilog HDL 硬件描述語(yǔ)言實(shí)現(xiàn),壓縮后的數(shù)據(jù)流在MicroBlaze 軟核處理器的控 制下,暫存到DDR RAM 中,進(jìn)行連續(xù)相關(guān)圖像比較及其處理,最后將圖像數(shù)據(jù)存儲(chǔ)到高 速USB 硬盤(pán)中。但在調(diào)試的過(guò)程中,需要對(duì)壓縮算法進(jìn)行驗(yàn)證和*估,即將需要存儲(chǔ)到高 速USB 硬盤(pán)的數(shù)據(jù)流直接連接輸入到PC 機(jī)中,在PC 機(jī)中進(jìn)行數(shù)據(jù)顯示、處理和識(shí)別等方 面的*估,因此調(diào)試中要頻繁的將同一個(gè)USB OTG 高速接口在高速USB 硬盤(pán)和PC 機(jī)USB 接口中調(diào)換。
設(shè)計(jì)中 CCD 傳感器采用2200 萬(wàn)像素(4008×5344)的超大分辨率全幀CCD 圖像傳感器 FTF4052M。FIFO 采用IDT 公司的IDT72V2113,容量為512K×9bit。FPGA 采用Xilinx 公 司的Virtex4 FX12,它集成PowerPC405 硬核處理器和MicroBlaze 軟核處理器,可以通過(guò)IP 核方便的連接SRAM 和DDR SDRAM 進(jìn)行數(shù)據(jù)暫存或高速緩沖存儲(chǔ),DDR RAM 采用 HYB25D256160BT,軟核也可以針對(duì)ISP1761 的預(yù)留MicroBlaze 接口直接對(duì)其進(jìn)行高速控 制,其中JPEG2000 壓縮部分為自己編制已做成用戶自定義IP 核,直接添加到MicroBlaze 軟核處理器中。
4.2 MicroBlaze 軟件配置流程
系統(tǒng)采用 ISE EDK(Embedded Development Kit)中的BaseSystem BuilderWizard 來(lái)快速構(gòu)建基于MicroBlaze 軟核處理系統(tǒng)。在XPS(Xilinx Platform. Studio)平臺(tái)下進(jìn)行硬核配置。 首先定義內(nèi)部所用各種存儲(chǔ)器(BRAM,DDR RAM)以及應(yīng)用總線(LMB,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)用軟件,自 己編寫(xiě)的應(yīng)用C 固件程序添加到軟件工程之中,最后產(chǎn)生位流文件。
4.3 OTG 芯片控制流程
OTG 引腳可以分別連接到PC 機(jī)和高速USB 硬盤(pán),而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開(kāi)/關(guān)之間的時(shí)間(session)是交換數(shù)據(jù)過(guò)程。主機(jī)和外設(shè)都可以開(kāi)始一 個(gè)數(shù)據(jù)傳輸過(guò)程,在一個(gè)傳輸過(guò)程里面主機(jī)的作用能夠通過(guò)HNP在A、B設(shè)備中隨時(shí)改變。如果 主機(jī)開(kāi)始一個(gè)數(shù)據(jù)傳輸,通過(guò)使能電荷泵來(lái)有效VBUS。外設(shè)檢測(cè)到VBUS有效后,通過(guò)使能DP線 上的上拉電阻來(lái)確定自己外設(shè)地位。主機(jī)檢測(cè)到遠(yuǎn)程上拉電阻則也確定了自己的主機(jī)地位。主機(jī) 就可以和外設(shè)進(jìn)行通信。結(jié)束通信則通過(guò)無(wú)效VBUS來(lái)實(shí)現(xiàn)。
如果外設(shè)開(kāi)始一個(gè)數(shù)據(jù)傳輸,必須通過(guò)數(shù)據(jù)線脈沖或者VBUS 脈沖來(lái)初始化SRP。當(dāng)主機(jī)檢 測(cè)到SRP 事件,則有效VBUS(只有主機(jī)才能有效VBUS),這時(shí)就確定了自己的地位。SRP 初 始化過(guò)程如表1 所示。主機(jī)對(duì)兩件SRP 事件有反應(yīng):數(shù)據(jù)線脈沖或VBUS 脈沖。當(dāng)用數(shù)據(jù)線脈 沖時(shí),ISP1761 能夠檢測(cè)DP 脈沖。這意味著僅為外圍設(shè)備必須通過(guò)DP 來(lái)初始化數(shù)據(jù)線脈沖。
當(dāng)主機(jī)通過(guò) OTG 描述符而檢測(cè)到支持HNP 的外設(shè)時(shí),主機(jī)就會(huì)通過(guò)使用SetFeature (b_hnp_enable)命令使能HNP hand-off,之后進(jìn)入懸空狀態(tài)。外設(shè)信號(hào)就會(huì)通過(guò)無(wú)效自己的 上拉電阻來(lái)獲得主機(jī)地位。而主機(jī)則認(rèn)可了自己的外設(shè)地位。此時(shí),外設(shè)就作為主機(jī)來(lái)進(jìn)行各種 通信,直到外設(shè)結(jié)束通信,兩者又返回各自狀態(tài)。HNP 是對(duì)話時(shí)用來(lái)在默認(rèn)主機(jī)(A-device) 和默認(rèn)外設(shè)(B-device)之間傳輸主機(jī)控制。如果B-device 想利用總線,就給A-device 給發(fā)送 斷開(kāi)信號(hào)。這樣,A-device 就獲得外設(shè)地位,B-device 則獲得主機(jī)地位。
5.結(jié)束語(yǔ)
通過(guò)將壓縮后的協(xié)議轉(zhuǎn)換前圖像、讀出高速 USB 硬盤(pán)中的圖像、連接到主機(jī)USB 接口 采集的圖像三者對(duì)比后達(dá)到完全一致,驗(yàn)證了通過(guò)單片協(xié)議芯片ISP1761 實(shí)現(xiàn)了USB OTG 標(biāo)準(zhǔn)下的高速數(shù)據(jù)傳輸,實(shí)現(xiàn)了同一壓縮板端口的上/下行數(shù)據(jù)調(diào)試。 CCD 傳感器數(shù)據(jù)量 為100Mbps 的情況下,采用JPEG2000 標(biāo)準(zhǔn)對(duì)圖像數(shù)據(jù)進(jìn)行無(wú)損壓縮,實(shí)測(cè)壓縮率約為2.1: 1,因此通過(guò)USB 接口實(shí)現(xiàn)了約45.8Mbps 的上/下行(OTG)有效數(shù)據(jù)傳輸,遠(yuǎn)遠(yuǎn)超過(guò)USB 低速、全速的傳輸速度,實(shí)現(xiàn)了真正意義上的高速(high speed)數(shù)據(jù)傳輸。
評(píng)論