• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于FPGA的USB3.0通信接口設(shè)計

      2021-06-11 03:12:50劉林仙喬楠楠王朝陽楊佳苗
      測試技術(shù)學(xué)報 2021年3期
      關(guān)鍵詞:機軟件固件狀態(tài)機

      劉林仙,喬楠楠,童 強,王朝陽,馬 奎,李 升,楊佳苗

      (1. 山西大學(xué) 自動化與軟件學(xué)院,山西 太原 030013;2. 上海交通大學(xué) 電子信息與電氣工程學(xué)院,上海 200240)

      0 引 言

      隨著大數(shù)據(jù)的興起和人工智能的發(fā)展,高速采集傳輸系統(tǒng)在數(shù)據(jù)采集、 數(shù)據(jù)接收、 數(shù)據(jù)緩存、 數(shù)據(jù)傳輸?shù)确矫?,都必須滿足處理高速數(shù)據(jù)的條件,尤其對大批量原始數(shù)據(jù)進行快速穩(wěn)定的傳輸提出了更高的要求[1-3].

      目前主要使用的高速數(shù)據(jù)傳輸方式有USB3.0、 千兆以太網(wǎng)等[4,5]. 千兆以太網(wǎng)理論傳輸速度為1 Gbps,USB3.0理論傳輸速度為5 Gbps,因此在涉及大批量數(shù)據(jù)傳輸應(yīng)用時,USB3.0在傳輸速度上比千兆以太網(wǎng)具有更大優(yōu)勢,而且數(shù)據(jù)傳輸穩(wěn)定性更高[6-8]. 同時,由于FPGA具有數(shù)據(jù)并行處理能力和高度靈活性,因此在數(shù)據(jù)采集和高性能數(shù)字信號處理領(lǐng)域等方面有廣泛應(yīng)用. 但是由于常用的USB3.0通信接口并不適配于FPGA開發(fā)使用,因此開發(fā)人員在使用過程中都需要自己設(shè)計通信接口,嚴(yán)重降低了開發(fā)效率[9-11].

      因此本文設(shè)計了一款基于FPGA的USB3.0通信IP核接口,最大限度發(fā)揮FPGA的并行數(shù)據(jù)傳輸速度和USB3.0的高性能傳輸方式,對未來高速數(shù)據(jù)傳輸?shù)陌l(fā)展具有重要意義.

      1 系統(tǒng)總體方案

      系統(tǒng)總體框圖如圖1 所示,系統(tǒng)工作流程包括發(fā)送控制命令和上傳數(shù)據(jù),其中FX3和FPGA分別采用獨立的外部時鐘進行工作. 當(dāng)發(fā)送控制命令時,PC端首先通過上位機軟件寫入命令,通過FX3芯片將命令發(fā)送到FPGA,F(xiàn)PGA通過IP核解析命令并緩存到RAM中; 當(dāng)系統(tǒng)上傳數(shù)據(jù)時,F(xiàn)PGA讀取內(nèi)部數(shù)據(jù),利用USB3.0接口將數(shù)據(jù)發(fā)送到FX3上,最后將數(shù)據(jù)傳輸?shù)絇C端.

      圖1 系統(tǒng)總體框圖Fig.1 Diagram of system block

      系統(tǒng)的USB3.0芯片選取Cypress公司FX3系列的CYUSB3014; FPGA芯片選擇為Xilinx公司的XC7A35TFTG256; EEPROM為MICT-MT41K128M16JT-96. 其中CYUSB3014芯片內(nèi)嵌32 b ARM9系列微處理器,同時可以通過并行可編程接口GPIF II將芯片與任何ASIC和FPGA相連接,芯片向下兼容USB2.0模式,開發(fā)人員可以通過編程設(shè)置芯片工作模式.

      2 USB3.0固件設(shè)計

      本文采用Cypress官方提供的設(shè)計固件Slavefifo_2bit接口驗證FPGA接口的IP核. 該固件在加電后,由EEPROM加載到CYUSB3014中,并在其中運行,其作用是控制硬件來完成預(yù)期的設(shè)備功能. GPIF II接口是USB3.0芯片與外部通信的主要接口部分,理論上可以通過該接口與FPGA實現(xiàn)無縫銜接,進行高速并行數(shù)據(jù)傳輸. GPIF II接口的參數(shù)均可以在可視化界面進行修改,主要參數(shù)為: (1)外設(shè)接口,如I2C,I2S,UART等; (2)數(shù)據(jù)模式: 大端模式(big endian)、 小端模式(little endian); (3)標(biāo)志位: FLAGX[12,13].

      Cyfxslfifosync.c是固件Slavefifo_2bit的主程序,主要包含: IO矩陣配置函數(shù)、 初始化應(yīng)用線程函數(shù)、 端點和DMA配置函數(shù)、 USB模塊的回調(diào)函數(shù)、 調(diào)試信息打印函數(shù). 固件使用流程為: 1)對時鐘模塊進行配置,令系統(tǒng)時鐘工作頻率為400 MHz; 2)初始化GPIF接口和USB接口,配置GPIF II接口和固件信息; 3)緩存區(qū)進行初始化,選擇UART接口打印調(diào)試信息[14,15]. 在固件工作過程中通過回調(diào)函數(shù)進行數(shù)據(jù)和命令處理,其工作示意圖如圖2 所示.

      圖2 固件工作示意圖Fig.2 Schematic diagram of firmware work

      3 FPGA接口電路設(shè)計

      FPGA接口既要完成與USB控制器GPIF II的對接,同時也要提供對FPGA內(nèi)部邏輯模塊的數(shù)據(jù)傳輸接口. FPGA接口邏輯是本系統(tǒng)的核心,它作為主設(shè)備,控制著從設(shè)備GPIF的工作狀態(tài). FPGA接口邏輯模塊內(nèi)部有一些標(biāo)志工作狀態(tài)的寄存器,用戶可以通過上位機軟件來配置這些寄存器,從而指定整個系統(tǒng)的工作模式. 因此,在執(zhí)行某種操作之前,需要通過上位機軟件先對FPGA接口邏輯模塊進行配置.

      FPGA接口邏輯除了具有與GPIF Ⅱ相連接的接口外,還提供了其他接口與FPGA內(nèi)部其他邏輯模塊相連接,接口信號如圖3 所示.

      圖3 接口信號示意圖Fig.3 Schematic diagram of interface signals

      3.1 數(shù)據(jù)讀寫狀態(tài)機

      fx3數(shù)據(jù)讀狀態(tài)機的狀態(tài)遷移如圖4 所示,上電狀態(tài)為fx3_rstn,隨后就進入fx3_idle狀態(tài),首先等待fx3的SlaveFIFO有可讀數(shù)據(jù),然后進入fx3_read狀態(tài)讀取數(shù)據(jù),接著進入fx3_rdstop狀態(tài)停留一個時鐘周期,最后回到fx3_idle狀態(tài).

      圖4 fx3數(shù)據(jù)讀出狀態(tài)機Fig.4 State machine of fx3 data read

      fx3數(shù)據(jù)寫入狀態(tài)機的狀態(tài)遷移如圖5 所示,上電狀態(tài)為fx3_rstn,隨后就進入fx3_idle狀態(tài),此時判斷SlaveFIFO是否可寫入,若可以寫入則進入fx3_write狀態(tài),寫入剛剛讀取的所有數(shù)據(jù)到fx3的SlaveFIFO中,接著進入fx3_wrstop狀態(tài)停留一個時鐘周期,最后回到fx3_idle狀態(tài),如此反復(fù).

      圖5 fx3數(shù)據(jù)寫入狀態(tài)機Fig.5 State machine of fx3 data write

      3.2 FIFO模塊和時鐘模塊

      在FPGA程序設(shè)計中,除了最主要的USB3.0讀寫狀態(tài),還包含在線邏輯分析儀、 FIFO模塊和時鐘模塊,如圖6 所示. 其中ILA在線邏輯分析儀IP核模塊主要用于觀察數(shù)據(jù)信號和控制信號,判斷信號的時序是否符合要求.

      圖6 程序主要模塊Fig.6 Main modules of the program

      在測試回環(huán)過程中,F(xiàn)IFO模塊主要用于緩存數(shù)據(jù)寫入和讀出,不涉及到時鐘域和數(shù)據(jù)位寬的變換. FIFO寫入和讀出數(shù)據(jù)位寬均為32 bit,寫入和讀出數(shù)據(jù)深度均為1 024,可存儲4 KB數(shù)據(jù). 時鐘模塊的輸入時鐘為FPGA系統(tǒng)時鐘 50 MHz,通過鎖相環(huán)產(chǎn)生4路時鐘,頻率分別為25 MHz,100 MHz(相位180°),50 MHz,100 MHz(相位0°). 同時對輸入時鐘模塊的復(fù)位信號以及時鐘模塊鎖定后的復(fù)位信號進行“異步復(fù)位,同步釋放”的處理,確保系統(tǒng)的復(fù)位信號穩(wěn)定可靠.

      4 測 試

      在進行數(shù)據(jù)傳輸測試時,首先對USB3.0硬件平臺進行連接,USB3.0固件枚舉工作正常,設(shè)備信息描述符無異常. 數(shù)據(jù)傳輸過程中,使用Cypress官方提供的數(shù)據(jù)測試軟件,通過固件枚舉,利用端點0x01和0x81實現(xiàn)數(shù)據(jù)傳輸,測試結(jié)果如圖7 所示. 首先上位機軟件通過端點0x01向FPGA發(fā)送數(shù)據(jù)流6E 69 68 61/6F 77 6F 73/68 69 71 69/61 6F 6E 61/6E 6E 6C 61/69 7A 69 68/65 6E 61 6E/73 68 65 6E,如圖7 上方框選所示,同時在FPGA中利用在線邏輯分析儀觀察,在上位機發(fā)送到FPGA的數(shù)據(jù)流波形圖中,第一組數(shù)據(jù)為61 68 69 6E,根據(jù)GPIF II的小端模式可以驗證下位機接收到的數(shù)據(jù)和上位機發(fā)送的數(shù)據(jù)一致,表明數(shù)據(jù)下行傳輸正確,如圖8 所示.

      圖7 上位機測試結(jié)果Fig.7 Test results of upper computer software

      圖8 上位機發(fā)送到FPGA的數(shù)據(jù)流Fig.8 Data from upper computer to FPGA

      如圖9 所示,F(xiàn)PGA通過端點0x81向上位機發(fā)送數(shù)據(jù)流6E 69 68 61/ 6F 77 6F 73 /68 69 71 69/ 61 6F 6E 61/6E 6E 6C 61 /69 7A 69 68 /65 6E 61 6E/ 73 68 65 6E,在上位機軟件接收到FPGA所發(fā)送的數(shù)據(jù)流如圖7 下方框選所示,表明數(shù)據(jù)上行傳輸正確.

      圖9 FPGA發(fā)送到上位機的數(shù)據(jù)流Fig.9 Data from FPGA to upper computer

      本文使用Cypress公司官方提供的速度測試軟件streamer對IP核的傳輸速度進行測試. 測試結(jié)果表明該接口上行通信速率可達到259 200 KB/s,約為253.1 MB/s,如圖10 所示. 下行通信速率可達到135 100 KB/s,約為131.9 MB/s,如圖11 所示.

      圖10 上行通信速率測試結(jié)果Fig.10 Communication rate test results of upstream

      圖11 下行通信速率測試結(jié)果Fig.11 Communication rate test results of downstream

      5 結(jié) 論

      本文利用Cypress公司FX3系列的CYUSB3014控制芯片,設(shè)計適用于FPGA的USB3.0通信IP核接口,并通過實驗驗證了所設(shè)計IP核接口的穩(wěn)定性和正確性. 通過該IP核接口可以實現(xiàn)FPGA和上位機軟件的數(shù)據(jù)傳輸,經(jīng)過測試,該接口實際可達到的上行最大通信速率253.1 MB/s,下行最大通信速率 131.9 MB/s.

      猜你喜歡
      機軟件固件狀態(tài)機
      基于有限狀態(tài)機的交會對接飛行任務(wù)規(guī)劃方法
      基于固件的遠(yuǎn)程身份認(rèn)證
      道岔監(jiān)測系統(tǒng)上位機軟件設(shè)計
      基于正交試驗法的北斗用戶機軟件測試用例設(shè)計
      PCI-e高速數(shù)據(jù)采集卡的驅(qū)動與上位機軟件設(shè)計
      電子器件(2015年5期)2015-12-29 08:43:12
      提取ROM固件中的APP
      電腦愛好者(2015年7期)2015-04-09 08:54:02
      一種通過USB接口的可靠固件升級技術(shù)
      奧林巴斯XZ—2新固件升級
      中國攝影(2014年1期)2014-02-24 01:50:23
      圖形化儀表控制系統(tǒng)上位機軟件的設(shè)計與開發(fā)
      FPGA設(shè)計中狀態(tài)機安全性研究
      澄江县| 墨脱县| 鹰潭市| 米泉市| 从江县| 吉木乃县| 襄城县| 安溪县| 盐源县| 祁连县| 多伦县| 故城县| 葫芦岛市| 临猗县| 徐汇区| 晋中市| 通州区| 马边| 呈贡县| 兴仁县| 大埔县| 衡南县| 微山县| 临安市| 肃宁县| 当雄县| 万州区| 古丈县| 临澧县| 福州市| 延安市| 涟源市| 全椒县| 嵩明县| 凉山| 靖西县| 蛟河市| 陆良县| 富蕴县| 武陟县| 延川县|