基于FPGA的USB3.0 HUB設(shè)計方案
USB總線是目前最為成功,應(yīng)用最為廣泛的外設(shè)接口。隨著時代的進(jìn)步和發(fā)展,電子產(chǎn)品、手持設(shè)備、超大容量的高清視頻設(shè)備以及千萬像素的數(shù)碼相機(jī)等設(shè)備的需求越來越高,USB接口規(guī)范也需要相應(yīng)地進(jìn)行不斷地更新和升級。USB3.0的最高理論速度達(dá)到了5Gbit/s,向需要更大電力支持的設(shè)備提供更好的支持和電力供應(yīng),它在USB2.0的基礎(chǔ)上增加了新的電源管理功能,采用全雙工數(shù)據(jù)通信,提供更快的傳輸速度,并且向下兼容USB2.0和USB1.1設(shè)備。USB體系主要包括三個部分:主機(jī),設(shè)備和物理連接。主機(jī)通常是PC或者主機(jī)控制器;設(shè)備是指常用的U盤、帶USB的攝像頭、相機(jī)等設(shè)備;物理連接就是通常用的傳輸線,在USB3.0系統(tǒng)中,采用了對偶單純形四線制差分信號線,因此可以支持雙向并發(fā)數(shù)據(jù)流傳輸,這也是USB3.0相比于USB2.0設(shè)備速度提升的關(guān)鍵因素。
本文引用地址:http://m.butianyuan.cn/article/201612/327485.htmHUB是USB系統(tǒng)中的重要組成部分,且能夠應(yīng)用在大多數(shù)操作系統(tǒng),它是建立主機(jī)與USB設(shè)備之間的橋梁。作為一類特殊的USB設(shè)備,可以同時將一個接口轉(zhuǎn)換為多個接口,為用戶提供了效率和便捷。
1. USB3.0 HUB的簡介
1.1 USB3.0 HUB的基本組成
根據(jù)最新USB3.0的協(xié)議規(guī)定,USB3.0 HUB主要由Super Speed HUB,Vbus Control Logic,USB2.0 HUB以及上下行端口組成。由于USB3.0是向下兼容的,所以它有完整的USB2.0 HUB設(shè)計,而Super Speed HUB部分就是USB3.0 HUB區(qū)別于USB2.0 HUB的主要部分。USB3.0 HUB基本結(jié)構(gòu)如圖1所示。
圖1 USB3.0 HUB的基本結(jié)構(gòu)
1.2 USB3.0集線器的功能
USB3.0 HUB是USB系統(tǒng)中的重要部分,它的基本功能如下:
1)基本連接功能。
2)電源管理功能。USB3.0能夠提供900mA的電源,這樣就可以給那些連接USB3.0的設(shè)備更快更好地完成充電。由于新的接口提供了額外的兩條線,900mA的電力支持能夠驅(qū)動無線適配器,這樣在900mA的高電力支持下可以擺脫靠線纜連接的必要性。在大量數(shù)據(jù)傳輸?shù)耐瑫r,空閑的設(shè)備可以自動進(jìn)入低功耗狀態(tài),給正在傳輸?shù)脑O(shè)備提供更好更快的性能支持。
3)設(shè)備連接和斷開檢測。
4)總線的錯誤檢測和恢復(fù)。
5)HUB3.0的自動掛起和恢復(fù)功能。
6)向下兼容,下行端口同時支持高/低/全速設(shè)備。
2. Super Speed HUB的設(shè)計
USB3.0 HUB是一種便攜的低成本的USB3.0擴(kuò)展接口,它的下行端口面向USB設(shè)備,上行端口面向PC主機(jī)或者嵌入式主機(jī)控制器,速度由上行端口的主機(jī)來決定,同時它在下行端口給設(shè)備提供連接和斷開的檢測,根據(jù)USB3.0最新協(xié)議規(guī)范,要實現(xiàn)上節(jié)所述各項功能設(shè)計。Super Speed HUB的整體構(gòu)架如圖2所示,包括SIE、控制、處理轉(zhuǎn)換、中繼、路由、AES加解密等部分。
圖2 USB3.0 HUB的整體構(gòu)架
2.1 SIE(Serial Interface Engine)模塊
Super Speed HUB中的SIE模塊處理USB規(guī)范中物理層和協(xié)議層的協(xié)議解析,它主要實現(xiàn)包的識別與產(chǎn)生、比特填充和提取、時鐘與數(shù)據(jù)分離、NRZI編碼和解碼、PID(包標(biāo)識符)的產(chǎn)生和檢測、CRC校驗碼的識別和產(chǎn)生、地址檢測等。SIE模塊設(shè)計中,分為SIE_PL和SIE_FUC兩個部分。SIE_PL模塊負(fù)責(zé)數(shù)據(jù)包的解析與組織,PID(包標(biāo)識符)產(chǎn)生與檢測、CRC校驗識別與產(chǎn)生、地址檢測等。SIE_FUC模塊主要實現(xiàn)SIE模塊與MCU的接口邏輯功能。另外,為了使本系統(tǒng)設(shè)計更加穩(wěn)定,SIE模塊中采用跨時鐘域的設(shè)計,一個是本地的48MHz的全局時鐘,另外一個是USB主機(jī)從接收到的數(shù)據(jù)流中采樣接收的12MHz數(shù)據(jù)時鐘(即將48MHz本地全局時鐘4分頻得到)。SIE模塊設(shè)計框圖如圖3所示。
圖3 SIE模塊設(shè)計框圖
2.2 HUB控制器模塊
HUB控制器主要完成HUB的管理及控制,實現(xiàn)與主機(jī)的交互。主機(jī)端通過類請求與HUB控制器模塊通信,取得HUB端口的描述符,并且完成USB HUB及其下行端口的管理和控制。主機(jī)通過向端點(diǎn)0發(fā)送類請求和標(biāo)準(zhǔn)請求來實現(xiàn)HUB的枚舉過程。
2.3 AES模塊
AES是一種基于置換和代替的算法,它實現(xiàn)加解密功能。在USB3.0 Super Speed模式下,根據(jù)用戶的需求,當(dāng)數(shù)據(jù)從上行端口向下行端口傳輸時,對數(shù)據(jù)進(jìn)行加密,以防止信息竊取。同樣,在數(shù)據(jù)由下行端口向上行端口傳輸時實現(xiàn)其解密過程。AES算法加解密過程如圖4所示。
在加解密的過程中,由于USB3.0 HUB的傳輸速度可達(dá)到3200Mbit/s,但是AES的加解密IP在250MHz的吞吐率下最高速率只能達(dá)到2400Mbit/s,因此在加解密的過程中需要2個AES來實現(xiàn)其功能。圖5是USB3.0 AES加密原理圖,從圖中可以看到上行端口會向EM_A發(fā)送奇數(shù)128bit數(shù)據(jù),向EM_B發(fā)送偶數(shù)128bit數(shù)據(jù),同時,Mem_buf模塊也會輪詢地從EM_A模塊和EM_B模塊接受數(shù)據(jù)。而在以前的USB2.0的模式下,數(shù)據(jù)位寬只有8bit,全速的帶寬為480Mbit/s,所以只需要1個AES就可以。
圖5 AES算法加密原理圖
2.4 ROUTING模塊
ROUTING模塊即路由邏輯模塊,它的作用是根據(jù)連接到下行端口設(shè)備的速度來決定將下行端口連接到中繼模塊還是連接到TT模塊。由于在USB3.0HUB的上行端口中的速度是高速的,而下行端口則不確定為高速、全速或者低速,所以當(dāng)下行端口設(shè)備的速度為高速時,ROUTING模塊連接到中繼模塊,如果下行端口設(shè)備的速度為全速或者低速時就連接到TT模塊。
2.5 Repeater中繼模塊
集線器中繼模塊在HUB的數(shù)據(jù)轉(zhuǎn)發(fā)中起到建立和拆除上行端口和下行端口之間的連接,并且處理集線器的掛起和喚醒的作用。中繼器把上行端口的數(shù)據(jù)發(fā)送到下行端口,把下行端口的數(shù)據(jù)發(fā)送到上行端口,并且要用本地時鐘來從端口上發(fā)送和接受數(shù)據(jù)。它以數(shù)據(jù)包為單位控制端口的建立和連接以及HUB的喚醒和掛起。如圖6所示為Repeater的連接狀態(tài)機(jī)。
圖6 Repeater的連接狀態(tài)機(jī)
2.6 PHY模塊
PHY模型就是通常所說的USB物理收發(fā)器模型,它的作用是實現(xiàn)數(shù)據(jù)的串并轉(zhuǎn)換。因為在上行端口是并行數(shù)據(jù),而在面向設(shè)備和電纜中的下行端口是串行數(shù)據(jù)。
2.7 TT處理轉(zhuǎn)換器
TT模塊的作用是完成傳輸事務(wù)轉(zhuǎn)發(fā)和速度的匹配。當(dāng)上行端口在高速環(huán)境下運(yùn)行而下行端口在全速或者低速下運(yùn)行時,TT處理轉(zhuǎn)換器就是將高速事務(wù)轉(zhuǎn)換成低速事務(wù)。由于要滿足速度的匹配,因此TT處理器必須采用緩存的方式來存儲,在緩存的上行端口是一個高速處理器,用來處理高速數(shù)據(jù)的收發(fā);緩存的下行端口是全速和低速處理器,用來處理全/低速數(shù)據(jù)的接受和發(fā)送。
3. FPGA仿真與驗證
為了更好地完成仿真和驗證,采用ModelsimSE和Navos公司的Debussy軟件。首先搭建仿真環(huán)境,包括編譯測試文件、仿真調(diào)用文件、引導(dǎo)文件、宏定義文件以及激勵文件。首先將C語言的驅(qū)動程序在Linux環(huán)境下轉(zhuǎn)換為二進(jìn)制的kvout激勵文件,把二進(jìn)制的kvout文件存儲在外掛的Flash中然后再存儲到內(nèi)置的RAM中,使其成為發(fā)出指令的源頭;同時USBDevice的行為級模型也會裝載部分命令以達(dá)到仿真的目的。如圖7所示為USB3.0HUB高速數(shù)據(jù)批量傳輸仿真結(jié)果。
圖7 USB3.0HUB高速數(shù)據(jù)批量傳輸仿真(截圖)
圖中數(shù)據(jù)包的總大小為4096byte,rst_n為系統(tǒng)復(fù)位信號,clk30為主機(jī)端12M時鐘,pci_clk為本地時鐘,cpu_datao是從主機(jī)發(fā)送出的數(shù)據(jù),utm0_data,utm1_data,utm2_data,utm3_data分別為經(jīng)過USB3.0HUB擴(kuò)展后的4路高速信號,Utm_rxready,utm_rxvalid,utm_rxactive分別為端口的控制信號。
為了加強(qiáng)整個設(shè)計的可靠性,必須進(jìn)行FPGA驗證,F(xiàn)PGA驗證選擇的是Altera的StratixIIS180開發(fā)板,采用QuartusII將RTL級的verilog代碼進(jìn)行變異并且綜合成網(wǎng)表,然后通過USB-blaster下載線下載到FPGA測試版中,另外激勵文件是在Linux環(huán)境下編譯產(chǎn)生的,并且通過EJTAG下載到測試版中。把激勵文件下載到FPGA板子中后,把HUB的上行端口連接到USB的主機(jī),此時如果主機(jī)檢查出有USB HUB連接,會產(chǎn)生1個復(fù)位信號;在HUB復(fù)位后,USB主機(jī)向USB Device發(fā)送令牌包,并且對HUB進(jìn)行枚舉,主機(jī)識別出該HUB;當(dāng)主機(jī)對USB3.0 HUB成功枚舉后按照USB協(xié)議進(jìn)行數(shù)據(jù)傳輸。
在傳輸速率上,可以通過USB3.0 HUB傳輸1個比較大的文件,并且用ATTO DISK BENCHMARK軟件來測試其讀寫速度,通過ATTO可以顯示出讀取數(shù)據(jù)可以提高到1088Mbit/s,寫入速度可以達(dá)到840Mbit/s(USB2.0 HUB的讀寫速度分別為240Mbit/s和184Mbit/s);很顯然這個讀寫速度比USB2.0的提高了5~6倍。當(dāng)然由于軟件和硬件的各種原因,這個實際的傳輸速度離其理論最大值5G bit/s有一定的差距,但已基本實現(xiàn)其高速傳輸?shù)墓δ堋?/p>
從verilog的功能仿真、時序仿真和FPGA驗證表明,USB3.0 HUB基本實現(xiàn)了高速數(shù)據(jù)的傳輸,達(dá)到了預(yù)期的效果。
4. 總結(jié)
USB及HUB接口是目前計算機(jī)以及微控制器中最常用的通用高速接口,它可以連接串口、U盤、音頻、視頻、手機(jī)、相機(jī)等絕大多數(shù)的外設(shè)設(shè)備。USB3.0正在以其高速度、高性能、高可靠性、低成本等特點(diǎn)逐漸代替更多的USB2.0產(chǎn)品,成為通信電子市場的主要接口。本文中設(shè)計的USB3.0 HUB實現(xiàn)了多媒體數(shù)據(jù)的高速同步及時傳輸;更佳的電源管理功能以及支持AES加密解密等功能,這些都將促使它在市場上迅速普及。但是USB3.0及其HUB依舊有自己的瓶頸,比如在某些應(yīng)用中需要盡可能高的吞吐量時,線纜的長度會受到限制;同時電纜的材質(zhì)以及信號的質(zhì)量也會在整體上影響傳輸?shù)男Ч?,所以在傳輸百兆以上?shù)據(jù)流時,所用線
評論