新聞中心

EEPW首頁(yè) > 電源與新能源 > 設(shè)計(jì)應(yīng)用 > 500兆/秒高速A/D系統(tǒng)的實(shí)現(xiàn)

500兆/秒高速A/D系統(tǒng)的實(shí)現(xiàn)

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

4 Windows95下軟件設(shè)計(jì)的實(shí)時(shí)性考慮

的軟件運(yùn)行于Window 95平臺(tái)之上的。設(shè)計(jì)的指標(biāo)要求每秒能計(jì)時(shí)200次的操作,每次采集512點(diǎn),既要求在5毫秒內(nèi)將部分采到的512Bytes傳到計(jì)算機(jī)并存儲(chǔ)在硬盤上。這個(gè)要求對(duì)于PCI接口來(lái)說(shuō)是非常低的,實(shí)測(cè)結(jié)果顯示的平均反應(yīng)時(shí)間遠(yuǎn)小于這個(gè)時(shí)間。但是結(jié)果顯示系統(tǒng)的平均反應(yīng)時(shí)間遠(yuǎn)小于這個(gè)時(shí)間。但是我們發(fā)現(xiàn)系統(tǒng)每處理10 000次響應(yīng)總會(huì)有一到兩次的反應(yīng)時(shí)間特別慢,超過(guò)5毫秒有時(shí)甚至達(dá)到40毫秒。而我們的系統(tǒng)要處理的是一個(gè)連續(xù)有序的事件,要求對(duì)每一個(gè)事件都必須做反應(yīng),否則后面的事件就會(huì)被誤處理。經(jīng)過(guò)分析表明,這種現(xiàn)象完全是由于Windows95操作系統(tǒng)本身的原因造成的。Windows95是一種多任務(wù)的平臺(tái),它的核心運(yùn)行在優(yōu)先級(jí)較高的Ring0上,普通的應(yīng)用程序則運(yùn)行在優(yōu)先級(jí)低的Ring3上,應(yīng)用程序靠?jī)?nèi)核的調(diào)度分時(shí)運(yùn)行。Windows95是專門為PC機(jī)設(shè)計(jì)的,主要的用途是處理人們的娛樂(lè)以及辦公自動(dòng)化等事務(wù),考慮的是使用起來(lái)如何方便,并沒(méi)有對(duì)工業(yè)控制方面的實(shí)時(shí)性加以考慮,所以外層的應(yīng)用程序有可能會(huì)隨時(shí)被內(nèi)核打斷,根本沒(méi)有什么時(shí)間的保障。要想準(zhǔn)確無(wú)誤地處理對(duì)時(shí)間要求比較荷刻的事件,必須把處理程序放在運(yùn)行于內(nèi)核級(jí)的中斷服務(wù)程序中去執(zhí)行,這樣除非有更高級(jí)的中斷否則程序就不會(huì)被打斷。在編寫中斷服務(wù)程序處理函數(shù)時(shí)我們采用了Windriver提供的Kernal PlugIn功能,將自己編寫的中斷服務(wù)程序掛接在系統(tǒng)內(nèi)核上。用此種方法可以每秒10 000次的斷處理而不丟失。我們?cè)诰帉懼袛喾?wù)程序時(shí)借用了硬件設(shè)計(jì)中FIFO的思想,先在內(nèi)存中開辟一塊共域作緩沖區(qū)分別設(shè)置讀指針和寫指針,硬件觸發(fā)中斷后服務(wù)程序先從讀取數(shù)據(jù)進(jìn)行處理,然后發(fā)了指令控制等待下一次事件,接著向上層應(yīng)用軟件發(fā)出消息請(qǐng)求上層應(yīng)用程序從緩沖區(qū)讀取數(shù)據(jù)存盤和顯示。中斷服務(wù)程序發(fā)出的消息有可能不會(huì)馬上被上層應(yīng)用程序響應(yīng),但只要緩沖區(qū)足夠大,每一次事件產(chǎn)生的數(shù)據(jù)就不會(huì)丟失。整個(gè)程序的流程圖如圖8所示。

本數(shù)據(jù)采集系統(tǒng)成成功地在上海某科研單位得到應(yīng)用。雖然設(shè)計(jì)初衷是為了滿足某用戶的需求,但它容易擴(kuò)展成通用的A/D采樣系統(tǒng)應(yīng)用于相關(guān)的各個(gè)領(lǐng)域。


上一頁(yè) 1 2 3 4 下一頁(yè)

評(píng)論


相關(guān)推薦

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

關(guān)閉