新聞中心

EEPW首頁(yè) > EDA/PCB > 設(shè)計(jì)應(yīng)用 > 星載電子設(shè)備多余物數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)

星載電子設(shè)備多余物數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)

作者: 時(shí)間:2011-06-10 來(lái)源:網(wǎng)絡(luò) 收藏

系統(tǒng)控制結(jié)構(gòu)框圖如圖3所示。在數(shù)據(jù)控制和傳輸模塊中,邏輯控制器件EPM7064為模數(shù)轉(zhuǎn)換器件AD7892、CY7C4265以及EZ—USBFX2 CY7-C68013提供時(shí)序信號(hào),通過(guò)調(diào)整、配合各芯片之間的通訊,控制四路數(shù)據(jù)采集和緩存模塊有序而快速地將數(shù)據(jù)傳輸至USB,保證各環(huán)節(jié)的數(shù)據(jù)采集和傳輸?shù)臄?shù)據(jù)同步不丟失,是整個(gè)控制系統(tǒng)的核心。

本文引用地址:http://butianyuan.cn/article/191176.htm

c.JPG



3 系統(tǒng)軟件模塊設(shè)計(jì)
3.1 USB固件程序
固件程序采用Cypress公司提供的固件程序框架,主要負(fù)責(zé)完成芯片初始化,對(duì)芯片進(jìn)行配置、設(shè)備請(qǐng)求、數(shù)據(jù)傳輸?shù)认鄳?yīng)的工作,完成特定的目的。
本系統(tǒng)設(shè)計(jì)的固件程序?qū)X2配置為Slave FIFO模式,總線寬度為16位,在4個(gè)端點(diǎn)中,EP2和EP4未使用,EP6和EP8配置如表1所示。由于采用自動(dòng)輸入輸出模式,主機(jī)和單片機(jī)是通過(guò)旁路FX2的CPU而直接連接的,所有數(shù)據(jù)直接通過(guò)EP6或EP8管道提交,不需固件程序的干預(yù)。標(biāo)志引腳(FLAGA、FLAGB)掌握FX2各端點(diǎn)FIFO的狀態(tài),F(xiàn)LAGB定義為輸入端點(diǎn)的滿標(biāo)志,當(dāng)數(shù)據(jù)滿時(shí)該引腳為低電平;FLAGB定義為輸出端點(diǎn)EP8的空標(biāo)志,當(dāng)主機(jī)傳來(lái)的數(shù)據(jù)被讀空時(shí)該引腳為低電平。

d.JPG

固件框架函數(shù)流程圖如圖4所示。TD_Init()函數(shù)是在設(shè)備重枚舉和任務(wù)調(diào)度啟用之前被調(diào)用,初始化用戶的全局狀態(tài)變量,規(guī)定各種端點(diǎn)資源的使用;TD_Poll()函數(shù)在設(shè)備工作期間被重復(fù)調(diào)用,包含一個(gè)執(zhí)行外設(shè)功能的狀態(tài)機(jī):TD_Suspend()函數(shù)在框架進(jìn)入掛起狀態(tài)之前被調(diào)用,包含使設(shè)備進(jìn)入低功耗狀態(tài)的程序。

e.JPG


3.2 CPLD控制程序
邏輯控制器件EPM7064為模數(shù)轉(zhuǎn)換器件AD7892、CY7C4265以及EZ—USB FX2 CY7C68013提供普通的時(shí)序信號(hào)、握手信號(hào)(滿、半滿、空標(biāo)志信號(hào))、讀寫(xiě)信號(hào)和輸入輸出允許信號(hào)。A/D的采樣頻率、外部FIFO和USB內(nèi)部FIFO的讀寫(xiě)時(shí)鐘均由EPM7064對(duì)外部時(shí)鐘的分頻和控制產(chǎn)生。
CHLD在完成這些端口FIFO的操作時(shí),采用Verilog HDL硬件描述語(yǔ)言實(shí)現(xiàn)了這些操作,并在ALTERA公司提供的Quartus II 8.0開(kāi)發(fā)工具綜合編譯并映射到CPLD中。
由于系統(tǒng)對(duì)USB采取了Slave FIFO模式異步方式讀寫(xiě)數(shù)據(jù),所以與訪問(wèn)外部FIFO的讀寫(xiě)時(shí)序類似。向FIFO寫(xiě)數(shù)據(jù)的狀態(tài)設(shè)計(jì)進(jìn)程如下。如圖5所示。

f.JPG


a:查詢控制信號(hào)線是否有寫(xiě)事件(電平變化)發(fā)生,有就轉(zhuǎn)移到狀態(tài)b,否則保持在狀態(tài)a;
b:分配FIFOADR[1:0]=10,F(xiàn)IFO指針指向輸入端點(diǎn),轉(zhuǎn)向狀態(tài)c;
c:檢查FIFO的滿標(biāo)志是否為“假”(FIFO不滿)則轉(zhuǎn)向狀態(tài)d.否則保留在狀態(tài)c;
d:把外部數(shù)據(jù)放在FD[15:0]上,同時(shí)激活SLWR,然后轉(zhuǎn)向狀態(tài)e;
e:假如有更多的數(shù)據(jù)要傳輸,則轉(zhuǎn)向狀態(tài)b,否則轉(zhuǎn)到狀態(tài)a。
Slave FIFO模式的讀數(shù)據(jù)狀態(tài)設(shè)計(jì)進(jìn)程類似。
3.3 驅(qū)動(dòng)程序的設(shè)計(jì)和安裝
USB設(shè)備的驅(qū)動(dòng)程序是開(kāi)發(fā)USB外設(shè)的關(guān)鍵。設(shè)計(jì)的目標(biāo)是在設(shè)備插上后,主機(jī)能通過(guò)USB總線自動(dòng)下載該固件程序到EZ—USB外設(shè)芯片中,并自動(dòng)完成該固件程序,建立起主機(jī)端與設(shè)備的通訊。USB的驅(qū)動(dòng)程序包括通用驅(qū)動(dòng)程序和固件下載驅(qū)動(dòng)程序。前一個(gè)驅(qū)動(dòng)程序采用EZ—USB軟件和硬件開(kāi)發(fā)包提供的ezusb.sys驅(qū)動(dòng)程序,可以直接使用,后一個(gè)驅(qū)動(dòng)程序需自在固件程序框架下自行編寫(xiě)并在DDK的環(huán)境下編譯生成。
所有的USB設(shè)備都至少具有一個(gè)VID和PID,VID和PID通過(guò)設(shè)備描述符表提交給Windows系統(tǒng)。同時(shí),Windows系統(tǒng)使用INF文件將某一VID和PID綁定到某一設(shè)備驅(qū)動(dòng)程序。這樣,Windows系統(tǒng)在知道了設(shè)備的VID和PID后,就通過(guò)存儲(chǔ)在INF文件中的信息查找該設(shè)備的驅(qū)動(dòng)程。其中,INF文件是需編寫(xiě)的安裝信息文件,開(kāi)發(fā)人員只需修改INF文件中的VID、PID以及相應(yīng)的設(shè)備描述符。
3.4 應(yīng)用程序設(shè)計(jì)
應(yīng)用程序完成的主要功能有:?jiǎn)?dòng)/關(guān)閉USB設(shè)備,檢測(cè)USB設(shè)備,設(shè)置A/D,數(shù)據(jù)采集、顯示和存儲(chǔ)等。
同步實(shí)時(shí)系統(tǒng)對(duì)多任務(wù)的要求比較普遍,在后臺(tái)采集數(shù)據(jù)、進(jìn)行數(shù)據(jù)顯示的同時(shí),還要在前臺(tái)界面對(duì)用戶的操作做出響應(yīng),使用傳統(tǒng)的單線程編程技術(shù)效率較低,無(wú)法及時(shí)處理,必須充分利用Windows的多任務(wù)處理功能,采用多線程編程技術(shù)來(lái)處理數(shù)據(jù)。本系統(tǒng)采用Visual C++6.0作為程序的開(kāi)發(fā)環(huán)境,并且充分運(yùn)用了多線程的編程思想。在程序中設(shè)置3個(gè)線程:主線程負(fù)責(zé)用戶界面,它的生存周期就是整個(gè)應(yīng)用程序的生存周期,用戶的動(dòng)作(如鼠標(biāo)事件、鍵盤(pán)事件等)都會(huì)觸發(fā)主線程的消息機(jī)制,從而完成對(duì)用戶的響應(yīng);而兩個(gè)分離的輔助線程分別負(fù)責(zé)數(shù)據(jù)的采集存儲(chǔ)、數(shù)據(jù)處理和顯示。



評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉