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