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

          新聞中心

          EEPW首頁 > 測試測量 > 設計應用 > 高速高精度多功能數(shù)據(jù)采集卡的設計

          高速高精度多功能數(shù)據(jù)采集卡的設計

          作者: 時間:2018-02-06 來源:電子產(chǎn)品世界 收藏

          作者/代威威 董文岳 珠海歐比特控制工程股份有限公司(廣東 珠海 519080)

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

                數(shù)據(jù)采集卡是模-數(shù)信號轉換與信號處理系統(tǒng)的關鍵部分。在要求不高的工控應用場合中,大多數(shù)應用采樣速率均低于1 Msps的中、低速數(shù)據(jù)采集卡;采樣速率高于1 Msps的高速或者超高速數(shù)據(jù)采集卡,則主要應用于要求較高的工控領域中。而總線通用性與廣泛性表明其在未來的十年工控領域中它仍占主導地位。高速數(shù)據(jù)采集卡目前分成兩類:一種是以高采樣速率采集一定深度的數(shù)據(jù)后,再把數(shù)據(jù)通過總線傳輸給上位機,這類的采集卡由于不是即時的且并不是捕獲所有的數(shù)據(jù),因此采樣速率往往可以高達100 Msps甚至200 Msps以上;另一種則是捕獲所有的數(shù)據(jù)且即時顯示在上位機上,這類的采集卡研發(fā)一直是工控領域研發(fā)的難點,受限于帶寬,采樣速率國內一直并沒有突破5 Msps的產(chǎn)品,而歐比特公司的產(chǎn)品具備邊沿觸發(fā)方式,結合上位機的虛擬示波器技術,可以實現(xiàn)雙通道10 Msps/單通道20 Msps的全速不間斷采樣。

            基于以上的原因,利用公司PCI9056-66BA,珠海歐比特公司在超高的數(shù)據(jù)采集系統(tǒng)中做了一些研究,設計12 bit分辨率的超高速高精度數(shù)據(jù)采集PCI板卡EMBC2000- PCI-AD485CAN。該數(shù)據(jù)采集板卡遵循PCI 2.3標準,同時支持5 V/3.3 V 標準32位PCI接口,已實現(xiàn)雙通道10 Msps/單通道20 Msps的全速不間斷采樣,且采集的數(shù)據(jù)可利用CAN或者RS485總線進行遠程數(shù)據(jù)傳輸,滿足了高端工控領域的應用要求。

            1 EMBC2000-PCI-AD485CAN的硬件功能結構

            EMBC2000-PCI-AD485CAN(以下簡稱EMBC2000-PCI)硬件結構主要由6個部分組成:模擬信號垂直調理電路、數(shù)據(jù)采集及主控電路、本地數(shù)據(jù)緩存電路、PCI總線接口電路、隔離型CAN/RS485接口電路、電源電路,實現(xiàn)了雙通道模擬信號輸入,其結構圖如圖1所示。

            圖1 EMBC2000-PCI硬件電路結構圖

            1.1模擬信號垂直通道設計

            模擬信號垂直調理電路允許輸入的模擬電平范圍在0~±25 V之間,輸入阻抗可在1 MΩ與50 Ω之間切換,同時具備DC/AC/GND三種耦合方式。

            由于允許輸入的模擬電平范圍較大,而ADC允許輸入電平范圍較小,所以必須先對輸入信號進行衰減,然后根據(jù)需要進行放大,使當前輸入信號的峰值接近或者等于ADC的最大量程。因此,就要求前端衰減電路的輸入阻抗要高,同時在板卡的整個通頻帶內的衰減分壓比不變。要實現(xiàn)這樣的要求僅簡單地采用電阻分壓是達不到目的。因為在下一級的輸入以及PCB走線中均存在分布電容,這個分布電容的存在對被測信號的高頻分量有嚴重的衰減,造成信號的高頻分量的失真(脈沖上升時間變慢)。為此必須采用如圖2所示的阻容補償式分壓電路,圖中R1、R2為分壓電阻(R2包括下一級的輸入電阻),C1、C2為補償電容(C2包括下一級的輸入電容)。調節(jié)C2,當滿足時,分壓比K在整個通頻帶內是均勻的,它被表示為,這樣的分壓電路做成的衰減器就可以無畸變地傳輸窄脈沖信號,僅僅是信號幅度變?yōu)樵瓉淼?/K。

            圖2阻容分壓電路圖

            大多數(shù)數(shù)據(jù)采集設備的輸入電阻Ri都設計在1MΩ左右,它的大小主要決定于R1,因為,而R1遠大于R2。輸入電容Ci為C1和C2的串聯(lián)值和引線的分布電容C0的并聯(lián)值。本板卡的輸入電阻Ri=1MΩ,輸入電容Ci=25 pF。

            為了使探頭接入被測電路不影響被測電路的工作,即前端衰減電路到下一級的可變增益放大電路應當是開路的,這可以通過加入一個輸入阻抗很大的射隨運放來實現(xiàn),這里選用ADI公司的AD8027,其輸入阻抗高達6 MΩ。

            對衰減后的信號進行放大有三種方式:

            1) 使用高精度運放,通過繼電器或者模擬開關選擇反饋電阻或者輸入電阻的大小來實現(xiàn)不同的增益,缺點是需要較大的布線空間,不利于小型化,且高精度運放的輸入帶寬往往較窄,減小系統(tǒng)的重用性;

            2) 使用數(shù)控可變增益放大器,這種方式利于控制且精度較高,缺點是增益的范圍是不連續(xù)的;

            3) 使用壓控可變增益放大器,這種方式優(yōu)點在于增益的范圍是連續(xù),缺點是要額外增加一個高精度DAC。

            綜合各方面的考慮,最終選用ADI公司的壓控可變增益放大器AD8336及搭配TI公司的16位DAC DAC8552。

            TI公司的DAC8552輸出公式(1):

          (1)

            D范圍為0~65536,Vref根據(jù)需要外接基準,但不能超出DAC電源電壓。

            AD8336的增益分為固定增益和壓控增益兩個部分,其中固定增益根據(jù)帶寬的選擇已經(jīng)精密電阻外接配置成4倍,則其總的增益為:

          (2)

            Gpra即為固定增益,單位為分貝(dB)。分貝與放大倍數(shù)的增益換算關系如下:

          (3)

            Vgpos與Vgneg由DAC8552輸出得到,所以僅需根據(jù)選擇的ADC的量程,算出對當前信號的增益需要,從而推導出DAC兩端所需輸出的電平大小,利用FPGA或者其它處理器控制即可。

            最后還需把單端信號轉成差分信號,原因有三:

            1) 對ADC來說,差分輸入信號采樣精度更高;

            2) 提高抗干擾能力;

            3) 利于阻抗匹配。

            1.2 數(shù)據(jù)采集及主控電路

            選擇高精度的ADC是構成一個優(yōu)秀的測量系統(tǒng)的三個要素之一。衡量一個測試量與實際理想值的誤差時,需要兩個量來表述: accuracy 和 precision。前者一般稱為精度,后者最好叫做可重復性。

            Accuracy實際是測量中一個平均過程的概念。一般是衡量多次測量后的平均值接近理想值的程度。所以它隱含的是測試的DC量綱。在ADC的數(shù)據(jù)手冊中的以下參量是一個DC的概念:Offset, gain error, INL, DNL等。它們衡量了做直流參量測量時的誤差水平。

            Precision是指在同樣測試條件下,測試結果的一致性。同樣的A/D系統(tǒng)中,以下參量是一個AC的概念:Dynamic Range, SNR, TDH等。它們衡量了做非直流參量測量時的誤差水平。

            所以對ADC的選型并不是10位分辨率的性能就一定優(yōu)于8位的分辨率的性能,更不是說對一個10位的AD系統(tǒng)輸入5 V信號,其誤差就在。實際上ADC的精度其主要決定于兩個參數(shù):INL和ENOB。

            INL是直流測量時要主要考慮的參數(shù)。一般ADC的其它直流測量誤差諸如offset,gain error等可以通過校準而削掉。這時INL成了影響測試的主要誤差來源。比如一個10 bit的ADC,INL=1.5 bit,則整個ADC的實際可得到的最好精度是

            ENOB是非DC信號模數(shù)轉換或交流測試時一個A/D的有效bit數(shù)。它主要跟SNR有關。其存在下列的公式:

           (4)

            其中的SNR更精確的說應該是SINAD(SNR & THD:信噪比和總諧波失真)。上邊公式也隱含了如果系統(tǒng)的SNR變差,則總的測量precision也會變差。

            經(jīng)過對比對ADI、MAXIM、TI等公司的ADC,最終選擇了ADI公司的AD9238,其INL僅為0.7 LSB,SNR達到70 dB。

            ADC采集到數(shù)據(jù)通過數(shù)據(jù)總線傳輸給處理器。處理器方面,由于還涉及到CAN、RS485、PCI接口的設計,因此市面上并沒通用的處理器提供。歐比特公司作為一家專注工控航空航天的公司,依托基于SPARC架構的IC設計,對FPGA的應用已十分成熟。針對成本、系統(tǒng)頻率、資源及IO管腳的需求,最終選用了Altera公司的EP3C40作為處理器的IP核載體。

            1.3 本地緩存及PCI接口電路

            如前所述,國內工控方面的不間斷數(shù)據(jù)采集研究,一直受限于PCI帶寬。雖然PCI總線理論傳輸速率可高達,但這僅僅是理論值。實際上的PCI總線開發(fā),能達到40 MByte/s的傳輸速率已經(jīng)是相當不錯的數(shù)據(jù)。歐比特公司在S698處理器、EMBC1000系列等產(chǎn)品的研發(fā)過程中積累相當豐富的PCI總線開發(fā)經(jīng)驗。經(jīng)過努力,基于公司的PCI9056可實現(xiàn)60 Mbyte/s的PCI傳輸速率,傳輸數(shù)據(jù)穩(wěn)定有效、不丟數(shù)。

            根據(jù)木桶理論,PCI總線的實際傳輸效率是一塊短板,在這短板得以加長后,研發(fā)的難度就集中在另外一塊短板——上位機取數(shù)上。也就是說即使PCI總線真的能夠傳輸很快,但是上位機是否能都把數(shù)據(jù)讀到?由于EMBC2000-PCI板卡是基于WinXP/Win2000操作系統(tǒng)的,有過PCI總線開發(fā)經(jīng)驗的人都知道,在大規(guī)模的連續(xù)數(shù)據(jù)傳輸中是不適宜使用中斷方式的,因為這很容易導致CPU占用率過高,而導致系統(tǒng)進入假死狀態(tài)。而使用查詢方式,與即時的Linux系統(tǒng)不同,Windows操作系統(tǒng)是個分時操作系統(tǒng),也就是說它的線程占用的時間是個不確定的值,就算單獨為讀操作開一個線程,但是也必須使數(shù)據(jù)在板卡緩存一端時間后,再由上位機查詢到滿狀態(tài)后讀走。但上位機讀數(shù)據(jù)的過程中,A/D系統(tǒng)仍在不間斷地采集數(shù)據(jù),由于操作系統(tǒng)中沒有一個線程能一直獨占CPU。也就是說上位機并不能查詢到一次滿后,就一直在讀數(shù),每次讀操作中必然存在一個間隔,也就是說PCI總線的傳輸速率需高于或者至少不低于采樣速率。那么在這個間隔中,采集數(shù)據(jù)同樣需要緩存在板卡的本地緩存中。

            通過對WinXP系統(tǒng)的深入分析及驅動開發(fā),最終確定需在板卡上緩存8 ms的采集數(shù)據(jù),并在每個通道的緩存數(shù)據(jù)處理上采用“乒乓模式”,也就是說FPGA將ADC采集的數(shù)據(jù)輪流填到每個通道對應的緩存A與緩存B內,而當緩存A第一次滿后,上位機開始查詢讀操作,輪流讀走緩存A與緩存B的數(shù)據(jù)。依上,則所需要單個緩存的容量大小為。另外考慮到選擇如SDRAM、DDR-SDRAM、DDR2-SDRAM、SRAM布線復雜,且需要FPGA提供過多的IO及資源。由于一方面這會增加PCB的層數(shù);另一方面只有高端的FPGA才會具備使用上述的緩存所需的IO口數(shù)量,而高端FPGA的價格通常是低成本FPGA價格的是十倍甚至更多。出于成本的考慮,選擇了IDT公司的雙口SRAM IDT70V659作為外部緩存,其容量達到512 KByte,速率達100 MByte/s,滿足系統(tǒng)設計的需求。

            1.4 隔離型CAN/RS485接口電路

            考慮到工控場合通常存在浪涌電壓,EMBC2000-PCI板卡的CAN和RS485做了隔離處理,可防浪涌電壓達1000 V,并針對RS485常出現(xiàn)的由于第三態(tài)存在而導致接收端輸出處于不定態(tài)做了相應處理。

            CAN邏輯方面,由FPGA搭載歐比特公司自研的OBT-CAN軟核,支持BasicCAN和PeliCAN模式。在PeliCAN模式下,支持CAN2.0B的擴展特征。并具備1 KByte本地緩存,通訊速率最高達1 MByte。寄存器、性能方面完全兼容PHILIPS公司的SJA1000。

            RS485邏輯方面,采用UART16550軟核,并具備了64 Byte本地緩存,通訊速率最高達115200 bps,最大傳輸距離約為1200米。

            3 EMBC2000-PCI-AD485CAN的硬件邏輯

            EMBC2000-PCI的硬件邏輯設計分成8個部分:ADC模塊、DAC模塊、CAN模塊、UART16550模塊、HOST I/F模塊、PCI I/F模塊、RST-IRQ模塊、CLK_GEN模塊。其中ADC模塊及DAC模塊是用于控制模擬信號垂直調理通道及對采集數(shù)據(jù)進行處理,兩個通道的模塊完全相同,僅需在頂層文件上進行復用即可。具體邏輯框圖如圖3。

            圖3 EMBC2000-PCI硬件邏輯框圖

            ADC模塊負責控制ADC并對ADC的采集數(shù)據(jù)進行相關處理。為了降低成本,EMBC2000-PCI并沒有設計專門的觸發(fā)電路,而是在FPGA內部實現(xiàn)觸發(fā)。該部分邏輯集成在ADC模塊中。通過用戶預設的邊沿觸發(fā)方式及觸發(fā)電平,F(xiàn)PGA對采集數(shù)據(jù)尋找滿足觸發(fā)電平的對應點,然后再結合該點前后的數(shù)據(jù)進行趨向分析,判斷是否是所需的上升沿或下降沿觸發(fā)。當找到觸發(fā)點后,F(xiàn)PGA才把采集數(shù)據(jù)按照用戶預設的觸發(fā)深度把數(shù)據(jù)存至本地緩存中。

            DAC模塊負責通過控制DAC從而控制可變增益放大器;CAN模塊/UART16550模塊分別實現(xiàn)了CAN2.0B協(xié)議、RS485通訊;RST-IRQ模塊用于產(chǎn)生各種PCI中斷信號;CLK_GEN模塊用于進行鎖相環(huán)倍頻及產(chǎn)生全局同步時鐘。

            如前所述,由于采集數(shù)據(jù)是先存至本地緩存,然后由上位機直接讀走,不再經(jīng)過FPGA。所以FPGA與PCI橋PCI9056之間是一個異步系統(tǒng),因此PCI接口與其它模塊并需通過一個緩沖來實現(xiàn)同步。PCI I/F模塊用于實現(xiàn)與PCI橋之間的通訊,而HOST I/F模塊用于實現(xiàn)PCI通訊與內部其它邏輯之間的同步。

            整個IP核運行速率為120 MHz,完整實現(xiàn)了板卡各類邏輯。

            4軟件設計

            EMB2000-PCI的驅動基于Jungo公司的WinDriver開發(fā),在上層軟件運用如SinC/C插值法、交替描點法等算法實現(xiàn)波形的還原、描繪、計算,并可把波形進行實時游標測量、打印。EMBC2000-PCI通過DLL文件提供接口函數(shù)供二次開發(fā)。

            5 結論

            EMBC2000-PCI多功能數(shù)據(jù)處理板卡采用雙數(shù)據(jù)存儲方式、內部軟觸發(fā)方式實現(xiàn)了高達單通道20Msps/雙通道10Msps的不間斷數(shù)據(jù)采集能力,分辨率高12bit。板卡上的阻抗匹配與控制保證了數(shù)據(jù)采集的信號完整性。在數(shù)據(jù)采集方面已接近國際代表廠商美國Measurement Computing公司最高端產(chǎn)品PCI-DAS4020/12型板卡。CAN、RS485接口使數(shù)據(jù)可以進行遠距離傳輸。EMBC2000-PCI的出現(xiàn),較好地填補了國內在基于PCI總線的不間斷數(shù)據(jù)采集方面的空白。

            參考文獻:

            [1]PCI-DAS4020-12-UG.Measurement Computing,2009.

            [2]PCI_9056BA_Data_Book_v1.3.,2009.

            [3]EMBC2000-PCI-AD485CAN用戶手冊 . 珠海歐比特控制工程股份有限公司,2010.



          關鍵詞: PLX PCI

          評論


          相關推薦

          技術專區(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); })();