韓 旗,蔡 萍
(1.海軍駐上海七〇四所軍事代表室,上海 200031;2.上海交通大學(xué),上海 200240)
基于FPGA的振動(dòng)監(jiān)測(cè)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
韓 旗1,蔡 萍2
(1.海軍駐上海七〇四所軍事代表室,上海 200031;2.上海交通大學(xué),上海 200240)
針對(duì)長(zhǎng)時(shí)間持續(xù)監(jiān)控設(shè)備或結(jié)構(gòu)振動(dòng)的需求,基于FPGA技術(shù)構(gòu)建了一個(gè)多通道振動(dòng)監(jiān)測(cè)系統(tǒng),論文詳細(xì)介紹了監(jiān)測(cè)系統(tǒng)的硬件構(gòu)成,F(xiàn)PGA的固件設(shè)計(jì)及基于USB接口的數(shù)據(jù)傳輸?shù)膶?shí)現(xiàn)。系統(tǒng)已在實(shí)際工況下運(yùn)行,可靠性良好,并具有良好的可擴(kuò)展性。
振動(dòng)監(jiān)測(cè);FPGA;flash存儲(chǔ);USB傳輸
振動(dòng)和噪聲對(duì)儀器設(shè)備和人體生理或心理產(chǎn)生的影響愈來(lái)愈受到重視。船舶航行時(shí)產(chǎn)生的噪聲和振動(dòng)會(huì)給船上設(shè)備儀器的正常運(yùn)行和乘員的舒適性帶來(lái)影響;大型工業(yè)設(shè)備的振動(dòng)噪聲不僅影響操作工人的聽力,嚴(yán)重時(shí)甚至導(dǎo)致心血管系統(tǒng)和消化系統(tǒng)的疾病;鐵/輕軌/高架公路等設(shè)施的振動(dòng)則會(huì)嚴(yán)重影響周圍居民的日常生活。
為了對(duì)結(jié)構(gòu)進(jìn)行減振設(shè)計(jì)或進(jìn)行客觀定量的環(huán)境振動(dòng)噪聲評(píng)估,需要對(duì)振動(dòng)進(jìn)行長(zhǎng)期的數(shù)據(jù)采集。對(duì)于長(zhǎng)期監(jiān)測(cè)、無(wú)人值守且電磁環(huán)境惡劣的使用環(huán)境,需要設(shè)計(jì)一種具有高可靠性的振動(dòng)監(jiān)測(cè)系統(tǒng)進(jìn)行數(shù)據(jù)采集和數(shù)據(jù)保存。普遍采用的單片機(jī)或其它基于程序運(yùn)行機(jī)制工作的控制器抗電磁干擾較差、長(zhǎng)期穩(wěn)定性不能保證。為此,本文提出了一種基于FPGA的三軸振動(dòng)監(jiān)測(cè)系統(tǒng)方案,并進(jìn)行了實(shí)現(xiàn)。
環(huán)境振動(dòng)測(cè)量通常需要實(shí)現(xiàn)多點(diǎn)或多軸的振動(dòng)數(shù)據(jù)采集[1],要求系統(tǒng)能夠在無(wú)人監(jiān)守的情況下長(zhǎng)期穩(wěn)定工作。長(zhǎng)時(shí)間監(jiān)測(cè)要求系統(tǒng)具有較大的數(shù)據(jù)存儲(chǔ)容量,并提供時(shí)間指針。FPGA通過(guò)硬件實(shí)現(xiàn)所需功能,具有各模塊獨(dú)立運(yùn)行、并行處理數(shù)據(jù)、方便擴(kuò)展、無(wú)中斷等待,以及進(jìn)程互相干擾等特性,非常適合于電磁環(huán)境惡劣、需要長(zhǎng)期穩(wěn)定運(yùn)行的場(chǎng)合。
本設(shè)計(jì)兼顧成本和速度,選用了Altera公司的EP3C16芯片作為控制器。作為cyclone系列的中端產(chǎn)品,EP3C16的運(yùn)行速度最高可達(dá)50M/s,片內(nèi)RAM 516Kbits,邏輯單元15K,滿足多路振動(dòng)數(shù)據(jù)采集系統(tǒng)數(shù)據(jù)緩存和對(duì)模數(shù)轉(zhuǎn)換芯片、時(shí)鐘芯片和數(shù)據(jù)存儲(chǔ)芯片等的操作要求,系統(tǒng)構(gòu)成如圖1所示。
圖1 通用振動(dòng)監(jiān)測(cè)系統(tǒng)構(gòu)成
ICP(Integrated Circuit Piezoelectric)傳感器為內(nèi)置集成電路的壓電式振動(dòng)加速度傳感器。內(nèi)置的集成電路將原來(lái)的高阻抗輸出轉(zhuǎn)換為低阻抗輸出,從而大大提高了系統(tǒng)的抗干擾能力。ICP傳感器由恒流源供電,其輸出電壓的交流分量與振動(dòng)加速度成正比,通過(guò)隔直電容C輸出到抗混疊濾波器。抗混疊濾波器用于濾除高于 1/2采樣頻率的頻譜成分,以避免采樣信號(hào)混疊[2]。通過(guò)FPGA控制對(duì)振動(dòng)信號(hào)進(jìn)行多通道高速采樣,并讀取時(shí)間信息,保存于NAND flash芯片中。定期將保存的數(shù)據(jù)通過(guò)USB協(xié)議進(jìn)行數(shù)據(jù)轉(zhuǎn)存。
A/DC芯片AD7656具有高達(dá)250K/s的采樣率,16bit分辨力,能夠同時(shí)對(duì)6路輸入信號(hào)進(jìn)行采樣;數(shù)據(jù)存儲(chǔ)模塊H27UBG8T2BTR具有復(fù)用的8位數(shù)據(jù)總線和地址總線,存儲(chǔ)容量4GB,F(xiàn)PGA通過(guò)I2C與日歷芯片 PCF8563接口,獲得時(shí)間指針。通過(guò)USB接口芯片CY7C68013A將數(shù)據(jù)傳輸?shù)缴衔粰C(jī)進(jìn)行數(shù)據(jù)分析。
FPGA內(nèi)部的程序以VHDL語(yǔ)言進(jìn)行編寫,通過(guò)模塊化設(shè)計(jì),使各項(xiàng)任務(wù)并行、獨(dú)立運(yùn)行。固件設(shè)計(jì)各模塊如圖2所示。
系統(tǒng)使用50M的外部時(shí)鐘,通過(guò)FPGA內(nèi)部鎖相環(huán)電路保證時(shí)鐘信號(hào)相位一致,通過(guò)分頻獲得各個(gè)模塊需要的時(shí)鐘頻率;日歷讀取模塊通過(guò)普通IO口模擬100KHz的I2C協(xié)議,實(shí)現(xiàn)對(duì)日期的讀?。籄/DC數(shù)據(jù)讀取模塊在振動(dòng)數(shù)據(jù)采集時(shí)驅(qū)動(dòng)AD7656芯片采樣于10KHz下工作,而在休眠及數(shù)據(jù)傳輸模式時(shí)自動(dòng)休眠,等待時(shí)鐘喚醒。flash寫入/讀取模塊根據(jù)工作模式的設(shè)定[4],分別啟動(dòng)對(duì)應(yīng)模塊,獲得數(shù)據(jù)后存儲(chǔ)入flash或者讀取flash數(shù)據(jù)后傳輸?shù)経SB傳輸模塊。以下按照模塊分別進(jìn)行介紹。
1)日歷讀取模塊
PCF8563在 I2C總線上的器件寫入從地址為0xA2 H,讀取從地址為0xA3 H,其02h至08h子寄存器分別存儲(chǔ)從秒到年7段BCD碼時(shí)間信息,在系統(tǒng)掉電情況下通過(guò)電池供電,正常上電時(shí)則由電源供電以保證時(shí)間信息的完整。
圖2 FPGA固件模塊
該模塊以正常IO口模擬I2c接口,由定時(shí)器觸發(fā)后從子寄存器中依序讀回秒/分鐘/小時(shí)/日/月/年信息,傳遞到存儲(chǔ)模塊中,用于標(biāo)識(shí)此次數(shù)據(jù)測(cè)量開始的時(shí)間。
2)A/DC數(shù)據(jù)讀取模塊
系統(tǒng)使用的AD7656由管腳Convert上升沿觸發(fā)采樣,經(jīng)過(guò)轉(zhuǎn)換時(shí)間Tconv后芯片busy管腳由高電平拉低,而后讀取模塊選中AD芯片片選信號(hào),對(duì)讀取管腳(rd)輸入下降沿時(shí)AD芯片的數(shù)據(jù)輸出口逐通道輸出采樣通道1~6的信號(hào)。該模塊的仿真時(shí)序輸出如圖3所示。
圖3 AD數(shù)據(jù)讀取模塊輸出仿真
3)flash寫入/讀取模塊
flash模塊到FPGA的IO口定義及其到flash芯片的連接如圖4所示。
flash芯片 H27UBG8T2BTR 通過(guò)管腳addr/data[7..0]復(fù)用 8位的地址總線/命令總線/數(shù)據(jù)總線,因此在讀寫過(guò)程中均需要較為嚴(yán)格的時(shí)序要求。在管腳的上升沿,根據(jù)ALE/CLE這兩個(gè)管腳的高電平,8位總線上的數(shù)據(jù)寫入flash芯片的地址寄存器/命令寄存器;在寫入寄存器過(guò)程中管腳表明芯片當(dāng)前是否處于可操作狀態(tài),在操作時(shí)需要檢查其為低電平時(shí)方可進(jìn)行下一步操作,避免命令字同地址/數(shù)據(jù)的混淆,這將導(dǎo)致后續(xù)數(shù)據(jù)出現(xiàn)大面積的失效。在尋址過(guò)程中,共需要5個(gè)數(shù)據(jù)周期來(lái)完成地址的輸入。
在系統(tǒng)設(shè)計(jì)中,單次采集三路16位數(shù)據(jù),合計(jì)48位,而日歷數(shù)據(jù)經(jīng)過(guò)處理后長(zhǎng)度也為48位,為了數(shù)據(jù)地址的連續(xù)性,使用每個(gè)page中的前8190個(gè)字節(jié),共計(jì)存儲(chǔ)1365組數(shù)據(jù)(或日歷),而芯片能夠存儲(chǔ)1365*256*2048組數(shù)據(jù)。
H27UBG8T2BTR芯片在上電過(guò)程中默認(rèn)被設(shè)置為讀取頁(yè)面模式,以避免在上電時(shí)電壓的波動(dòng)造成不可預(yù)計(jì)的擦除和寫入操作;因此在擦除和寫入模式下,需要發(fā)送FF h重置命令字以重置運(yùn)行模式。
讀寫H27UBG8T2BTR的流程通過(guò)VHDL的狀態(tài)機(jī)實(shí)現(xiàn),該有限狀態(tài)機(jī)的輸出基于當(dāng)前狀態(tài)及當(dāng)前輸入情況確定。對(duì)FLASH芯片的操作有三種工作模式,在上電初始化時(shí)讀取IO口信息確定,分別如下所示:
1)擦除flash:flash擦除頁(yè)面原有數(shù)據(jù)后,使頁(yè)面內(nèi)所有數(shù)據(jù)位均為‘1’后方能進(jìn)行寫入,且一次寫入后必須擦除后方能重寫。擦除flash的狀態(tài)機(jī)如圖5所示,從block 0開始擦除,由于芯片存在壞死的存儲(chǔ)塊,這些存儲(chǔ)塊在擦除過(guò)程中無(wú)法被全部重置為‘1’狀態(tài),需要對(duì)壞死存儲(chǔ)塊進(jìn)行檢查并記錄。芯片由硬件保證第一個(gè)存儲(chǔ)塊必定是完好的,故而在存儲(chǔ)塊0上建立壞死存儲(chǔ)塊列表。在擦除過(guò)程中設(shè)計(jì)了USB診斷功能,可以通過(guò)系統(tǒng)設(shè)計(jì)的USB接口獲得芯片中的壞死存儲(chǔ)塊地址。
2)將日期信息和A/DC數(shù)據(jù)寫入flash;寫入flash狀態(tài)機(jī)如圖6所示,在上電后需要讀取壞死存儲(chǔ)塊列表,避免在壞死存儲(chǔ)塊上寫入引起的數(shù)據(jù)丟失問題,同時(shí)為避免重復(fù)寫入已使用的存儲(chǔ)塊,在存儲(chǔ)塊0上建立已寫存儲(chǔ)塊列表,存儲(chǔ)寫過(guò)的頁(yè)面地址及存儲(chǔ)塊地址。在上電過(guò)程中,讀取已寫存儲(chǔ)塊列表直至數(shù)據(jù)為未寫入狀態(tài),即可獲知未使用頁(yè)面地址。當(dāng)寫入地址達(dá)到壞死存儲(chǔ)塊時(shí),將該存儲(chǔ)塊內(nèi)的256個(gè)頁(yè)面地址標(biāo)記為已寫存儲(chǔ)塊列表中,而后讀取下一個(gè)壞死存儲(chǔ)塊地址,繼續(xù)數(shù)據(jù)記錄。
3)讀取數(shù)據(jù),并傳輸?shù)経SB傳輸模塊讀取數(shù)據(jù)及傳輸狀態(tài)機(jī),則讀取已寫存儲(chǔ)塊及壞死存儲(chǔ)塊列表,將有效頁(yè)面內(nèi)數(shù)據(jù)全部傳輸?shù)経SB模塊的緩沖區(qū)內(nèi),經(jīng)USB傳輸?shù)诫娔X。
圖5 擦除FLASH狀態(tài)機(jī)圖
圖6 寫入狀態(tài)機(jī)
圖7 USB模塊仿真輸出
4)USB傳輸模塊
用于實(shí)現(xiàn)USB傳輸?shù)腃YTC68013芯片是一個(gè)帶增強(qiáng)型MCS51內(nèi)核和USB接口的單片機(jī),完全遵從USB2.0協(xié)議,可提供高達(dá)480Mbps的傳輸率;內(nèi)部集成鎖相環(huán),最高可使51內(nèi)核工作在48MHz;對(duì)外提供兩個(gè)串口,可以方便地與外部通信;片內(nèi)擁有8KB的RAM,可完全滿足系統(tǒng)每次傳輸數(shù)據(jù)的需要。本系統(tǒng)中,CY7C68013A芯片工作于異步時(shí)鐘SLAVE FIFO模式[5],該芯片內(nèi)部使用內(nèi)嵌的FX2微處理器來(lái)實(shí)現(xiàn)USB協(xié)議層的配置,F(xiàn)PGA通過(guò)8位數(shù)據(jù)線與芯片內(nèi)部的FIFO連接。本系統(tǒng)中,令芯片內(nèi)部的4KB FIFO全部用于上傳振動(dòng)數(shù)據(jù)。USB傳輸模塊仿真輸出如圖7所示,檢查CY7C68013A片上FIFO未滿的標(biāo)志管腳后將需傳輸?shù)臄?shù)據(jù)傳遞到數(shù)據(jù)總線上,以上升沿觸發(fā)SLWR管腳將數(shù)據(jù)寫入FIFO,而后由FX2處理器將數(shù)據(jù)傳輸至上位機(jī)。
本研究實(shí)現(xiàn)的基于FPGA的三軸振動(dòng)監(jiān)測(cè)系統(tǒng)能夠?qū)α沸盘?hào)以 10Ksamples/second進(jìn)行同步采樣,在偶發(fā)的掉電情況下能夠正?;謴?fù)工作,繼續(xù)記錄振動(dòng)信號(hào)。作為存儲(chǔ)媒介的NAND FLASH能夠保證數(shù)據(jù)有效性,采集完成后通過(guò)USB 2.0接口將數(shù)據(jù)傳輸?shù)缴衔粰C(jī),進(jìn)行后續(xù)分析。使用結(jié)果表明本系統(tǒng)具有在電磁干擾環(huán)境下長(zhǎng)期穩(wěn)定工作的能力,適用于對(duì)各種結(jié)構(gòu)和設(shè)備的振動(dòng)進(jìn)行長(zhǎng)期監(jiān)測(cè)的場(chǎng)合。
[1]閻潔.基于DSP和CPLD的船舶振動(dòng)監(jiān)測(cè)系統(tǒng)的研究[D].天津大學(xué),2005.
[2]宗赤.基于加速度傳感器的船舶振動(dòng)檢測(cè)系統(tǒng)設(shè)計(jì)[J].電子產(chǎn)品世界,2011(4):46-47.
[3]李海鴻,朱元清,陳蓓.實(shí)時(shí)時(shí)鐘芯片 PCF8563及其應(yīng)用[J].國(guó)外電子測(cè)量技術(shù),2002(5):29-31.
[4]李慶誠(chéng),孫明達(dá).基于NAND型閃存的嵌入式文件系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用研究,2006(4):231-233+239.
[5]扈嘯,張玘,張連超.USB2.0控制器CY7C68013特點(diǎn)與應(yīng)用[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2002(10):48-50+54.
Design and Realization of Vibration Monitoring System Based on FPGA
Han Qi1,Cai Ping2
(1.Navy Representation Office at No.704 Research Institute,Shanghai 200031,China; 2.Shanghai Jiao Tong University,Shanghai 200240,China)
In order to monitor the environment vibration in a long period of time,a vibration monitoring system with multi-channel based on FPGA technology is developed.The hardware implement is introduced in detail.The firmware design and the data transmission via USB are realized.The monitoring system has already been in use in the real field and has satisfied reliability as well as good expansibility.
vibration monitoring; FPGA; flash storing; USB transmitting
U665.13
A DOIⅹ10.14141/j.31-1981.2015.06.011
韓旗(1970-)男,碩士,高級(jí)工程師,研究方向:船舶機(jī)電設(shè)備。