當(dāng)前位置: 首頁(yè) > 工業(yè)電子產(chǎn)品 > 集成電路(ICs) > 接口驅(qū)動(dòng)器 > USB接口
發(fā)布日期:2022-10-03 點(diǎn)擊率:102
通用川行總線(xiàn)(Universal Serial Bus, USB)已經(jīng)問(wèn)世十一年了,難以置信的是,電子業(yè)界至今仍不斷以創(chuàng)新方法來(lái)利用這套通訊協(xié)議;相對(duì)地,工程師每天卻也在千百種設(shè)計(jì)方案中,重復(fù)著相同的錯(cuò)誤。如何從錯(cuò)誤中學(xué)習(xí)正確觀念,是一項(xiàng)重要的功課。雖然USB與研發(fā)人員熟悉的其它協(xié)議有眾多相似之處,然而相較于熟悉的PS/2與RS-232領(lǐng)域,工程師在USB重復(fù)犯錯(cuò)的次數(shù)竟然更多。此外,面對(duì)嚴(yán)格的標(biāo)準(zhǔn)規(guī)范,工程師犯下的錯(cuò)誤可能會(huì)造成不符USB規(guī)范的代價(jià)。這些錯(cuò)誤主要可分成五類(lèi):速度、電源、信號(hào)質(zhì)量、軟件、以及規(guī)格符合(表1)。
無(wú)法預(yù)測(cè)系統(tǒng)瓶頸點(diǎn)
許多高速系統(tǒng)都在這項(xiàng)議題上遭遇挫折,在此根據(jù)一項(xiàng)針對(duì)將數(shù)據(jù)寫(xiě)入NAND閃存之系統(tǒng)的分析結(jié)果來(lái)說(shuō)明。這個(gè)系統(tǒng)透過(guò)USB傳送數(shù)據(jù),之后將數(shù)據(jù)先暫放于緩沖區(qū)(Buffer),接著再寫(xiě)入閃存中。每個(gè)封包都分成三種時(shí)間元素:USB傳輸所需時(shí)間、主要操作系統(tǒng)消耗時(shí)間(Operating System Overhead),以及NAND閃存韌體的編程時(shí)間。圖2是128kbyte資料區(qū)塊經(jīng)過(guò)實(shí)時(shí)效能分析后的時(shí)序圖。
工程師幾乎花費(fèi)所有時(shí)間,利用加快USB接口芯片的波形,以嘗試降低USB傳輸所需的時(shí)間,直到將時(shí)間切割成不同區(qū)段。一旦工程師了解,效能其實(shí)是決定于所使用的NAND閃存可編程韌體,才能夠藉由減少NAND的頭段時(shí)間,來(lái)大幅提升效能。在大多數(shù)系統(tǒng)中,高速USB并不是瓶頸所在。因此,設(shè)計(jì)人員必須仔細(xì)檢查整個(gè)系統(tǒng),以確保有足夠的帶寬空間,來(lái)達(dá)成想要的系統(tǒng)速度。
速度減緩因素眾多
最常見(jiàn)的錯(cuò)誤,就是設(shè)計(jì)人員以為能使用全部的帶寬。毫無(wú)疑問(wèn)的,USB裝置的速度不僅是消費(fèi)者與研發(fā)者之間最常發(fā)生的爭(zhēng)議;且是遍布全球的通路賣(mài)場(chǎng)中最常被問(wèn)及的問(wèn)題。目前有線(xiàn)USB裝置共具備三種數(shù)據(jù)傳輸速度:低速USB的傳輸數(shù)據(jù)速度為1.5Mbps;全速USB的傳輸數(shù)據(jù)的速度則為12Mbps;而高速USB的傳輸數(shù)據(jù)的速度為480Mbps。值得注意的是,USB 2.0并不等于高速USB,高速USB最初是以USB 2.0的規(guī)格版本發(fā)表的,而該規(guī)格也同時(shí)適用于低速與全速USB的數(shù)據(jù)傳輸速度。
與任何電子系統(tǒng)一樣,設(shè)計(jì)人員都希望獲得最佳效能。然而對(duì)USB而言,許多設(shè)計(jì)人員在設(shè)計(jì)之初,就相信他們會(huì)從系統(tǒng)中得到所有的效能,達(dá)到1.5Mbps、12Mbps,或480Mbps的速度。老實(shí)說(shuō),這是很糟糕的假設(shè),因?yàn)橛泻芏嘣驎?huì)造成一項(xiàng)裝置無(wú)法使用全部的帶寬。
第一個(gè)原因,是許多使用者可共享USB總線(xiàn)。即使設(shè)計(jì)人員使用主機(jī)板上不同的連接埠,仍然有可能與總線(xiàn)上的其它裝置同時(shí)共享一個(gè)主機(jī)控制器(Host Controller),也就是說(shuō),與其它所有裝置共享USB總線(xiàn)帶寬。
第二個(gè)原因,是USB封包格式化協(xié)議會(huì)把較長(zhǎng)的數(shù)據(jù)分成數(shù)個(gè)512字節(jié)的封包。每個(gè)封包的標(biāo)頭(Header)負(fù)責(zé)辨識(shí)封包內(nèi)容,而封包尾端則有CRC,負(fù)責(zé)確定數(shù)據(jù)的完整性。每個(gè)封包傳送后,都須由接收端回復(fù)ACK(圖1)。
訊框起始(Start of frame, SOF)封包則是每125微秒傳送一次,以維持總線(xiàn)上的時(shí)序。在此因素影響下,USB的最大帶寬是每個(gè)微訊框(Microframe)可允許13個(gè)連續(xù)封包傳送,相當(dāng)于每秒53,248,000字節(jié)的傳輸速率。然而由于一般主機(jī)控制器在每個(gè)微訊框僅能接收10個(gè)連續(xù)封包,或傳送8個(gè)連續(xù)封包,因此現(xiàn)有主機(jī)控制器無(wú)法提供理論上的速度極限值。
未取得制造商識(shí)別碼
每個(gè)USB裝置都有一組獨(dú)一無(wú)二的識(shí)別碼,讓操作系統(tǒng)可藉以找出正確的裝置驅(qū)動(dòng)程序。識(shí)別碼的第一部分是由USB規(guī)格制訂者論壇指定的16位制造商識(shí)別碼(VID)數(shù)值;而第二部分則是由產(chǎn)品制造商所指定的16位數(shù)值,稱(chēng)為產(chǎn)品識(shí)別碼(Product ID, PID)。
若廠(chǎng)商與設(shè)計(jì)人員事先規(guī)畫(huà),并且能事先與USB規(guī)格制訂者論壇溝通,要取得制造商識(shí)別碼并且指定產(chǎn)品識(shí)別碼,其實(shí)是相當(dāng)簡(jiǎn)單的程序。然而,每年仍有數(shù)以千計(jì)的裝置已完成韌體與軟件的設(shè)計(jì)工作,但因無(wú)法取得適當(dāng)?shù)淖R(shí)別碼,而造成設(shè)計(jì)延遲的情況發(fā)生。
電源限制影響設(shè)計(jì)USB總線(xiàn)電源
根據(jù)USB規(guī)格,USB裝置可以由「總線(xiàn)供電」(Bus-powered)、由USB電源線(xiàn)提供電源,也就是「自行供電」(Self-powered),或是由電池或外接電源供電。最理想的USB供電方式是由總線(xiàn)供電,如此一來(lái)就不須再外接電源。
然而,利用USB總線(xiàn)供電,也意味著用戶(hù)將受到USB規(guī)格中500微安培、100毫安、與500毫安的電流限制。但是許多設(shè)計(jì)人員卻沒(méi)有仔細(xì)留意這些限制,因此造成設(shè)計(jì)無(wú)法符合總線(xiàn)供電的規(guī)格。以下說(shuō)明不同電流的設(shè)計(jì)限制。
首先,500微安培是由主機(jī)端供應(yīng)電源,但是當(dāng)USB沒(méi)有執(zhí)行傳輸動(dòng)作時(shí),裝置必須處于USB暫停(Suspend)狀態(tài)。在此狀態(tài)下,只能從VBUS獲得500微安培的電流。這個(gè)狀態(tài)是為了當(dāng)個(gè)人計(jì)算機(jī)處于暫停模式時(shí),能將最小的電流輸出降至最低。
其次,100毫安的USB規(guī)格具備高電源(500毫安)與低電源(100毫安)兩個(gè)連接埠。低電源連接端口常用于總線(xiàn)供電型的集線(xiàn)器中,而且是承接500毫安的電源,再分配給下端連接埠各100毫安的電流。
當(dāng)USB裝置連接時(shí),此裝置在收到來(lái)自主機(jī)端的設(shè)定組態(tài)(Set Configuration)訊息之前,無(wú)法判讀它是在何種連接埠上,因此會(huì)將電流限制在100毫安。
這表示該項(xiàng)裝置必須在非常低的電源模式下,在USB上進(jìn)行裝置列舉的作業(yè),直到收到設(shè)定組態(tài)訊息指示,才能夠切換至高電源模式。
這在高速USB上原本是非常困難的事,這情況直到2004年業(yè)者發(fā)表新款芯片之后才得以解決。最后,500毫安則是USB規(guī)格中所允許的最大電源輸出值。
因此,實(shí)際設(shè)計(jì)測(cè)試應(yīng)由系統(tǒng)工程師主導(dǎo),以確保裝置在由總線(xiàn)供電的運(yùn)作模式下所需的不同電源值,否則就必須為新的USB系統(tǒng)額外購(gòu)買(mǎi)昂貴的外接電源。
裝置特性攸關(guān)信號(hào)質(zhì)量共享D+/D-信號(hào)
為了降低時(shí)間、流程與成本,有些產(chǎn)品會(huì)嘗試在多個(gè)裝置之間共享USB信號(hào)線(xiàn)路。例如USB型的基座(Docking Station)可能允許一個(gè)軟盤(pán)機(jī)或一個(gè)DVD播放機(jī)插入儲(chǔ)存插槽中。這兩種裝置共享USB線(xiàn)路,就可藉由降低集線(xiàn)器連接埠的數(shù)目,進(jìn)而節(jié)省成本。
然而,如果沒(méi)有完全了解系統(tǒng)中的裝置特性,要利用這種方法就相當(dāng)困難。在三態(tài)(Tri-state)編排中,如圖3的設(shè)計(jì)選擇二,總線(xiàn)上的另一裝置會(huì)增加USB線(xiàn)路上的電容值,而連結(jié)至該裝置也會(huì)造成信號(hào)反射,干擾高速USB的運(yùn)作。另外,在開(kāi)關(guān)型編排中(如圖3的設(shè)計(jì)選擇一),開(kāi)關(guān)本身會(huì)對(duì)USB線(xiàn)路造成額外的電容值與電阻值,這將會(huì)減緩USB線(xiàn)路上信號(hào)的上升/下降時(shí)間,并且造成USB信號(hào)眼(Eye)縮小。
圖4顯示一般USB裝置信號(hào)以10pF/10奧姆負(fù)載,傳輸經(jīng)過(guò)開(kāi)關(guān)后的信號(hào)眼圖。在單一信號(hào)眼圖中,紅色區(qū)域內(nèi)應(yīng)該不會(huì)存在干擾。而USB信號(hào)共享線(xiàn)路成功的關(guān)鍵,就是必須維持開(kāi)關(guān)的低負(fù)載,并且采用具備高信號(hào)轉(zhuǎn)換速率的芯片。
逆流電源
「自行供電」的USB裝置也有本身電源的問(wèn)題。由于這類(lèi)裝置有獨(dú)立的電源供應(yīng)器,因此可能在主機(jī)端關(guān)閉時(shí),仍處于開(kāi)機(jī)狀態(tài)。這種情況可能讓D+信號(hào)有小幅電壓上升,而造成USB裝置偵測(cè)的部分會(huì)緩慢地對(duì)整個(gè)主機(jī)系統(tǒng)充電,進(jìn)而干擾系統(tǒng)的啟動(dòng)。自行供電的USB裝置(包括由電池供電的裝置)必須直接由VBUS消除該電壓上升的問(wèn)題,或是透過(guò)軟件控制,利用VBUS感應(yīng)器將裝置關(guān)閉。
自行開(kāi)發(fā)軟件帶來(lái)風(fēng)險(xiǎn)不使用現(xiàn)有類(lèi)別驅(qū)動(dòng)程序
類(lèi)別驅(qū)動(dòng)程序(Class Drivers)是USB系統(tǒng)環(huán)境中非常重要的部分。這些驅(qū)動(dòng)程序是由主要操作系統(tǒng)提供,因此毋須另外進(jìn)行開(kāi)發(fā)。USB的類(lèi)別是由裝置工作小組(Device Working Groups)定義,這是一個(gè)在USB制訂者論壇(USB-IF)號(hào)召下組成的自發(fā)性團(tuán)體,目的在創(chuàng)造裝置之間標(biāo)準(zhǔn)的溝通語(yǔ)言。
目前市面上的USB裝置類(lèi)別包括各類(lèi)人性化接口裝置(例如鼠標(biāo)、鍵盤(pán)、或其它控制器等)、大量?jī)?chǔ)存裝置(例如各式磁盤(pán)驅(qū)動(dòng)器)、通訊裝置(例如調(diào)制解調(diào)器、網(wǎng)絡(luò)適配卡)、音頻信號(hào)、影像、以及靜態(tài)影像(例如:相片與掃描儀)。
若一項(xiàng)新設(shè)計(jì)的裝置完全符合現(xiàn)有的類(lèi)別架構(gòu),那么只須到www.usb.org下載類(lèi)別定義,并以此進(jìn)行設(shè)計(jì)即可。然而,若某項(xiàng)裝置并非完全符合現(xiàn)有的類(lèi)別,該裝置還是可用的,例如,微軟就采用靜態(tài)影像類(lèi)別(Still Image Class),設(shè)計(jì)新的媒體裝置通訊協(xié)議(Media Transfer Protocol, MTP)類(lèi)別。另外,人機(jī)接口裝置并不一定要連接到與使用者互動(dòng)的接口上,它也可以在不另外開(kāi)發(fā)新驅(qū)動(dòng)程序的情況下,與程序中的溫度計(jì)、壓力傳感器、幫浦控制器等裝置連結(jié)。
雖然藉由一個(gè)類(lèi)別驅(qū)動(dòng)程序就能夠完成設(shè)計(jì),許多公司基于某種原因還是會(huì)想嘗試開(kāi)發(fā)專(zhuān)用驅(qū)動(dòng)程序,或以高價(jià)委外,由外部設(shè)計(jì)公司開(kāi)發(fā)驅(qū)動(dòng)程序。類(lèi)別驅(qū)動(dòng)程序不僅能夠排除設(shè)計(jì)風(fēng)險(xiǎn)、成本與時(shí)程等問(wèn)題,也可避免許多除錯(cuò)與復(fù)雜度的問(wèn)題。
電磁干擾可接地解決
要介紹良好的電磁干擾(EMI)設(shè)計(jì)技術(shù),足以另外寫(xiě)成一篇文章,不過(guò),最常見(jiàn)也最容易解決的電磁干擾錯(cuò)誤,就是嘗試?yán)孟到y(tǒng)的接地面作為USB纜線(xiàn)的屏蔽。這會(huì)讓噪聲引入接地面上,進(jìn)而越過(guò)裝置屏蔽(圖6)。
USB規(guī)格驗(yàn)證嚴(yán)格在規(guī)格測(cè)試前進(jìn)行原型測(cè)試
產(chǎn)品必須通過(guò)USB規(guī)格測(cè)試,才能合法使用各類(lèi)USB標(biāo)章(圖5)。USB規(guī)格制訂者論壇負(fù)責(zé)規(guī)格測(cè)試,以確保所有用戶(hù)都能有良好的使用經(jīng)驗(yàn)。由于所有USB廠(chǎng)商相互依存,以建立良好的商譽(yù),因此這點(diǎn)相當(dāng)重要。若用戶(hù)對(duì)于某個(gè)USB裝置產(chǎn)生不好的經(jīng)驗(yàn),將會(huì)大幅降低使用其它裝置的意愿。
研發(fā)廠(chǎng)商可能無(wú)法負(fù)擔(dān)規(guī)格測(cè)試流程中一些需要昂貴高階測(cè)試設(shè)備的步驟。然而,許多裝置無(wú)法通過(guò)規(guī)格測(cè)試的原因,則是因?yàn)槟承S(chǎng)商沒(méi)有檢查一些簡(jiǎn)單的項(xiàng)目。
因此,在裝置送測(cè)之前,必須至少先進(jìn)行下列的測(cè)試:首先是USB指令驗(yàn)證者工具(USB Command Verifier Tool)第9章的測(cè)試。
這個(gè)程序可驗(yàn)證一項(xiàng)裝置是否可以處理可能由主機(jī)端送出的最重要的設(shè)定指令(請(qǐng)參考www.usb.org/developers/tools/網(wǎng)站)。其次,則是電源測(cè)試,包括暫停(Suspend)電流、涌入(Inrush)電流、尚未配置(Unconfigured)電流等測(cè)試。
分析至此,在USB設(shè)計(jì)上容易犯的錯(cuò)誤已經(jīng)相當(dāng)清楚。數(shù)以百計(jì)的設(shè)計(jì)者每年絞盡腦汁,就是為了解決上述問(wèn)題。從別人的錯(cuò)誤中學(xué)習(xí),可省下許多精力、重復(fù)設(shè)計(jì)、以及時(shí)程延遲的壓力。但最重要的是,請(qǐng)繼續(xù)保留創(chuàng)造力,因?yàn)檫@個(gè)世界需要更多創(chuàng)新、精致、有趣的USB相關(guān)裝置。
上一篇: 索爾維全系列Solef?PV