如何在FPGA和ASIC設(shè)計中結(jié)合高速USB功能
通用串行總線已經(jīng)很普遍了,這是由于其使用簡單,隨插即用,并具有魯棒性的優(yōu)點。USB已經(jīng)找到了進入曾經(jīng)使用串口、并口作為其host接口的計算機外設(shè)的方式,需要接口到host計算機的產(chǎn)品現(xiàn)在也把USB作為其主要選擇。USB提供多種帶寬選擇--低速、全速、高速、和現(xiàn)在的超高速--迎合了各種計算機外設(shè)以及工業(yè)和醫(yī)療設(shè)備的需要。
USB提供的吞吐量足夠大,適合高帶寬應用,如硬盤驅(qū)動器和掃描器。事實上,對于大部分計算機外設(shè),如鍵盤,鼠標,PDA,游戲鍵盤,操縱桿,掃描儀,數(shù)碼相機,打印機,USB已經(jīng)是互連標準。
除了簡單的電腦外圍設(shè)備,F(xiàn)PGA應用也廣泛存在,其可以受益于高速USB接口的增加。數(shù)字信號示波器、心電圖、攝像機和數(shù)據(jù)采集系統(tǒng)是其中的一些例子。將USB接口添加到設(shè)備里將會大大擴展其能力。例如,在數(shù)據(jù)記錄系統(tǒng)中(如數(shù)字儲存示波器和心電圖),得到實時數(shù)據(jù)可以通過主機實時傳輸,也可以通過網(wǎng)絡傳輸這個數(shù)據(jù),如圖1所示。對于遠程數(shù)據(jù)采集應用,將數(shù)字記錄儀設(shè)備通過USB連接到主機也可以使設(shè)備進行遠程控制,主機可以位于幾英里以外,通過網(wǎng)絡連接到USB主機。本文將探討其設(shè)計方法,可以在FPGA或ASIC系統(tǒng)中實現(xiàn)高效高速USB 2.0接口。
圖1 基于USB的分布式數(shù)據(jù)采集系統(tǒng)
在介紹整合通用串行總線接口到FPGA或ASIC系統(tǒng)的各種方法之前,我們需要了解一下典型USB系統(tǒng)的工作原理。典型的USB系統(tǒng)由收發(fā)器,串行接口引擎(SIE),和接口控制器構(gòu)成,如圖2所示。
圖2 典型的USB系統(tǒng)
收發(fā)器實現(xiàn)了USB協(xié)議的物理層。收發(fā)器形成了主設(shè)備和從設(shè)備之間數(shù)據(jù)連結(jié)的兩端。USB接收器會有差分和單端兩種輸出。SIE進行串行數(shù)據(jù)的編碼和解碼,位填充,錯誤校驗和其他信號級處理任務。它還將并行數(shù)據(jù)轉(zhuǎn)換成串行數(shù)據(jù),反之亦然。SIE應該連接到智能master,其通過控制端點相應主設(shè)備請求實施高級USB協(xié)議。master也將實現(xiàn)器件功能所需的應用級任務。
在這篇文章中,我們將討論三種不同的方法,實現(xiàn)USB接口添加到FPGA或者ASIC系統(tǒng)。
使用USB協(xié)議棧知識產(chǎn)權(quán)(IP)及外部收發(fā)器
在第一種方法中,我們可以在FPGA或ASIC中實現(xiàn)SIE(見圖3)。
圖3 FPGA + USB協(xié)議棧IP + USB收發(fā)器
通用串行總線已經(jīng)很普遍了,這是由于其使用簡單,隨插即用,并具有魯棒性的優(yōu)點。USB已經(jīng)找到了進入曾經(jīng)使用串口、并口作為其host接口的計算機外設(shè)的方式,需要接口到host計算機的產(chǎn)品現(xiàn)在也把USB作為其主要選擇。USB提供多種帶寬選擇--低速、全速、高速、和現(xiàn)在的超高速--迎合了各種計算機外設(shè)以及工業(yè)和醫(yī)療設(shè)備的需要。
USB提供的吞吐量足夠大,適合高帶寬應用,如硬盤驅(qū)動器和掃描器。事實上,對于大部分計算機外設(shè),如鍵盤,鼠標,PDA,游戲鍵盤,操縱桿,掃描儀,數(shù)碼相機,打印機,USB已經(jīng)是互連標準。
除了簡單的電腦外圍設(shè)備,F(xiàn)PGA應用也廣泛存在,其可以受益于高速USB接口的增加。數(shù)字信號示波器、心電圖、攝像機和數(shù)據(jù)采集系統(tǒng)是其中的一些例子。將USB接口添加到設(shè)備里將會大大擴展其能力。例如,在數(shù)據(jù)記錄系統(tǒng)中(如數(shù)字儲存示波器和心電圖),得到實時數(shù)據(jù)可以通過主機實時傳輸,也可以通過網(wǎng)絡傳輸這個數(shù)據(jù),如圖1所示。對于遠程數(shù)據(jù)采集應用,將數(shù)字記錄儀設(shè)備通過USB連接到主機也可以使設(shè)備進行遠程控制,主機可以位于幾英里以外,通過網(wǎng)絡連接到USB主機。本文將探討其設(shè)計方法,可以在FPGA或ASIC系統(tǒng)中實現(xiàn)高效高速USB 2.0接口。
圖1 基于USB的分布式數(shù)據(jù)采集系統(tǒng)
在介紹整合通用串行總線接口到FPGA或ASIC系統(tǒng)的各種方法之前,我們需要了解一下典型USB系統(tǒng)的工作原理。典型的USB系統(tǒng)由收發(fā)器,串行接口引擎(SIE),和接口控制器構(gòu)成,如圖2所示。
圖2 典型的USB系統(tǒng)
收發(fā)器實現(xiàn)了USB協(xié)議的物理層。收發(fā)器形成了主設(shè)備和從設(shè)備之間數(shù)據(jù)連結(jié)的兩端。USB接收器會有差分和單端兩種輸出。SIE進行串行數(shù)據(jù)的編碼和解碼,位填充,錯誤校驗和其他信號級處理任務。它還將并行數(shù)據(jù)轉(zhuǎn)換成串行數(shù)據(jù),反之亦然。SIE應該連接到智能master,其通過控制端點相應主設(shè)備請求實施高級USB協(xié)議。master也將實現(xiàn)器件功能所需的應用級任務。
在這篇文章中,我們將討論三種不同的方法,實現(xiàn)USB接口添加到FPGA或者ASIC系統(tǒng)。
使用USB協(xié)議棧知識產(chǎn)權(quán)(IP)及外部收發(fā)器
在第一種方法中,我們可以在FPGA或ASIC中實現(xiàn)SIE(見圖3)。
圖3 FPGA + USB協(xié)議棧IP + USB收發(fā)器
SIE IP的主要功能是要執(zhí)行數(shù)據(jù)編碼和解碼,CRC生成和錯誤校驗,位填充,數(shù)據(jù)包ID生成,串到并以及并到串轉(zhuǎn)換。這個IP可以自己開發(fā)或者可以從第三方供應商購買。FPGA也要執(zhí)行上層USB協(xié)議。外部要使用一個收發(fā)器IC,比如賽普拉斯的TX2UL收發(fā)器芯片。這款收發(fā)器是USB 2.0認證的符合收發(fā)器紅單元接口(UTMI)相關(guān)標準。所需的所有終端,包括Dplus 線上的1.5 K歐姆的上拉電阻,都是在芯片里內(nèi)置了。
該方法的優(yōu)點是所需外部硬件最少。使用這種方法的缺點是開發(fā)復雜的USB堆棧IP需要時間以及工程資源。SIE IP執(zhí)行,上層協(xié)議和應用功能也占用了FPGA的大量資源。使用第三方的IP成本會很昂貴。
使用集成SIE和收發(fā)器芯片的USB橋
另一種把USB接口整合到FPGA設(shè)計的方式是連接一個外部串行接口引擎IC和收發(fā)器(見圖4)。
圖4. FPGA +橋芯片(SIE+ PHY)
在這里,F(xiàn)PGA只需要實現(xiàn)上層USB協(xié)議。任何從USB主設(shè)備收到的命令都會通過SIE傳遞到FPGA.FPGA需要包含邏輯來對這些命令進行恰當?shù)捻憫?。例如,在枚舉過程中,USB外設(shè)會
從主設(shè)備得到一個命令,請求它的描述符。在這個實現(xiàn)中,外部硬件,即收發(fā)器和SIE,會收到封包,并通過一個中斷通知FPGA命令已收到。FPGA就會在STE讀寄存器,并了解到外設(shè)已收到來自主設(shè)備的GET描述符命令。它會把正確的描述符發(fā)送給SIE.和使用外部收發(fā)器的SIE IC 不同,USB橋芯片如賽普拉斯的Mobl-USB芯片內(nèi)置了SIE以及收發(fā)器。該控制器有兩個雙緩高速端點,其共享2 KB FIFO空間,最大化了靈活度和吞吐量,還有控制端點0.
這種實現(xiàn)的最大好處是,減少了FPGA一半的復雜性(例如,信號級協(xié)議管理)。然而,即使在這種情況下,還要占用一定數(shù)量的FPGA資源來執(zhí)行上層USB協(xié)議。在這種情況下,需要做的決定是,要分析要分析所需外部硬件成本 vs. 節(jié)省的FPGA資源。
使用USB控制器與FPGA
圖5. USB控制器+ FPGA
最后一種方式是,連接全功能 USB控制器到FPGA(見圖5)。在這種情況下,所有的USB協(xié)議管理都會發(fā)生在FPGA以外。專門的USB控制器IC包含PHY,SIE,協(xié)議控制邏輯。
控制器可以提供靈活的端點可配置數(shù)量,F(xiàn)IFO大小,甚至可能包含一個微控制器來處理上層USB協(xié)議管理。這種外設(shè)控制器可以處理一些應用功能,從而不再需要FPGA或ASIC處理這些事務。如果他們包含RAM架構(gòu),開發(fā)人員還可以進行靈活的現(xiàn)場固件升級。
現(xiàn)在FPGA只需要掌握和這個芯片的邏輯接口。USB控制器和FPGA之間的接口可以是任何的標準接口,例如SPI,I2C,或HPI.還可能是自定義的接口,這在USB控制器IC中很普遍。
賽普拉斯的FX2LP 是專門的外設(shè)控制器芯片,其可以減少將USB集成到FPGA或ASIC系統(tǒng)的開發(fā)時間。它包含了一個簡單的"從FIFO"接口,使得和FPGA系統(tǒng)互聯(lián)很簡單。從FIFO接口功能具備從讀和從寫信號,可以讀或?qū)憯?shù)據(jù)到FX2LP 4 K FIFO空間。
對于與ASIC系統(tǒng)互聯(lián),F(xiàn)X2LP包含一個GPIF或通用可編程接口邏輯接口,可以為ASIC處理或通訊的任何標準接口生成接口波形。GPIF還可以通過USB接口配置FPGA,這樣就不需要一個單獨的配置芯片,例如PROM或處理器。通過USB配置FPGA也不再需要JTAG.因此,通用的專用的USB控制器可以不僅僅作為一個數(shù)據(jù)通道,還可以減少線路板尺寸和成本。
這篇文章里提到的這三種設(shè)計方法都有自己的優(yōu)點和缺點。選擇時要進行仔細分析,要權(quán)衡成本,線路板空間,和FPGA資源。