龔鋒, 焦繼業, 閔嘉維
(西安郵電大學 計算機學院,西安 710061)
通用串行總線(Universal Serial Bus,簡稱USB)具有即插即用、兼容性好、高擴展性等優點,傳輸數據高效可靠,在嵌入式系統中得到了廣泛應用。自Cypress推出全球第一顆USB控制芯片以來,各大公司紛紛搶奪市場,當前USB控制芯片市場幾乎被Cypress、Philips等歐美廠商壟斷[1],揚智科技是國內為數不多能夠自產USB控制芯片的公司,因此研究USB控制器不僅可以掌握核心技術,還可以創造可觀的經濟效益。
本文的USB2.0設備控制器基于嵌入式SoC系統,Cortex-M0處理器控制USB通信,AHB Lite總線實現Cortex-M0處理器和USB控制器的互聯。眾多設計者選用8051作為主控芯片[2],Wishbone總線作為連接結構。Cortex-M0處理器與8051處理器相比,Cortex-M0處理器性能優越,面積與8051處理器相當。AHB Lite總線與Wishbone總線相比,AHB Lite總線支持流水線操作[3],指令執行效率更高。本文優化了USB控制器,經過FPGA驗證,USB控制器能夠高效進行USB數據傳輸,可廣泛應用于嵌入式SoC系統設計中。
USB2.0設備控制器采用自上而下的模塊化設計方法,使用Verilog硬件描述語言建立硬件模型,USB控制器主要用來驅動事務傳輸,對數據進行協議處理。USB控制器架構,如圖1所示。
串行接口引擎負責底層協議處理,對USB包進行NRZI(No Return Zero-Inverse)編碼/譯碼,位填充/去填充,CRC(Cycle Redundancy Check)校驗。SRAM控制器獲取端點的FIFO(First Input First Output) 指針,將FIFO指針轉換成SRAM地址,此外產生訪問SRAM的控制信號。端點控制單元傳遞事務傳輸的控制信號,Cortex-M0處理器依靠微處理器接口訪問USB控制器的控制/狀態寄存器和每個端點的FIFO。USB包交換成功后端點產生中斷請求,USB控制器進入中斷。……