《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > ARM+FPGA設(shè)備的人機(jī)界面數(shù)據(jù)交互設(shè)計(jì)與實(shí)現(xiàn)
ARM+FPGA設(shè)備的人機(jī)界面數(shù)據(jù)交互設(shè)計(jì)與實(shí)現(xiàn)
2015年微型機(jī)與應(yīng)用第9期
吳向臣,吳茂林
(海軍工程大學(xué) 兵器工程系,湖北 武漢 430033)
摘要: 目前對(duì)裝備檢測(cè)設(shè)備的實(shí)時(shí)性、可視化的要求越來(lái)越高。嵌入式技術(shù)的應(yīng)用,使檢測(cè)裝置變得可靠、實(shí)用和便攜。本文在OMAPL138嵌入式結(jié)構(gòu)和Linux系統(tǒng)下,應(yīng)用QTouch組態(tài)軟件進(jìn)行檢測(cè)設(shè)備人機(jī)交互界面的開發(fā)。重點(diǎn)設(shè)計(jì)和分析Linux系統(tǒng)下與FPGA模塊的數(shù)據(jù)交互機(jī)制,從而滿足實(shí)時(shí)信息通信和檢測(cè)的人機(jī)交互需求。
Abstract:
Key words :

  摘  要: 目前對(duì)裝備檢測(cè)設(shè)備的實(shí)時(shí)性、可視化的要求越來(lái)越高。嵌入式技術(shù)的應(yīng)用,使檢測(cè)裝置變得可靠、實(shí)用和便攜。本文在OMAPL138嵌入式結(jié)構(gòu)和Linux系統(tǒng)下,應(yīng)用QTouch組態(tài)軟件進(jìn)行檢測(cè)設(shè)備人機(jī)交互界面的開發(fā)。重點(diǎn)設(shè)計(jì)和分析Linux系統(tǒng)下與FPGA模塊的數(shù)據(jù)交互機(jī)制,從而滿足實(shí)時(shí)信息通信和檢測(cè)的人機(jī)交互需求。

  關(guān)鍵詞: QTouch;人機(jī)交互;嵌入式LinuxARM+FPGA;數(shù)據(jù)交換

0 引言

  由于目前裝備日趨信息化、智能化,裝備運(yùn)行或使用過程中涉及到的信號(hào)也越來(lái)越多,對(duì)于這些信號(hào)的采集和分析,有助于裝備使用者了解裝備的狀態(tài),及時(shí)維修維護(hù),防患于未然。為了能更好更準(zhǔn)確地檢測(cè)出裝備的一些關(guān)鍵信號(hào),對(duì)檢測(cè)設(shè)備提出了更高要求,既需要有超高的精度也需要有便捷友好的操作界面。以便于操作人員迅速上手,簡(jiǎn)化操作訓(xùn)練。本文根據(jù)實(shí)際設(shè)備人機(jī)交互的設(shè)計(jì)需求,結(jié)合硬件設(shè)備和QTouch組態(tài)軟件設(shè)計(jì)了與FPGA硬件設(shè)備的數(shù)據(jù)交換機(jī)制,實(shí)現(xiàn)的人機(jī)交互界面直觀、信息量大、便于操作。

1人機(jī)界面設(shè)計(jì)原理

  QTouch軟件主要分為兩個(gè)重要的組成部分,一是PC端的軟件設(shè)計(jì)部分,二是嵌入式平臺(tái)的運(yùn)行部分。兩者通過協(xié)議進(jìn)行平臺(tái)間通信,在PC端設(shè)計(jì)完成的應(yīng)用程序通過ModbusTCP協(xié)議上傳到嵌入式平臺(tái)部分,上傳完成后脫離PC端,在嵌入式平臺(tái)上獨(dú)立運(yùn)行。其整體框架結(jié)構(gòu)如圖1所示。

006.jpg

  軟件結(jié)構(gòu)分為三層,分別是人機(jī)交互界面、數(shù)據(jù)庫(kù)和底層設(shè)備驅(qū)動(dòng)數(shù)據(jù)。在對(duì)底層硬件進(jìn)行數(shù)據(jù)寫入時(shí),人機(jī)交互界面數(shù)據(jù)由操作人員通過手動(dòng)輸入的方式給定,并通過應(yīng)用程序傳入程序的實(shí)時(shí)數(shù)據(jù)庫(kù),實(shí)時(shí)數(shù)據(jù)庫(kù)接收到數(shù)據(jù)后,驅(qū)動(dòng)程序就可以調(diào)用實(shí)時(shí)數(shù)據(jù)庫(kù)中的數(shù)據(jù),對(duì)底層硬件進(jìn)行數(shù)據(jù)寫入。接收反饋數(shù)據(jù)時(shí),由底層硬件檢測(cè)到數(shù)據(jù),再由驅(qū)動(dòng)程序?qū)⑵浯嫒雽?shí)時(shí)數(shù)據(jù)庫(kù),應(yīng)用程序通過實(shí)時(shí)關(guān)聯(lián)某個(gè)數(shù)據(jù)存儲(chǔ)單元的數(shù)據(jù),就可以實(shí)時(shí)地接收到硬件反饋的數(shù)據(jù)信息并顯示在屏幕上。數(shù)據(jù)交互原理如圖2所示。

007.jpg

2 界面與FPGA的數(shù)據(jù)交換機(jī)制

  2.1 數(shù)據(jù)類型

  研究數(shù)據(jù)交互的機(jī)制,首先需要確定數(shù)據(jù)的類型。當(dāng)FPGA接收到設(shè)定時(shí)間參數(shù)后,并不能直接進(jìn)行時(shí)間設(shè)定,因?yàn)閿?shù)據(jù)接收端接收的數(shù)據(jù)類型并不是十進(jìn)制的,所以不能將設(shè)定的時(shí)間信號(hào)直接傳遞到數(shù)據(jù)接收端,需要進(jìn)行一定的數(shù)據(jù)編碼。這里使用的是Hamming碼[1]進(jìn)行的數(shù)據(jù)編碼信號(hào)。

  Hamming編碼矩陣如下:

  6C9AFL%5}@K8Y](}I_~8KU7.png

  FPGA設(shè)備在接收到時(shí)間參數(shù)后,根據(jù)Hamming編碼矩陣將原始的十進(jìn)制數(shù)編碼成二進(jìn)制數(shù)碼。重新編碼后的時(shí)間參數(shù)通過FPGA端口以電信號(hào)的形式發(fā)送到數(shù)據(jù)接收端口。數(shù)據(jù)接收端口接收到時(shí)間參數(shù)后再進(jìn)行解碼。

  2.2 數(shù)據(jù)交互機(jī)制

  2.2.1 硬件設(shè)備、操作系統(tǒng)和人機(jī)界面的關(guān)系[2-4]

  嵌入式設(shè)備的設(shè)計(jì)都分為硬件設(shè)計(jì)部分和軟件設(shè)計(jì)部分。硬件設(shè)計(jì)部分使用的是目前主流的FPGA+ARM結(jié)合的硬件結(jié)構(gòu),軟件設(shè)計(jì)部分使用Linux操作系統(tǒng),以及使用QTouch編寫的人機(jī)交互界面,人機(jī)交互程序需要借助操作系統(tǒng)才能運(yùn)行。Linux操作系統(tǒng)是連接硬件和人機(jī)界面的橋梁。三者關(guān)系如圖3所示。

008.jpg

  2.2.2 設(shè)備驅(qū)動(dòng)[2]

  設(shè)備驅(qū)動(dòng)是關(guān)聯(lián)操作系統(tǒng)和人機(jī)交互程序的橋梁。操作系統(tǒng)將輸入的數(shù)據(jù)以文件的形式寫入系統(tǒng)的特定文件中,人機(jī)交互程序通過調(diào)用驅(qū)動(dòng)程序來(lái)讀取這些設(shè)備文件即可得到想要的數(shù)據(jù)。人機(jī)交互程序使用統(tǒng)一的接口函數(shù)調(diào)用相應(yīng)的硬件驅(qū)動(dòng)程序,這些函數(shù)都是在設(shè)備驅(qū)動(dòng)中定義好的。這組接口被稱為系統(tǒng)調(diào)用。對(duì)于每一個(gè)系統(tǒng)調(diào)用,驅(qū)動(dòng)程序中都有一個(gè)與之對(duì)應(yīng)的函數(shù),這些函數(shù)集合在一個(gè)file_operations類型的數(shù)據(jù)結(jié)構(gòu)體中,file_operations結(jié)構(gòu)體在Linux內(nèi)核的include/linux/fs.h中定義。

  使用file_operations結(jié)構(gòu)定義數(shù)據(jù)結(jié)構(gòu)的程序代碼如下:

  Staticstructfile_operationsarm_fpga_fops={

  .owner=THIS_MODULE,

  .open=arm_fpga_open,

  .write=arm_fpga_write,

  .read=arm_fpga_read,

  .ioctl=arm_fpga_ioctl,};

  將FPGA字符設(shè)備和arm_fpga_fops結(jié)構(gòu)體進(jìn)行關(guān)聯(lián)。關(guān)聯(lián)程序的代碼設(shè)計(jì)如下:

  ret=register_chrdev(FPGA_MAJOR,DEVICE_NAME,&arm_ fpga_fops);

  if(ret<0)

  {

  prink(DEVICE_NAME”can′t register major number\n”);

  return ret;}

  程序頭文件中定義FPGA_MAJOR為FPGA設(shè)備的主設(shè)備號(hào),程序主函數(shù)中設(shè)置FPGA_MAJOR=0,由系統(tǒng)自動(dòng)分配主設(shè)備號(hào)。DEVICE_NAME定義為設(shè)備名稱。經(jīng)過注冊(cè),主設(shè)備號(hào)就和具體的file_operations結(jié)構(gòu)聯(lián)系起來(lái)了,因此操作主設(shè)備號(hào)為FPGA_MAJOR的設(shè)備文件時(shí),就會(huì)調(diào)用arm_fpga_fops中的相關(guān)函數(shù)。

  驅(qū)動(dòng)程序通過操作設(shè)備文件來(lái)向硬件設(shè)備下發(fā)數(shù)據(jù),為了解決設(shè)備文件的讀取和寫入問題,在軟件設(shè)計(jì)中借助Linux操作系統(tǒng)中提供的兩個(gè)重要函數(shù):copy_to_user和copy_form_user。這是兩個(gè)很重要也是經(jīng)常被字符設(shè)備使用到的函數(shù)。它們定義在Linux系統(tǒng)內(nèi)核的~/arch/arm/lib/usercopy.c文件中。定義形式如下:

  unsigned long  copy_to_user(void_user*to,const void*from,unsigned long n)

  {

  might_sleep();

  BUG_ON((long)n<0);

  If(access_ok(VERIFY_WRITE,to,n))

  n=_copy_to_user(to,from,n);

  return n;}

  unsigned long copy_from_user(void_user*to,const void*from,unsigned long n)

  {

  If(access_ok(VERIFY_WRITE,from,n))

  n=_copy_from_user(to,from,n);

  else

  memzero(to,n);

  return n;}

  copy_from_user()函數(shù)用于將用戶給定的參數(shù)從用戶空間到內(nèi)核空間的復(fù)制。copy_to_user()函數(shù)完成數(shù)據(jù)從內(nèi)核空間到用戶空間的復(fù)制。在設(shè)備驅(qū)動(dòng)中使用這兩個(gè)函數(shù),F(xiàn)PGA設(shè)備文件的數(shù)據(jù)和人機(jī)交互程序的數(shù)據(jù)之間就能進(jìn)行相互復(fù)制,也就實(shí)現(xiàn)了兩者的數(shù)據(jù)交換。

  這樣,使用QTouch組態(tài)軟件設(shè)計(jì)人機(jī)交互界面過程中,不需要編寫復(fù)雜的實(shí)現(xiàn)代碼,只需要將功能控件用類似于搭積木的方式構(gòu)建在一起,由軟件庫(kù)文件調(diào)用相關(guān)函數(shù)。在程序設(shè)計(jì)過程中,不需要直接使用file_operations結(jié)構(gòu)體中的操作函數(shù)編寫代碼。部分控件如圖4所示。

009.jpg

  3實(shí)驗(yàn)及數(shù)據(jù)分析

  將人機(jī)交互程序?qū)懭胗布O(shè)備中,使用設(shè)計(jì)的實(shí)際設(shè)備對(duì)數(shù)據(jù)交互進(jìn)行系統(tǒng)調(diào)試,驗(yàn)證程序的正確性。圖5為系統(tǒng)調(diào)試圖。

010.jpg

  由于時(shí)間參數(shù)的接收采用Hamming譯碼,數(shù)據(jù)進(jìn)入FPGA以后會(huì)對(duì)時(shí)間裝定參數(shù)進(jìn)行信號(hào)編碼。所以以下波形圖測(cè)得數(shù)據(jù)是以Hamming碼的形式顯示的。

011.jpg

  假設(shè)設(shè)定數(shù)據(jù)為33.3 s,即十位、個(gè)位、十分位都為3(二進(jìn)制0011)。時(shí)間設(shè)定界面如圖6所示。

  實(shí)驗(yàn)設(shè)定的時(shí)間數(shù)據(jù)通過人機(jī)交互程序下發(fā)到FPGA外設(shè)中,再由FPGA進(jìn)行編碼轉(zhuǎn)換?,F(xiàn)在以十位數(shù)為例,對(duì)得到的波形圖進(jìn)行分析,如圖7所示。由實(shí)驗(yàn)波形圖得到十位上的Hamming碼為0011101。通過查詢Hamming碼編碼矩陣,得到Hamming碼0011101對(duì)應(yīng)數(shù)字3,可見實(shí)驗(yàn)測(cè)得的數(shù)據(jù)與編碼矩陣數(shù)據(jù)完全吻合。用同樣的方法對(duì)個(gè)位和十分位進(jìn)行分析,Hamming碼解碼得到的時(shí)間參數(shù)與人機(jī)交互程序設(shè)定的時(shí)間參數(shù)完全一致(都是33.3 s),因此可以判斷參數(shù)交互準(zhǔn)確,程序設(shè)計(jì)達(dá)到預(yù)期目標(biāo)。

012.jpg

013.jpg

  高電平載波信號(hào)實(shí)驗(yàn)誤差分析如圖8所示。顯示的都是高電平調(diào)制的載波信號(hào),該信號(hào)理論波形為正弦波,但是在本次實(shí)驗(yàn)中由于設(shè)備精度的限制,在測(cè)量顯示時(shí)將載波信號(hào)的方波顯示為正弦波形,但是這樣的誤差在實(shí)驗(yàn)的可允許范圍之內(nèi),因此不會(huì)對(duì)實(shí)驗(yàn)的最終結(jié)論產(chǎn)生影響。

4 結(jié)束語(yǔ)

  本文基于QTouch的組態(tài)軟件設(shè)計(jì)的應(yīng)用程序,實(shí)現(xiàn)了與ARM+FPGA嵌入式系統(tǒng)底層硬件平臺(tái)的數(shù)據(jù)交換,設(shè)計(jì)了友好的交互界面,并通過數(shù)據(jù)交換實(shí)驗(yàn),檢測(cè)驗(yàn)證了數(shù)據(jù)交換機(jī)制的有效性,滿足設(shè)備的功能要求。本設(shè)計(jì)為設(shè)計(jì)功能更強(qiáng)更復(fù)雜的嵌入式設(shè)備打下了良好的理論和實(shí)驗(yàn)基礎(chǔ)。

  參考文獻(xiàn)

  [1] 雷斌,王寧,仇平.FPGA的漢明碼數(shù)據(jù)傳輸系統(tǒng)的設(shè)計(jì)[J].西安工業(yè)大學(xué)學(xué)報(bào),2009,29(6):559-564.

  [2] 宋寶華.Linux設(shè)備驅(qū)動(dòng)開發(fā)詳解(第2版)[M].北京:人民郵電出版社,2010.

  [3] 倪繼利.Qt及Linux操作系統(tǒng)窗口設(shè)計(jì)[M].北京:電子工業(yè)出版社,2006.

  [4] 韋東山.嵌入式Linux應(yīng)用開發(fā)完全手冊(cè)[M].北京:人民郵電出版社,2008.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
女女同性女同一区二区三区91| 欧美体内谢she精2性欧美| 亚洲日本欧美日韩高观看| 亚洲一区免费看| 99re6这里只有精品| 亚洲国产一区二区a毛片| 国产综合久久久久久| 国产欧美精品一区二区色综合| 国产精品h在线观看| 欧美看片网站| 欧美精品成人| 欧美精品 国产精品| 欧美精品激情| 欧美男人的天堂| 欧美精品一区二区三区一线天视频 | 亚洲尤物影院| 一区二区三区高清在线观看| 9人人澡人人爽人人精品| 亚洲精品视频在线看| 亚洲国产成人久久| 亚洲国产精品va在线看黑人| 亚洲国产天堂久久综合| 影音先锋成人资源站| 影音先锋久久资源网| 在线观看亚洲a| 亚洲成人在线网| 亚洲国产高清自拍| 亚洲日韩欧美视频一区| 亚洲开发第一视频在线播放| 99视频热这里只有精品免费| 一区二区三区日韩精品| 亚洲视屏一区| 亚洲欧美日韩一区二区三区在线观看| 亚洲无线视频| 午夜国产精品视频| 久久成人人人人精品欧| 亚洲国产综合91精品麻豆| 亚洲精品1区2区| 一区二区三区精品国产| 亚洲专区免费| 久久久91精品国产| 免费久久99精品国产自在现线| 欧美大片网址| 欧美日韩一区二区三区在线观看免| 欧美视频在线观看| 国产精品一区二区三区免费观看| 国产午夜精品久久久久久免费视| 黄色亚洲免费| 亚洲精品中文字幕在线| 亚洲一区欧美一区| 久久爱另类一区二区小说| 亚洲精品国偷自产在线99热| 亚洲视频中文| 欧美在现视频| 欧美国产成人精品| 国产精品免费小视频| 黄色国产精品| 一本在线高清不卡dvd| 欧美亚洲在线视频| 亚洲破处大片| 亚洲一二三区在线观看| 久久精品视频在线观看| 欧美高清在线一区| 国产精品乱码一区二三区小蝌蚪 | 亚洲人成在线观看| 亚洲一区二区免费看| 久久精品国产69国产精品亚洲| 蜜桃av一区二区三区| 欧美色精品天天在线观看视频| 国产精品网站视频| 亚洲高清视频一区二区| 亚洲午夜精品网| 亚洲国产视频一区二区| 香蕉成人久久| 欧美激情久久久| 国产欧美欧美| 亚洲人成毛片在线播放| 欧美一区二区三区在线观看 | 亚洲一二区在线| 美女国产一区| 国产精品久久久久久影视| 亚洲电影免费在线 | 亚洲精选91| 亚洲第一福利视频| 亚洲一区成人| 欧美国产精品久久| 国产日韩一区二区| av成人激情| 亚洲欧洲日韩综合二区| 久久国产精品免费一区| 欧美天堂亚洲电影院在线观看| 激情91久久| 西西裸体人体做爰大胆久久久| 日韩一区二区电影网| 久久精品中文字幕一区二区三区| 欧美日韩国产系列| 在线欧美视频| 欧美在线一区二区| 欧美一级免费视频| 国产精品99免费看| 亚洲精品美女久久7777777| 久久精品导航| 欧美综合第一页| 国产精品日本欧美一区二区三区| 亚洲精品欧美专区| 亚洲福利视频二区| 欧美中文字幕视频| 国产精品久久午夜夜伦鲁鲁| 日韩亚洲成人av在线| 亚洲美女中文字幕| 乱中年女人伦av一区二区| 国产日韩精品一区二区三区在线 | 欧美日韩精品免费看| 亚洲电影专区| 亚洲国产精品电影| 久久久亚洲精品一区二区三区| 国产欧美 在线欧美| 99精品视频免费| 夜夜嗨av一区二区三区四季av| 欧美a级一区二区| 在线观看成人网| 亚洲国产精品久久久久秋霞蜜臀 | 久久精品国产999大香线蕉| 欧美一区二区三区在线看 | 亚洲一级黄色| 国产精品白丝av嫩草影院| 日韩亚洲欧美一区二区三区| 99爱精品视频| 欧美日韩国产区| 亚洲精品一区二区三区婷婷月| 亚洲精品久久久久久下一站 | 久久理论片午夜琪琪电影网| 国产一区二区在线观看免费播放| 午夜精品视频在线| 久久精品国产96久久久香蕉| 国产手机视频精品| 欧美一区激情| 久久成人精品无人区| 国产精品一区二区久久久久| 亚洲伊人网站| 欧美在线免费观看亚洲| 国产三区精品| 久久精品五月婷婷| 欧美成人69| 亚洲精一区二区三区| 亚洲小视频在线观看| 国产精品久久久久久av福利软件 | 欧美 日韩 国产一区二区在线视频| 伊人久久婷婷色综合98网| 亚洲国产成人在线| 欧美大片第1页| 亚洲免费精品| 性感少妇一区| 国产真实久久| 亚洲精品欧美日韩专区| 欧美日韩一区不卡| 亚洲欧美国产精品桃花| 久久久人成影片一区二区三区| 在线免费观看欧美| 一区二区三区欧美在线观看| 国产精品亚发布| 日韩一级视频免费观看在线| 一本色道久久88综合亚洲精品ⅰ| 欧美日韩视频在线一区二区观看视频 | 亚洲午夜一区| 国产日韩欧美日韩| 亚洲人久久久| 欧美视频免费| 欧美专区在线观看| 欧美黄色影院| 亚洲在线中文字幕| 久久嫩草精品久久久精品一| 亚洲激情电影在线| 午夜影院日韩| 在线欧美日韩精品| 亚洲欧美日韩一区在线| 国内在线观看一区二区三区| 一区二区三区欧美成人| 国产亚洲精品综合一区91| 亚洲精品网站在线播放gif| 国产精品久久久久久久久借妻 | 国产在线观看91精品一区| 亚洲伦伦在线| 国产九区一区在线| 99精品欧美一区| 国产亚洲成av人片在线观看桃| 99国产精品视频免费观看一公开| 国产精品一区二区在线观看网站 | 久久深夜福利免费观看| 99天天综合性| 免费观看国产成人| 亚洲欧美综合| 欧美色区777第一页| 亚洲国产精品123| 国产精品午夜在线| 一区二区动漫| 亚洲二区在线观看| 久久国产毛片| 在线综合亚洲| 欧美精品1区2区|