當(dāng)前位置:首頁 > 嵌入式 > 嵌入式教程
[導(dǎo)讀]一種實(shí)時(shí)數(shù)據(jù)采集與存儲系統(tǒng)的實(shí)現(xiàn)方法

 1  引言

  隨著信息科學(xué)的飛速發(fā)展,數(shù)據(jù)采集和存儲技術(shù)已經(jīng)是數(shù)字信號處理中非常重要的環(huán)節(jié),將決定整個(gè)系統(tǒng)的性能。它廣泛應(yīng)用于雷達(dá),通信,遙測遙感等領(lǐng)域。它己經(jīng)成為人們獲得外界信息的重要手段?;诳偩€的數(shù)據(jù)采集與存儲系統(tǒng),由于可靠且易于實(shí)現(xiàn)、經(jīng)濟(jì)等優(yōu)點(diǎn),得到了廣泛的應(yīng)用。但當(dāng)數(shù)據(jù)傳輸率很高時(shí),保持高速數(shù)據(jù)存儲過程的可靠性、實(shí)時(shí)性將會(huì)成為一個(gè)比較棘手的問題。為此一些廠商提供了雙總線技術(shù)、64位/66MHzPCI總線系統(tǒng)來解決這問題。但這些技術(shù)較為昂貴,且忽略了現(xiàn)有的硬件設(shè)備。經(jīng)過實(shí)驗(yàn)與探索,我們選用ADLINK公司的PCI-7300A_RevB超高速數(shù)字I/O卡,利用現(xiàn)有的單(32位/33MHz)PCI總線的計(jì)算機(jī)系統(tǒng)構(gòu)成低成本的硬件平臺,并利用自己開發(fā)的軟件系統(tǒng),最終實(shí)現(xiàn)了高速(45Mbytes/sec)持續(xù)的數(shù)據(jù)采集于存儲。

  2  硬件組成及注意事項(xiàng)

  為了利用現(xiàn)有的硬件設(shè)備,降低成本;我們采用ADLINK公司出品的PCI-7300A_RevB超高速數(shù)字I/O卡作為數(shù)據(jù)采集部分。該卡的主要特性如下:

  ·32位數(shù)字I/O通道

  ·32位PCI總線

  ·通過觸發(fā)信號控制數(shù)據(jù)采集操作的開始。

  ·100針SCSI型連接器

  ·分散/聚攏方式的DMA

  ·最高傳輸速率80Mbytes/sec

  要實(shí)現(xiàn)實(shí)時(shí)高速的數(shù)據(jù)存儲,使用的一般的硬盤是不行的。所以我們選用希捷公司出品的型號為ST3146707LC的SCSI硬盤,該硬盤的容量是146GB,能滿足記錄大量數(shù)據(jù)的需要,其轉(zhuǎn)速為10Krpm。相應(yīng)的SCSI硬盤控制器,選用Adaptec公司出品的型號為Adaptec19160的Ultra160-SCSI硬盤控制器。

  在搭建硬件平臺的過程中有些問題是必須注意的,否則系統(tǒng)不能正常工作。首先,PCI-7300A_RevB卡雖然采用分散/聚攏方式的DMA,但它對CPU資源的占用率是非常高的。經(jīng)過實(shí)驗(yàn)證明,要保證整個(gè)數(shù)據(jù)采集與存儲系統(tǒng)正常工作,只能使用奔四1.7G以上的計(jì)算機(jī)系統(tǒng)。其次,Windows系統(tǒng)允許多個(gè)設(shè)備共享一個(gè)中斷請求號(IRQ)。為了保證存儲過程的實(shí)時(shí)性,必須確保SCSI硬盤控制器和PCI-7300A_RevB卡使用不同的IRQ??梢栽谥靼錌IOS里把Pnp(即插即用)/PCI設(shè)備的IRQ進(jìn)行手動(dòng)配置。最后Windows2000ServicePack2(SP2)及早期版本不支持大于137GB容量的硬盤。須要先安裝ServicePack3,再在注冊表(HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesAtapiParameters)里添加一個(gè)REG_DWORD類型的參數(shù)EnableBigLba,并把值設(shè)成0x1。這樣146GB的硬盤才能工作正常。

  3  軟件設(shè)計(jì)

  軟件設(shè)計(jì)直接決定硬件是否能正常工作,以及能否充分發(fā)揮硬件的性能。

  3.1 PCIS-DASK及雙緩沖區(qū)模式的工作原理

  PCIS-DASK是ADLINK公司為自己的產(chǎn)品提供的驅(qū)動(dòng)程序包,提供了專門用于實(shí)現(xiàn)高速數(shù)據(jù)采集的連續(xù)多緩沖區(qū)操作的一組API函數(shù)。通過這組API函數(shù),我們可以按照雙緩沖區(qū)的原理,非常方便地實(shí)現(xiàn)對數(shù)據(jù)的實(shí)時(shí)、高速、連續(xù)的采集與存儲。

  雙緩沖區(qū)模式,在工程上稱為“乒乓”緩沖區(qū)模式。跟常用的單緩沖區(qū)模式相比雙緩沖區(qū)模式的優(yōu)點(diǎn)是,它可以使用較小容量的內(nèi)存,不間斷地緩沖幾乎無限量的數(shù)據(jù)(輸入與輸出端需協(xié)同工作)。這種緩沖區(qū)模式的工作原理是:在內(nèi)存里開辟兩塊容量相等的緩沖區(qū)(以下將分別它們稱為第一緩沖區(qū)和第二緩沖區(qū))作為連續(xù)數(shù)據(jù)輸入的緩沖區(qū)。工作開始時(shí),數(shù)據(jù)采集卡首先將數(shù)據(jù)寫入第一緩沖區(qū)中,在數(shù)據(jù)采集卡開始把數(shù)據(jù)寫入第二緩沖區(qū)的同時(shí),用戶程序可以根據(jù)自身需要取出第一緩沖區(qū)中的數(shù)據(jù)做特定的處理。當(dāng)?shù)诙彌_區(qū)被寫滿后,數(shù)據(jù)采集卡回到第一緩沖區(qū)的起始處,以覆蓋舊數(shù)據(jù)的方式,把新數(shù)據(jù)寫入第一緩沖區(qū)中;與此同時(shí)用戶程序取出第二緩沖區(qū)中的數(shù)據(jù)。整個(gè)數(shù)據(jù)采集處理過程可以如此不斷地循環(huán)進(jìn)行下去。

  3.2 板卡驅(qū)動(dòng)設(shè)置及注意的問題

  對板卡驅(qū)動(dòng)的深刻理解是編寫好數(shù)據(jù)采集于存儲程序的前提。在連續(xù)數(shù)據(jù)輸入模式下,板卡驅(qū)動(dòng)程序需要在系統(tǒng)內(nèi)存里開辟一塊緩沖區(qū)做為二級緩存,用戶可以設(shè)置該緩沖區(qū)的大小。方法是:從菜單開始/程序/PCI-DASK/NuDAQPCIconfigurationUtility打開DASK2000DeviceDriverConfiguration對話框,從CardType組合框中選擇Pci7300A_RevB項(xiàng),在DI欄輸入你想要開辟的緩沖區(qū)容量,點(diǎn)擊OK按鈕完成設(shè)置。需要注意的是板卡驅(qū)動(dòng)設(shè)置的緩沖區(qū)(簡稱驅(qū)動(dòng)緩沖區(qū))容量與用戶程序開辟的緩沖區(qū)(用戶緩沖區(qū))容量存在著一定關(guān)系。經(jīng)過我們多次實(shí)驗(yàn),得出驅(qū)動(dòng)緩沖區(qū)容量大約是用戶緩沖區(qū)的3倍;因此,當(dāng)驅(qū)動(dòng)緩沖區(qū)過小,而用戶緩沖區(qū)較大時(shí),會(huì)出現(xiàn)錯(cuò)誤。

  過小,而用戶緩沖區(qū)較大時(shí),會(huì)出現(xiàn)錯(cuò)誤。

  3.3 VisualC++開發(fā)環(huán)境的設(shè)置

  為了使用PCIS-DASK提供的實(shí)現(xiàn)連續(xù)多緩沖區(qū)操作的API函數(shù),以及初始化板卡、設(shè)置板卡工作方式的API函數(shù);需要VisualC++連接PCI-DASK提供的動(dòng)態(tài)連接庫(Pci-dask.lib)。具體方法是:打開工程,從菜單Project/Setting…打開ProjectSetting對話框,切換到Link選項(xiàng)卡,在Object/librarymodules攔中添加Pci-dask.lib,點(diǎn)擊OK按鈕完成設(shè)置。最后在工程中加入頭文件Dask.h.。[!--empirenews.page--]

  3.4 多線程的實(shí)時(shí)數(shù)據(jù)存儲軟件設(shè)計(jì)

 

  在要求高速、實(shí)時(shí)和連續(xù)采集和存儲的情況下,一方面要求系統(tǒng)不間斷地進(jìn)行數(shù)據(jù)采集,同時(shí)還要進(jìn)行數(shù)據(jù)實(shí)時(shí)地存儲,否則將會(huì)丟失數(shù)據(jù),造成數(shù)據(jù)不完整。為了解決這個(gè)問題,我們在軟件實(shí)現(xiàn)中,引入了Windows的多任務(wù)處理技術(shù)(multitasking)。在程序里創(chuàng)建兩個(gè)工作線程分別完成數(shù)據(jù)采集和數(shù)據(jù)存儲工作。緩沖方式采用上面所說雙緩沖區(qū)模式,當(dāng)數(shù)據(jù)采集線程(SampleThreadProc)把采集到的數(shù)據(jù)寫入第一緩沖區(qū)時(shí),數(shù)據(jù)存儲線程(StorageThreadProc)把第二緩沖區(qū)的數(shù)據(jù)存入SCSI硬盤;當(dāng)數(shù)據(jù)采集線程把數(shù)據(jù)寫入第二緩沖區(qū)時(shí),數(shù)據(jù)存儲線程把第一緩沖區(qū)的數(shù)據(jù)存入SCSI硬盤;如此循環(huán)。另外通過實(shí)際實(shí)驗(yàn)測試Adaptec19160Ultra160-SCSI硬盤控制器,配合希捷公司出品的ST3146707LCSCSI硬盤,持續(xù)寫入速率能達(dá)到80Mbytes/sec。遠(yuǎn)大于45Mbytes/sec的采集速率。所以當(dāng)數(shù)據(jù)采集線程寫滿其中一個(gè)緩沖區(qū)之前,數(shù)據(jù)存儲線程已經(jīng)把另一個(gè)緩沖區(qū)里的數(shù)據(jù)存儲入SCSI硬盤。所以這種方法能保證數(shù)據(jù)的實(shí)時(shí)性、完整性和連續(xù)性。其程序流程圖如圖1。

[!--empirenews.page--]

 

  3.5 軟件實(shí)現(xiàn)

 

  由于篇幅所限,下面僅給出程序中核心的代碼:

  4  性能評估

  為了驗(yàn)證該系統(tǒng)的性能,我們對其所能達(dá)到的采集和存儲速率、以及數(shù)據(jù)正確率進(jìn)行了測試和分析。

  在測試中我們使用了自己設(shè)計(jì)的數(shù)據(jù)源,它能以任意速率發(fā)送32位的線性數(shù)字信號。另外編寫了一個(gè)數(shù)據(jù)檢測程序,可給出存儲的數(shù)據(jù)的正確率和顯示數(shù)據(jù)錯(cuò)誤的地方。經(jīng)過長時(shí)間的測試,得到結(jié)果是:數(shù)據(jù)源發(fā)送速率為45Mbytes/sec時(shí),存儲的數(shù)據(jù)能達(dá)到100%的正確率。當(dāng)數(shù)據(jù)源發(fā)送速率為50Mbytes/sec時(shí),數(shù)據(jù)有錯(cuò)誤。

  經(jīng)分析原因出在數(shù)據(jù)采集過程,當(dāng)有很多位發(fā)生進(jìn)位時(shí)(如FFFFFFFF→00000000)采集卡不能正確地采樣數(shù)據(jù)。實(shí)際上經(jīng)過特殊處理后,這樣的數(shù)據(jù)還是可以使用的。

  計(jì)算機(jī)32位/33MHzPCI總線帶寬典型的輸出數(shù)據(jù)吞吐量為100Mbytes/sec,輸入數(shù)據(jù)吞吐量為120Mbytes/sec,而系統(tǒng)中其他的PCI設(shè)備也需要占用一定的帶寬,并且數(shù)據(jù)采集和存儲過程都要占用PCI總線帶寬;因此,45Mbytes/sec(100%正確率)的采集和存儲速率已經(jīng)接近系統(tǒng)和硬件的極限。

  5  結(jié)語

  本文介紹的實(shí)現(xiàn)方法易于實(shí)現(xiàn),且充分挖掘了硬件的性能,可滿足對數(shù)據(jù)采集與實(shí)時(shí)存儲速率要求較高(≤45Mbytes/sec)的應(yīng)用。由于使用的硬件平臺是普通的奔四級PC機(jī),所以開發(fā)成本較低。另外文中對實(shí)現(xiàn)過程中應(yīng)注意的問題作了詳細(xì)說明并給出核心編程部分,使讀者很容易在較短時(shí)間內(nèi)開發(fā)出滿足自己需要的系統(tǒng)。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉