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