文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2013)04-0055-03
隨著現(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′b0101: begin //低字節(jié)讀取
data_16bit[7:0] <= ads7825data_8bit[7:0];
ad_state <= 4′b0111;
data_valid <= 1′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′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′b1) // SLWR_reg is generated
only when full is low.
begin
SLWR_reg <= ~SLWR_reg;
end
else
begin
SLWR_reg <= 1′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)換器——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.