?

基于FPGA的多功能數據采集系統設計

2016-09-08 09:23劉歡朱建鴻
電子設計工程 2016年13期
關鍵詞:時序時鐘芯片

劉歡,朱建鴻

(江南大學 輕工過程先進控制教育部重點實驗室,江蘇 無錫 214122)

基于FPGA的多功能數據采集系統設計

劉歡,朱建鴻

(江南大學 輕工過程先進控制教育部重點實驗室,江蘇 無錫 214122)

介紹了一種高速實時數據采集系統的設計,該系統以FPGA作為邏輯控制的核心,以USB作為與上位機數據傳輸的接口,內置一路AD轉換,最高采樣速率40 MHz,預留40針IDE接口,可以擴展各種不同的傳感器與AD板,數據傳輸速度超過40 MB/s。給出了系統內部結構設計圖,設計思路、實施過程、仿真結果和實驗結果、固件(Firmware)和基于C#的應用程序開發,以期為各種傳感器的調試與數據采集等提供有益的參考。

電子設計;數據采集;傳感器;電壓轉換;USB;FPGA

傳統的數據采集系統中通常采用單片機或DSP作為控制模塊,控制AD轉換、存儲和其它外圍電路的工作,利用串口、并口等接口與上位機進行通信。但隨著數據采集對速度、簡易性和精確度的要求日益增加,傳統的數據采集系統逐漸無法滿足應用要求。

PCI接口[1]、SATA接口[2]和USB接口[4]是高速數據采集與傳輸領域三大主流選擇,但本文采用了USB2.0接口,因為USB2.0穩定性高、通用性好、兼容性強和速度快?;贔PGA的多功能高速實時數據采集系統采用了FPGA邏輯主控和USB2.0傳輸的思路。FPGA芯片具有體積小、頻率高、延時小,且能夠使用Verilog HDL語言來編程的優點。本系統結合了兩者的優點,具有速度快、容易拓展的特點。

1 系統總體結構

本文設計的基于FPGA的多功能數據采集系統采用FPGA芯片作為系統的控制核心,通過USB2.0端口與上位機通信,實現多功能、實時的高速數據采集。本采集系統劃分為采集驅動電路、FPGA采集控制電路和USB傳輸控制電路等部分。如圖1所示。

圖1 數據采集系統整體框圖

本系統內置1路模擬信號輸入,含12bit的AD轉換器,最高采樣率為 40 MHz,適合用于 CCD (Charge Coupled Device,電荷耦合器件)等圖像傳感器的數據采集。本數據采集系統支持外置擴展采樣接口 (IDE接口),此接口由CPLD驅動,起到多路電壓轉換的功效,能兼容5 V或3.3 V的系統或傳感器。該系統的工作過程為:主機應用程序向USB控制器發出采樣控制包,在控制包中設置采集頻率、傳感器時序驅動等,進而USB控制器觸發FPGA驅動傳感器并采樣,FPGA根據控制包的要求驅動AD進行數模轉換,邊轉換邊將數據緩存到SDRAM,數據達到一定域值后,被打包傳送至USB控制器,再由USB控制器將數據高速傳送至上位機處理。

2 主要芯片選型

本數據采集系統采用的主要芯片包括FPGA芯片、CPLD芯片、AD轉換芯片和USB傳輸芯片。

依據本系統設計的需要選用Altera公司的Cyclone IV系列EP4CE15F17C8芯片。該芯片內部集成邏輯單元15 408個,用戶I/O口165個,PLL(鎖相環)4個,系統時鐘頻率可高于200 MHz,能滿足設計的要求。

根據電壓要求,本系統采用Altera公司的MAX II系列EMP240T100C5芯片[5]。該芯片具有80個通用 I/O口,支持1.8 V、2.5 V、3.3 V和5 V等多種電壓輸入輸出,能滿足設計需求。

根據采集系統的采樣率、分辨率等要求,本系統選用Analog Devices公司的AD9924模數轉換器件。該器件是12位低功耗高速并行模數轉換器件,最高采樣率為40 MHz。

Cypress公司的EZ-USB FX2系列芯片是一款集成了USB2.0協議的微處理器。本文采用了EZ-USB FX2LP系列低功耗芯片中的CY7C68013A-56(下文簡稱為EZ-USB)。

3 系統硬件設計

3.1多功能數據采集電路設計

傳感器的驅動電壓與AD芯片的輸出電壓常為5 V或 3.3 V,如SONY ILX554B CCD和TOSHIBA TCD1304DG CCD的傳感器驅動電壓分別為5 V和3.3 V;AD9220與AD9224模數轉換芯片的輸出電壓分別為5 V和3.3 V。這些信號都要與主控芯片相連。為了信號能夠被準確捕捉,需要進行電壓轉換,以往常使用專用的電壓轉換芯片,如SN74LVC4245,可以實現8路3.3 V與5 V的相互轉換,但這類芯片體積大,轉換通道少,在通道需求大、PCB空間小的情況下對電路設計者非常不利。

本系統選用CPLD(EPM240T100C5)通過軟件硬件結合控制實現多功能數據采集,如圖2所示,其中U1為CPLD部分I/O口,S1為四路硬件開關,R1-R4為上拉電阻,P1為40針通用IDE接口。CPLD部分I/O口與IDE接口相連,I/O口與FPGA相連(圖中未畫出),通過編程實現各個I/O口之間的同步,然后通過QUATAUS II對CPLD I/O口輸入輸出模式進行設定,并配合硬件開關控制上位電阻的閉合來實現I/O口的電壓轉換,實現4個8位I/O口分別以3.3 V和5 V獨立輸入輸出,還有一個8位I/O口(其中一位已被內置AD輸入占用)直接與FPGA相連,可以進行3.3 V的輸入輸出。具體實現過程分為4種情況(4個I/O口同理,以PA口為例):

圖2 多功能數據采集的連接

①PA口3.3V輸出,此時設置對應的CPLD I/O口為普通輸出模式,斷開S1第一位,再通過程序實現該I/O口與FPGA對應的I/O口時序同步。

②PA口5V輸出,此時設置對應的CPLD I/O口為開漏輸出模式,閉合S1第一位(加上拉電阻),再通過程序實現該I/O口與FPGA對應的I/O口時序同步。

③PA口3.3 V輸入,此時設置對應的CPLD I/O口為普通輸入模式,斷開S1第一位,再通過程序實現FPGA對應的I/O口與該I/O口時序同步。

④PA口5 V輸入,此時設置同③,EPM240T100C5產品手冊表明,當VCCIO=3.3 V時,能兼容5 V TTL輸入信號,AD數模轉換芯片輸出信號一般均為TTL信號,能兼容。

3.2FPGA與SDRAM及USB芯片連接電路設計

本系統采用SDRAM(同步動態隨機存儲器)代替傳統的FIFO進行數據緩存,此為兩級數據緩沖的第一級,兩片SDRAM輪流操作,進行通常所說的乒乓操作[8]。SDRAM型號為H57V2562GTR-75C,單片容量為32 M(普通FIFO芯片的容量一般為32~512K),價格較貴,但從容量的角度來考慮,SDRAM存在明顯優勢。SDRAM由FPGA控制讀寫,用來暫存AD電路所產生的數據。

EZ-USB有多種數據傳輸模式,如GPIF模式、SLAVE FIFO模式等,甚至端口模式都可以進行數據傳輸。其中傳輸速度最快的是SLAVE FIFO模式,可以達到40 MB/S。

當EZ-USB工作于SLAVE FIFO模式時,外圍電路可以像對待普通FIFO一樣對EZ-USB內部FIFO進行讀寫[7],此為兩級數據緩沖的第二級。本系統采用FPGA作為主控制器,USB控制器采用SLAVE FIFO模式,FPGA通過控制EZUSB內部FIFO及SDRAM進行與上位機之間的數據傳輸。

FPGA與SDRAM及USB芯片信號連接圖如圖3所示。其中,在與SDRAM連接中,A[0..12]為13位地址位,DQ[0..15]為16位輸入輸出數據位,INCLK_SD為FPGA PLL鎖相環二倍頻產生的100MHz時鐘信號,是SDRAM的主時鐘信號,其它為控制信號;在與EZ-USB的連接中,data[0..15]為16位數據位,其它為控制信號或狀態位。

圖3 FPGA與SDRAM及USB芯片信號連接圖

4 系統軟件設計

系統軟件設計主要包括FPGA邏輯控制程序設計、CPLD程序設計、USB固件程序設計和上位機應用程序設計。

4.1FPGA邏輯控制設計

FPGA邏輯控制程序的設計是整個數據采集系統的關鍵,整體分成三大模塊:PLL鎖相環模塊、分頻采樣控制模塊和NIOS II主控模塊。本設計中使用QUARTUS II提供的IP核進行編程,降低了開發的難度并縮短了開發周期。FPGA邏輯控制模塊化設計原理圖如圖4所示,上文已提及的外設連接也在圖中顯現。

圖4 FPGA模塊化設計原理圖

4.1.1PLL鎖相環模塊

NIOS II內核和SDRAM的時鐘頻率高于FPGA的主時鐘50 MHz,因此,本系統采用PLL鎖相環的倍頻功能來提升時鐘頻率到100 MHz,從而驅動NIOS II內核和SDRAM。PLL鎖相環模塊的建立既可以通過Verilog HDL直接編寫,還可以通過QUARTUS II提供的IP內核來設置。本文采用后者,具有方便、便捷的優點。如圖4中PLL模塊所示。

4.1.2分頻采樣控制模塊

FPGA主時鐘由50 MHz有源晶振提供,由于A/D采樣的頻率要根據實際頻率需求設定500 KHz~40 MHz,因此需要構建分頻采樣控制自定義模塊,該模塊對主時鐘進行若干分頻得到相應的驅動同步信號。同時,該模塊還要控制數據采樣、AD轉換以及數據同步存儲。如圖4中driver_times模塊所示,其中CCD_ROG、CCD_CLK分別是傳感器驅動信號,AD_CLK是ADC芯片的主時鐘信號并作為NIOS II內核的輸入信號為數據存儲提供同步信號。

4.1.3NIOS II主控模塊

NIOS II主控模塊主要分為 USB傳輸控制部分和SDRAM緩存控制部分,它們在數據和功能上有連通性,所以把它們集成在一個內核模塊中,如圖4中KERNEL模塊所示。NIOS II同時也是一個IP內核[9],它的作用相當于一個32 位RISC嵌入式處理器。嵌入式開發所采用的高級語言C語言相對于FPGA的Verilog HDL或是VHDL等硬件描述語言具有開發難度低,邏輯明確等優點。采用嵌入式內核之后并沒有損失FPGA的并行執行能力,一個工程中可以建立多個內核,依然有并行執行程序的能力,相當于多個內核同時工作,FPGA加ARM組合形式,使得代碼執行效率更高。

1)SDRAM緩存控制

如圖4所示,在KERNEL軟核中已經建立了兩個SDRAM控制器,SDRAM控制器一旦構建好,接下來對SDRAM的處理就像對內部RAM地址一樣進行賦值和讀取。32MB的SDRAM中除了NIOS II系統的運行占用了少量空間(8KB),其余均可用于數據存儲。用C語言中的指針操作可以輕松的完成SDRAM的讀寫工作,下面給出實現ADC轉換出的數據存儲到SDRAM0的關鍵代碼:

unsigned short*ram0=(unsigned short*)(SDRAM_BASE+ 0x10000);//SDRAM地址

void save_data_0()

memset(ram0,0,16000000);//內存初始化

while(Coll_State)

if(AD_CLK)

*(ram0++)=ADC_ONE_DATA;

數據總線為16位,所以每存儲一個數據,指針向后移動一次(16位),由系統內部自動處理完成,數據的地址不需要人工干預。從SDRAM0中讀出數據也是如此,下面給出了從SDRAM0讀出數據送至EZ-USB數據IO口的關鍵代碼:

void read_data_0()

while(!flagb)

if(!ifclk)

CY->DATA=*(--ram0);

其中CY->DATA是用結構體定義的IO口,ifclk為EZUSB的IO口時鐘。

SDRAM1的工作過程與SDRAM0相同,兩塊SDRAM交替工作,在向一塊SDRAM存入數據的同時,從另一塊SDRAM讀出數據,以保證數據的高速穩定傳輸。

2)USB傳輸控制

本系統采用KERNEL軟核通過判斷端點FIFO的空、滿標志位 (FLAGB、FLAGC)來對EZ-USB端點2、4、6、8進行讀、寫控制,并采用異步FIFO讀寫控制模式,控制程序流程圖如圖5所示。

4.2CPLD程序設計

本設計中,CPLD主要用于電壓轉換,其實現原理是通過CPLD的邏輯單元把FPGA對傳感器的驅動信號做一個同步輸入輸出(從一個I/O口接收,送至另一個I/O輸出),再通過外部硬件電路的配置,使其驅動電壓升高或降低。其中,CPLD I/O口的模塊(推挽、開漏)通過QUARTUS II工程進行定義。

圖5 FPGA異步FIFO讀寫控制流程圖

4.3USB固件程序設計

USB固件是運行在 EZ-USB芯片中的代碼。SLAVE FIFO模式中,固件的功能配置了SLAVE FIFO相關的寄存器以及控制EZ-USB何時工作在SLAVE FIFO模式下,一旦固件將相關的寄存器配置完畢,FPGA即可按照SLAVE FIFO的傳輸時序控制EZ-USB與主機進行高速通信,而在通信過程中不需要EZ-USB芯片中8051單片機的干預,從而保證足夠的數據傳輸速率。固件程序采用Cypress公司提供的固件框架,添加自己的配置代碼[6]。添加的部分如下:

Void TD_Init(void)

{...

IFCONFIG=0x03;//設置外部時鐘源、slave fifo模式

EP2CFG=0xA2;//2端點OUT、批量傳輸、512字節雙緩沖

EP4CFG=EP6CFG=EP8CFG=0xE2;//4,6,8端點IN、批量傳輸、512字節雙緩沖

AUTOPTRSETUP|=0x01//使用自動指針

....}

在上面程序中,定義了2端點為上位機命令字下傳通道,4、6、8端點為采集數據上傳通道,均設置為批量傳輸、512字節雙緩沖。

4.4上位機應用程序設計

上位機應用程序的作用是提供一個人機交互的顯示界面,進行實時數據交換,反映系統的運行狀態并存儲下位機的采集數據。該系統采用Visual Studio 2013進行上位機C#應用程序的設計,程序中采用Cypress公司提供的CYAPI控制函數類配合適當的驅動程序完成整個上下位機的通訊過程。

5 系統測試

本文對系統做了3個方面的測試,分別是驅動時序仿真、NIOS II主控邏輯仿真和USB傳輸速度測試。

5.1驅動時序仿真

以SONY ILX554B CCD為例,對傳感器驅動時序的產生進行了仿真,時序圖如圖6所示。

圖6 驅動時序仿真

5.2NIOS II主控邏輯仿真

由于ModSim只能對FPGA本體進行時序仿真,無法對SDRAM、EPCS這些存儲類外設進行仿真,故將存儲器換成OnChip Memory,只進行功能性的仿真。仿真圖如圖7所示。其中,數據來源于TestBench(激勵)文件中產生的隨機數,由于AD為12位,故輸入隨機數為12位,以16位的形式存儲,再由16根數據線傳送至EZ-USB。如圖7所示,前一段為數據采集,后一段為數據傳送,用指針操作,數據是逆向讀出。

圖7 NIOS II主控邏輯仿真

5.3USB傳輸速度測試

該測試采用Cypress官方提供的測速工具-Streamer,如圖8所示,電路板實測USB傳輸速度超過40 MB/S,能夠滿足高速采集速度需求。

圖8 USB速度測試

6 結束語

系統開發過程中涉及硬、軟件混合設計,Verilog HDL與C語言的混合編程以及NIOS II內核仿真等綜合技能和全面的軟、硬件知識。本文實現了一種支持多種傳感器的多功能采集系統,該系統支持大容量緩存和高速USB傳輸。經長時間測試,系統工作穩定,性能可靠,說明了設計的合理性,比較適合各種傳感器的調試與數據采集等。

[1]程敏,翁寧泉,劉慶,等.基于PCI-1002的高速數據采集[J].大氣與環境光學學報,2014,9(4):310-315.

[2]張志煒,呂幼新.基于SATA硬盤和FPGA的高速數據采集存儲系統[J].電子設計工程,2011,19(21):166-169.

[3]李露,段新文.基于FPGA的高速數據采集卡的設計[J].現代電子技術,2012,35(18):146-148.

[4]王選擇,曾志祥,范宜艷,等.基于FPGA與USB2.0的溫度數據采集與控制[J].儀表技術與傳感器,2014(9):44-47.

[5]宗發保,郭昌華,杜偉寧.基于EPM240和MSP430的等精度頻率計[J].吉林大學學報:信息科學版,2012,30(5):492-496.

[6]張思杰,趙泰,汪振興,等.基于FPGA的USB接口數據采集系統設計[J].電子技術應用,2011,37(5):98-100.

[7]劉志華,郭付才,彭新偉,等.基于CY7C68013A的FPGA配置和通信接口設計[J].電子技術應用,2013,39(2):18-21.

[8]張傳勝.基于FPGA/SOPC架構的面陣CCD圖像采集系統的設計[J].液晶與顯示,2011,26(5):636-639.

[9]薛飛,寧鐸,黃建兵.基于SOPC圖像采集系統的設計[J].儀表技術與傳感器,2012(12):49-51.

[10]代月松,裴東興,徐菲.USB在數據采集系統中的應用[J].電子測試,2012(8):64-67.

Design of multifunction data acquisition system based on FPGA

LIU Huan,ZHU Jian-hong
(Key Laboratory of Advanced Process Control for Light Industry,Ministry of Education,Jiangnan University,Wuxi 214122,China)

The design of a high-speed real-time data acquisition system with the FPGA as a core logic control is introduced. The system has the following characteristics:using USB2.0 as data transfer interface to the host computer,building in an AD conversion,the maximum sampling rate 40 MHz,40-pin IDE reserved for interface,expansion of a variety of sensors and AD board,and data transmission speed being over 40 MB/S.The internal structure design of the system,design ideas, implementation,simulation and experimental results,and the firmware and application based on C#are given for a variety of sensors to provide a useful reference for debugging and data acquisition.

electronic design;data acquisition;sensor;voltage conversion;USB;FPGA

TN919.6

A

1674-6236(2016)13-0167-05

2015-07-15稿件編號:201507112

劉 歡(1991—),男,湖北天門人,碩士研究生。研究方向:檢測與傳感。

猜你喜歡
時序時鐘芯片
芯片會議
清明
別樣的“時鐘”
關于射頻前端芯片研發與管理模式的思考
古代的時鐘
基于不同建設時序的地鐵互聯互通方案分析
基于FPGA 的時序信號光纖傳輸系統
有趣的時鐘
時鐘會開“花”
基于模體演化的時序鏈路預測方法
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合