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