星載電子設備多余物數據采集系統的設計
系統控制結構框圖如圖3所示。在數據控制和傳輸模塊中,邏輯控制器件EPM7064為模數轉換器件AD7892、CY7C4265以及EZ—USBFX2 CY7-C68013提供時序信號,通過調整、配合各芯片之間的通訊,控制四路數據采集和緩存模塊有序而快速地將數據傳輸至USB,保證各環節的數據采集和傳輸的數據同步不丟失,是整個控制系統的核心。本文引用地址:http://www.104case.com/article/191176.htm
3 系統軟件模塊設計
3.1 USB固件程序
固件程序采用Cypress公司提供的固件程序框架,主要負責完成芯片初始化,對芯片進行配置、設備請求、數據傳輸等相應的工作,完成特定的目的。
本系統設計的固件程序將FX2配置為Slave FIFO模式,總線寬度為16位,在4個端點中,EP2和EP4未使用,EP6和EP8配置如表1所示。由于采用自動輸入輸出模式,主機和單片機是通過旁路FX2的CPU而直接連接的,所有數據直接通過EP6或EP8管道提交,不需固件程序的干預。標志引腳(FLAGA、FLAGB)掌握FX2各端點FIFO的狀態,FLAGB定義為輸入端點的滿標志,當數據滿時該引腳為低電平;FLAGB定義為輸出端點EP8的空標志,當主機傳來的數據被讀空時該引腳為低電平。
固件框架函數流程圖如圖4所示。TD_Init()函數是在設備重枚舉和任務調度啟用之前被調用,初始化用戶的全局狀態變量,規定各種端點資源的使用;TD_Poll()函數在設備工作期間被重復調用,包含一個執行外設功能的狀態機:TD_Suspend()函數在框架進入掛起狀態之前被調用,包含使設備進入低功耗狀態的程序。
3.2 CPLD控制程序
邏輯控制器件EPM7064為模數轉換器件AD7892、CY7C4265以及EZ—USB FX2 CY7C68013提供普通的時序信號、握手信號(滿、半滿、空標志信號)、讀寫信號和輸入輸出允許信號。A/D的采樣頻率、外部FIFO和USB內部FIFO的讀寫時鐘均由EPM7064對外部時鐘的分頻和控制產生。
CHLD在完成這些端口FIFO的操作時,采用Verilog HDL硬件描述語言實現了這些操作,并在ALTERA公司提供的Quartus II 8.0開發工具綜合編譯并映射到CPLD中。
由于系統對USB采取了Slave FIFO模式異步方式讀寫數據,所以與訪問外部FIFO的讀寫時序類似。向FIFO寫數據的狀態設計進程如下。如圖5所示。
a:查詢控制信號線是否有寫事件(電平變化)發生,有就轉移到狀態b,否則保持在狀態a;
b:分配FIFOADR[1:0]=10,FIFO指針指向輸入端點,轉向狀態c;
c:檢查FIFO的滿標志是否為“假”(FIFO不滿)則轉向狀態d.否則保留在狀態c;
d:把外部數據放在FD[15:0]上,同時激活SLWR,然后轉向狀態e;
e:假如有更多的數據要傳輸,則轉向狀態b,否則轉到狀態a。
Slave FIFO模式的讀數據狀態設計進程類似。
3.3 驅動程序的設計和安裝
USB設備的驅動程序是開發USB外設的關鍵。設計的目標是在設備插上后,主機能通過USB總線自動下載該固件程序到EZ—USB外設芯片中,并自動完成該固件程序,建立起主機端與設備的通訊。USB的驅動程序包括通用驅動程序和固件下載驅動程序。前一個驅動程序采用EZ—USB軟件和硬件開發包提供的ezusb.sys驅動程序,可以直接使用,后一個驅動程序需自在固件程序框架下自行編寫并在DDK的環境下編譯生成。
所有的USB設備都至少具有一個VID和PID,VID和PID通過設備描述符表提交給Windows系統。同時,Windows系統使用INF文件將某一VID和PID綁定到某一設備驅動程序。這樣,Windows系統在知道了設備的VID和PID后,就通過存儲在INF文件中的信息查找該設備的驅動程。其中,INF文件是需編寫的安裝信息文件,開發人員只需修改INF文件中的VID、PID以及相應的設備描述符。
3.4 應用程序設計
應用程序完成的主要功能有:啟動/關閉USB設備,檢測USB設備,設置A/D,數據采集、顯示和存儲等。
同步實時系統對多任務的要求比較普遍,在后臺采集數據、進行數據顯示的同時,還要在前臺界面對用戶的操作做出響應,使用傳統的單線程編程技術效率較低,無法及時處理,必須充分利用Windows的多任務處理功能,采用多線程編程技術來處理數據。本系統采用Visual C++6.0作為程序的開發環境,并且充分運用了多線程的編程思想。在程序中設置3個線程:主線程負責用戶界面,它的生存周期就是整個應用程序的生存周期,用戶的動作(如鼠標事件、鍵盤事件等)都會觸發主線程的消息機制,從而完成對用戶的響應;而兩個分離的輔助線程分別負責數據的采集存儲、數據處理和顯示。
評論