1 引言 通用串行總線 (USB) 是 Intel 公司 1996 年提出、由康柏等七家公司聯合制定的一種新型接口技術。 USB 歷經七年的發展,目前已經到了 2 . 0 版本。由于數據傳輸速率高,傳輸可靠,連接靈活,成本低廉,所以 USB 在 PC 領域獲得了廣泛的應用。USB 系統中包含的硬件和軟件如圖 1 所示。所有的 USB 傳輸事務都在 USB 系統軟件控制下進行, 系統軟件包括 USB 設備驅動、 USB 驅動和 USB 主控制器驅動程序。 USB 設備驅動程序負責與 USB 設備進行通信,它提供了 USB 設備驅動程序和 USB 主控制器之間的接口。這些軟件負責把客戶請求轉換為一個或多個傳輸事務進行處理,然后被直接送往 USB 目標設備或者被目標設備發出。 每個 USB 傳輸事務包含一個或若千個信息包,包括令牌包、數據包、握手包、專用包,信息包采用了非歸零編碼 (NRZI) 的串行傳輸方式。為了便于接收端信號的時鐘恢復,傳輸中的串行數據還要進行位填充處理,使串行信號不跳變的最長時間為 6bit 。 2 USB 通信模型 USB 系統采用的塔形拓撲結構使 USB 系統只能采用共享總線的方式進行通信,即所有設備只能通過一條數據通路與主控制器進行通信。在總線中,每個設備具有 - —個地址,而且每個設備中的若干端點也被分配了端點地址。所有通信的數據來源或目的都是基于這些端點地址,所以從客戶軟件看來,對端點的操作就像處于一個獨立的管線中,如圖 2 所示。 在 USB 系統中,對端點的操作被設備驅動程序分解為 IRP(I/Orequest packets) 。 USBHOST 把這些 IRP 分解為基本的傳輸事務 ( 如 IN , OUT 等 ) ,安排在相同或不同的幀中。每個傳輸事務包含若干信息包,其中包含了與 HOST 通信的設備地址和端點地址,只有地址對應的設備或端點才能響應 HOST 發出的信息包。 基于以上分析,可以構造出設備端 SIE 通信模型,如圖 3 所示。在這個模型中,由端點控制/狀態寄存器 (CSR) 和端點 FIFO 組成的管線記錄了端點的狀態和通信的有效數據。端點控制邏輯用于端點選擇及端點訪問控制。通過 USB 設備功能接口,設備功能軟件可以方便地以管線形式對端點進行狀態控制,以實現 USB 通信。 3 USB SIE 電路結構和設計 3.1USB SIE 電路結構 根據 USB 通信模型 ,構造的 SIE(serial inter face engine) 電路結構如圖 4 所示。主要包含 UTMI , PL( 由 PD , PA , PE 組成 ) , MA , UC_RF , BUFFER , WB 等功能模塊 , 可以完成 USB 速度識別、解析信息包、組構信息包、底層協議處理、緩存管理、中斷請求等功能。此外它還需要外接控制器才能完成 USB 通信。 3.2 USB SIE 各功能模塊說明 UTM(USB transceiver macrocell) 主要完成兩個功能:從 USB 總線上接收數據,經過 NRZI 解碼和位剝離后,轉換為 8 位并行數據,傳送給 SIE 中的 UTMI £》或從 UTMI 接收 8 位并行數據,經過 NRZI 編碼和位填充后,發送到 USB 總線。 UTMI(UTM interface) 的主要功能有兩個:接受 PD , PA 的控制,在 UTM 數據線上輸入或輸出數據:檢測總線狀態以及識別總線速度。 PD(packet disassembler) 將接收到的信息包數據進行解析,解析出包標識 (PID) 、端點地址和 Function 地址以及包含在包中的有效數據。在解碼時,要對必要的令牌包進行 CRC5 校驗,對數據包進行 CRCl6 校驗。 PA(packet assembler) 根據 PE 送來的 PID 組織相應的信息包,把要發送的數據安排在相應的數據包,或者組織令牌包。發送令牌包時,不必產生 CRC5 校驗位。在發送數據包寸,需要把有效數據的 CRCl6 校驗位放在包末尾一起發送。 PE(protocol engine) 可以對 IN,OUT 以及 SETUP 事務進行單線程處理 ( 串行總線不能同時進行兩個以上 USB 傳輸事務 ) ,且確定當前傳輸事務要操作的端點地址,所有對 MA 和 RF 的當前操作都基于這個端點地址。 PE 要根據當前端點的配置或當前狀態處理傳輸事務,并在傳輸事務中實時更新控制/狀態寄存器 CSR 。 SIE 還能通過 CSR 中的中斷向量請求設備總線的控制支持。 PD , PA , PE 三個模塊組成了 USB SIE 的協議層 (PL) 。 MA(memory buffer arbiter) 管理數據的流向, WB 通過最高位地址選擇讀寫目標是 FIFO 還是UC_RF ; PE 則通過端點地址選擇相應的 FIFO 和 UC_RF 。在對 FIFO 的操作上, PE 比 MA 有更高的優先權。 UC_RF(USBcorer egister file) 最多支持 16 個端點。每個端點的 CSR 分別存儲本端點的當前狀態。每個端點的 CSR ,包含 5 組寄存器,分別為配置 CSR 、協議 CSR 、進程 CSR 、中斷狀態 CSR 和中斷屏蔽 CSR 。它們可以接受 MA 和 PE 讀寫。 BUFFER(USB SIE buffer) 對相應的端點收發數據進行緩存,最多支持 16 個端點。每個端點 FIFO 占用固定的 SRAM 區域,分別有讀指針和寫指針指向該端點對應的區域。 WB(Wishbone interface) , 標準 Wishbone 接口,連接兩個不同的時鐘域,在數據傳輸時要把兩個時鐘域分割開。 4 USB SIE 驗證 4.1 驗證環境 所設計的 USB SIE 集成了符合 USBl.1 規范的 UTM ,可以外接 USB2.0 規范的 UTM 。所設計的 SIE 實現了圖 4 所示的 SIE 電路,完成了圖 3 所示通信模型的所有功能。通過修改配置文件,可以定制電路的一些參數和結構,如包含的端點數目以及每個端點的通信模式等。 USB2.0SIE 的驗證環境如圖 5 所示,它是圍繞 USB SIE 這個 IP 核展開的。 為了驗證電路的功能,需要建立一個 USB HOST 端的 HDL 行為模型,這個模型模擬了一個真實 HOST 的行為過程,如上電檢測、速度識別、標準設備請求等過程,并且可以檢測 USB 設備應答數據是否正確。另外還可以啟動對 USB 設備容錯性能的檢測,通過在 USB 通信中插入隨機錯誤信息,檢測 SIE 通信的健壯性以及 SIE' 陜復機制的可靠性。最后這個模型還要能夠保證 SIE 的 HDL 代碼有足夠的覆蓋率,即完成對 SIE 所有工作情況的測試。這個模型可以測試多種 USB 設備,以后還可以作 USB 設備的后續開發。 我們還設計了一個專用的控制器,它可以實現 SIE 的上電初始化過程 ( 向 SIE 中控制/狀態寄存器堆寫入初始數據 ) 、 SIE 中斷處理并完成 USB 傳輸事務、使 SIE 擺脫異常狀態等功能。這個專用控制器和 USB SIE 一起構成一個完整的 USB 設備。 在硬件驗證時, FPGA 采用 ALTERA 公司 Stratix 系列的 EP1S80B956C6 。由于時鐘速度和器件選購的限制, Transceiver 器件采用了 USBl.1 的收發端器件 PDIUSBP11A 。這樣實際通信只是 USBl.1 全速以及低速的通信,雖然 USB2.0 的某些特性驗證不到,但是在已有的條件下,已經驗證了 USB2.0 在全速模式下工作的所有特性。 USB 設備的硬件驗證裝置如圖 6 所示。 4.2 驗證方法和過程 首先進行代碼仿真驗證。在此過程中, USB SIE 和專用控制器構成的 USB 設備和 HOST 行為模型一起進行仿真驗證,通過比較控制器和 HOST 模型收發的數據是否一致,可以驗證所設計的硬件是否正常工作。在所設計的 USB 設備通過 HOST 模型的多樣化測試以后,再進行綜合后仿真。 在所有的代碼驗證成功后,進行硬件驗證。把 USBSIE 和專用控制器構成的 USB 設備在圖 6 所示的 FPGA 中得以實現, FPGA 擴展電路板上的 USB Transceiver 滿足了總線的電氣性能要求,而 HOST 模型則替換為真實的 PC 機 USB 接口。為了監測總線通信過程是否正確,在總線上接入了 USB 總線分析儀,通過總線數據分析,可以確定通信故障,進而糾正設計中的疏漏。 4.3 硬件驗證結果 在圖 6 中, FPGA 外接電路板上的 USB Transceiver 可以連接成全速或低速。我們對兩種工作情況都進行了硬件驗證。 USB 總線分析儀截獲的總線樣本如圖 7 所示。這是 PC 機對所實現的 USB 全速設備進行配置的一段過程,分析時過濾了 SOF 包。 在總線樣本中, PC 端的 USBHOST 首先發出 SETUP 包,設備地址 0x0(USB 設備未分配地址前的默認地址 ) ,端點為 0x0( 控制端點 ) ,這是一個標準請求的開始。然后 HOST 發出一個數據包,數據是 80 06 00 0l 00 00 40 00 ,這是一個 GET_ DESCRIPTOR 標準設備請求;設備收到數據后,應答了 ACK 握手包,表示數據接收正確。這是控制傳輸的 Setup Stage 。 在控制傳輸的 Data 期 Stage 階段, HOST 發出 IN 包,要求 USB 設備回復設備描述符,設備在經過一次符合協議規范的 NACK( 表示設備未準備好 ) 后,應答了描述符的內容 12 0l 00 01 00 00 00 08 ,然后 HOST 應答了 ACK 表示通信成功。 根據協議, HOST 在 Status Stage 階段發出了 OUT 包,數據內容是空的,設備應答的 ACK 握手包表示了 Status Stage 的結束,也表示一次控制傳輸的成功。 經過多次標準請求后,所設計的 USB 設備成功地與主機進行了數據交換。這樣既完備驗證了所設計的 USB 設備,也完備驗證了 USB 設備中的通信核心一一 SIE 。 另外值得一提的是 USBSIE 的工作頻率。為了降低功耗,在 USB 全速或者低速工作時, SIE 可以工作在 UTM 工作頻率的 1 / 4 ,即全速時工作于 12MHz ,低速時工作于 375kHz 。 5 總結 本文簡要分析了 USB 系統體系,分析了 SIE 中各功能模塊的工作過程,構造了 USB 設備芯片的通信模型。基于所構造的通信模型,設計了 USB2.0SIE ,并在 FPGA 上通過了驗證。 |