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