一種嵌入式USB2.0主機(jī)控制器IP核的研究與設(shè)計
1 引言
從通用串行總線(USB) 問世, 到協(xié)議規(guī)范2. 0版本, USB 在不斷自我完善, 并走向成熟。 USB 的拓?fù)浣Y(jié)構(gòu)中居于核心地位的是主機(jī)(Host), 任何一次USB 的數(shù)據(jù)傳輸都必須由主機(jī)來發(fā)起和控制, 而目前, 大量扮演主機(jī)角色的是個人電腦( PC)。所有USB 設(shè)備都只能在PC 上使用, 只能通過PC 來進(jìn)行相互的文件和數(shù)據(jù)交換。 沒有了PC, 這些設(shè)備就失靈了( 指數(shù)據(jù)交換的功能)。
因此, 如何將USB 應(yīng)用到嵌入式領(lǐng)域? 如何實現(xiàn)USB 點對點的通信?0等問題, 開始進(jìn)入了USB開發(fā)者的討論議程。 嵌入式USB 主機(jī)的設(shè)計在國內(nèi)處于剛剛起步的階段, 僅有不多的半導(dǎo)體公司提供接口芯片, 還很少有完整的嵌入式USB 主機(jī)產(chǎn)品上市。 廠家和USB 論壇所能提供的Demo 也限于依靠嵌入式操作系統(tǒng)WinCE 和Linux 等。因此, 項目研究具有一定的領(lǐng)先性。 正是在這種背景下, 業(yè)界和用戶的需求呼喚USB 主機(jī)實現(xiàn)嵌入式化。 本設(shè)計也是基于這種背景設(shè)計了一種支持高速和全速的嵌入式USB2. 0 主機(jī)控制器IP 核, 如圖1 所示。
圖1 嵌入式USB2. 0 主機(jī)控制器結(jié)構(gòu)
2 主機(jī)控制器IP 核的設(shè)計
2. 1 主控制器
主控制器是整個USB 主機(jī)設(shè)計中的核心模塊,它控制著嵌入USB 主機(jī)控制器中其它所有模塊, 此模塊主要采用一個總狀態(tài)機(jī)來實現(xiàn)其控制作用, 如圖2 所示。
圖2 主控制狀態(tài)機(jī)
其中每個狀態(tài)下又有相應(yīng)的子狀態(tài)機(jī)。 當(dāng)EOF1( end of frame1) 到來時, 將進(jìn)入等待發(fā)送SOF( start of frame) 狀態(tài), 當(dāng)傳輸數(shù)據(jù)有效時, 會有兩種傳輸情況, 如果是OUT 傳輸或( setup) 配置時, 嵌入式主機(jī)讀取存儲器中數(shù)據(jù), 數(shù)據(jù)讀取完后會自動跳轉(zhuǎn)到PIE 模塊中的OUT 傳輸或setup 的子狀態(tài)機(jī)來完成相應(yīng)的具體操作并進(jìn)入傳輸?shù)却隣顟B(tài)(waitfor eot) , 等待操作完成, 相應(yīng)操作完成后, PIE 模塊置EOT( end of transfer) 信號為1來宣告當(dāng)前傳輸完成, 同時會更新狀態(tài)寄存器中數(shù)據(jù)準(zhǔn)備下一次操作。 當(dāng)為IN 或ping 傳輸時, 與OUT 或setup 傳輸類似, 都會跳轉(zhuǎn)到相關(guān)模塊來完成相應(yīng)的具體操作。
評論