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

          新聞中心

          EEPW首頁 > 模擬技術(shù) > 設(shè)計應(yīng)用 > 基于FPGA和USB2.0的高速數(shù)據(jù)采集系統(tǒng)

          基于FPGA和USB2.0的高速數(shù)據(jù)采集系統(tǒng)

          作者: 時間:2009-10-12 來源:網(wǎng)絡(luò) 收藏

          2.3 接口電路
          2.3.1 內(nèi)的ADC接口模塊

          MAX1425和74HC4051的控制信號都由產(chǎn)生,接口電路如圖4所示。

          本文引用地址:http://www.ex-cimer.com/article/188574.htm

          的工作時鐘為60 MHz,該時鐘經(jīng)過分頻后,提供20 MHz給MAX1425作為工作時鐘,同時也作為FP-GA內(nèi)其他邏輯的工作時鐘。由FPGA內(nèi)狀態(tài)機控制,當CS為低和ADC_Convst為高時,MAX1425進入采樣保持狀態(tài)。當Clock的第一個上升沿到來,MAX1425開始轉(zhuǎn)換。RD輸出為低時,MAX1425把轉(zhuǎn)換結(jié)果放到數(shù)據(jù)總線上,F(xiàn)PGA開始讀入10位數(shù)據(jù)(FD[15:0]中的10~15六位數(shù)據(jù)線懸空,使數(shù)據(jù)線和A/D的位數(shù)匹配)。FPGA控制寄存器的Sel[2:O]信號作為74Hc4051的通道選擇信號,從8路模擬輸入信號中選擇1路作為MAX1425的輸入。完成一次轉(zhuǎn)換后,當ADC_Convst:再次為高時,開始下一輪轉(zhuǎn)換。
          2.3.2 FPGA內(nèi)的USB接口模塊
          圖5是Slave模式下CY7C68013與FPGA的連接示意圖。中間是FPGA中USB接口模塊部分對應(yīng)的信號。

          2.3.3 FPGA內(nèi)的USB接口控制狀態(tài)機
          FPGA內(nèi)USB接口控制狀態(tài)機的狀態(tài)轉(zhuǎn)移圖如圖6所示。共有6個狀態(tài),復(fù)位信號的模式設(shè)置為異步復(fù)位。狀態(tài)機主要分為讀、寫兩部分:讀取EP2中所包含的命令,存到FPGA的控制寄存器組中;將FPGA的FIFO中的數(shù)據(jù)讀出,寫入EP6端點緩沖區(qū)。

          該狀態(tài)機工作過程為:
          ①系統(tǒng)加電或復(fù)位后,狀態(tài)機進入空閑狀態(tài)(idle)。
          ②在空閑狀態(tài)下,當EP2不為空時進入read_0狀態(tài),從EP2中讀出PC機傳來的控制命令。隨后進入read_1狀態(tài),把命令存到FPGA內(nèi)控制寄存器中,并把FPGA內(nèi)的FIFO清空(fifo_ach1='1'),以準備存儲采樣數(shù)據(jù)。之后再回到idle狀態(tài)。
          ③在空閑狀態(tài)下,當EP2為空(FX2_empty='0'),而FPGA的FIFO不為空(empty='0'),且EP6不滿時,進入write_0狀態(tài)。之所以要看EP2是否為空,是想優(yōu)先處理PC機通過EP2傳來的命令。在write_0狀態(tài)下,選中對CY7C68013的EP6操作(ADDR=2'h2),同時從FPGA內(nèi)部的FIFO中讀出一個數(shù)據(jù)。之后進入write_1狀態(tài),把數(shù)據(jù)寫入CY7C68013。然后進入write_2狀態(tài),write_2狀態(tài)的輸出與idle狀態(tài)相同,目的是提供一個時鐘周期的延遲。因為FPGA工作于60 MHz的時鐘下,比CY7C68013快,所以加入一個延遲以保證可靠的數(shù)據(jù)傳輸。



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁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); })();