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