基于FPGA和VHDL的USB2.0控制器設計
2 控制器實(shí)現
控制器接口的信號框圖如圖3所示。存儲器采用標準的單口SRAM,其信號接口由32位數據線(xiàn)SRAM_DATA、15位地址線(xiàn)SRAM_ADDR及讀寫(xiě)信號(SRAM_WE和SRAM_RD)組成,系統所需SRAM的容量為2 15×32bit=128KB。
而與微控制器之間的接口信號包括32位數據線(xiàn)DATA、18位地址線(xiàn)ADDR以及DMA請求和響應信號(DMA_REQ和DMA_ACK)。由于要支持到128KB,需要17位地址線(xiàn),另外還需要一根地址線(xiàn)來(lái)選通SSRAM和USB控制器內部的寄存器,總共需要18根地址線(xiàn)addr[17:0]。定義如下:
USB_RF_SEL = !addr[17];
USB_MEM_SEL =addr[17];
第18位地址addr[17]為高時(shí)選擇緩沖存儲器,否則選擇內部寄存器。地址addr[16:2]直接用于存儲器SSRAM的地址。
2.1 UTMI接口
UTMI接口信號包括:與發(fā)送數據相關(guān)的信號(TxValid、TxReady等),與接收數據相關(guān)的信號(RxActive、RxValid、RxError等)以及16位雙向數據線(xiàn)。
在物理層,該控制器需要一個(gè)外部的USB收發(fā)器(Transceiver),本文采用的是Philips公司的ISP1501芯片。該芯片用作USB2.0的模擬前端,從USB電纜來(lái)的差分信號進(jìn)行反轉不歸零碼(NRZI)解碼和位解填充轉換成16位并行數據;反之,16位并行數據通過(guò)一個(gè)差分驅動(dòng)電路經(jīng)過(guò)串行化、位填充和NRZI編碼輸出到USB電纜上。ISP1501通過(guò)管腳MODE0和MODE1決定收發(fā)器的工作模式,共有4種工作模式:MODE[1:0]為“00”時(shí),收發(fā)器處于斷開(kāi)狀態(tài);為“01”時(shí)處于全速(Full Speed)模式(此時(shí)USB帶寬為12Mb/s);為“10”時(shí)是高速(High Speed)模式(此時(shí)USB最大帶寬是480Mb/s);為“11”時(shí)是HS chirp模式。
UTMI接口通過(guò)譯碼MODE[1:0]來(lái)控制ISP1501在HS和FS之間轉變。
If mode_hs='1'then
MODE='10'
Elsif mode_hs='0'then
MODE='01'
End if;
評論