新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于FPGA的USB接口數據采集系統設計

        基于FPGA的USB接口數據采集系統設計

        作者: 時間:2011-07-22 來源:網絡 收藏

        3.2 與USB芯片的連接設計
        當EZ-USB FX2LP工作于Slave FIFO模式時,外圍電路可以像普通FIFO一樣對EZ-USB FX2LP中的端點數據緩沖區進行讀寫[2]。本系統采用作為主控制器,因而,對USB控制采用Slave FIFO模式,通過控制CY7C68013內4 KB的FIFO進行與上位機之間的數據傳輸。FPGA與USB芯片的硬件連接如圖3所示。

        基于FPGA的USB接口數據采集系統設計

        4 系統軟件設計
        系統軟件設計主要包括FPGA控制邏輯設計、USB固件程序設計、USB設備驅動程序和上位機應用程序。


        4.1 FPGA設計
        FPGA程序的設計是整個采集系統的關鍵,整體分成三大模塊:分頻采樣控制模塊、通道選擇模塊和USB傳輸控制模塊。以下是各個模塊設計的具體介紹。


        4.1.1 分頻采樣控制模塊
        本系統中,FPGA的主時鐘m_clk由USB芯片輸出的30 MHz頻率提供,由于A/D采樣需要3 MHz的時鐘頻率,因此首先模塊對主時鐘進行10分頻得到3 MHz同步時鐘信號o_clk。同時,該模塊還要控制數據采樣、A/D轉換以及數據的串并轉換。在采樣時刻到來時,在同步脈沖o_clk和片選信號cs(低電平有效)的控制下,依據ADS7817轉換時序圖進行采樣、轉換。轉換過程中計數o_clk脈沖,每12個脈沖置位cs為高電平,使結果僅輸出一次,否則在DOUT端繼續從最低位到最高位依次輸出轉換結果。in_data是A/D轉換后的串行輸出數據,o_Para是對in_data經過串并轉換后輸出的并行16 bit數據。


        4.1.2 USB傳輸控制模塊
          該模塊主要負責對USB芯片端點的讀寫控制。USB芯片端點FIFO用于數據的緩存,一方面存儲上位機發出的采集參數信息,另一方面存儲FPGA輸出的并行16 bit采集數據。該模塊通過判斷端點FIFO的空、滿標志位來對USB端點2、4、6、8進行讀寫控制。本系統采用異步FIFO讀、寫控制模式,該模塊用狀態機來實現,將讀、寫過程分別分成5個狀態,異步FIFO讀狀態機如圖4所示。

        基于FPGA的USB接口數據采集系統設計

        IDLE:當“寫”事件發生時,轉到狀態1。
        狀態1:指向OUT FIFO,激活FIFOADR[1:0],轉向狀態2。
        狀態2:激活SLOE,如果FIFO空標志為“假”(FIFO 不空),則轉向狀態3;否則停留在狀態2。
        狀態3:激活SLOE,SLRD,傳送數據到總線上;撤銷激活SLRD(指針加1)和SLOE,轉向狀態4。
        狀態4:如果有更多的數據要求,則轉向狀態2;否則轉向IDLE。


        4.1.3 通道選擇模塊
        該模塊主要負責系統通道的選通,根據得到的采集參數信息選擇相應的通道進行[3]。該模塊通過產生不同的電平,來控制集成D觸發器SN74LS174的其中5個輸入端,從而達到選擇通道的目的。


        4.2 USB固件程序設計
        本系統中數據通道分為采集數據上傳通道和控制字下傳通道。根據設計需要進行配置,配置端點4、6、8為采集數據上傳通道,用于從FPGA向主機傳輸采集數據,采用塊傳輸模式,512 B 2重緩沖,16 bit數據自動輸入模式;配置端點2為控制字下傳通道,用于傳送主機控制字到FPGA,采用塊傳輸模式,512 B 2重緩沖,16 bit自動輸出模式。固件程序采用Cypress公司提供的固件程序框架,在其初始化函數中添加了用戶配置代碼。改動部分代碼如下所示:
        void TD_Init(void)
        {...
        EP2CFG=0xA2;
        EP4CFG=EP6CFG=EP8CFG=0xE2;
        EP2FIFOCFG=0x15;
        EP4FIFOCFG=EP6FIFOCFG=EP6FIFOCFG=0x0D;
        ...
        }
        4.3 USB設備驅動程序設計
        Cypress為其EZ-USB系列USB接口芯片提供了一個完整的開發包,其中包括通用USB驅動程序。本系統按照設計要求,在DDK平臺上修改通用USB驅動程序代碼,生成本系統的驅動程序代碼。


        4.4 上位機應用程序設計
        上位機應用程序的作用就是提供一個人機交互的顯示界面,體現系統的運行狀態。這里采用Microsoft Visual C++ 6.0進行上位機應用程序的設計,程序中采用CYAPI控制函數類。CyAPI控制函數類為EZ-USB FX2LP系列USB接口芯片提供了十分精細的控制接口[4]。在使用Cypress公司提供的驅動程序基礎上,只需在主機程序中加入頭文件CyAPI.h和庫文件CyAPI.lib即可調用相應的控制函數。


        5 FPGA核心模塊仿真
        圖5是針對分頻采樣控制模塊的仿真時序。波形結果顯示該模塊在一個采樣周期內能夠準確產生同步時鐘信號o_clk和片選信號cs,并且串行輸入數據in_data經過串并轉換后能夠準確無誤地并行輸出。

        基于FPGA的USB接口數據采集系統設計

        本文創新點是設計了一款同時支持單端16路和差分8路模擬信號輸入、FPGA為核心控制和為接口傳輸的多通道、實時、高速、便攜式系統。本系統在Altera公司提供的Quartus II 8.0 集成開發環境下進行設計、編譯、綜合、優化、布局布線、驗證和仿真,并成功下載到FPGA芯片中。經過長時間的測試,系統工作穩定、性能可靠,說明了設計結構的合理性,比較適合野外現場的場合。


        上一頁 1 2 下一頁

        關鍵詞: FPGA USB2.0 數據采集

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 大名县| 梅河口市| 乌海市| 商洛市| 巴青县| 陇南市| 楚雄市| 五大连池市| 孝义市| 双牌县| 密云县| 延吉市| 虞城县| 察隅县| 稻城县| 皋兰县| 西充县| 彭阳县| 和田市| 商南县| 洪江市| 双峰县| 东辽县| 乌鲁木齐县| 乌鲁木齐市| 繁昌县| 彰武县| 元江| 米脂县| 钟山县| 兴和县| 红原县| 武强县| 扶绥县| 策勒县| 怀安县| 万安县| 三亚市| 沙雅县| 榆林市| 斗六市|