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