基于FPGA的USB2.0控制器設(shè)計(jì)
摘要:介紹了一種用vhdl設(shè)計(jì)usb2.0功能控制器的方法,詳術(shù)了其原理和設(shè)計(jì)思想,并在fpga上予以實(shí)現(xiàn)。 關(guān)鍵詞:usb vhdl fpga在視頻存儲(chǔ)和圖像寬帶領(lǐng)域中,經(jīng)常遇到實(shí)時(shí)高速數(shù)據(jù)傳輸?shù)囊蟆?000年4月,由intel、microsoft、nec、compaq、lucent、phillips等公司共同制訂的usb2.0(universal serial bus)傳輸協(xié)議,其速度遠(yuǎn)遠(yuǎn)超過了目前使用ieee1394接口進(jìn)行視頻傳輸?shù)?00mbps,達(dá)到了480mbps;而且具有即插即用的pnp(plug and play)、可進(jìn)行菊花鏈?zhǔn)降募?jí)聯(lián)(通過usb hub進(jìn)行外圍擴(kuò)展)、可串連多達(dá)127個(gè)usb設(shè)備等優(yōu)點(diǎn)。應(yīng)用該協(xié)議可支持實(shí)時(shí)語(yǔ)音、音頻和視頻數(shù)據(jù)的傳輸。本文針對(duì)高速數(shù)據(jù)傳輸需求,根據(jù)usb2.0的協(xié)議規(guī)范,利用vhdl語(yǔ)言實(shí)現(xiàn)符合該協(xié)議的功能控制器,在視頻壓解系統(tǒng)中使數(shù)據(jù)在pc與外設(shè)之間高速傳輸。如圖1所示由視頻a/d采集的原始視頻數(shù)據(jù),在philips公司生產(chǎn)的tm1300專用視頻處理器中壓縮后,通過usb控制器送至pc機(jī)。pc機(jī)的整個(gè)通過usb控制器傳輸?shù)絫m1300,解壓后發(fā)送至視頻d/a。1 控制器結(jié)構(gòu)原理usb2.0控制器結(jié)構(gòu)框圖如圖2所示。控制器主要由兩個(gè)部分組成,其一為與外設(shè)的接口,另一個(gè)是內(nèi)部協(xié)議層邏輯pl(protocol layer)。內(nèi)部存儲(chǔ)器仲裁器實(shí)現(xiàn)對(duì)內(nèi)部dma和外部總線對(duì)存儲(chǔ)器訪問之間的仲裁。pl則實(shí)現(xiàn)usb的數(shù)據(jù)i/o和控制。接口有三種:一種是與微控制器之間的功能接口;一種是與單口同步靜態(tài)存儲(chǔ)器(ssram)之間的接口;另外一種是與物理層之間的接口。這里符合utmi(usb transceiver macrocell interface)規(guī)范定義。
2 控制器實(shí)現(xiàn)控制器接口的信號(hào)框圖如圖3所示。存儲(chǔ)器采用標(biāo)準(zhǔn)的單口sram,其信號(hào)接口由32位數(shù)據(jù)線sram_data、15位地址線sram_addr及讀寫信號(hào)(sram_we和sram_rd)組成,系統(tǒng)所需sram的容量為2 15×32bit=128kb。而與微控制器之間的接口信號(hào)包括32位數(shù)據(jù)線data、18位地址線addr以及dma請(qǐng)求和響應(yīng)信號(hào)(dma_req和dma_ack)。由于要支持到128kb,需要17位地址線,另外還需要一根地址線來選通ssram和usb控制器內(nèi)部的寄存器,總共需要18根地址線addr[17:0]。定義如下:usb_rf_sel <= !addr[17];usb_mem_sel <=addr[17];第18位地址addr[17]為高時(shí)選擇緩沖存儲(chǔ)器,否則選擇內(nèi)部寄存器。地址addr[16:2]直接用于存儲(chǔ)器ssram的地址。2.1 utmi接口utmi接口信號(hào)包括:與發(fā)送數(shù)據(jù)相關(guān)的信號(hào)(txvalid、txready等),與接收數(shù)據(jù)相關(guān)的信號(hào)(rxactive、rxvalid、rxerror等)以及16位雙向數(shù)據(jù)線。
在物理層,該控制器需要一個(gè)外部的usb收發(fā)器(transceiver),本文采用的是philips公司的isp1501芯片。該芯片用作usb2.0的模擬前端,從usb電纜來的差分信號(hào)進(jìn)行反轉(zhuǎn)不歸零碼(nrzi)解碼和位解填充轉(zhuǎn)換成16位并行數(shù)據(jù);反之,16位并行數(shù)據(jù)通過一個(gè)差分驅(qū)動(dòng)電路經(jīng)過串行化、位填充和nrzi編碼輸出到usb電纜上。isp1501通過管腳mode0和mode1決定收發(fā)器的工作模式,共有4種工作模式:mode[1:0]為“00”時(shí),收發(fā)器處于斷開狀態(tài);為“01”時(shí)處于全速(full speed)模式(此時(shí)usb帶寬為12mb/s);為“10”時(shí)是高速(high speed)模式(此時(shí)usb最大帶寬是480mb/s);為“11”時(shí)是hs chirp模式。utmi接口通過譯碼mode[1:0]來控制isp1501在hs和fs之間轉(zhuǎn)變。if mode_hs='1'thenmode<='10'elsif mode_hs='0'thenmode<='01'end if;2.2 協(xié)議層控制器的核心邏輯位于pl(protocl layer)模塊,負(fù)責(zé)