《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于FPGA的高速多通道數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)
基于FPGA的高速多通道數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)
來(lái)源:電子技術(shù)應(yīng)用2013年第4期
甘建偉, 秦付軍, 王 鵬
西華大學(xué) 機(jī)械工程與自動(dòng)化學(xué)院, 四川 成都610039
摘要: 介紹一種基于FPGA的數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì),以Cyclone Ⅱ系列的EP2C35F484芯片為主控單元,配合模數(shù)轉(zhuǎn)換芯片ADS7825和USB傳輸控制芯片CY7C68013,并結(jié)合外圍電路實(shí)現(xiàn)了采集系統(tǒng)?;赒uartus Ⅱ9.0平臺(tái),實(shí)現(xiàn)了對(duì)ADS7825芯片和CY7C68013芯片的控制與通信,并采用Verilog硬件描述語(yǔ)言,實(shí)現(xiàn)了系統(tǒng)的仿真,給出了系統(tǒng)核心模塊的時(shí)序仿真波形圖。經(jīng)測(cè)試,系統(tǒng)實(shí)現(xiàn)了對(duì)多路模擬信號(hào)的采集,具有良好的穩(wěn)定性、快速性。
中圖分類號(hào): TN919
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2013)04-0055-03
Design of multi-channel high-speed data acquisition system based on FPGA
Gan Jianwei, Qin Fujun,Wang Peng
School of Mechanical Engineering and Automation, Xihua University, Chengdu 610039, China
Abstract: Introduces a data acquisition system based on the FPGA design , by using Cyclone Ⅱ series of EP2C35F484 chip as the master control unit, with the A/D conversion chip ADS7825 and USB transmission control chip CY7C68013, and combined with peripheral circuit realized the acquisition system. Based on the Quartus Ⅱ 9.0 flat, to realize the ADS7825 chip and CY7C68013 chip control and communication, we use the Verilog hardware description language to realize the simulation of the system, and give the system core module timing simulation waveform diagram. By test, the multi-channel analog signal acquisition, has a good stability and rapidity.
Key words : data acquisition; FPGA; USB2.0; A/D

    隨著現(xiàn)代社會(huì)信息技術(shù)的高速發(fā)展,數(shù)據(jù)采集的快速性、穩(wěn)定性、精確性成為數(shù)據(jù)采集的重要指標(biāo)。傳統(tǒng)數(shù)據(jù)采集系統(tǒng)采用單片機(jī)與DSP作為控制器,控制模數(shù)轉(zhuǎn)換器(ADC)、存儲(chǔ)器及其各自的外圍電路,對(duì)數(shù)據(jù)進(jìn)行采集并處理。然而,單片機(jī)本身的指令周期及其處理速度的限制使其很難達(dá)到多通道高速采集數(shù)據(jù)的要求,并且單片機(jī)控制各功能模塊需要軟件來(lái)支持,軟件運(yùn)行時(shí)間在整個(gè)采樣時(shí)間中占有很大的比例,效率較低[1];以FPGA作為控制器的多通道采集系統(tǒng),具有較高的時(shí)鐘頻率,較快的運(yùn)行速度,具有開(kāi)發(fā)周期短、功耗低、開(kāi)發(fā)費(fèi)用低等優(yōu)點(diǎn)。因此,本設(shè)計(jì)采用FPGA作為控制器對(duì)數(shù)據(jù)進(jìn)行采集。

1 系統(tǒng)總體架構(gòu)
    多路模擬信號(hào)經(jīng)過(guò)A/D模數(shù)轉(zhuǎn)換后,將輸入的模擬信號(hào)轉(zhuǎn)為數(shù)字信號(hào),該數(shù)字信號(hào)通過(guò)FPGA核心單元,經(jīng)過(guò)USB傳輸?shù)接?jì)算機(jī)中并存儲(chǔ)。該數(shù)據(jù)適用于控制過(guò)程、存儲(chǔ)、處理,并顯示在計(jì)算機(jī)中。FPGA不僅控制A/D轉(zhuǎn)換器,還應(yīng)完成對(duì)USB及內(nèi)部FIFO的讀寫(xiě)控制,實(shí)現(xiàn)了其邏輯控制功能。系統(tǒng)整體原理圖如圖1所示。

 

 

2 主要芯片選型
2.1 FPGA芯片

    FPGA設(shè)計(jì)數(shù)字系統(tǒng)電路時(shí),設(shè)計(jì)靈活,集成度高,工作速度快,可以很大地降低成本。本設(shè)計(jì)采用Altera公司的Cyclone II 系列的EP2C35F484芯片,該芯片系統(tǒng)門(mén)數(shù)為35 000個(gè),I/O端口為475個(gè),1.20 V的電源電壓,能在-40℃~+100℃的溫度下工作,完全能達(dá)到設(shè)計(jì)的要求。
2.2 A/D轉(zhuǎn)換芯片
    通過(guò)對(duì)系統(tǒng)的采樣率、分辨率、通道數(shù)等要求的分析,本設(shè)計(jì)采用的是一片低功耗ADS7825芯片進(jìn)行模數(shù)轉(zhuǎn)換。ADS7825是一片4通道、16位模數(shù)轉(zhuǎn)換器,其數(shù)據(jù)采樣及轉(zhuǎn)換時(shí)間不超過(guò)25 μs,可輸入-10.0 V~+10.0 V的模擬電壓。ADS7825的最大優(yōu)點(diǎn)就是經(jīng)過(guò)A/D轉(zhuǎn)換后的數(shù)據(jù)既可以并行輸出也可以串行輸出,它可以被配置在一個(gè)連續(xù)轉(zhuǎn)換模式,按順序數(shù)位化所有4個(gè)通道,使用非常方便。
2.3 USB傳輸芯片的選型
    使用USB2.0通用串行接口總線,USB接口特點(diǎn)是即插即用和支持熱插拔,并且傳輸速率高,USB2.0支持高達(dá)480 Mb/s的數(shù)據(jù)傳輸速率。系統(tǒng)采用了應(yīng)用廣泛、性能穩(wěn)定的Cypress公司CY7C68013芯片,實(shí)現(xiàn)了USB接口的擴(kuò)展,能夠與計(jì)算機(jī)之間實(shí)現(xiàn)高速的數(shù)據(jù)傳遞。
3 系統(tǒng)硬件設(shè)計(jì)
3.1 A/D轉(zhuǎn)換電路

    在使用ADS7825時(shí),將其片選引腳CS置低電平,讀數(shù)/啟動(dòng)轉(zhuǎn)換引腳R/C給予一個(gè)下降沿,以啟動(dòng)A/D轉(zhuǎn)換器。當(dāng)BUSY保持低電平時(shí), A/D進(jìn)入到采樣保持和轉(zhuǎn)換的過(guò)程中;當(dāng)BUSY為高電平,R/C為高電平時(shí),A/D進(jìn)入到開(kāi)始讀取數(shù)據(jù)過(guò)程。在此過(guò)程中,必須先將R/C置高電平,再將BUSY置高電平,否則可能會(huì)引起數(shù)據(jù)還未讀完,就開(kāi)始了新的轉(zhuǎn)換,導(dǎo)致數(shù)據(jù)的丟失[2]。
    ADS7825的輸出有兩種模式:一種為并行輸出,另一種為串行輸出,其工作原理不同。為了能實(shí)現(xiàn)多通道高速采集系統(tǒng),設(shè)計(jì)采用并行輸出的方式。
    并行輸出的工作原理:將片選引腳CS置低電平,給予R/C下降沿,以啟動(dòng)A/D轉(zhuǎn)換器。檢測(cè)BUSY引腳的狀態(tài),當(dāng)BUSY引腳為低電平時(shí),表示A/D數(shù)據(jù)的轉(zhuǎn)換還在進(jìn)行;當(dāng)BUSY為高電平時(shí),數(shù)據(jù)轉(zhuǎn)換完成,開(kāi)始讀取數(shù)據(jù)。讀取數(shù)據(jù)時(shí),要輸出16位數(shù)據(jù),輸出只有8個(gè)引腳,需要BYTE引腳的功能,當(dāng)BYTE引腳為高電平時(shí),輸出的是低8位數(shù)據(jù);當(dāng)BYTE引腳為低電平時(shí),輸出的是高8位數(shù)據(jù)[3]。ADS7825外圍電路圖如圖2所示。

3.2 USB通信接口
    CY7C68013有Ports、Slave FIFO和GPIF 3種接口方式。本設(shè)計(jì)采用Slave FIFO接口方式。Slave FIFO是從機(jī)方式,即FX的CPU不直接參與USB數(shù)據(jù)處理,而是簡(jiǎn)單地把FX作為USB和外部數(shù)據(jù)處理邏輯(如ASIC、DSP和IDE(串行接口引擎)控制器)之間的通道,數(shù)據(jù)流并不經(jīng)過(guò)CPU,而是通過(guò)FX的FIFO直接傳輸。FIFO通過(guò)外部主機(jī)控制,同時(shí),F(xiàn)IFO提供所需的時(shí)序信號(hào)、握手信號(hào)(滿、空等)和輸出使能等[4]。
    圖3為FPGA與USB接口示意圖,采用Slave FIFO模式,外部時(shí)鐘使用的是FPGA提供的12.5 MHz的時(shí)鐘信號(hào),F(xiàn)D[15:0]為16位雙向數(shù)據(jù)總線,因此最大傳輸速度可達(dá)200 Mb/s,FLAGA、FLAGB、FLAGC是CY7C68013FIFO的標(biāo)志管腳,SLOE用于使能數(shù)據(jù)總線FD的輸出;FIFOADR[1:0]用于選擇和FD連接的端點(diǎn)緩沖區(qū);SLRD和SLWR可分別作為FIFO的讀寫(xiě)選通信號(hào)。
    FPGA控制進(jìn)程如下[5]:
    (1)IDLE:當(dāng)寫(xiě)事件發(fā)生時(shí),跳轉(zhuǎn)到狀態(tài)1;
    (2)狀態(tài)1:通過(guò)改變FIFOADR[1:0],指向FIFO,跳到狀態(tài)2;
    (3)狀態(tài)2:如果“FIFO滿”為假,則跳到狀態(tài)3,否則在狀態(tài)2循環(huán)等待;
    (4)狀態(tài)3:傳送總線驅(qū)動(dòng)數(shù)據(jù),每個(gè)IFCLK激活SLWR,跳到狀態(tài)4;
    (5)狀態(tài)4:是否還有數(shù)據(jù)要傳送,有數(shù)據(jù)則跳到狀態(tài)2,無(wú)數(shù)據(jù)則要傳送跳到IDLE。
    異步Slave FIFO 讀狀態(tài)如圖4所示。

4 FPGA控制程序設(shè)計(jì)及仿真
4.1 ADS7825仿真控制設(shè)計(jì)

    基于FPGA實(shí)現(xiàn)對(duì)ADS7825模數(shù)轉(zhuǎn)換器的控制,并讀出其轉(zhuǎn)換的數(shù)據(jù)。采用Verilog HDL硬件描述語(yǔ)言,實(shí)現(xiàn)對(duì)ADS7825的控制與數(shù)據(jù)的讀出,并在Quartus Ⅱ9.0開(kāi)發(fā)工具中綜合編譯并映射到FPGA中運(yùn)行,其仿真結(jié)果如圖5所示。

    仿真程序如下:
    case(ad_state)
    {......
    4′b0010:    begin                            //高字節(jié)讀取
    data_16bit[15:8]
    <= ads7825data_8bit[7:0];
    ad_state <= 4'b0110;
    end
    4&prime;b0101:    begin                          //低字節(jié)讀取
    data_16bit[7:0] <= ads7825data_8bit[7:0];
    ad_state <= 4&prime;b0111;
    data_valid <= 1&prime;b1;    
                      //數(shù)據(jù)開(kāi)始完畢,外部允許讀取寄存器
    end    
    ......
    }
    波形結(jié)果顯示了該模塊在設(shè)置好時(shí)鐘頻率50 MHz和片選信號(hào)的情況下,通過(guò)ADS7825模數(shù)轉(zhuǎn)換器轉(zhuǎn)換的高8位和低8位的數(shù)據(jù),F(xiàn)PGA邏輯控制單元能夠快速準(zhǔn)確地接收,轉(zhuǎn)換成16位數(shù)據(jù),并輸出對(duì)ADS7825的邏輯控制信號(hào),從而實(shí)現(xiàn)了FPGA對(duì)ADS7825模數(shù)轉(zhuǎn)換器準(zhǔn)確無(wú)誤的控制和數(shù)據(jù)的接收,充分體現(xiàn)了系統(tǒng)的快速性、準(zhǔn)確性,穩(wěn)定性。
4.2 USB傳輸控制仿真模塊
    CY7C68103為每個(gè)端口都提供了空滿標(biāo)志位,設(shè)計(jì)利用FPGA對(duì)CY7C68013的空滿狀態(tài)的檢測(cè),完成輸出對(duì)CY7C68013的控制信號(hào),控制讀寫(xiě)過(guò)程[6]。仿真波形如圖6所示。
    仿真程序如下[7-8]:
    always @(negedge CLK or negedge RESET)
    begin
    if(!RESET)
    begin
        SLWR_reg <= 1&prime;b0;
        SLCS <= 1'b0;
        SLOE <= 1'b1;
        SLRD <= 1'b1;
    end
    else
    begin
        SLOE <= 1'b1;
        SLRD <= 1'b1;
        SLCS <= 1'b0;
    if(full == 1&prime;b1)                // SLWR_reg is generated
    only when full is low.
    begin
        SLWR_reg <= ~SLWR_reg;    
    end
    else
    begin
        SLWR_reg <= 1&prime;b1;
    end
    end
    end    
    本設(shè)計(jì)介紹了以FPGA芯片EP2C35F484為主體,配合ADS7825和USB傳輸控制器CY7C68013構(gòu)成的數(shù)據(jù)采集系統(tǒng)。利用FPGA的邏輯控制功能,實(shí)現(xiàn)對(duì)ADS7825與CY7C68013的邏輯控制,實(shí)現(xiàn)對(duì)數(shù)據(jù)快速、準(zhǔn)確的采集。利用Altera公司的Quartus Ⅱ9.0開(kāi)發(fā)工具,采用Verilog HDL硬件描述語(yǔ)言實(shí)現(xiàn)了對(duì)數(shù)據(jù)的傳輸,仿真結(jié)果表明本設(shè)計(jì)的可行性,從而實(shí)現(xiàn)了對(duì)4路模擬信號(hào)的采集與傳輸,具有良好的穩(wěn)定性。
參考文獻(xiàn)
[1] 胡敦利,肖力,尤文艷. 基于FPGA的測(cè)試控制板卡的設(shè)計(jì)與實(shí)現(xiàn)[J]. 電子技術(shù)應(yīng)用,2012,38(1):10-13.
[2] 王霞,李剛. 具有串行和并行輸出接口的模數(shù)轉(zhuǎn)換器&mdash;&mdash;ADS7825[J].國(guó)外電子元器件,1999(1):30-33.
[3] 張?jiān)?,高彥,王彥?ADS7825模數(shù)轉(zhuǎn)換芯片及其在高速數(shù)據(jù)采集系統(tǒng)中的應(yīng)用[J].計(jì)算機(jī)測(cè)量與控制,2002,10(6):49-53.
[4] 夏宇聞. Verilog數(shù)字系統(tǒng)設(shè)計(jì)教程[M]. 北京:北京航空航天大學(xué)出版社,2008:44-46.
[5] 張思杰,趙泰,汪振興,等. 基于FPGA的USB接口數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J]. 電子技術(shù)應(yīng)用,2011,37(5):64-69.
[6] 張俊濤,王豫瑩.基于FPGA和USB2.0的高速數(shù)據(jù)采集系統(tǒng)[J].儀表技術(shù)與傳感器,2011(10):173-174.
[7] 吳繼華,王誠(chéng). Altera FPGA/CPLD設(shè)計(jì)(基礎(chǔ)篇)[M].北京:人民郵電出版社,2005:88-96.
[8] 吳繼華,王誠(chéng). Altera FPGA/CPLD設(shè)計(jì)(高級(jí)篇)[M]. 北京:人民郵電出版社,2005:91-100.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。