數(shù)據(jù)采集廣泛應(yīng)用于民用、工業(yè)、軍事,航空航天等各個(gè)領(lǐng)域,且在對(duì)一些復(fù)雜的系統(tǒng)進(jìn)行連續(xù)測(cè)試時(shí),擁有多通道、大容量、高精度的數(shù)采系統(tǒng)尤為重要,而現(xiàn)有的采集系統(tǒng)并未能滿足海量數(shù)據(jù)的實(shí)時(shí)存儲(chǔ)要求。針對(duì)此問題,文中設(shè)計(jì)了能對(duì)高達(dá)128路數(shù)據(jù)進(jìn)行采樣,采樣率高達(dá)1.6 M/s,存儲(chǔ)容量可達(dá)32GB的實(shí)時(shí)信號(hào)采集系統(tǒng)。存儲(chǔ)部分采用FLASH和SD卡同時(shí)存儲(chǔ),F(xiàn)PGA作為數(shù)據(jù)采集與SD卡之間的高速接口,且SD卡拆裝方便,容量可變,用戶可根據(jù)需求更換存儲(chǔ)容量,大容量的存儲(chǔ)設(shè)備使數(shù)據(jù)進(jìn)行實(shí)時(shí)備份成為可能,提高了系統(tǒng)的可靠性。
1.工作原理簡介
1.1 系統(tǒng)工作原理
系統(tǒng)FPGA選用Spartan II系列的XC2S100ETQl44芯片,系統(tǒng)上電后,由靜態(tài)存儲(chǔ)器XCl8V01將固化在其中的數(shù)字邏輯電路映射到FPGA器件中,從而使FPGA成為真正意義上的控制核心。當(dāng)啟動(dòng)信號(hào)有效時(shí),在中心控制邏輯的作用下,SD卡初始化,且啟動(dòng)整個(gè)數(shù)據(jù)采集工作,控制8片16選1模擬選擇開關(guān)進(jìn)行通道選擇,并控制8片12位高速模數(shù)轉(zhuǎn)換器進(jìn)行模擬電壓的采集,為避免數(shù)據(jù)存儲(chǔ)空間的不足與浪費(fèi),系統(tǒng)有兩種工作模式,當(dāng)采集短期數(shù)據(jù)時(shí),系統(tǒng)啟用FLASH模式;當(dāng)采集長期數(shù)據(jù)時(shí),系統(tǒng)啟用SD模式,將采集到的實(shí)時(shí)數(shù)據(jù)根據(jù)具體的工作模式分時(shí)存儲(chǔ)到FLASH存儲(chǔ)器和大容量SD卡中。當(dāng)采集任務(wù)完成后,將讀數(shù)電纜接好,由上位機(jī)軟件通過遠(yuǎn)程讀數(shù)裝置發(fā)出FLASH讀數(shù)和擦除指令,也可以用讀卡器對(duì)SD卡進(jìn)行讀數(shù)。
1.2 系統(tǒng)總體設(shè)計(jì)方案
系統(tǒng)能夠?qū)?28路模擬信號(hào)同時(shí)采集,其中單路模擬信號(hào)的采樣率可達(dá)12.5 kS/s,總采樣率為1.6 MS/s,為了滿足至少4 MB/s的數(shù)據(jù)寫入能力,設(shè)計(jì)選用型號(hào)為K9FIG08UOA大容量128M字節(jié)FLASH,其寫入速度典型值為7 MB/s。對(duì)于SD卡,采用SD2.0,此卡采用了FAT32文件系統(tǒng),這樣一來,最大可以支持32GB的容量,目前已經(jīng)做到了4GB,寫人速度最高可達(dá)5 MB/s。
系統(tǒng)主要包括5個(gè)模塊:電源模塊、信號(hào)調(diào)理模塊、通道選擇模塊、A/D轉(zhuǎn)換模塊和數(shù)據(jù)存儲(chǔ)模塊。Spartan II系列的XC2S100E為主控制器,系統(tǒng)性能能達(dá)到200 MHz,該器件集成了豐富的邏輯門,且內(nèi)含有10塊雙端口RAM,通過雙端口RAM可以組成內(nèi)部FIFO來緩存數(shù)據(jù)。系統(tǒng)的核心部分是A/D轉(zhuǎn)換,A/D轉(zhuǎn)換包括采樣、保持、量化和編碼4個(gè)過程。設(shè)計(jì)中采用的是AD7495,它具有精度高(12 bit),轉(zhuǎn)換速度快(最高1.0 MSPS),功耗低(典型值10.5 mW)等特點(diǎn)。為保證高的采樣率,系統(tǒng)采用多路開關(guān)方式進(jìn)行信號(hào)的通道選擇,多片高速A/D器件流水工作,由FPGA發(fā)出控制信號(hào),對(duì)它們的地址等時(shí)間推進(jìn)。鑒于此,選用8片16選1的ADG506芯片,其切換速度最高可達(dá)108次每秒,且其功耗低,外圍電路簡單,其總體結(jié)構(gòu)框圖如圖1所示。
圖1 總體結(jié)構(gòu)框圖
2.系統(tǒng)軟件設(shè)計(jì)
2.1 系統(tǒng)時(shí)序控制
在系統(tǒng)中,所有時(shí)序控制均由FPGA來完成,采用VHDL語言編寫控制程序,這些時(shí)序控制包括對(duì)A/D轉(zhuǎn)換器的控制,12位串行數(shù)據(jù)的處理,數(shù)據(jù)的緩存,以及對(duì)FLASH、SD卡讀寫的控制。系統(tǒng)對(duì)輸入的128路模擬信號(hào)先進(jìn)行經(jīng)過初步調(diào)理,傳人模擬開關(guān),模擬開關(guān)采用8片無差別16路選一開關(guān),每片選通16路信號(hào),共128路信號(hào)。當(dāng)轉(zhuǎn)換到某一通道時(shí),F(xiàn)PGA同時(shí)啟動(dòng)A/D進(jìn)行模數(shù)轉(zhuǎn)換。在此之前,信號(hào)再次經(jīng)過調(diào)理。經(jīng)A/D采樣電路采樣轉(zhuǎn)換后的數(shù)據(jù)經(jīng)FPGA的控制送到FLASH中,當(dāng)采集時(shí)間超過30 S時(shí),系統(tǒng)自動(dòng)啟用SD模式將數(shù)據(jù)存人SD卡中。系統(tǒng)關(guān)鍵難題在于用FPGA協(xié)調(diào)控制好A/D采樣的時(shí)序,多路開關(guān)的轉(zhuǎn)換頻率以及FLASH、SD卡存儲(chǔ)器編程的邏輯,而不至于導(dǎo)致AJD采樣速率過高,數(shù)據(jù)存儲(chǔ)步調(diào)跟不上,或者A/D采樣速率過低,數(shù)據(jù)存儲(chǔ)器空耗著等待讀取數(shù)據(jù),導(dǎo)致整個(gè)系統(tǒng)的性能下降。鑒于此,整個(gè)系統(tǒng)采用全局時(shí)鐘,使得啟動(dòng)A/D轉(zhuǎn)換,通道轉(zhuǎn)換和數(shù)據(jù)FIFO存儲(chǔ)的時(shí)序統(tǒng)一。
2.2 FPGA內(nèi)部FIFO設(shè)計(jì)
數(shù)據(jù)經(jīng)A/D轉(zhuǎn)換后,由FPGA時(shí)序控制存人外部FLASH中,但由于Flash是按頁存儲(chǔ)的,每存滿一頁后,都要對(duì)下一頁重新寫人控制字和地址。在設(shè)計(jì)中,用硬件語言狀態(tài)機(jī)來控制FLASH的壞塊檢測(cè)和每頁的控制字和地址的輸入,且最長消耗500個(gè)系統(tǒng)周期,故最大編程時(shí)間為500×50 ns=25 us,而A/D每1us上傳4B的數(shù)據(jù),故FLASH頁編程期間A/D最多上傳100B,則為避免數(shù)據(jù)的丟失,在這段時(shí)間內(nèi)必須有一個(gè)緩存裝置來存儲(chǔ)A/D轉(zhuǎn)換的數(shù)據(jù),異步FIFO是一種在電子系統(tǒng)中廣泛應(yīng)用的緩存器件,而在設(shè)計(jì)中,充分利用了FPGA內(nèi)部集成的豐富雙端口RAM。通過將4個(gè)寬度為2位,深度為1024的雙口RAM并聯(lián)起來構(gòu)成一個(gè)容量為1K的異步FIFO模塊來緩存數(shù)據(jù)。這種異步FIFO比外部FIFO芯片更能提高系統(tǒng)的穩(wěn)定性。
2.3 數(shù)據(jù)編幀
系統(tǒng)A/D流水線工作同時(shí)有8路信號(hào)分別傳人8片A/D,為了區(qū)分不同通道的數(shù)據(jù)及防止數(shù)據(jù)丟失,且便于上位機(jī)及相關(guān)軟件對(duì)數(shù)據(jù)的后續(xù)處理,必須對(duì)不同通道的數(shù)據(jù)進(jìn)行編幀。采用的是12位A/D,轉(zhuǎn)換前4個(gè)周期先輸出4個(gè)無效零,接下來8路A/D串行輸出12位轉(zhuǎn)換數(shù)據(jù),故將每路數(shù)據(jù)編幀為16位,高4位由3位通道號(hào)和1位標(biāo)志位(前64路標(biāo)志位為‘0’,后64路標(biāo)志位為‘1’)構(gòu)成,當(dāng)8路數(shù)據(jù)處理完成后,切換下一通道,將處理好的8路數(shù)據(jù)(每路16位)依次按高8位和低8位的次序在寫信號(hào)的上升沿送人雙口RAM的A口。為確保數(shù)據(jù)不丟失,需在每幀數(shù)據(jù)前加上2個(gè)字節(jié)的幀頭EB,90和2個(gè)字節(jié)的幀計(jì)數(shù),1個(gè)字節(jié)的幀尾,故一幀數(shù)據(jù)共有21個(gè)字節(jié),具體幀格式如圖2所示。
圖2 數(shù)據(jù)幀格式
3.SD卡驅(qū)動(dòng)設(shè)計(jì)
SD卡有2種工作模式:SD模式和SPI模式,由于SD卡工作在SPI模式時(shí),只需要4根信號(hào)線,即cs片選、DIN數(shù)據(jù)輸入、CLK時(shí)鐘、DOUT數(shù)據(jù)輸出,接口與操作方法比較簡單,易于實(shí)現(xiàn),本設(shè)計(jì)選用SPI模式。驅(qū)動(dòng)SD卡所涉及的主要功能操作有:SD卡復(fù)位、初始化、寫SD卡扇區(qū)、讀SD卡扇區(qū)。在系統(tǒng)上電后,首先由控制器向CLK時(shí)鐘信號(hào)線上發(fā)送至少74個(gè)系統(tǒng)時(shí)鐘信號(hào)來喚醒SD卡的SPI通信,然后發(fā)送CMD0復(fù)位命令對(duì)SD進(jìn)行復(fù)位操作,當(dāng)SD卡數(shù)據(jù)輸出端讀取復(fù)位成功標(biāo)志(0lH)時(shí),再發(fā)送CMD55+ACMD41命令對(duì)SD卡進(jìn)行初始化,初始化完成之后,在SD卡中建立FAT文件系統(tǒng),系統(tǒng)觸發(fā)后所采集數(shù)據(jù)就以文件的形式存放在SD卡上,用通用的SD卡讀卡器將數(shù)據(jù)讀出后就可以利用Windows操作系統(tǒng)下的MatLAB或其他高級(jí)軟件對(duì)數(shù)據(jù)進(jìn)行分析處理。
3.1 SD卡文件系統(tǒng)結(jié)構(gòu)
微軟在Dos/Windows系列操作系統(tǒng)中共使用了6種不同的文件系統(tǒng)(包括即將在windows的下一個(gè)版本中使用的Winfs)。它們分別是:FAtl2、FATl6、FAT32、NTFS、NTFS5.0和WINFS,目前應(yīng)用最多的是FATl6、FAT32、NTFS文件。由于FATl2可以管理的磁盤容量最多為8M且文件碎片嚴(yán)重,該系統(tǒng)選用FAT32文件系統(tǒng)。FAT文件系統(tǒng)用“簇”作為數(shù)據(jù)單元。1個(gè)“簇”由1組連續(xù)的扇區(qū)組成,簇所含的扇區(qū)數(shù)必須是2的整數(shù)次冪,簇的最大值為“個(gè)扇區(qū),即32KB.所有簇從2開始進(jìn)行編號(hào),每個(gè)簇都有一個(gè)自己的地址編號(hào),用戶文件和目錄都存儲(chǔ)在簇中,F(xiàn)AT文件系統(tǒng)的總體布局如圖3所示。
圖3 FAT文件系統(tǒng)總體布局
其中,保留區(qū)含有一個(gè)重要的數(shù)據(jù)結(jié)構(gòu)——系統(tǒng)引導(dǎo)扇區(qū)(DBR)。FATl2、FATl6的保留區(qū)通常只有一個(gè)扇區(qū),而FAT32的保留扇區(qū)要多一些,除0號(hào)扇區(qū)外,還有其他一些扇區(qū),其中包括了DBR的備份扇區(qū)。FAT區(qū)由各個(gè)大小相等的FAT表組成——FATl、FAT2,F(xiàn)AT2緊跟在FATl之后。數(shù)據(jù)區(qū)用于存儲(chǔ)用戶的讀寫數(shù)據(jù)。
3.2 SD卡的讀寫操作
在SPI模式下,SD卡支持整塊和多塊寫命令,在接受合法寫命令(CMD24)時(shí),SD卡將以響應(yīng)標(biāo)志(OOH)響應(yīng)并且等待數(shù)據(jù)塊從控制器發(fā)送。控制器接收到SD卡的響應(yīng)標(biāo)志后,向SD卡寫入數(shù)據(jù)塊“開始?jí)K”象征(FEH),則表明數(shù)據(jù)開始傳輸,當(dāng)512字節(jié)數(shù)據(jù)成功寫入之后,再寫入兩個(gè)字節(jié)的CRC檢驗(yàn)碼。此時(shí)控制器開始對(duì)SD卡的數(shù)據(jù)輸出端進(jìn)行讀取,當(dāng)讀取的數(shù)據(jù)最后五位為00101時(shí),則表明SD卡已經(jīng)成功接收了512字節(jié)的數(shù)據(jù),之后SD卡將接收的數(shù)據(jù)寫入內(nèi)部相應(yīng)的FLASH中,SD卡的1次寫操作結(jié)束。在接受合法讀命令CMDl7時(shí),SD卡將在數(shù)據(jù)輸出端輸出響應(yīng)標(biāo)志,當(dāng)標(biāo)志位為00H時(shí),表明17號(hào)命令已經(jīng)成功寫入,之后控制器對(duì)SD卡數(shù)據(jù)輸出端連續(xù)讀取,當(dāng)讀取到字節(jié)FEH,表明SD卡已經(jīng)開始對(duì)外輸出數(shù)據(jù)了,當(dāng)512個(gè)字節(jié)讀取完成之后,緊接著的是兩個(gè)字節(jié)的CRC校驗(yàn)碼。當(dāng)讀取完CRC校驗(yàn)碼后,CS使能信號(hào)恢復(fù)高電平,SD卡的1次讀操作結(jié)束。SD卡的讀寫操作流程如圖4所示。
圖4 SD卡讀寫控制漉程圖
4.系統(tǒng)調(diào)試及問題分析
4.1 系統(tǒng)時(shí)鐘匹配問題
系統(tǒng)是由1塊主控芯片控制2塊硬件電路板,在調(diào)試過程中,由于2塊板問的晶振在時(shí)序上沒能完全的同步,導(dǎo)致同一信號(hào)分別由兩塊板的通道采集后,經(jīng)上位機(jī)波形還原后呈現(xiàn)如圖5所示。后將兩塊板用同一芯片控制,實(shí)現(xiàn)完全的時(shí)序同步時(shí),最終解決此問題。
圖5 波形還原圖
4.2 數(shù)據(jù)存儲(chǔ)速度不匹配問題
該設(shè)計(jì)最開始FLASH從內(nèi)部FIFO每取一個(gè)字節(jié)數(shù)并且寫入FLASH用了8個(gè)時(shí)鐘周期,故FLASH每秒存儲(chǔ)數(shù)據(jù)為1/(6×50 ns)=3.3M,然而內(nèi)部緩存模塊每秒有不低于4M的數(shù)據(jù)輸入,由于FPCA內(nèi)部數(shù)據(jù)緩存模塊FIFO與外部存儲(chǔ)設(shè)備的存取速率不匹配,導(dǎo)致采集過程中部分?jǐn)?shù)據(jù)丟失,造成信號(hào)波形嚴(yán)重失真,如圖6所示。要想解決此問題,則必須提高FLASH的存儲(chǔ)速度,使FLASH從內(nèi)部FIFO取數(shù)的時(shí)間盡量短。如果從內(nèi)部FIFO取每個(gè)字節(jié)的時(shí)間能夠少兩個(gè)時(shí)鐘周期,那么取完lK字節(jié)將少2K個(gè)時(shí)鐘周期的時(shí)間,這將不僅使FLASH頁編程的整個(gè)周期時(shí)間減短,而且大大的提高了FLASH的存儲(chǔ)速度。下面是FLASH從內(nèi)部FIFO取數(shù)的VHDL代碼。從中可以看出,F(xiàn)LASH從FIFO中取一個(gè)字節(jié)數(shù)僅用了4個(gè)時(shí)鐘周期,而解決了系統(tǒng)丟數(shù)問題。
圖6 調(diào)試信號(hào)
when rw25=>
if offset=0 then//FIFO中是否有數(shù),有則跳轉(zhuǎn)
wstate<= rw 25;狀態(tài)39,無則等待
else
rtfifo<=0;
wstate<= rw 39:
end if;
when rw39=>
rdfifo<=1;//上升沿有效。讀取FIFO中
fdata<=fifod; 的數(shù)據(jù)
wstate<= wr40:
when rw 40=>
addrb<= addib+1;//FIFO地址加一
f_we<=0;
f_byte <=f_byte+1;//FLASH地址加一
wstate<=rw 28:
when rw 28:>
rdfifo<= 0 ;//f_we信號(hào)上升沿有效,將取的字節(jié)
f_we<=1;寫入FLASH
if f_byte=“00000000000”then//是否取完
wstate<= rw 39;了2K字節(jié)的數(shù)據(jù)
else//沒有則繼續(xù)取數(shù),有則進(jìn)行下一頁頁編程
wstate<= rw 25:
end if;
5.結(jié)束語
由于采用了現(xiàn)場(chǎng)可編程芯片F(xiàn)PGA,整個(gè)系統(tǒng)設(shè)計(jì)靈活,集成度高。并且在存儲(chǔ)芯片F(xiàn)LASH的基礎(chǔ)上,采用冗余技術(shù),增加SD卡作為存儲(chǔ)介質(zhì),大大的增加了系統(tǒng)的存儲(chǔ)容量,且存儲(chǔ)容量可變,用戶可根據(jù)具體需要,來選擇SD卡的容量。高容量的SD卡可對(duì)FLASH中的數(shù)據(jù)進(jìn)行備份,也可作為第二存儲(chǔ)介質(zhì)對(duì)實(shí)時(shí)采集的數(shù)據(jù)進(jìn)行存儲(chǔ),從而大大的提高了系統(tǒng)的可擴(kuò)展性和可靠性。文中還就針對(duì)系統(tǒng)調(diào)試過程出現(xiàn)的問題進(jìn)行了詳細(xì)的說明,對(duì)于內(nèi)部FIFO與FLASH存取數(shù)據(jù)速率上的不匹配問題,提出了一種不改變硬件電路,僅需修改程序代碼的解決辦法。系統(tǒng)工作穩(wěn)定、可靠,可用于工業(yè)、工程、生產(chǎn)車間等部門,尤其是在對(duì)信息實(shí)時(shí)性能要求較高或者惡劣的數(shù)據(jù)采集環(huán)境中更突出其應(yīng)用的必要性。
核心關(guān)注:拓步ERP系統(tǒng)平臺(tái)是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應(yīng)用,蘊(yùn)涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務(wù)管理理念,功能涉及供應(yīng)鏈、成本、制造、CRM、HR等眾多業(yè)務(wù)領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設(shè)首選的ERP管理軟件信賴品牌。
轉(zhuǎn)載請(qǐng)注明出處:拓步ERP資訊網(wǎng)http://www.guhuozai8.cn/
本文標(biāo)題:存儲(chǔ)容量可擴(kuò)展的高速數(shù)據(jù)采集系統(tǒng)
本文網(wǎng)址:http://www.guhuozai8.cn/html/support/11121513054.html