<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/CPLD的高速數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)

          基于FPGA/CPLD的高速數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)

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

            0 引 言

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

            傳統(tǒng)的數(shù)據(jù)采集系統(tǒng)一般采用單片機(jī),系統(tǒng)大多通過(guò)完成數(shù)據(jù)的傳輸。其缺點(diǎn)是數(shù)學(xué)運(yùn)算能力差;受限于計(jì)算機(jī)插槽數(shù)量和中斷資源;不便于連接與安裝;易受機(jī)箱內(nèi)電磁環(huán)境的影響。這些問(wèn)題遏制了基于的數(shù)據(jù)采集系統(tǒng)的進(jìn)一步開(kāi)發(fā)和應(yīng)用。因此,需要一種更為簡(jiǎn)便通用的方式完成采集系統(tǒng)和計(jì)算機(jī)數(shù)據(jù)的交互。

            數(shù)據(jù)采集系統(tǒng)性能的好壞,主要取決于它的精度和速度。在保證精度的條件下應(yīng)盡可能地提高采樣速度,以滿足實(shí)時(shí)采集、實(shí)時(shí)處理和實(shí)時(shí)控制的要求。實(shí)踐表明,采用 32位嵌入式微處理器作為控制器,用USB(通用串行總線)和上位機(jī)連接構(gòu)成的數(shù)據(jù)采集系統(tǒng)能大大提高系統(tǒng)數(shù)據(jù)處理的能力,降低對(duì)PC機(jī)和接口速度的依賴。

            1 系統(tǒng)硬件設(shè)計(jì)

            實(shí)現(xiàn)系統(tǒng)功能的基本思路是:以CPLD/實(shí)現(xiàn)儀器的數(shù)字平臺(tái),和嵌入式處理器及單片機(jī)一起實(shí)現(xiàn)對(duì)整機(jī)的智能控制和高速的數(shù)據(jù)處理。

            1.1 系統(tǒng)框圖

            系統(tǒng)原理方框圖如圖1所示,該系統(tǒng)主要由微處理器、數(shù)字邏輯平臺(tái)、輸入控制、A,B通道輸入處理、C通道輸入處理、整形、A/D轉(zhuǎn)換、采樣時(shí)序控制、鍵盤液晶顯示、存儲(chǔ)器擴(kuò)展等模塊構(gòu)成。

            

          ?

            1.2 系統(tǒng)結(jié)構(gòu)圖

            系統(tǒng)硬件如圖2所示,利用一片規(guī)模較小的CPLD和一片規(guī)模較大的組合構(gòu)成系統(tǒng)的數(shù)字邏輯平臺(tái)。CPLD主要用作輸入控制,則連接了系統(tǒng)的其他各個(gè)部分。CPLD/FPGA可實(shí)現(xiàn)現(xiàn)場(chǎng)編程,使用CPLD/FPGA可使設(shè)計(jì)方便,利用它靈活、校驗(yàn)快以及設(shè)計(jì)可隨意改變的特點(diǎn),可大大縮短研制時(shí)間。

            

          ?

            1.3 主要部分功能

            1.3.1 微處理器

            系統(tǒng)采用由Philips公司生產(chǎn)的 32位微處理器LPC2105作為主CPU,進(jìn)行高速的數(shù)據(jù)處理,用8位單片機(jī)P89C51RD2作為輔CPU,進(jìn)行速度較慢的數(shù)據(jù)處理,控制其他外圍芯片和模塊實(shí)現(xiàn)A,B通道模擬帶寬100 MHz、峰值電壓±100 V和C通道二極管通斷、電壓、電流、電阻值的數(shù)據(jù)采集功能。

            1.3.2 A,B通道部分

            通過(guò)自動(dòng)增益電路(AGC)即程序控制放大器,將被測(cè)模擬信號(hào)調(diào)理到適合ADC芯片(AD9288)采樣的范圍。根據(jù)頻率的大小和觸發(fā)方式,運(yùn)用實(shí)時(shí)采樣或等效采樣對(duì)調(diào)理后的模擬信號(hào)進(jìn)行采樣(A/D轉(zhuǎn)換)。利用高速FIFO存貯器(IDT72V261LAl0A)存儲(chǔ)采樣后得到的數(shù)據(jù)。

            結(jié)合鍵盤操作和系統(tǒng)設(shè)置,對(duì)采樣后的數(shù)據(jù)進(jìn)行數(shù)學(xué)運(yùn)算,將還原后的波形數(shù)據(jù)和參數(shù)送液晶顯示器顯示或存入閃存里面或通過(guò)USB接口傳送給PC機(jī),從而實(shí)現(xiàn)了A,B通道高速數(shù)據(jù)采集的功能。

            1.3.3 C通道部分

            C輸入通道為多功能輸入通道,系統(tǒng)通過(guò)控制繼電器矩陣來(lái)選擇不同的模塊測(cè)量電壓、電流或二極管的通斷和電阻。被測(cè)元件參數(shù)或電壓、電流經(jīng)過(guò)多功能轉(zhuǎn)換電路處理后,其信號(hào)送24 b的A/D轉(zhuǎn)換器ADS1211采樣后送單片機(jī)P89C51RD2,分析被測(cè)元件或電壓、電流的參數(shù)值,從而實(shí)現(xiàn)了C通道高精度數(shù)據(jù)采集的功能。

            1.3.4 鍵盤、液晶顯示接口電路

            本系統(tǒng)采用4×8的鍵盤和320×240不帶驅(qū)動(dòng)器的液晶顯示模塊,驅(qū)動(dòng)器和顯存設(shè)計(jì)在FPGA內(nèi)。以上系統(tǒng)通過(guò)USB接口與PC機(jī)通信,在上位機(jī)的控制下,實(shí)現(xiàn)可視化人機(jī)交互界面。同時(shí)系統(tǒng)也保留了傳統(tǒng)的RS 232接口,但只是用于ARM和單片機(jī)的編程下載。

            2 軟件設(shè)計(jì)流程

            LPC2105芯片作為系統(tǒng)主控制中心及數(shù)據(jù)處理中心,整個(gè)系統(tǒng)的運(yùn)轉(zhuǎn)受到它的控制,例如響應(yīng)用戶的按鍵操作,發(fā)出通道控制,A/D采樣時(shí)鐘控制,F(xiàn)IFO寫時(shí)鐘的選擇,菜單及系統(tǒng)狀態(tài)顯示,F(xiàn)IFO數(shù)據(jù)的處理,信號(hào)或參數(shù)的自動(dòng)測(cè)試等。

            數(shù)據(jù)采集卡的軟件程序結(jié)構(gòu)如圖3所示,可分為系統(tǒng)初始化模塊、鍵語(yǔ)分析模塊、系統(tǒng)核心控制模塊、通道控制模塊、觸發(fā)控制模塊、A/D采樣控制模塊、FIFO讀寫控制模塊、讀取頻率字模塊、參數(shù)測(cè)試模塊、狀態(tài)顯示模塊、波形顯示模塊、存儲(chǔ)控制模塊、其他功能模塊。

            

          ?

            系統(tǒng)的初始化模塊包括開(kāi)機(jī)自檢、硬件參數(shù)初始化、系統(tǒng)狀態(tài)初始化(如通道的波形顯示狀態(tài)初始化)等。鍵語(yǔ)分析模塊對(duì)面板上的用戶輸入進(jìn)行分析處理,通過(guò)核心控制模塊調(diào)用相應(yīng)的功能處理模塊,通過(guò)對(duì)通道控制模塊、觸發(fā)控制模塊、A/D采樣控制模塊、FIFO讀寫控制模塊、讀取頻率字模塊、參數(shù)測(cè)試模塊、狀態(tài)顯示模塊、波形顯示模塊、存儲(chǔ)控制模塊、其他功能模塊的函數(shù)調(diào)用來(lái)實(shí)現(xiàn)對(duì)來(lái)自鍵語(yǔ)分析的處理功能。狀態(tài)顯示模塊顯示程序運(yùn)行時(shí)的各種狀態(tài),如當(dāng)前數(shù)據(jù)采集的掃描速率、通道的垂直靈敏度等。波形顯示模塊顯示采集的波形。

            整個(gè)系統(tǒng)的程序又可分成底層驅(qū)動(dòng)和上層軟件。底層驅(qū)動(dòng)指對(duì)本系統(tǒng)其他外設(shè)或器件直接控制或訪問(wèn)的程序部分,包括LPC2105和單片機(jī)的初始化(即對(duì)片內(nèi)各核心寄存器的操作賦值、對(duì)片上外設(shè)的初始化賦值、對(duì)片內(nèi)各外設(shè)中斷及外部中斷的控制操作)。上層軟件主要指:菜單的設(shè)計(jì)及顯示、數(shù)據(jù)的處理、波形的恢復(fù)及平滑等。

            3 系統(tǒng)性能指標(biāo)

            3.1 A,B通道的性能指標(biāo)

            (1)模擬信號(hào)帶寬:100 MHz(40 dB);

            (2)最高實(shí)時(shí)采樣率:100.MS/s;

            (3)最高等效采樣率:5 GS/s;

            (4)垂直分辨率:8 b;

            (5)垂直靈敏度:5 mV/div~25 V/diV;

            (6)水平掃描:5 ns/div~10 s/diV;

            (7)最大輸入電壓:(AC+DC)±100 Vpp;

            (8)輸入RC:1 MΩ±1.5%/20 pF±3 pF;

            (9)耦合方式:直流、交流、接地;

            (10)觸發(fā)模式:交流、直流、高頻抑制、低頻抑制;

            (11)觸發(fā)源:A,B;

            (12)存儲(chǔ)深度:16K/通道;

            (13)顯示模式:A,-A,B,-B,A-B,A+B;

            (14)測(cè)量信號(hào)參數(shù):周期、頻率、平均值、有效值、峰值、均方根值、最小值、最大值、上升時(shí)間、下降時(shí)、正頻寬、負(fù)頻寬、占空比;

            (15)測(cè)量精度:±5%;

            (16)校準(zhǔn)信號(hào):1 kHz/3.3 V。

            2 C通道性能指標(biāo)

            (1)測(cè)量電阻:100 Ω,1 kΩ,10 kΩ,100 kΩ,1 MΩ;

            (2)測(cè)量電壓:10 mV,30 mV,1 V,3 V,lO V,V:

            (3)測(cè)量電流:200 mA,1 A;

            (4)二極管:通斷測(cè)量;

            (5)測(cè)量精度:±3%。

            4 結(jié) 論

            本系統(tǒng)采用ARM+單片機(jī)+CPLD/FPGA的設(shè)計(jì)方案,其高速數(shù)據(jù)處理的任務(wù)可以由下位機(jī)獨(dú)立完成,并且系統(tǒng)帶有大屏幕液晶顯示器,因而脫離PC機(jī)在斷電的情況下也可以正常使用。該采集卡具備實(shí)時(shí)采集、自動(dòng)存儲(chǔ)、即時(shí)顯示、即時(shí)反饋、自動(dòng)處理、自動(dòng)傳輸?shù)裙δ堋楝F(xiàn)場(chǎng)數(shù)據(jù)的真實(shí)性、有效性、即時(shí)性、可用性提供了保證,并能方便地輸入計(jì)算機(jī),可以應(yīng)用于智能儀器儀表、工業(yè)、農(nóng)業(yè)、商業(yè)、交通、物流、倉(cāng)儲(chǔ)等行業(yè)。

          fpga相關(guān)文章:fpga是什么




          關(guān)鍵詞: FPGA PCI總線 ARM

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