基于CPLD/FPGA的USB讀寫(xiě)控制器
2 CPLD中的讀寫(xiě)控制電路
CPLD中的讀寫(xiě)控制電路包括時(shí)鐘提取、包識別、不歸零解碼、狀態(tài)控制、CBW包識別和數據流控制等模塊,如圖3所示。時(shí)鐘提取部分見(jiàn)參考文獻,包識別和不歸零解碼部分見(jiàn)參考文獻。下面詳細介紹狀態(tài)控制、CBW包識別和數據流控制3個(gè)模塊。本文引用地址:http://dyxdggzs.com/article/191139.htm
2.1 狀態(tài)控制模塊
因為IJSB總線(xiàn)是半雙工的,所以CPLD要控制總線(xiàn)數據的方向,即通過(guò)OE信號來(lái)控制TUSB1106是接收總線(xiàn)數據還是驅動(dòng)總線(xiàn)??偩€(xiàn)上所有的傳輸事務(wù)都始于令牌包。令牌包由主機發(fā)送,指明本次事務(wù)處理過(guò)程的含義,包括數據的傳輸方向、設備的地址及端點(diǎn)號等信息。
在本模塊中,通過(guò)對PID的檢測可得到每個(gè)包的種類(lèi),控制狀態(tài)機在初始狀態(tài)、主機發(fā)送數據、設備發(fā)送數據、主機發(fā)送握手包和設備發(fā)送握手包等幾個(gè)狀態(tài)間跳轉,從而控制其他模塊的狀態(tài)。下面為狀態(tài)機的部分代碼:
評論