摘要:高速度、高可靠性、低功耗的串行系統總線是航天通信領域進一步發展必須解決的一個關鍵問題。簡要地介紹了USB 2.0通信協議的基本原理、系統結構和數據傳輸,并以此為基礎給出具有高可靠性的USB通信系統框架結構。并在此基礎上提出具體的方案,經試驗此USB設備接口可滿足通信的性能要求。
關鍵詞:USB2.0;系統結構;PID;通信接口
中圖分類號:TP334
文獻標識碼:B
文章編號:1004—373X(2008)02—000—03
隨著現代科學技術的進步和計算機技術的飛速發展以及大容量數據交換和通信的需求,如RS 232等計算機傳統外圍接口逐漸成為計算機與外部設備通信的瓶頸。與此同時外圍接口配置繁雜、不易擴展等缺點更是阻礙了計算機的普及和外圍設備的發展,而通用串行總線技術(Universal Serial Bus,USB)的特點卻在很大程度上彌補了以上這一缺憾。
USB是一種快速、簡便的總線接口。其最大特點是易于使用,其主要表現在USB接口支持即插即用,無需重啟計算機,并且當USB設備連接到主機上時,其所有的配置過程初始化都是由系統自動完成,也就是說USB的初始化過程對用戶是透明的。作為一種快速的總線接口,幾乎所有的外設從鼠標到MP3,MP4播放機以及數碼相機、高速數據采集設備等都可以通過USB連接到主機上實現數據的傳輸和通信。
此外USB接口的高數據傳輸速率、強大的數據容錯技術和低廉的價格都大大的推動了USB設備的開發及應用。
1 USB協議規范
1.1 USB的拓撲結構
USB系統在硬件上主要分為USB主控制器和USB設備。USB主控制器就是主機的USB接口,他在USB系統中只允許擁有一個。USB設備包括了集線器(HUB)和USB功能設備,當他們被接人USB系統后都會被分配惟一的地址,設備的USB接口被稱為USB設備控制器。USB的物理拓撲結構如圖1所示:

由圖1可以看出USB是一個星型拓撲結構,集線器HUB位于星形結構的中央,通過HUB的級聯可以使USB系統最多連接127個設備。雖然從物理結構上可知功能設備通過HUB連接到主機上,并且各個功能設備到主機所通過的HUB數也不盡相同,但是從邏輯上講,各個功能設備卻是直接和主機進行通信,跟他們直接與主機相連一樣。
1.2 USB的傳輸速率和傳輸類型
USB使用4種數據傳輸方式和3種傳輸速率類型。USB的4種數據傳輸方式分別是:控制傳輸(contro1)、中斷傳輸(interrupt)、批量傳輸(bulk)和同步傳輸(synchro— nous)。
控制傳輸對數據的傳輸精確度有很高的要求但對數據的傳輸速率和傳輸時間要求卻不大且數據傳輸量較少。控制傳輸是雙向傳輸,主要應用于主機和外設之間的斷點0上以及用于查詢、配置和發送通用的命令給USB設備。
中斷傳輸用于小批量、非連續、不可預測的數據傳輸場合,中斷傳輸是單向的并且對主機而言只有輸入的方式,主要應用于鍵盤、鼠標、游戲桿這種類型。
批量傳輸對數據傳輸量要求高但對數據傳輸時間卻要求不高,批量傳輸主要應用于沒有時間要求的批量數據傳送和接收的打印機、掃描儀等類型。
同步傳輸要求數據實時并且連續,他對數據的傳輸時間要求很高但對數據的糾錯能力相對較弱的一種數據傳輸類型,主要應用于對數據實時性要求很高的語言業務傳輸等類型。
USB所使用的這3種數據傳輸速率分別是低速的1.5 Mb/s、全速的12 Mb/s和高速的480 Mb/s。即使USB工作在低速的1.5 Mb/s下也比一般的串口數據傳輸率快得多,而USB如果工作在高速的480 Mb/s的情況下則在性能上可以和1394相當但價格上卻比1394廉價得多。正是由于USB的高傳輸率和高性價比使得USB在計算機接口中得到了越來越廣泛的應用。
1.3 USB的傳輸事務和數據包
一次USB傳輸是由一個或多個事務組成的,USB主機和設備之間通過這些事務的離散交互來進行通信。一個事務大多由主機開始,主機發送標記包(token)后再發送數據包(data)給設備,設備接到數據包后根據自身的情況發送不同的握手信號(handshake)給主機。一個事務是由多個包組成的,包是總線上傳輸的最小的數據塊,包有4種類型:標記包、數據包、握手包和特殊包。每種包都有自己特定的格式,每種類型的包又具有很多種包,他們用不同的PID來進行區分。表1所示為PID類型表:
1.4 USB的數據編碼/解碼
USB在數據傳送時使用非歸零反向碼(None ReturnZero Invert,NRZI)。在此編碼規范中規定,“1”表示傳輸的電平不變,“0”表示傳輸的電平改變。即說明數據中出現連續的“1”表明數據電平長時間保持不變,數據出現連續的“0”表示數據電平在每比特周期都發生跳變。為確保數據發送準確無誤,在USB發送數據時傳送設備要對數據進行比特位填充,而設備的接收端也必須能夠識別出比特位填充并能夠對非歸零反向碼進行正確解碼。
2 USB設備控制器的系統結構
整個USB設備控制系統可分為4大部分:USB收發器、串行接口引擎(Serial Interface Engine,SIE)、控制和狀態寄存器及RAM、存儲器管理單元(MMU)等。其系統模塊層次結構如圖2所示:

USB收發器由輸入緩沖器和輸出緩沖器組成,他通過終端電阻可以直接和外部的USB電纜線連接,USB收發器可以接收從USB電纜中傳來的數據同時也可以通過其內部的差模輸出驅動器向USB電纜傳送數據。差模輸出驅動器可以通過其輸出信號的變化幅度不同來區別USB工作在高速、全速還是低速模式下。
串行接口引擎是整個USB設備控制系統的核心部分,其模塊結構如圖3所示。
位填充模塊主要完成對輸出數據的比特位填充以及對輸入數據解除比特位填充。
事件檢測模塊主要完成對數據狀態和端口命令的檢測,如數據發送/接收是否成功、總線掛起/復位/喚醒、地址偵測等。
包組裝器主要是將要發送的數據組裝成USB格式并將其通過總線檢測和收發器傳送出去。
包拆裝器是將接收數據傳遞模塊傳遞過來的USB包數據中提取其數據域并將其進行校驗,如果正確就將數據存到存儲器或仲裁模塊中,否則報錯。如果是標記包或是握手包則轉向協議引擎模塊處理。協議引擎模塊根據USB協議的規定進行對事務的處理并適時通知包組裝器和包拆裝器進行工作。

控制和狀態寄存器及RAM是用于存放控制器的這種控制信息和事件狀態,他是控制器內部不可或缺的重要組成部分。功能接口主要負責微控制器對內部寄存器和存儲器的訪問。存儲器管理單元負責仲裁微控制器和協議層模塊對RAM緩沖區的訪問,兩者均通過采用內部DMA方式訪問RAM,在VHDL程序中通過設置一個信號來選擇何時由微控制器或協議層模塊對RAM的訪問。
系統的基本操作流程為:當數據由主機通過USB電纜進入USB收發器后,USB收發器中的輸入緩沖器完成對信號進行整形;然后將數據送到串行接口引擎,串行接口引擎一方面對總線和數據狀態的檢測另一方面通過接收數據傳遞模塊將USB包的數據送到協議層的包拆裝器中并對USB包進行包拆裝;將數據包中的數據送到存儲器或仲裁模塊中,通過功能接口和微控制器進行交互,如果是標記包或是握手包則送到協議引擎中進行處理。當設備要發送數據給主機時,數據從存儲器送到協議層的包組裝器中進行數據組裝,組裝后的數據以USB包的形式通過發送數據傳遞到達USB收發器中,USB收發器的輸出緩沖器通過對電壓、差分信號以及端點0的控制將USB包傳送到USB電纜上進而傳到主機中。
3 結語
本文以USB 2.0為基礎,介紹了USB總線通信協議的基本原理、系統結構和數據傳輸。并在此基礎上構建了設備控制接口的系統設計方案,經試驗印證,此USB設備接口可以滿足USB 2.0通信的性能要求。