999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于FPGA和ARM的實時數據采集顯示系統

2014-03-05 11:22:18李長星王波胡振華
現代電子技術 2014年3期

李長星+王波+胡振華

摘 要: 針對同時滿足高速的A/D采集、高速率的數據傳輸和實時顯示且便于攜帶實際應用需要,研究設計了基于FPGA+ARM的實時數據采集的嵌入式平臺。采用FPGA控制A/D完成高速數據采集,通過串口總線實現了平臺內部FPGA和ARM之間指令的下達和數據的上傳,最終實現在ARM上通過Qt應用程序對A/D采集的數據進行實時顯示。

關鍵詞: FPGA; ARM; 嵌入式Linux; 串口通信; Qt

中圖分類號: TN911?34 文獻標識碼: A 文章編號: 1004?373X(2014)03?0151?04

Display system for real?time data acquisition based on FPGA and ARM

LI Chang?xing, WANG Bo, HU Zhen?hua

(Xian Shiyou University, Xian 710065, China)

Abstract: Aiming at meeting the actual application needs of the high?speed AD sampling, high rate data transmission and real?time display and portable, a real?time data acquisition based on FPGA+ARM embedded platform is researched and designed, which uses FPGA controlled AD to realize high speed data acquisition, the internal instruction issued and data upload between FPGA and ARM is achieved by serial bus. Finally the real?time display of the data collected by AD is realized on the ARM by Qt application.

Keywords: FPGA; ARM; embedded Linux; serial port communication; Qt

0 引 言

目前,伴隨著FPGA技術和嵌入式技術的進步, 測量儀器也有著長足的發展。FPGA和ARM處理器憑借著在資源豐富、執行速率快、重量輕、體積小、可靠性高等優勢,非常適合必須同時滿足高速的A/D采集、高速率的數據傳輸和實時顯示的應用場合?;贔PGA+ARM的實時數據采集的嵌入式平臺,很好地解決了傳統測量儀器采集速率低、體積龐大、實時性不足的缺點[1]。

本文基于Altera公司的Cyclone系列EP1C3T144C8N的FPGA器件和ARM920T的處理器S3C2440A搭建了數據采集的架構平臺。FPGA采用Altera公司的Cyclone系列的EP1C3T144C8,EP1C3T144 提供2 910個邏輯單元(LES),13 個128×36位的M4K RAM模塊,1個鎖相環以及104個I/O口。S3C2440A是Samsung公司為普通應用和手持設備研發的一款高性能低功耗的微小型芯片,其內部搭載了由ARM公司設計的16/32 位ARM920T 的RISC 處理器,這也是該款芯片的主要特點[2?3]。本文Linux下的應用程序GUI的設計采用Qt來進行。Qt是一個C++圖形用戶界面應用程序框架[4],由Nokia公司所開發。其優點在于能夠跨多平臺使用、豐富的應用程序編程接口 (API)、面向對象的操作、大量的開發文檔等。Qt/E即Qt/Embeded,是Qt的嵌入式版本。

1 系統結構

系統結構框圖如圖1所示,由ARM發送開始采集的命令,通過串口下達給FPGA的串口接收模塊,經過對命令進行解析,通過A/D控制模塊控制A/D芯片開始數據采集,然后將采集到的數據存入FPGA內部的串口發送的FIFO進行數據緩沖,最后通過FPGA的串口發送模塊將數據再傳送給ARM。A/D芯片采用Analog Device公司的AD7899,是一款快速、低功耗、14位400 KSPS模數轉換器(ADC)。

圖1 系統結構框圖

FPGA中數據采集控制部分的RTL級視圖如圖2所示,將其A/D的低8位作為數據輸出,在FPGA的控制下鎖存之后通過db7_i[7:0]存儲到FPGA中的FIFO,當串口發送模塊經過對FIFO的空滿信號進行判斷,在FIFO非空的情況下啟動tx_start信號,以一定的波特率將數據發送到ARM上進行實時顯示 [5]。

圖2 FPGA中數據采集控制部分的RTL級視圖

通過Modelsim仿真結果如圖3所示,可以看到,在串口發送端口的數據tx_data與A/D所采集到的數據db7_i[7:0]一致。

圖3 Modelsim仿真結果

2 FPGA與ARM的串口通信

要完成FPGA與ARM的串口通信,完成命令的下達和數據的上傳及數據的顯示就必須完成兩點:FPGA的串口與ARM上的Linux操作系統的通信;Linux操作系統與Qt應用程序的通信。

2.1 Linux串口驅動程序

Linux操作系統是無法直接和外圍串口進行數據通信的。因此,串口驅動程序就成為操作系統內核和串口之間的橋梁,它屏蔽的底層串口信息并將其在操作系統內核中抽象為設備文件的形式。串口驅動程序的主要作用歸納為:

(1)初始化和釋放串口;

(2) 將數據從內核空間中傳給串口和將串口讀取數據傳遞到內核;

(3) 讀取來自Qt應用程序傳給設備文件的數據;

(4) 返回Qt應用程序請求的數據。

串口驅動程序結構 如圖4所示,主要由終端設備層、行規程層、串口抽象層和串口芯片層這4層組成。終端設備層的作用是提供一致的訪問接口供內核調用,使得內核在操作串口時不必考慮具體終端的類型。行規程層用來是設置數據交換的規則,比如處理輸入數據變換、流控等。底層串口驅動的核心部分是串口抽象層,它的作用是將總結出各類串口共性,比如根據串口芯片層所提供的串口波特率、地址識別抽口類型等。串口芯片層也屬于底層串口驅動,它與具體芯片有關且直接控制硬件,它的作用是設置串口芯片的工作的相關寄存器并向上層提供比如中斷號、訪問地址的芯片資源[6]。

2.2 第三方串口控制類Qextserialport類

由于終端設備層向上提供統一的訪問接口,這樣Qt應用程序就可以通過這樣的訪問接口進行打開、讀寫或者是控制(open、read、write、ioctl等)來方便地對硬件進行操作。在本設計中采用第三方為Qt編寫的擴展類Qextserialport,它繼承自QIODevice類,Qextserialport與QIODevice的關系圖,如圖5所示。

圖4 串口驅動程序結構

圖5 Qextserialport與QIODevice的關系圖

Qextserialport類有兩種工作模式,分別為查詢方式Polling和事件驅動方式EventDriven。Qt在調用 Qextserialport類定義串口的時候,可以進行選擇。

查詢方式Polling是一種讀寫函數同步運行的工作模式,該模式的好處是系統開銷較小但是功能上相對單一。

事件驅動方式EventDriven則不同,分析源代碼可以看到有這樣一個監測串口事件函數(monitorCommEvent),其作用是一旦有數據到來就會發出事件信號,從而讀信號立即響應讀取串口的數據。在此方式下,讀寫串口操作屬于異步操作,當調用讀寫函數時會立即返回函數值且期間調用線程不會被凍結。

在Linux下只支持Polling模式,需要建立定時器來讀取串口的數據[7?8]。

3 實時曲線顯示功能的實現

3.1 Qt/E圖形顯示的體系架構

完成了數據的通信之后,下一步就是要完成如何將接收到的數據進行顯示的問題,這樣就涉及到Qt/E圖形顯示的體系架構。

Qt/E圖形顯示的體系架構如圖6所示,由3層組成:

(1) 圖形引擎及事件驅動層:在此層當中,輸入設備驅動產生事件,調用和直接訪問Linux操作系統的framebuffer(幀緩沖)中的數據內容。

(2) 上層圖形層:在此層當中向上提供了圖形的抽象供用戶使用,向下抽象出了具體操作接口供顯示設備使用。

(3) 上層控件層:在此層當中,用戶通過Qwidget類完成操作界面的設計[9]。

圖6 Qt/E總體架構

3.2 人機交互界面的設計

本設計采用觸摸屏作為人機交互的的硬件設備,通過Qt編寫GUI(圖形用戶界面)在觸摸屏上顯示,用戶可以通過觸碰觸摸屏實現人機交互。Qt編寫GUI如圖7所示,該GUI界面主要包括:串口參數設置、實時數據顯示區域和用戶控制按鍵。其中串口參數設置參數包括串口編號、波特率、數據位、校驗位、停止位。用戶控制按鍵部分包括open(打開串口)、help(在線幫助文檔)、start(開始采集數據并繪制波形)、quit(退出)。

圖7 GUI分布圖

3.3 繪制實時曲線的步驟

在Qt的內部通信機制中,處于核心地位的是信號和槽機制,它完成的是對象與對象之間的通信。這種機制也是Qt區別于其他GUI工具的主要特點,運用這種通信機制可以避免其他GUI工具中在執行每種行為后所需的回調函數,在完成繁雜的函數指針相同功能的同時且不致系統崩潰的危險。該機制是通過一個對象發出信號,另一個對象通過槽函數予以響應,之間通過connect函數加以連接[10] 。在本設計中,首先采用信號和槽機制對串口定時的訪問。

在Qwidget.cpp文件中代碼如下:

void MyImgTest::read()

{ myscene->cData= m_pCom->readAll()

myscene->drawWave(); }

connect(m_pTimer1,SIGNAL(timeout()),this,SLOT(read()));

其次設置畫筆的相關參數。

在SahuWaveScene.cpp中代碼如下:

m_waveDataPen.setStyle(Qt::SolidLine); //設置實線畫線

m_waveDataPen.setColor(Qt::red); //設置紅色畫筆

m_waveDataPen.setWidthF(1); //設置線寬為一個像素

最后,完成曲線繪制的功能。以QGraphicsScene作為顯示區域的父對象,在QGraphicsItems類下的定義QList鏈表來存儲曲線的各個點的[y]坐標數據,其QList值類型為T。借助 QList的push_back功能(類似于附加的方式),將每次通過串口收到的數據附加到列表的末尾,再通過上一步定義好的畫筆addLine添加上連線。由于QList屬于一種鏈表,所以通過這樣的方式可以實現曲線的描繪不會出現丟失數據的情況。

在SahuWaveScene.cpp中代碼如下:

QListm_waveList;

//定義QList列表,存儲[y]值

m_waveList.push_back((QGraphicsItem*)this->addLine(QLineF(p1,p2),m_waveDataPen;

最終實時曲線顯示效果如圖8所示。

圖8 實時曲線顯示效果圖

3.4 完成數據的保存

QTextStream類,它提供了使用QIODevice讀寫文本的基本功能并且支持如源代碼、超文本標記語言、可擴展標示語言等其他文本格式的文件。本設計中,繪制曲線的同時將坐標數據寫入date.txt文檔,然后將該文件復制到目標文件[9]。

具體代碼如下:

QFile file( "date.txt" );

//定義了一個名date.txt為QFile文件

QDir::setCurrent( "/opt" ); //設置文件的存放路徑

file.open(QIODevice::Append);

//設置以追加方式打開寫入文件

if ( file.open(QFile::Append) )

{QTextStream stream(&myscene->cData);

//文件流QTextStream將坐標數據寫入文件

if(myscene->cData.count()==256)

stream << "\n";}

file.close();

4 結 論

本方案通過FPGA+ARM的實時數據采集的嵌入式的硬件平臺和輔以Qt下的串口通信傳輸、QGraphicsScene類和QList類實時曲線描繪的軟件平臺共同完成了該數據采集與顯示系統,經過試驗證明該系統很好地滿足了采集數據的快速性、數據傳輸的穩定性、曲線繪制的實時性且已成功應用于手持便攜式礦物探測領域,而且其速度快、體積小、重量輕、資源豐富、可靠性高等優點對于數據檢測、高速數據的采集等領域也有著非常廣闊的應用前景。

參考文獻

[1] 朱曉鵬.ARM+FPGA的實時數據采集系統設計[J].計算機工程與設計,2009,30(13):3088?3090.

[2] 三星公司.S3C2440A (Revision 1)數據手冊[M].韓國:三星公司,2004.

[3] 程燕勝.基于ARM+FPGA 的微陀螺儀數據采集處理系統設計[J].傳感器與微系統,2013,32(8):75?77.

[4] 譚浩強.C++程序設計[M].3版.北京:清華大學出版社,2006.

[5] 夏宇聞.Verilog數字系統設計教程[M].2版.北京:北京航空航天大學出版社,2008.

[6] 韋東山.嵌入式Linux應用開發完全手冊[M].北京:人民郵電出版社,2008.

[7] 任韜.Qt跨平臺數字化壓力測量分析監控系統的設計與實現[J].電子設計工程,2012,20(9):181?183.

[8]孟繁磊.基于Linux和Qt的串口通信調試器調的設計及應用[J].科技創新導報,2011(32):24?25.

[9] 狄輝輝.基于Qt/E的嵌入式實時曲線顯示界面設計與實現[J].電子測量技術,2011,34(12):59?61.

[10] [美]索林.24小時學通Qt編程[M].袁鵬飛,譯.北京:人民郵電出版社,2000.

m_waveDataPen.setWidthF(1); //設置線寬為一個像素

最后,完成曲線繪制的功能。以QGraphicsScene作為顯示區域的父對象,在QGraphicsItems類下的定義QList鏈表來存儲曲線的各個點的[y]坐標數據,其QList值類型為T。借助 QList的push_back功能(類似于附加的方式),將每次通過串口收到的數據附加到列表的末尾,再通過上一步定義好的畫筆addLine添加上連線。由于QList屬于一種鏈表,所以通過這樣的方式可以實現曲線的描繪不會出現丟失數據的情況。

在SahuWaveScene.cpp中代碼如下:

QListm_waveList;

//定義QList列表,存儲[y]值

m_waveList.push_back((QGraphicsItem*)this->addLine(QLineF(p1,p2),m_waveDataPen;

最終實時曲線顯示效果如圖8所示。

圖8 實時曲線顯示效果圖

3.4 完成數據的保存

QTextStream類,它提供了使用QIODevice讀寫文本的基本功能并且支持如源代碼、超文本標記語言、可擴展標示語言等其他文本格式的文件。本設計中,繪制曲線的同時將坐標數據寫入date.txt文檔,然后將該文件復制到目標文件[9]。

具體代碼如下:

QFile file( "date.txt" );

//定義了一個名date.txt為QFile文件

QDir::setCurrent( "/opt" ); //設置文件的存放路徑

file.open(QIODevice::Append);

//設置以追加方式打開寫入文件

if ( file.open(QFile::Append) )

{QTextStream stream(&myscene->cData);

//文件流QTextStream將坐標數據寫入文件

if(myscene->cData.count()==256)

stream << "\n";}

file.close();

4 結 論

本方案通過FPGA+ARM的實時數據采集的嵌入式的硬件平臺和輔以Qt下的串口通信傳輸、QGraphicsScene類和QList類實時曲線描繪的軟件平臺共同完成了該數據采集與顯示系統,經過試驗證明該系統很好地滿足了采集數據的快速性、數據傳輸的穩定性、曲線繪制的實時性且已成功應用于手持便攜式礦物探測領域,而且其速度快、體積小、重量輕、資源豐富、可靠性高等優點對于數據檢測、高速數據的采集等領域也有著非常廣闊的應用前景。

參考文獻

[1] 朱曉鵬.ARM+FPGA的實時數據采集系統設計[J].計算機工程與設計,2009,30(13):3088?3090.

[2] 三星公司.S3C2440A (Revision 1)數據手冊[M].韓國:三星公司,2004.

[3] 程燕勝.基于ARM+FPGA 的微陀螺儀數據采集處理系統設計[J].傳感器與微系統,2013,32(8):75?77.

[4] 譚浩強.C++程序設計[M].3版.北京:清華大學出版社,2006.

[5] 夏宇聞.Verilog數字系統設計教程[M].2版.北京:北京航空航天大學出版社,2008.

[6] 韋東山.嵌入式Linux應用開發完全手冊[M].北京:人民郵電出版社,2008.

[7] 任韜.Qt跨平臺數字化壓力測量分析監控系統的設計與實現[J].電子設計工程,2012,20(9):181?183.

[8]孟繁磊.基于Linux和Qt的串口通信調試器調的設計及應用[J].科技創新導報,2011(32):24?25.

[9] 狄輝輝.基于Qt/E的嵌入式實時曲線顯示界面設計與實現[J].電子測量技術,2011,34(12):59?61.

[10] [美]索林.24小時學通Qt編程[M].袁鵬飛,譯.北京:人民郵電出版社,2000.

m_waveDataPen.setWidthF(1); //設置線寬為一個像素

最后,完成曲線繪制的功能。以QGraphicsScene作為顯示區域的父對象,在QGraphicsItems類下的定義QList鏈表來存儲曲線的各個點的[y]坐標數據,其QList值類型為T。借助 QList的push_back功能(類似于附加的方式),將每次通過串口收到的數據附加到列表的末尾,再通過上一步定義好的畫筆addLine添加上連線。由于QList屬于一種鏈表,所以通過這樣的方式可以實現曲線的描繪不會出現丟失數據的情況。

在SahuWaveScene.cpp中代碼如下:

QListm_waveList;

//定義QList列表,存儲[y]值

m_waveList.push_back((QGraphicsItem*)this->addLine(QLineF(p1,p2),m_waveDataPen;

最終實時曲線顯示效果如圖8所示。

圖8 實時曲線顯示效果圖

3.4 完成數據的保存

QTextStream類,它提供了使用QIODevice讀寫文本的基本功能并且支持如源代碼、超文本標記語言、可擴展標示語言等其他文本格式的文件。本設計中,繪制曲線的同時將坐標數據寫入date.txt文檔,然后將該文件復制到目標文件[9]。

具體代碼如下:

QFile file( "date.txt" );

//定義了一個名date.txt為QFile文件

QDir::setCurrent( "/opt" ); //設置文件的存放路徑

file.open(QIODevice::Append);

//設置以追加方式打開寫入文件

if ( file.open(QFile::Append) )

{QTextStream stream(&myscene->cData);

//文件流QTextStream將坐標數據寫入文件

if(myscene->cData.count()==256)

stream << "\n";}

file.close();

4 結 論

本方案通過FPGA+ARM的實時數據采集的嵌入式的硬件平臺和輔以Qt下的串口通信傳輸、QGraphicsScene類和QList類實時曲線描繪的軟件平臺共同完成了該數據采集與顯示系統,經過試驗證明該系統很好地滿足了采集數據的快速性、數據傳輸的穩定性、曲線繪制的實時性且已成功應用于手持便攜式礦物探測領域,而且其速度快、體積小、重量輕、資源豐富、可靠性高等優點對于數據檢測、高速數據的采集等領域也有著非常廣闊的應用前景。

參考文獻

[1] 朱曉鵬.ARM+FPGA的實時數據采集系統設計[J].計算機工程與設計,2009,30(13):3088?3090.

[2] 三星公司.S3C2440A (Revision 1)數據手冊[M].韓國:三星公司,2004.

[3] 程燕勝.基于ARM+FPGA 的微陀螺儀數據采集處理系統設計[J].傳感器與微系統,2013,32(8):75?77.

[4] 譚浩強.C++程序設計[M].3版.北京:清華大學出版社,2006.

[5] 夏宇聞.Verilog數字系統設計教程[M].2版.北京:北京航空航天大學出版社,2008.

[6] 韋東山.嵌入式Linux應用開發完全手冊[M].北京:人民郵電出版社,2008.

[7] 任韜.Qt跨平臺數字化壓力測量分析監控系統的設計與實現[J].電子設計工程,2012,20(9):181?183.

[8]孟繁磊.基于Linux和Qt的串口通信調試器調的設計及應用[J].科技創新導報,2011(32):24?25.

[9] 狄輝輝.基于Qt/E的嵌入式實時曲線顯示界面設計與實現[J].電子測量技術,2011,34(12):59?61.

[10] [美]索林.24小時學通Qt編程[M].袁鵬飛,譯.北京:人民郵電出版社,2000.

主站蜘蛛池模板: 国产色爱av资源综合区| 国产精品私拍在线爆乳| 国产一在线观看| 婷婷五月在线| 欧美日韩动态图| 亚洲福利一区二区三区| 亚洲国产欧美国产综合久久| 久久精品国产精品国产一区| 99热国产在线精品99| 毛片一级在线| 国产一区免费在线观看| 亚洲色无码专线精品观看| 亚洲国产黄色| 国产精品中文免费福利| 毛片免费在线视频| 日本91视频| 国产无码精品在线播放| 秘书高跟黑色丝袜国产91在线 | 国产精品主播| 中文字幕无码av专区久久| 国产一级毛片高清完整视频版| 91精品视频网站| 国产精品一区在线观看你懂的| 亚洲无码A视频在线| 成人福利在线免费观看| 国产理论精品| 精品视频在线观看你懂的一区| 国产成人永久免费视频| 欧美成人午夜影院| 麻豆精品在线视频| 99久久国产自偷自偷免费一区| 97se亚洲综合| 国产情精品嫩草影院88av| 精品伊人久久大香线蕉网站| 国产高潮流白浆视频| 五月六月伊人狠狠丁香网| 综合色天天| 日韩在线影院| 99精品国产自在现线观看| 凹凸精品免费精品视频| 欧美精品H在线播放| 日韩av在线直播| 精品国产电影久久九九| 国产精品分类视频分类一区| 在线观看国产黄色| 国产真实自在自线免费精品| 国产一级精品毛片基地| 国产精品福利导航| 国产91九色在线播放| 亚洲第一在线播放| 亚洲热线99精品视频| 亚洲AV无码久久精品色欲| 在线观看视频一区二区| 99偷拍视频精品一区二区| 久久精品中文无码资源站| 亚洲全网成人资源在线观看| 亚洲AⅤ综合在线欧美一区| 四虎影视国产精品| 久久国产亚洲欧美日韩精品| 久久香蕉国产线看精品| 中文无码日韩精品| 亚洲午夜国产片在线观看| 日韩免费成人| 手机在线国产精品| 99热这里只有免费国产精品| 天天干天天色综合网| 婷婷久久综合九色综合88| 免费亚洲成人| 国产精品第一区| 熟妇人妻无乱码中文字幕真矢织江| 97国产一区二区精品久久呦| 国产成人精品日本亚洲| 亚洲男人的天堂久久香蕉网| 色综合天天综合中文网| 中文字幕无码中文字幕有码在线| 91色在线观看| 国产亚洲成AⅤ人片在线观看| 国产精品片在线观看手机版 | 亚洲综合欧美在线一区在线播放| 国产精品不卡片视频免费观看| 中文字幕在线日韩91| 97人妻精品专区久久久久|