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