概述
AC6102上集成了一顆Cypress 推出的高性能USB3.0傳輸芯片CYUSB3014,Cypress稱之為EZ-USBFX3。該芯片性能強勁,功能強大,接口簡單,非常適合用於各種需要高速數據傳輸的場合,以下為摘自EZ-USBFX3數據手冊中關於該芯片的介紹:
賽普拉斯EZ-USBFX3是新一代USB3.0外設控制器,具有高度集成的靈活特性,可幫助開發人員為任何系統添加USB3.0功能。EZ-USBFX3具有一個可進行完全配置的並行通用可編程接口GPIFII,它可與任何處理器、ASIC或FPGA連接。這個通用可編程接口GPIFII是賽普拉斯旗艦USB2.0產品FX2LP中的GPIF的增強版本。它可輕松無縫地連接至多種常用接口,比如異步SRAM、異步和同步地址數據復用式接口、並行ATA等等。
EZ-USBFX3集成了USB3.0和USB2.0物理層(PHY)以及32位ARM926EJ-S微處理器,具有強大的數據處理能力,並可用於構建定制應用。該產品采用了一種巧妙的架構,使從GPIFII到USB接口的數據傳輸速度可達320MBps[1]。通過集成的USB2.0OTG控制器,可以實現需要雙角色使用場合的應用。例如,EZ-USBFX3可以作為MSC和HID級設備的OTG主機使用。EZ-USBFX3配有用於存儲代碼和數據的512KB片上SRAM。EZ-USBFX3還具有可連接至UART、SPI、I2C和I2S等串行外設的接口。
EZ-USBFX3附帶易用的EZ-USB工具,為快速應用開發提供完整的解決方案。軟件開發工具包中附帶應用示例,可縮短上市時間。
EZ-USBFX3完全符合USB3.0規范1.0版,並可向下兼容USB2.0。本設備還符合電池充電規范v1.1和USB2.0OTG規范2.0版。
從該介紹中,摘選出我們所關心的以下信息:
1、 USB3.0外設控制器,兼容USB2.0協議
2、 對外是一個GPIFII接口,可以靈活的與FPGA連接
3、 片上集成ARM926EJ-S微處理器(ARM9處理器)
4、 用戶接口(GPIFII)到USB接口的數據傳輸速度可達320MBps
5、 支持USB2.0 OTG功能,可以作為海量存儲器控制器(MSC,如U盤)或人機接口設備(HID,如鼠標、鍵盤)的主機
6、 片上512K字節SRAM用於存儲程序和數據
7、 UART、SPI、I2C、I2S串行外事接口。
8、 提供方便易用的EZ-USB開發
通過以上介紹可知,EZ-USBFX3的功能還是非常強大的。因此,如何高效快速的學會使用該芯片也就顯得非常有意義了。
本文作為AC6102開發板的第一期配套資料,僅對AC6102上的USB3.0電路功能和性能測試進行簡單的介紹。關於更加詳細的開發教程,將在第二期或第三期資料推出。
本實驗需要用到以下器件:
1、 芯航線AC6102型FPGA開發板一塊
2、 帶USB3.0接口的PC機一台
3、 Micro USB3.0數據線一根
4、 5V/2A電源適配器一個
5、 USB Blaster下載器一個
安裝SDK
開發EZ-USBFX3,需要用到Cypress提供的開發工具,該軟件已經經歷了多次更新,目前最新版本的叫做FX3_SDK_Windows_v1.3.3.exe。該軟件以及EZ-USBFX3的其他所有相關文檔都可以從以下地址下載得到。下載需要注冊,注冊非常簡單,僅需要郵箱就能成功注冊,這里就不給大家介紹注冊方法了。
CYUSB3014開發套件官方資料下載地址:
http://www.cypress.com/documentation/software-and-drivers/ez-usb-fx3-software-development-kit
下載好之后,即可安裝該軟件,該軟件實際是一個集成包,里面包含了開發EZ-USBFX3的軟硬件所需的全部內容,包括開發軟件、DEMO、文檔等。安裝過程也非常簡單,以下對其中需要注意的地方進行簡單說明。
1、 雙擊FX3_SDK_Windows_v1.3.3.exe以開設運行軟件
2、 安裝路徑選擇,建議選擇默認,這可以幫我們在開發初期避免路徑不通帶來的差異,可以省不少事。點擊Next。
3、 下一個界面要求選擇安裝的模式,典型的,還是用戶自定義安裝,第一次接觸,建議按照典型方式安裝。
4、 接下來,就是各種接受協議,各種下一步。接受了所有的協議后,點擊next就可以開始正式安裝,以下為安裝過程
安裝最后的一個界面是反饋信息,默認finish是灰色的無法選中,我們選擇Continue Without Contact Information即可,然后點擊Finish。
至此,EZ-USBFX3開發套件就安裝完成了
安裝完成后,在系統的開始菜單下,會出現一個叫做Cypress的文件夾,里面包含以下內容:
Cypress Update Manager:Cypress的更新管理器,如果開發套件有更新版本,使用該管理器可以檢查並更新到最新版本。
EZ-USB FX3 SDK:EZ-USB的開發套件相關組件。
連接USB3.0到PC
以上,我們完成了EZ-USB FX3的開發套件的安裝,只有安裝了該套件,才能在后續將AC6102的USB3.0接口連接到PC機時,成功的安裝驅動。
1、 使用配套的5V電源給開發板供電,打開電源開關,插上USB Blaster下載器。
2、 使用配套的USB3.0數據線連接PC和AC6102的USB3.0接口。如下圖所示:
插上USB線並打開開發板電源以后,PC會自動識別到設備,設備名稱為“WestBridge”,如下圖所示,由於此時設備沒有安裝驅動,因此還是帶黃色“!”,表明設備不可用。
安裝EZ-USB芯片驅動
當開發板和PC機連接完成后,我們就可以為設備安裝驅動了。選中設備,單擊鼠標右鍵,選中更新驅動程序,選則瀏覽計算機以查找驅動程序軟件。
定位驅動路徑到以下文件夾(以實際的 SDK 安裝路徑為准)。C:\Program Files (x86)\Cypress\EZ-USB FX3 SDK\1.3\driver,並勾選上“包括子文件夾”選項。然后點擊下一步。
如果彈出以下界面則表明驅動安裝成功。
此時,回到設備管理器中,可以發現如下設備:
到此我們就完成了所有軟硬件的連接,接下來,就可以對設備進行測試了。
關於EZ-USB的啟動方式
在進行測試之前,需要補充介紹下EZ-USBFX3的啟動方式,EZ-USBFX3芯片總共支持7種引導方式,所謂引導,就是EZ-USBFX3芯片上電以后,片上的ARM9處理器從何處開始讀取程序並運行。其支持的7種啟動方式如下所示:
² 從 USB 引導
² 從 I2C 引導
² 從 SPI (支持的 SPI 器件為 M25P16 (16 Mbit)、M25P80(8 Mbit) 和 M25P40 (4 Mbit))或同類器件引導
² 從 GPIF II 異步 ADMUX 模式引導
² 從 GPIF II 同步 ADMUX 模式引導
² 從 GPIF II 異步 SRAM 模式引導
那么究竟EZ-USBFX3芯片上電后從哪里開始啟動呢?芯片提供了3個啟動配置引腳,通過設置啟動引腳不同的值,來選擇不同的啟動方式。這三個引腳名叫PMODE腳。
這三個配置引腳,每個引腳都有三種狀態,1(接高電平)、0(接低電平)、F(浮空,既不接高電平,也不接低電平),三個配置引腳的不同狀態與對應的啟動方式如下表所示:

其中,對於FPGA和USB3.0組成的系統,我們很少用到第1、2、4種啟動方式。第7種啟動方式,即使用SPI引導,主要用在EZ-USBFX3作為整個系統的主機層,片上的處理器需要運行復雜的程序的情況下,使用片外的大容量SPI FLASH存儲器啟動。FPGA + EZ-USBFX3,使用最多的是SlaveFifo接口,因此,可以選擇EEPROM存儲器,即I2C方式啟動。同時,為了保證系統在IIC接口的EEPROM存儲器失效的情況下,能夠有其他方式可以恢復,所以,AC6102上的啟動方式設置為了方式5,即默認從I2C引導,如果從I2C引導失敗,則啟用從USB引導。對應的PMODE[2:0]的配置為F1F,在原理圖上,即電阻R51使用0R電阻,其他電阻全部不焊接即可。
EZ-USB測試方案分析
由於AC6102上的USB3.0電路更像是一個橋,一端,使用USB總線連接到PC機的USB端口上,另一端,使用GPIFII連接到FPGA芯片上。所以,為了測試整個鏈路是否通暢,可以分成兩步測試,第一步,測試EZ-USBFX3和PC間的USB3.0總線是否穩定,第二步,再測試FPGA通過EZ-USBFX3到PC的鏈路是否穩定。
為了測試EZ-USBFX3和PC間的USB總線是否可靠,可以采用內部回環傳輸的方式進行測試,所謂內部回環傳輸,就是PC發數據給EZ-USBFX3,EZ-USBFX3將接收到的數據再發回給PC,以實現通信USB總線的測試。
為了使EZ-USB能夠工作在回環模式,需要有相應的固件支持。對於EZ-USBFX3,由於我們將其引導方式設置為I2C -> USB,即默認會從EEPROM上啟動。但是我們的EEPROM中目前沒有燒寫任何固件,因此一定會引導失敗,引導失敗后,則會選擇從USB引導。所以,我們可以在系統上電后,通過PC直接將固件下載到EZ-USB的RAM中並運行。
塊傳輸模式測試
下載EZ-USB固件
在開始菜單中找到Control Center,如下圖X1所示,打開后軟件會自動掃描到我們的USB設備,如下圖X2所示。
這里,我們選中設備(Cypress FX3 USB BootLoader Device),然后點擊菜單欄中的Program,依次選擇FX3 -> RAM。
在打開的文件選擇窗口中,我們定位到我們提供的DEMO目錄下的..\AC6102\demo_release\ez_usb\01_USBBulkLoopAutoEnum文件夾,選擇USBBulkLoopAutoEnum.img文件,點擊打開,如下圖X1所示,則軟件會自動讀取該文件並通過USB總線下載到EZ-USBFX3芯片的RAM中,此時,我們再看USB Control Center,發現此時的設備名稱已變成了Cpress USB BulkloopExample,左下角顯示Programming Succeeded。如下圖X2所示。(關於USBBulkLoopAutoEnum.img文件的生成,將在第二期資料中提供詳細的開發教程)。
圖X1
圖X2
基本回環測試
USB Control Center軟件提供了一個基本的回環測試功能,這里,我們依次點開Cpress USB BulkloopExample前面的+號,找到Bulk outendpoint (0x01),選中該項,在右側 “Data Transfers” 的“Data to send (Hex)”中輸入需要從 PC 發送到 FX3 的數據。然后點擊 Transfer Data-OUT 即可實現數據發送。如下圖X所示。
發送完成后,在下方信息窗口,可以看到提示信息,表明發送已經完成。
那么此時,這些發送出去的數據在哪里呢?本例燒寫的固件是基於內部DMA的回環測試,所謂內部DMA回環,就是EZ-USBFX3會自動將out端點發送的數據搬運到in端點,所以,我們剛剛發出去的這13個數據,已經被EZ-USBFX3芯片搬運到了in端點了。這樣,當電腦讀取in端點,就能讀取到剛剛發出去的這13個數據。
在左側選中Bulk in endpoint(0x81)端點,然后右側窗口中,點擊Transfer Data-IN按鈕,即可將0x81端點中的數據讀出來,如下圖所示。
可以看到,讀取回來的數據與我們發出去的數據完全一致。因此可知USB總線能夠正常的收發數據。
使用Bulk Loop工具測試
上述測試需要我們手工輸入待測試數據並手動點擊發送和讀取按鈕,因此效率十分低下,無法測試USB3.0在搞強度傳輸時候的穩定性。接下來,我們就使用EZ-USBFX3的開發套件中提供的一個專用的回環測試軟件來進行測試。
在開始菜單中找到Bulk Loop軟件,如圖X1所示,點擊打開,打開后界面如圖X2所示:
打開之后,直接默認設置即可,點擊Start即可開始測試。發送和接受數據統計窗口會顯示實時發送和接收的數據總數,通過比對發送和接收的數據是否一致,即可了解EZ-USBFX3和PC間的USB總線性能是否可靠。
至此,我們就完成了USB總線可靠性的測試。之所以要進行此測試,是因為USB3.0串行總線數據線的傳輸速度高達Gbps,AC6102這幾根串行數據線在布線時需要完成阻抗匹配和差分布線,只有阻抗匹配和差分布線都滿足USB3.0協議的要求,才能夠穩定長期的傳輸數據不出錯。
小梅哥
2016年12月8日於成都市電子科技大學
流模式數據吞吐量測試
上一節,我們介紹了使用EZ-USBFX3的片上回環方式測試USB總線的可靠性。該種方式雖然能夠測的USB總線的傳輸是否可靠,但是卻無法體現USB3.0的高傳輸速率。本節,我們將通過另一種方式——流傳輸方式,來測試我們的USB3.0總線的傳輸速率。
下載EZ-USB固件
在開始菜單中找到Control Center,如下圖X1所示,打開后軟件會自動掃描到我們的USB設備,如下圖X2所示。
這里,我們選中設備(Cypress FX3 USB BootLoader Device),然后點擊菜單欄中的Program,依次選擇FX3 -> RAM。
在打開的文件選擇窗口中,我們定位到我們提供的DEMO目錄下的AC6102\demo_release\ez_usb\ 02_USBBulkSourceSink,選擇USBBulkSourceSink.img文件,點擊打開,如下圖X1所示,則軟件會自動讀取該文件並通過USB總線下載到EZ-USBFX3芯片的RAM中,此時,我們再看USB Control Center,發現此時的設備名稱已變成了Cypress USB StreamerExample,左下角顯示Programming Succeeded。如下圖X2所示。(關於USBBulkSourceSink.img文件的生成,將在第二期資料中提供詳細的開發教程)。
圖X1
圖X2
基本Streamer測試
接下來,我們就使用EZ-USBFX3的開發套件中提供的一個專用的steamer測試軟件來進行測試。
在開始菜單中找到Bulk Loop軟件,如圖X1所示,點擊打開,打開后界面如圖X2所示:
選擇Endpoint為0x01,Packets per Xfer為8、Xfers to Queue為64,然后點擊Start開始測試,界面上的能量條會實時顯示當前傳輸速度,也會同時顯示成功(Successes)和失敗(Failures)的數據包個數。可以看到,傳輸速度為395800KB/S左右,即386MB/S。速度可謂相當的高。
點擊stop停止傳輸,切換Packets per Xfer為256、Xfers to Queue為64,然后再次點擊Start,測試速度如下所示。可以看到,傳輸速度穩定在389000KB/S左右,也就是380MB/S,這個速度已經相當的高了。
SlaveFifo模式測試
EZ-USBFX3的套件提供了對GPIFII配置的一個快捷工具,叫做GPIF II Designer,使用該工具,可以快速創建GPIF II的配置信息,然后提交給Eclipse編譯以得到對應的固件。
轉載自:http://www.cnblogs.com/xiaomeige/p/6188388.html