USB封包格式
根集線器會在每1 ms時,送出SOF封包。這介于2個SOF封包之間的時間,即稱為幀(frame)。SOF封包雖是屬于令牌封包的一種,但卻具有獨自的PID形態名稱SOF。通常目標設各都利用SOF封包來辨識幀的起點。這個封包常用于等時傳輸。也就是在1 ms的幀(高速是125 μS微幀,將1 ms切成8份)開始時,等時傳輸會利用SOF激活傳輸并達到同步傳輸的作用。而在每一個幀開始時,SOF會傳給所有連接上去的全速設各(包含集線器)。因此,SOF封包并不適用于低速設備。這個封包內包含了一個幀碼,其可不斷地遞增,且在高達最大值時反轉為0,重新再計
數一次。這個幀碼是用來表示幀的計數值,因此,8個微幀都使用同一個幀碼值。若必要時,高速設各可計算出SOF的重復使用次數,并計算出微幀的數量。通過縮短微幀的周期時間,便可減少高速設各對于緩沖存儲器的需求。
如圖1所示,高速的根集線器將會使用額外的SOF來傳輸8個微幀。有些書籍會把這種高速的SOF,另命名為uSOF。這種增加的微幀,同時也替高速的連接帶來了更復雜的控制方式。
圖1 USB幀與微幀示意圖
此外,再利用如圖2所示的簡圖來說明主機所送出的一個SOF封包的格式。其中,SOF的封包標識符,PID數據域的值為0xA5。PID[3:o]=0101與PID[3:o]=1010所產生的,只不過它的傳送順序須由LSB→MSB。因此,即可推算出0xA5。以下,所有的PID數據域皆可由此推算而得到。
圖2 SOF封包的各種組成字段
圖2顯示了SOF封包的各種字段與相關的定義。
此外,端點可以通過SOF封包來加以同步,或是以幀碼值來作為時間的參考依據。當整個USB總線上沒有USB傳輸時,SOF封包也可避免讓設備切人低功率的中止(suspend)狀態。再者,雖然在低速設各上,是看不到SOF封包的,但相反,設各的集線器使用了前面所提及的BOP(End of-Packet)信號,且在每一個幀設置一次。因此,有時后也稱這種信號為設各的低速存活(keep alive)信號。所以說,SOF/uSOF封包是給全速/高速設各來使用的,而低速存活信號卻可避免讓低速設備切入中止狀態中。
2.令牌封包
由于USB的數據交易是由PC主機端所激活的,所以在每一個數據交易中,必須以下列的5個數據域所組合而成的令牌封包作為起始,并執行通信協議的前導工作。一個令牌封包含蓋了5個數據域SYNC、PID、ADDR、ENDP與CRC5。這即是54233的第1個數字:5。如下所列為其令牌封包的各個組成的數據域。
令牌封包的PID數據域(PID[1:0]=[0,1])中包含了OUT、IN、SETUP這3種PID類型名稱。也就是包含了OUT令牌封包、IN令牌封包以及SETUP令牌封包。例如,在執行控制傳輸主機要通過預設的地址取得設備描述符(Get ̄Descriptor),就必須先執行下列的SETUP令牌封包,作為每一次控制傳輸的開始,其中,PID欄變成SETUP的PID類型名稱(0xB4)。IN令牌封包,則是主機用來通知設備,將要執行數據輸入的工作。而OUT令牌封包則剛好相反。
pid控制相關文章:pid控制原理
三相異步電動機相關文章:三相異步電動機原理
評論