文獻標識碼: A
文章編號: 0258-7998(2013)04-0055-03
隨著現(xiàn)代社會信息技術(shù)的高速發(fā)展,數(shù)據(jù)采集的快速性,、穩(wěn)定性,、精確性成為數(shù)據(jù)采集的重要指標。傳統(tǒng)數(shù)據(jù)采集系統(tǒng)采用單片機與DSP作為控制器,,控制模數(shù)轉(zhuǎn)換器(ADC),、存儲器及其各自的外圍電路,對數(shù)據(jù)進行采集并處理,。然而,,單片機本身的指令周期及其處理速度的限制使其很難達到多通道高速采集數(shù)據(jù)的要求,并且單片機控制各功能模塊需要軟件來支持,,軟件運行時間在整個采樣時間中占有很大的比例,效率較低[1],;以FPGA作為控制器的多通道采集系統(tǒng),具有較高的時鐘頻率,較快的運行速度,,具有開發(fā)周期短,、功耗低、開發(fā)費用低等優(yōu)點,。因此,,本設(shè)計采用FPGA作為控制器對數(shù)據(jù)進行采集。
1 系統(tǒng)總體架構(gòu)
多路模擬信號經(jīng)過A/D模數(shù)轉(zhuǎn)換后,,將輸入的模擬信號轉(zhuǎn)為數(shù)字信號,,該數(shù)字信號通過FPGA核心單元,經(jīng)過USB傳輸?shù)接嬎銠C中并存儲,。該數(shù)據(jù)適用于控制過程,、存儲、處理,,并顯示在計算機中,。FPGA不僅控制A/D轉(zhuǎn)換器,,還應完成對USB及內(nèi)部FIFO的讀寫控制,實現(xiàn)了其邏輯控制功能,。系統(tǒng)整體原理圖如圖1所示,。
2 主要芯片選型
2.1 FPGA芯片
FPGA設(shè)計數(shù)字系統(tǒng)電路時,設(shè)計靈活,,集成度高,,工作速度快,可以很大地降低成本。本設(shè)計采用Altera公司的Cyclone II 系列的EP2C35F484芯片,,該芯片系統(tǒng)門數(shù)為35 000個,,I/O端口為475個,1.20 V的電源電壓,,能在-40℃~+100℃的溫度下工作,完全能達到設(shè)計的要求,。
2.2 A/D轉(zhuǎn)換芯片
通過對系統(tǒng)的采樣率、分辨率,、通道數(shù)等要求的分析,,本設(shè)計采用的是一片低功耗ADS7825芯片進行模數(shù)轉(zhuǎn)換。ADS7825是一片4通道,、16位模數(shù)轉(zhuǎn)換器,,其數(shù)據(jù)采樣及轉(zhuǎn)換時間不超過25 μs,可輸入-10.0 V~+10.0 V的模擬電壓,。ADS7825的最大優(yōu)點就是經(jīng)過A/D轉(zhuǎn)換后的數(shù)據(jù)既可以并行輸出也可以串行輸出,,它可以被配置在一個連續(xù)轉(zhuǎn)換模式,按順序數(shù)位化所有4個通道,,使用非常方便,。
2.3 USB傳輸芯片的選型
使用USB2.0通用串行接口總線,USB接口特點是即插即用和支持熱插拔,,并且傳輸速率高,,USB2.0支持高達480 Mb/s的數(shù)據(jù)傳輸速率。系統(tǒng)采用了應用廣泛,、性能穩(wěn)定的Cypress公司CY7C68013芯片,實現(xiàn)了USB接口的擴展,,能夠與計算機之間實現(xiàn)高速的數(shù)據(jù)傳遞。
3 系統(tǒng)硬件設(shè)計
3.1 A/D轉(zhuǎn)換電路
在使用ADS7825時,,將其片選引腳CS置低電平,,讀數(shù)/啟動轉(zhuǎn)換引腳R/C給予一個下降沿,以啟動A/D轉(zhuǎn)換器,。當BUSY保持低電平時,, A/D進入到采樣保持和轉(zhuǎn)換的過程中;當BUSY為高電平,,R/C為高電平時,,A/D進入到開始讀取數(shù)據(jù)過程,。在此過程中,必須先將R/C置高電平,,再將BUSY置高電平,,否則可能會引起數(shù)據(jù)還未讀完,就開始了新的轉(zhuǎn)換,,導致數(shù)據(jù)的丟失[2],。
ADS7825的輸出有兩種模式:一種為并行輸出,,另一種為串行輸出,,其工作原理不同。為了能實現(xiàn)多通道高速采集系統(tǒng),,設(shè)計采用并行輸出的方式,。
并行輸出的工作原理:將片選引腳CS置低電平,給予R/C下降沿,,以啟動A/D轉(zhuǎn)換器,。檢測BUSY引腳的狀態(tài),當BUSY引腳為低電平時,,表示A/D數(shù)據(jù)的轉(zhuǎn)換還在進行,;當BUSY為高電平時,數(shù)據(jù)轉(zhuǎn)換完成,,開始讀取數(shù)據(jù),。讀取數(shù)據(jù)時,要輸出16位數(shù)據(jù),,輸出只有8個引腳,,需要BYTE引腳的功能,當BYTE引腳為高電平時,,輸出的是低8位數(shù)據(jù),;當BYTE引腳為低電平時,輸出的是高8位數(shù)據(jù)[3],。ADS7825外圍電路圖如圖2所示,。
3.2 USB通信接口
CY7C68013有Ports、Slave FIFO和GPIF 3種接口方式,。本設(shè)計采用Slave FIFO接口方式,。Slave FIFO是從機方式,即FX的CPU不直接參與USB數(shù)據(jù)處理,,而是簡單地把FX作為USB和外部數(shù)據(jù)處理邏輯(如ASIC,、DSP和IDE(串行接口引擎)控制器)之間的通道,數(shù)據(jù)流并不經(jīng)過CPU,,而是通過FX的FIFO直接傳輸,。FIFO通過外部主機控制,,同時,F(xiàn)IFO提供所需的時序信號,、握手信號(滿,、空等)和輸出使能等[4]。
圖3為FPGA與USB接口示意圖,采用Slave FIFO模式,,外部時鐘使用的是FPGA提供的12.5 MHz的時鐘信號,,F(xiàn)D[15:0]為16位雙向數(shù)據(jù)總線,因此最大傳輸速度可達200 Mb/s,FLAGA,、FLAGB,、FLAGC是CY7C68013FIFO的標志管腳,SLOE用于使能數(shù)據(jù)總線FD的輸出,;FIFOADR[1:0]用于選擇和FD連接的端點緩沖區(qū),;SLRD和SLWR可分別作為FIFO的讀寫選通信號。
FPGA控制進程如下[5]:
(1)IDLE:當寫事件發(fā)生時,,跳轉(zhuǎn)到狀態(tài)1,;
(2)狀態(tài)1:通過改變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ū)動數(shù)據(jù),每個IFCLK激活SLWR,,跳到狀態(tài)4;
(5)狀態(tài)4:是否還有數(shù)據(jù)要傳送,,有數(shù)據(jù)則跳到狀態(tài)2,,無數(shù)據(jù)則要傳送跳到IDLE。
異步Slave FIFO 讀狀態(tài)如圖4所示,。
4 FPGA控制程序設(shè)計及仿真
4.1 ADS7825仿真控制設(shè)計
基于FPGA實現(xiàn)對ADS7825模數(shù)轉(zhuǎn)換器的控制,,并讀出其轉(zhuǎn)換的數(shù)據(jù)。采用Verilog HDL硬件描述語言,,實現(xiàn)對ADS7825的控制與數(shù)據(jù)的讀出,,并在Quartus Ⅱ9.0開發(fā)工具中綜合編譯并映射到FPGA中運行,其仿真結(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ù)開始完畢,,外部允許讀取寄存器
end
......
}
波形結(jié)果顯示了該模塊在設(shè)置好時鐘頻率50 MHz和片選信號的情況下,通過ADS7825模數(shù)轉(zhuǎn)換器轉(zhuǎn)換的高8位和低8位的數(shù)據(jù),,F(xiàn)PGA邏輯控制單元能夠快速準確地接收,,轉(zhuǎn)換成16位數(shù)據(jù),并輸出對ADS7825的邏輯控制信號,,從而實現(xiàn)了FPGA對ADS7825模數(shù)轉(zhuǎn)換器準確無誤的控制和數(shù)據(jù)的接收,,充分體現(xiàn)了系統(tǒng)的快速性,、準確性,穩(wěn)定性,。
4.2 USB傳輸控制仿真模塊
CY7C68103為每個端口都提供了空滿標志位,設(shè)計利用FPGA對CY7C68013的空滿狀態(tài)的檢測,,完成輸出對CY7C68013的控制信號,控制讀寫過程[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è)計介紹了以FPGA芯片EP2C35F484為主體,配合ADS7825和USB傳輸控制器CY7C68013構(gòu)成的數(shù)據(jù)采集系統(tǒng),。利用FPGA的邏輯控制功能,,實現(xiàn)對ADS7825與CY7C68013的邏輯控制,實現(xiàn)對數(shù)據(jù)快速,、準確的采集,。利用Altera公司的Quartus Ⅱ9.0開發(fā)工具,,采用Verilog HDL硬件描述語言實現(xiàn)了對數(shù)據(jù)的傳輸,,仿真結(jié)果表明本設(shè)計的可行性,從而實現(xiàn)了對4路模擬信號的采集與傳輸,,具有良好的穩(wěn)定性,。
參考文獻
[1] 胡敦利,肖力,,尤文艷. 基于FPGA的測試控制板卡的設(shè)計與實現(xiàn)[J]. 電子技術(shù)應用,,2012,38(1):10-13.
[2] 王霞,李剛. 具有串行和并行輸出接口的模數(shù)轉(zhuǎn)換器——ADS7825[J].國外電子元器件,,1999(1):30-33.
[3] 張原峰,,高彥,王彥文.ADS7825模數(shù)轉(zhuǎn)換芯片及其在高速數(shù)據(jù)采集系統(tǒng)中的應用[J].計算機測量與控制,,2002,10(6):49-53.
[4] 夏宇聞. Verilog數(shù)字系統(tǒng)設(shè)計教程[M]. 北京:北京航空航天大學出版社,,2008:44-46.
[5] 張思杰,趙泰,,汪振興,,等. 基于FPGA的USB接口數(shù)據(jù)采集系統(tǒng)設(shè)計[J]. 電子技術(shù)應用,2011,37(5):64-69.
[6] 張俊濤,,王豫瑩.基于FPGA和USB2.0的高速數(shù)據(jù)采集系統(tǒng)[J].儀表技術(shù)與傳感器,,2011(10):173-174.
[7] 吳繼華,王誠. Altera FPGA/CPLD設(shè)計(基礎(chǔ)篇)[M].北京:人民郵電出版社,,2005:88-96.
[8] 吳繼華,王誠. Altera FPGA/CPLD設(shè)計(高級篇)[M]. 北京:人民郵電出版社,,2005:91-100.