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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于FPGA的USB接口數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)

          基于FPGA的USB接口數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)

          作者: 時(shí)間:2011-07-22 來(lái)源:網(wǎng)絡(luò) 收藏

          摘 要:介紹了一種高速實(shí)時(shí)系統(tǒng)的設(shè)計(jì)。該系統(tǒng)以作為邏輯控制的核心,以作為與上位機(jī)數(shù)據(jù)傳輸?shù)慕涌?,能同時(shí)支持單端16路和差分8路模擬信號(hào)輸入,最大采樣率為200 kHz,12位的轉(zhuǎn)換精度。描述了系統(tǒng)的主要組成和模塊化設(shè)計(jì)的實(shí)現(xiàn)方法,并給出了其核心模塊的時(shí)序仿真波形圖。
          關(guān)鍵詞: ; ; 轉(zhuǎn)換精度

          傳統(tǒng)的系統(tǒng)中通常采用單片機(jī)或DSP作為控制模塊,控制A/D轉(zhuǎn)換、存儲(chǔ)和其他外圍電路的工作,利用PCI、ISA等接口與上位機(jī)進(jìn)行通信。隨著數(shù)據(jù)采集對(duì)速度、實(shí)時(shí)性、簡(jiǎn)易性的要求越來(lái)越高,傳統(tǒng)數(shù)據(jù)采集系統(tǒng)的弊端也日趨明顯。近年來(lái)隨著FPGA技術(shù)和USB技術(shù)的應(yīng)用深度和廣度的不斷加大,利用FPGA芯片和USB接口設(shè)計(jì)高速數(shù)據(jù)采集系統(tǒng)成為新的研究熱點(diǎn)。FPGA芯片不僅體積小、功耗低、時(shí)鐘頻率高、內(nèi)部時(shí)延小,而且能夠使用VHDL語(yǔ)言來(lái)編程實(shí)現(xiàn)程序的并行執(zhí)行,配置靈活,開(kāi)發(fā)周期短,性能可靠。USB是一種高效、快速、價(jià)格低廉、體積小并支持熱插拔的新型串行通信接口,目前的高速傳輸速率能夠達(dá)到480 Mb/s,能夠?qū)崿F(xiàn)數(shù)據(jù)的高速傳輸。

          1 系統(tǒng)總體結(jié)構(gòu)
          本設(shè)計(jì)采用FPGA+USB的設(shè)計(jì)思路,利用FPGA芯片作為系統(tǒng)的邏輯控制核心,通過(guò)USB 2.0接口與上位機(jī)通信,實(shí)現(xiàn)單端16路/差分8路模擬數(shù)據(jù)的高速、實(shí)時(shí)、便攜式的采集。本文設(shè)計(jì)的數(shù)據(jù)采集系統(tǒng)劃分為A/D轉(zhuǎn)換電路、FPGA采集控制和USB傳輸控制器等若干部分。如圖1所示。

          基于FPGA的USB接口數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)

          本數(shù)據(jù)采集系統(tǒng)支持單端16路和差分8路模擬信號(hào)輸入,每路12 bit的轉(zhuǎn)換精度,最高采樣率為200 kHz。主機(jī)應(yīng)用程序首先向USB控制器發(fā)出采樣時(shí)控包,在時(shí)控包中設(shè)置采集通道及其采樣頻率。進(jìn)而USB控制器觸發(fā)FPGA采集信息,F(xiàn)PGA根據(jù)時(shí)控包開(kāi)始啟動(dòng)A/D進(jìn)行模數(shù)轉(zhuǎn)換,轉(zhuǎn)換結(jié)束后,F(xiàn)PGA接受A/D輸出的12 bit串行數(shù)據(jù),并通過(guò)串并轉(zhuǎn)換將它轉(zhuǎn)換成16 bit并行數(shù)據(jù)輸出。然后將采集到的數(shù)據(jù)信息通過(guò)USB控制器發(fā)送給主機(jī),最后由主機(jī)做進(jìn)一步信息處理。


          2 主要芯片選型
          本數(shù)據(jù)采集系統(tǒng)用到的主要芯片包括FPGA芯片、A/D轉(zhuǎn)換芯片和USB傳輸控制芯片。


          2.1 FPGA芯片的選取
          依據(jù)本系統(tǒng)設(shè)計(jì)的需要選用Altera公司的Cyclone II系列EP2C8Q208C8。該芯片內(nèi)部邏輯單元8 256個(gè),有165 888個(gè)RAM位,182個(gè)可用I/O口,系統(tǒng)時(shí)鐘頻率高于260 MHz,只需要3.3 V和1.2 V的工作電壓,完全能夠滿足設(shè)計(jì)的要求。


          2.2 ADC轉(zhuǎn)換芯片的選取
          考慮到系統(tǒng)的采樣率、分辨率、通道數(shù)等要求,本系統(tǒng)選用德州儀器公司(TI)的ADS7817模數(shù)轉(zhuǎn)換器。該器件是12位的低功耗、高阻抗全差分模擬輸入、具有串行輸出接口的模數(shù)轉(zhuǎn)換器,內(nèi)部基準(zhǔn)電壓范圍為100 mV~2.5 V,最高采樣率200 kHz,相應(yīng)輸入分辨率范圍49 μV~1.22 mV。


          2.3 USB傳輸控制芯片的選取[1]
          本系統(tǒng)選用CYPRESS公司的USB2.0外設(shè)控制器EZ-USB FX2 CY7C68013-56。該芯片包括帶8.5 KB片上RAM的高速8051單片機(jī)、4 KB FIFO存儲(chǔ)器以及通用可編程接口(GPIF)、串行接口引擎(SIE)和USB2.0收發(fā)器,可與任何ASIC或DSP進(jìn)行接合,并且還支持所有通用總線標(biāo)準(zhǔn),性價(jià)比較高。USB2.0協(xié)議提供480 Mb/s的傳輸速度,因此CY7C68013是USB2.0的完整解決方案。


          3 系統(tǒng)硬件設(shè)計(jì)方案實(shí)現(xiàn)
          3.1 FPGA與ADC及模擬多路開(kāi)關(guān)的電路設(shè)計(jì)

          系統(tǒng)選用8通道模擬多路開(kāi)關(guān)CD4501和SN74LS174集成D觸發(fā)器組合構(gòu)成FPGA信號(hào)采集控制的輸入通道。本系統(tǒng)要求支持單端16路和差分8路模擬信號(hào)輸入,因此使用2片CD4501來(lái)實(shí)現(xiàn)最大16路模擬輸入通道的多路復(fù)用。在選擇單端或差分輸入時(shí),通過(guò)硬件開(kāi)關(guān)來(lái)實(shí)現(xiàn)。在一個(gè)采樣周期內(nèi),選擇哪路模擬信號(hào)進(jìn)行A/D轉(zhuǎn)換由FPGA控制D觸發(fā)器SN74LS174其中的5個(gè)D輸入端的電平高低來(lái)選擇通道實(shí)現(xiàn)。每路模擬信號(hào)都要經(jīng)過(guò)多路模擬開(kāi)關(guān)選擇通道后,再送入A/D芯片的輸入端,如圖2所示。本方案中,FPGA為采樣通道SN74LS174提供30 MHz的時(shí)鐘CLK1及復(fù)位信號(hào)CLR,為A/D芯片提供3 MHz的同步時(shí)鐘信號(hào)DCLK和片選信號(hào)CS,從而使A/D芯片對(duì)相應(yīng)的通道進(jìn)行數(shù)據(jù)轉(zhuǎn)換。

          基于FPGA的USB接口數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)


          上一頁(yè) 1 2 下一頁(yè)

          關(guān)鍵詞: FPGA USB2.0 數(shù)據(jù)采集

          評(píng)論


          相關(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); })();