USB主機(jī)控制器的設(shè)計(jì)
摘要:討論在SoPC(System on a Programmable Chip)系統(tǒng)中設(shè)計(jì)USB主機(jī)接口設(shè)備的一般方法,著重闡述主機(jī)控制器的驅(qū)動(dòng)程序開(kāi)發(fā)。利用Xilinx公司的EDK軟件在ML405開(kāi)發(fā)板上搭建一個(gè)基于PowerPC的片上系統(tǒng),設(shè)計(jì)EZ-Host的USB主機(jī)控制器的Linux驅(qū)動(dòng)程序,使系統(tǒng)具有USB主機(jī)功能,能夠和各種USB設(shè)備進(jìn)行通信,實(shí)現(xiàn)SoPC系統(tǒng)上基于Linux的USB接口的擴(kuò)展,對(duì)于開(kāi)發(fā)其他USB主控制器驅(qū)動(dòng)具有一定借鑒意義。
關(guān)鍵詞:USB;USB主機(jī)控制器;EZ-Host;Linux;SoPC
USB具有簡(jiǎn)單、標(biāo)準(zhǔn)的連接方式、支持熱插拔等諸多優(yōu)點(diǎn),因此已成為流行的接口技術(shù)。USB是典型的主/從結(jié)構(gòu)的總線標(biāo)準(zhǔn),即只有USB主機(jī)才能與USB設(shè)備連接。USB總線與計(jì)算機(jī)系統(tǒng)的接口部分是主機(jī)控制器,它可以被看作一個(gè)硬件、固件和軟件的綜合體。主機(jī)控制器實(shí)現(xiàn)主機(jī)與設(shè)備之間的電氣和協(xié)議層匹配,主要包括:串并轉(zhuǎn)換、幀起始、數(shù)據(jù)處理、協(xié)議使用、傳輸錯(cuò)誤處理、遠(yuǎn)程喚醒、根Hub、主機(jī)系統(tǒng)接口等功能。USB設(shè)備之間通過(guò)USB Hub連接,主機(jī)控制器和USB設(shè)備之間一般通過(guò)根Hub相連。通常主機(jī)控制器提供與根Hub相關(guān)的狀態(tài)查詢和控制單元。當(dāng)有設(shè)備插入時(shí),在枚舉過(guò)程中,主機(jī)控制器驅(qū)動(dòng)通過(guò)查詢和控制單元應(yīng)答設(shè)備偽裝成一個(gè)Hub,所以通常稱此Hub為虛擬根Hub。
這里利用EDK軟件搭建一個(gè)基于PowerPC的片上系統(tǒng),實(shí)現(xiàn)了SoPC系統(tǒng)上基于Linux的USB接口的擴(kuò)展,使系統(tǒng)具有USB主機(jī)功能,能夠和各種USB設(shè)備進(jìn)行通信。
1 開(kāi)發(fā)環(huán)境
目前Linux 2.6內(nèi)核中的USB支持3種主控制器接口:通用主控制器接口(UHCI)、開(kāi)放控制器接口(OHCI)及增強(qiáng)主機(jī)控制接口(EHCI)。在嵌入式系統(tǒng)中,如果處理器集成有USB主機(jī)控制器,則可直接引出USB主控端口;而未集成USB主機(jī)控制器的處理器則需使用USB主控器件,從總線上擴(kuò)展USB主機(jī)接口。
這里所采用的開(kāi)發(fā)環(huán)境是Xilinx公司的ML405開(kāi)發(fā)板。開(kāi)發(fā)板上核心FPGA采用Xilinx的XC4VFX20-FF672器件,其內(nèi)置1個(gè)PowerPC硬核,2個(gè)以太網(wǎng)MAC層控制器。開(kāi)發(fā)板上還帶有64 MB的DDR SDRAM,10/100/1000以太網(wǎng)端口、帶主機(jī)/設(shè)備端的USB接口器件(CY7C67300)等。
EZ-Host(CY7C67300)是Cypress半導(dǎo)體公司的全速低耗多端口主機(jī)/外設(shè)控制器,該器件可方便接至高性能CPU上完成USB主機(jī)控制器端的功能;擁有16位RISC指令處理器,可作為協(xié)處理器使用或單獨(dú)使用;同時(shí)支持USB的OTG協(xié)議,擁有2個(gè)可獨(dú)立配置并各帶有2個(gè)端口的USB串行接口引擎(SIE);既可用作主機(jī),又可用作外設(shè),并支持多達(dá)4個(gè)主機(jī)端口。另外,該器件擁有一個(gè)可編程I/O接口模塊,可供各種接口編程使用,可編程實(shí)現(xiàn)HPI、HSS、SPI等接口模式。當(dāng)EZ-Host控制器作為USB主機(jī)控制器時(shí),一般采用HPI主機(jī)端接口(Host Port Interface)接口模式。
2 硬件設(shè)計(jì)
Xilinx公司提供一個(gè)IP核opb_epc外設(shè)控制器(external peripheral controller),為OPB總線與外部同步或異步外圍設(shè)備之間的數(shù)據(jù)傳送提供一個(gè)通用接口,可方便實(shí)現(xiàn)處理器對(duì)于外設(shè)的控制。一個(gè)opb_epe最多可接4個(gè)外設(shè),且每個(gè)外設(shè)可獨(dú)立配置成同步或異步模式,其時(shí)序參數(shù)(如建立時(shí)間、保持時(shí)間、訪問(wèn)時(shí)間周期等)都可由用戶設(shè)置。opb_epc通過(guò)OPB總線接收處理器的讀寫指令,在相應(yīng)外設(shè)接口產(chǎn)生相應(yīng)
的訪問(wèn)周期,從而實(shí)現(xiàn)處理器對(duì)外圍設(shè)備的控制。這里使用opb_epc模塊作為控制器,實(shí)現(xiàn)PowerPC與EZ-Host的主機(jī)控制器的接口通信,嵌入式硬件系統(tǒng)架構(gòu)如圖l所示。
評(píng)論