<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > EDA/PCB > 設計應用 > 基于FPGA軟核的高速數(shù)據(jù)采集系統(tǒng)設計

          基于FPGA軟核的高速數(shù)據(jù)采集系統(tǒng)設計

          作者: 時間:2011-08-18 來源:網(wǎng)絡 收藏

           (1)在沒有來自PC機的控制命令情況下,如果FIFO_RD_EN=1,則FD[15:0]的數(shù)據(jù)傳輸方向為從到USB接口芯片(圖6表示為FD_OUT[15:0]),即數(shù)據(jù)從FIFO輸出至USB接口芯片;如果此時FIFO_RD_EN=0,則FD[15:0]呈高阻態(tài)。
           (2)當有來自PC機的控制命令時,F(xiàn)D[15:0]的數(shù)據(jù)傳輸方向為從USB接口芯片到(圖6表示為FD_IN[15:0]),即PC機的控制命令寫入到USB接口芯片,再傳輸?shù)?a class="contentlabel" href="http://www.ex-cimer.com/news/listbylabel/label/FPGA">FPGA內部命令分析器中。此時,命令分析器會根據(jù)命令控制ADC_START信號,進而控制ADC數(shù)據(jù)的啟停。
           無論在上述哪種情況下,如果FIFO_CLEAR=0、 FIFO_WR_EN=1且FIFO_FULL=0時,F(xiàn)IFO_WR_CLK都有相應的時鐘信號輸入,此時ADC轉換完成的數(shù)據(jù)隨寫時鐘通過ADC_DATA[11:0]寫入FIFO中。
          3.3 USB接口控制單元
           USB接口控制單元主要完成兩種功能:(1)通過USB接口芯片實現(xiàn)把數(shù)據(jù)傳輸?shù)絇C機。此時FIFO中的數(shù)據(jù)先寫入EP6,當EP6寫滿時,USB接口芯片自動將數(shù)據(jù)打包傳輸?shù)絇C機。(2)協(xié)助FIFO控制單元接收來自PC機的命令數(shù)據(jù)。此時命令數(shù)據(jù)從PC機通過USB接口傳輸?shù)紼P2,然后讀取EP2的數(shù)據(jù)到FIFO控制單元的命令分析器中。USB接口控制單元狀態(tài)機工作如下:
           (1)當FPGA上電或者復位后,狀態(tài)機進入空閑狀態(tài)(IDEL)。
           (2)在空閑狀態(tài)下,當EP2不空(EP2_EMPTY=0)時,進入讀命令狀態(tài)(READ_COMMAND),此時令EP_ADDR[1:0]=00,F(xiàn)D[15:0]的傳輸方向由EP2指向FPGA,控制單元從EP2中讀出PC機傳來的控制命令。
           (3)隨后進入存儲命令狀態(tài)(SOTRE_COMMAND),控制單元把傳來的控制命令存儲到FIFO控制單元內部的指令分析器中。同時控制單元置FIFO_CLEAR=1,即把FIFO控制單元內的FIFO數(shù)據(jù)清空,以準備存儲新的ADC轉換數(shù)據(jù)。任務完成后回到空閑狀態(tài)。
           (4)優(yōu)先處理PC機通過EP2傳來的命令,因此優(yōu)先查看EP2的空狀態(tài)。在空閑狀態(tài)下,當EP2為空(EP2_EMPTY=1)且FIFO控制單元內FIFO不為空(FIFO_EMPTY=0)且EP6不滿(EP6_FULL=0)時,進入寫數(shù)據(jù)狀態(tài)(WRITE_DATA)。在寫數(shù)據(jù)狀態(tài)下,EP_ADDR[1:0]=10,控制單元選中CY7C68013的EP6,F(xiàn)D[15:0]方向由FPGA指向EP6,同時FIFO_RD_CLK產生一個周期時鐘,F(xiàn)IFO_RD_EN置為高電平,一個數(shù)據(jù)從FIFO控制單元內FIFO中讀出。
           (5)隨后進入傳輸數(shù)據(jù)狀態(tài)(TRANS_DATA)。在該狀態(tài)下,令SLWR=0,數(shù)據(jù)從FIFO控制單元內FIFO寫入CY7C68013的EP6中。任務完成后進入空閑狀態(tài)。
           USB接口控制單元狀態(tài)機示意圖如圖7所示。

          4 USB接口芯片程序設計
          4.1 USB固件程序

           固件程序是一種嵌入在硬件設備中的軟件,通過執(zhí)行固件程序,硬件設備可以完成各種特定的功能。在本設計中,CY7C68013芯片的固件程序是整個系統(tǒng)傳輸?shù)目刂坪诵模饕瓿梢韵挛宸N功能:(1)CY7C68013芯片的初始化;(2)輔助硬件完成設備的重新枚舉;(3)中斷處理;(4)數(shù)據(jù)接收與發(fā)送;(5)對外圍電路進行控制。
          Cypress公司為提高用戶的開發(fā)效率,提供了EZ-USB FX2LP開發(fā)套件,其中包含了一個完整的固件程序架構[3]。該架構主要包含了EZ-USB FX2LP芯片的設備初始化、處理標準USB設備請求與電源管理等服務功能。用戶在開發(fā)時,只需使用Keil uVision3在固件架構下提供相應的USB描述符以及編寫外部設備功能程序代碼。固件架構流程圖如圖8所示。

           主函數(shù)是固件架構流程的具體實現(xiàn)。主函數(shù)首先對內部狀態(tài)變量進行初始化,隨即調用TD_Init()進行用戶設備初始化,TD_Init()函數(shù)運行完成后,使能中斷,隨后進入主循環(huán)。
          4.2 USB驅動程序設計
           USB驅動程序位于固件程序與應用程序之間,是USB設備與PC機的通信接口。Cypress公司為用戶設計了一款通用驅動程序包(ezusb.sys),可以完成應用程序與USB接口的通信與控制任務。本設計即使用該通用驅動程序。
          5 應用程序設計
           應用程序通過USB驅動程序與USB接口進行通信。本設計使用LabVIEW設計應用程序。LabVIEW為用戶提供了簡單、直觀、易學的圖形編程法,相比于傳統(tǒng)的編程語言,LabVIEW能大量地節(jié)省開發(fā)時間。用戶通過LabVIEW應用程序可以進行對數(shù)據(jù)系統(tǒng)的控制,而且到的數(shù)據(jù)在控制界面中實時顯示。
           本文介紹了一款較為通用、基于USB2.0接口的采集系統(tǒng)設計方法,通過FPGA在數(shù)據(jù)采集系統(tǒng)中的應用,解決了硬件電路設計繁瑣復雜的問題,而且便于開發(fā)者對產品進行修改優(yōu)化,可以大幅度地縮短產品的開發(fā)時間。本系統(tǒng)通過了硬軟件的聯(lián)合調試,系統(tǒng)工作正常,穩(wěn)定性良好。
          參考文獻
          [1] Xilinx Corporation. Spartan-3AN FPGA family data sheet. 2009.
          [2] Cypress Semiconductor Corporation. EZ-USB FX2 CY7C68013 technical reference manual version2.2. 2003.
          [3] 錢峰.EZ-USB FX2單片機原理、編程及應用[M].北京:北京航空航天大學出版社,2006.


          上一頁 1 2 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();