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

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

  關鍵詞: QTouch;人機交互;嵌入式Linux;ARM+FPGA;數(shù)據(jù)交換

0 引言

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

1人機界面設計原理

  QTouch軟件主要分為兩個重要的組成部分,一是PC端的軟件設計部分,二是嵌入式平臺的運行部分。兩者通過協(xié)議進行平臺間通信,在PC端設計完成的應用程序通過ModbusTCP協(xié)議上傳到嵌入式平臺部分,上傳完成后脫離PC端,在嵌入式平臺上獨立運行。其整體框架結構如圖1所示。

006.jpg

  軟件結構分為三層,分別是人機交互界面、數(shù)據(jù)庫和底層設備驅動數(shù)據(jù)。在對底層硬件進行數(shù)據(jù)寫入時,人機交互界面數(shù)據(jù)由操作人員通過手動輸入的方式給定,并通過應用程序傳入程序的實時數(shù)據(jù)庫,實時數(shù)據(jù)庫接收到數(shù)據(jù)后,驅動程序就可以調用實時數(shù)據(jù)庫中的數(shù)據(jù),對底層硬件進行數(shù)據(jù)寫入。接收反饋數(shù)據(jù)時,由底層硬件檢測到數(shù)據(jù),再由驅動程序將其存入實時數(shù)據(jù)庫,應用程序通過實時關聯(lián)某個數(shù)據(jù)存儲單元的數(shù)據(jù),就可以實時地接收到硬件反饋的數(shù)據(jù)信息并顯示在屏幕上。數(shù)據(jù)交互原理如圖2所示。

007.jpg

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

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

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

  Hamming編碼矩陣如下:

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

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

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

  2.2.1 硬件設備、操作系統(tǒng)和人機界面的關系[2-4]

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

008.jpg

  2.2.2 設備驅動[2]

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

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

  Staticstructfile_operationsarm_fpga_fops={

  .owner=THIS_MODULE,

  .open=arm_fpga_open,

  .write=arm_fpga_write,

  .read=arm_fpga_read,

  .ioctl=arm_fpga_ioctl,};

  將FPGA字符設備和arm_fpga_fops結構體進行關聯(lián)。關聯(lián)程序的代碼設計如下:

  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ù)中設置FPGA_MAJOR=0,由系統(tǒng)自動分配主設備號。DEVICE_NAME定義為設備名稱。經(jīng)過注冊,主設備號就和具體的file_operations結構聯(lián)系起來了,因此操作主設備號為FPGA_MAJOR的設備文件時,就會調用arm_fpga_fops中的相關函數(shù)。

  驅動程序通過操作設備文件來向硬件設備下發(fā)數(shù)據(jù),為了解決設備文件的讀取和寫入問題,在軟件設計中借助Linux操作系統(tǒng)中提供的兩個重要函數(shù):copy_to_user和copy_form_user。這是兩個很重要也是經(jīng)常被字符設備使用到的函數(shù)。它們定義在Linux系統(tǒng)內核的~/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ù)從用戶空間到內核空間的復制。copy_to_user()函數(shù)完成數(shù)據(jù)從內核空間到用戶空間的復制。在設備驅動中使用這兩個函數(shù),F(xiàn)PGA設備文件的數(shù)據(jù)和人機交互程序的數(shù)據(jù)之間就能進行相互復制,也就實現(xiàn)了兩者的數(shù)據(jù)交換。

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

009.jpg

  3實驗及數(shù)據(jù)分析

  將人機交互程序寫入硬件設備中,使用設計的實際設備對數(shù)據(jù)交互進行系統(tǒng)調試,驗證程序的正確性。圖5為系統(tǒng)調試圖。

010.jpg

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

011.jpg

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

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

012.jpg

013.jpg

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

4 結束語

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

  參考文獻

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

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

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

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


此內容為AET網(wǎng)站原創(chuàng),未經(jīng)授權禁止轉載。