Sunday, July 13, 2014

USB 簡介[1]

USB,全名是Universal Serial Bus。顧名思義,它是Serial介面,而且是BUS架構。Universal當初應該是希望能夠通吃所有裝置吧,就結果來看它也達成這個目標。

先來研究為什麼會設計成這樣(我的理解):

  1. Serial介面:這個應該是硬體設計思維。Parallel介面在高速的clock之下很難維持資料的同步,所以用serial傳輸會省掉一些麻煩。
  2. BUS架構:因為USB支援Plug and Play,所以設計成BUS架構很合理,擴充容易。


看起來沒有很厲害啊?是的,但是它堪用。一個東西能不能成功,往往不是一個因素或是技術很厲害造成的。USB過去跟現在之所以流行,我認為其實是很多因素造成的:

  1. 它不需要授權金
  2. 規格公開
  3. Windows支援
  4. balabala

這幾個理由就夠人家試試看了。至於價格便宜,那是後話了(台灣IC設計所賜)。

USB架構

USB是Master-Slave架構。USB Host一定是Master。通常USB Host就是指PC,但是現在行動裝置流行,也有可能是ㄧ些支援USB Host的行動裝置。而Slave就是指USB裝置,最有名的代表就是隨身碟(我討厭大陸用語[大拇哥],Mass Storage還比較有科技感)。

這邊先講一些基本知識,免得雞同鴨講。其實這些知識都是[計算機概論]或[計算機結構]課程的一部分,沒讀過或是懶得讀的也可以用google查到。

Master-Slave架構的特點如下:

  1. Master才能發起一個Request。
  2. Slave只能回應Master發出的Request。

至於BUS的特點:

  1. 大家共用線路。最大的優點是省線路,在很早以前能省線路就是省錢的年代,這個很重要。
  2. 沒了。

BUS架構很簡單對不對,但是衍生的問題很多。

第一,共用線路代表同一時間只能有一個裝置可以用到線路。所以如何讓BUS的使用率到達最高,是個很難的問題。你可以想像如果有個慢速裝置在BUS上傳一筆很大的資料,這樣的BUS使用率會有多糟。

第二,如果有裝置不遵守規矩怎麼辦?所以BUS會制訂它專屬的通訊協定,讓這件事情比較容易偵測。但是如果一個裝置真得要亂搞,也真的沒辦法。如果你知道Ethernet的CSMA/CD(Carrier Sense Multiple Access/Collision Detection)的話,你大概會知道可以在偵測到網路碰撞時,讓等待時間最小化,如此你的網路卡表現就可以比別人好。這樣是不合規範的,可是還真的沒辦法防止。

USB針對BUS架構的缺點,提出了它的解決方式,這也是大多是BUS架構的解決方式,就是Master-Slave架構。因為Master-Slave架構可以有效解決BUS使用率的問題,並且有限度的防止惡意裝置亂搞。用一句話就可以說明:你們這些USB裝置通通聽USB HOST命令,一個口令一個動作。

這邊不談OTG(USB On-The-Go),它是個變種。

No comments:

codeblock