在學習2440的USB配置時鍾中,發現它的時鍾需要設置成48MHz固定的,這個我就來興趣了,為什么這里面USB的時鍾一定要是48M呢?在網上找了眾多文章,都是講解如何配置2440的MPLL和UPLL,根據外部晶振來設置不同的參數,先配置UPLLCON,再配置MPLLCON,
但我需要的不是這個,是它背后的原因。於是,開始了找尋答案的旅程。
先還是從datasheet中找:
對UPLLCON的配置,都是采用固定值:
從下面來時鍾配置來看:
UPLL實際產生固定96MHZ的頻率,二分頻給USB主機使用,一分頻給Camera采樣使用
從寄存器默認值設置來看:
從datasheet上面種種介紹來看,S3C2440內部的USB控制器模塊時鍾使用的頻率固定為 48MHz。
從6410上面的USB Host時鍾設置上來看,也是如此:
這里,問題就來了,為什么要設置成固定的48MHz,這個數據對於USB傳輸來說,有什么意義?
通過網上了解USB速度相關的知識:
USB 1.1
低速(low-speed) 傳輸速率 1.5Mbps
全速(full-speed) 傳輸速率 12Mbps
標准脈沖時鍾為12MHz,總線脈沖時鍾為1KHz,也就是說,每個1ms,USB主機控制器在USB線纜上產生一個時鍾脈沖序列,這個為幀開始數據包(SOF)
USB 2.0 在USB 1.1 的基礎上,向下兼容,並增加高速模式
USB 2.0
低速(low-speed) 傳輸速率 1.5Mbps
全速(full-speed) 傳輸速率 12Mbps
高速 (high-speed)傳輸速率 480Mbps
USB 3.0 在USB2.0的基礎上,向下兼容,增加了超高速模式(super speed)
USB 3.0
低速(low-speed) 傳輸速率 1.5Mbps
全速(full-speed) 傳輸速率 12Mbps
高速 (high-speed)傳輸速率 480Mbps
超高速(Super Speed)傳輸速度4.8Gbps
上述速度均為理論傳輸最高數值,單位為Mbps,如需化為MB/S,需要除以8. 在實際使用中,需要兼容其他系統的速度,往往會打個8折。
上網翻來USB2.0規范,在 5.12.2 節 USB Clock Model 和7.1.17 Cable Attenuation l一節中,發現一點有用的東西,先摘錄如下:
USB的時鍾模型:
UBS的電纜衰減:
結合USB傳輸規定,線纜的最大長度不超過5米,USB級聯不能超過5級。同時,在一個USB系統中,USB device 和USB Hub總數不能超過127個,所有的USB device都連接在USB Hub。一個USB HOST總是與一個USB Root Hub相連,USB Hub為每個端口提供 100mA電流供設備使用。
另外,這里也尋找了一些答案:
http://www.edaboard.com/thread91063.html
USB控制器接收部分的數字部分工作在60MHz,8位模式。當接收到高達480Mbps的數據時,為了從數據線中恢復時鍾信號和數據信號,USB使用Delay-locked loop(DLL)來產生采樣時鍾,將采樣的數據保存到彈性緩沖器中,彈性緩沖器再將數據以60MHz的時鍾導出到數字部分。
最后在這里找到一些有用的回答:http://electronicdesign.com/boards/480-mbitss-signal-integrity-becomes-issue-usb-20-designs
最后總結一下:
USB總線時鍾設置為48MHz,一部分是傳輸電纜本身的衰減因素,另一部分,為了兼容USB1.1的低速傳輸,還有的就是規范上的一些限制吧。
目前,就網上的資料就找到這么多,在找尋答案的同時,發現如下一些好文章,現在給出來:
這篇文章里面,介紹了USB Connector相關知識:
http://www.beyondlogic.org/usbnutshell/usb2.shtml
這篇文章總結了常用總線頻率,很不錯。