采用FPGA的振動(dòng)模擬器設(shè)計(jì)
1 引言
振動(dòng)臺(tái)的作用之一是將被測(cè)物件置于振動(dòng)臺(tái)上測(cè)量其受迫振動(dòng)時(shí)的表現(xiàn),一般振動(dòng)臺(tái)的振動(dòng)是由振動(dòng)分析儀控制的,但是由于振動(dòng)臺(tái)體積形狀和考慮到成本等原因,不利于振動(dòng)分析儀的研發(fā),所以設(shè)計(jì)振動(dòng)模擬器對(duì)振動(dòng)分析儀的研發(fā)有重要的現(xiàn)實(shí)意義。
振動(dòng)模擬器應(yīng)盡量對(duì)振動(dòng)臺(tái)的實(shí)際振動(dòng)情況進(jìn)行模擬。振動(dòng)臺(tái)本身的振動(dòng)將不可避免地受到噪聲的影響,導(dǎo)致它的振動(dòng)不一定是符合需求的振動(dòng)。所以要使振動(dòng)模擬器對(duì)振動(dòng)臺(tái)的實(shí)際振動(dòng)情況進(jìn)行模擬,就必需人為地在采樣信號(hào)中加入噪聲。而出于對(duì)振動(dòng)分析儀研發(fā)調(diào)試的需要,盡量將噪聲范圍處理成可控的,這樣便于調(diào)試振動(dòng)分析儀。
利用FPGA開(kāi)發(fā)振動(dòng)模擬器研制開(kāi)發(fā)費(fèi)用低,不承擔(dān)投片風(fēng)險(xiǎn),通過(guò)開(kāi)發(fā)工具在計(jì)算機(jī)上完成設(shè)計(jì),電路設(shè)計(jì)周期短。所以本文采用FPGA實(shí)現(xiàn)振動(dòng)模擬器設(shè)計(jì),由ADC模塊接收調(diào)頻和調(diào)幅信號(hào),傳給FPGA模塊,F(xiàn)PGA由調(diào)頻信號(hào)計(jì)算出對(duì)應(yīng)的時(shí)鐘,且按此時(shí)鐘輸出經(jīng)調(diào)幅的數(shù)字正弦波,驅(qū)動(dòng)DAC輸出模擬的正弦波,最終和模擬的噪聲相疊加,實(shí)現(xiàn)對(duì)實(shí)際振動(dòng)臺(tái)的模擬。
2 原理框圖和基本設(shè)計(jì)思想
圖1 硬件原理框圖
振動(dòng)模擬器的原理框圖如圖1所示,圖中由ADC模塊分別接收調(diào)頻和調(diào)幅信號(hào)給FPGA模塊,F(xiàn)PGA模塊將串行的調(diào)頻和調(diào)幅信號(hào),經(jīng)串并轉(zhuǎn)換,分別變成一個(gè)16位的并行調(diào)頻信號(hào)和一個(gè)16位的并行調(diào)幅信號(hào)。FPGA輸出經(jīng)調(diào)頻調(diào)幅的數(shù)字的正弦波,并驅(qū)動(dòng)串行DAC(輸出理想信號(hào))輸出模擬的正弦波;用戶(hù)通過(guò)按鍵確定想要產(chǎn)生的噪聲的頻率范圍,F(xiàn)PGA經(jīng)計(jì)算得到滿(mǎn)足用戶(hù)要求的頻率,驅(qū)動(dòng)并行DAC(輸出噪聲),產(chǎn)生模擬 •的噪聲,經(jīng)電流電壓轉(zhuǎn)換后由同相求和電路將信號(hào)與噪聲相疊。
整個(gè)系統(tǒng)最終輸出0.1~5KHz的振動(dòng)信號(hào)和200KHz以下的振動(dòng)噪聲相疊的模擬量。
3 FPGA功能模塊介紹
3.1 芯片選擇
在本設(shè)計(jì)中,選用Altera 公司的Cyclone系列,型號(hào)是EP1C6Q240C8的芯片,PQFP封裝。這款芯片有240個(gè)引腳,其中用戶(hù)可用185個(gè)引腳。有5980個(gè)邏輯單元,32列20行邏輯陣列塊。有2個(gè)PLL鎖相環(huán),20個(gè)M4K的ROM,每塊ROM為4Kbit,可以另加1位奇偶校驗(yàn)位。
3.2 原理說(shuō)明
FPGA模塊接收2個(gè)ADS1100的芯片,經(jīng)串并轉(zhuǎn)換,得到調(diào)頻和調(diào)幅信號(hào)。
波形發(fā)生的基本原理是:對(duì)幅值是1的正弦波在一個(gè)周期內(nèi)的波形按1/200倍周期的時(shí)間間隔取200個(gè)點(diǎn),存儲(chǔ)這200個(gè)時(shí)間點(diǎn)所對(duì)應(yīng)的波形的幅度,存儲(chǔ)到FPGA的片內(nèi)ROM中。正弦波幅度表僅需200×16bit=3.2kbit的存儲(chǔ)空間,可用FPGA的一塊片內(nèi)ROM實(shí)現(xiàn)。通過(guò)查表法產(chǎn)生一系列的值,將這些值和調(diào)幅信號(hào)相乘就得到一系列的幅度值,即串行DAC的數(shù)字輸入,而這些幅度的輸出頻率是調(diào)頻信號(hào)值的200倍。類(lèi)似的,利用FPGA一塊片內(nèi)ROM以存儲(chǔ)200KHz以下噪聲的正弦波幅度表(一個(gè)周期內(nèi)的波形按1/20倍周期的時(shí)間間隔取20個(gè)點(diǎn))。
調(diào)頻信號(hào)和調(diào)幅信號(hào)的分辨率16比特,輸出的正弦信號(hào)的分辨率是16比特。
4 AD、DA芯片與FPGA的接口
考慮到本系統(tǒng)需要較多的高頻時(shí)鐘,而若時(shí)鐘管理不當(dāng),則因DAC工作不穩(wěn)定會(huì)導(dǎo)致系統(tǒng)工作出錯(cuò);由于連線(xiàn)和邏輯單元的延遲作用,使輸出信號(hào)出現(xiàn)毛刺,產(chǎn)生冒險(xiǎn)現(xiàn)象。因此純粹依靠傳統(tǒng)的邏輯電路難以達(dá)到理想的性能要求,這時(shí)就必須依賴(lài)FPGA內(nèi)部的專(zhuān)用硬件電路PLL和引入高頻時(shí)鐘的方法產(chǎn)生無(wú)有害毛刺的同步時(shí)鐘輔助實(shí)現(xiàn)高性能的設(shè)計(jì)。
FPGA芯片和ADC、DAC芯片的接口電路原理圖如圖2所示。
圖2 FPGA與AD、DA芯片的接口電路
圖3 DAC8581 時(shí)序圖
圖4 DAC8581時(shí)序要求
4.1 FPGA對(duì)ADS1100芯片的控制
調(diào)頻和調(diào)幅信號(hào)使用同一款芯片:ADS1100,16位串行,I2C接口,在本設(shè)計(jì)中數(shù)據(jù)更新率是8SPS,電壓型輸出。此芯片僅可在從件模式下工作。ADS1100將模數(shù)轉(zhuǎn)換結(jié)果傳給FPGA模塊,由FPGA進(jìn)行串并轉(zhuǎn)換。
FPGA對(duì)ADS1100提供SCLK和SDA引腳,符合I2C協(xié)議。FPGA是主器件,在開(kāi)始與ADS1100通信前先對(duì)SDA寫(xiě)2個(gè)字節(jié),分別確定和哪個(gè)ADS1100進(jìn)行通信和對(duì)ADS1100的配置寄存器(configuration register)進(jìn)行寫(xiě)以確定對(duì)其的操作模式。FPGA外接24MHz的晶振,經(jīng)分頻得到4MHz的時(shí)鐘,ADS1100按8SPS的數(shù)據(jù)更新率工作,F(xiàn)PGA探測(cè)數(shù)據(jù)線(xiàn)變化以產(chǎn)生SCLK時(shí)鐘信號(hào)賦給SCLK引腳。篇幅受限,I2C的FPGA實(shí)現(xiàn)不一一贅述。
4.2 FPGA對(duì)DAC8581芯片的控制
信號(hào)輸出使用芯片DAC8581,16位串行,SPI接口,在本設(shè)計(jì)中最高數(shù)據(jù)更新率是1.8MHz,電壓輸出。DAC8581接收從FPGA傳送過(guò)來(lái)的串行數(shù)據(jù),將其進(jìn)行數(shù)模轉(zhuǎn)換,產(chǎn)生振動(dòng)信號(hào),模擬實(shí)際振動(dòng)臺(tái)的理想振動(dòng)情況。
FPGA中,由PLL倍頻得到36MHz的時(shí)鐘提供給DAC8581的SCLK引腳。由調(diào)頻信號(hào)計(jì)算得到串行DAC的數(shù)據(jù)更新率,按此頻率更新串行DAC的數(shù)字輸入。由同一個(gè)PLL倍頻得到240MHz的時(shí)鐘捕捉將由DAC處理的數(shù)字輸入信號(hào)和SCLK引腳信號(hào)的跳變沿,從而產(chǎn)生DAC8581的CS片選信號(hào)。
數(shù)據(jù)data一旦準(zhǔn)備好,賦給register,240MHz時(shí)鐘探測(cè)到第一次SCLK上升沿,就拉低CS片選,第二次探測(cè)到SCLK上升沿時(shí)已經(jīng)至少是下一個(gè)240MHz的上升沿了,從而滿(mǎn)足Tlead(見(jiàn)圖3、圖4)參數(shù)的要求。CS低時(shí),一旦240MHz時(shí)鐘探測(cè)到SCLK下降沿,將register的最高位數(shù)據(jù)賦給SDA,將register左移一位,SDA保持不變,直到下一個(gè)SCLK下降沿。當(dāng)捕捉到SCLK的第17個(gè)下降沿時(shí),將CS拉高。由此即可滿(mǎn)足以上的圖3、圖4對(duì)時(shí)序的要求。
4.3 FPGA對(duì)DAC8820芯片的控制
DAC8820產(chǎn)生振動(dòng)噪聲。16位并行,最高數(shù)據(jù)更新率4MHz,是電流輸出型。本系統(tǒng)設(shè)有2個(gè)用戶(hù)按鍵,分別表示產(chǎn)生40KHz~100KHz,100KHz~200KHz的噪聲頻率范圍,F(xiàn)PGA接收按鍵信號(hào)確定噪聲的頻率范圍,在此頻率范圍內(nèi)產(chǎn)生一個(gè)隨機(jī)頻率,由此計(jì)算得到DAC8820的數(shù)據(jù)更新率,F(xiàn)PGA按此頻率準(zhǔn)備數(shù)據(jù)以更新并行DAC的數(shù)字輸入。由DAC8820將其進(jìn)行數(shù)模轉(zhuǎn)換,模擬實(shí)際振動(dòng)臺(tái)在可能受到外界各種干擾信號(hào)后產(chǎn)生的噪聲情況。
圖5 DAC8820外部電流電壓轉(zhuǎn)換電路
DAC8820的引腳WR(低有效)是將16位數(shù)據(jù)加載到輸入寄存器;LDAC(高有效)是將數(shù)據(jù)從輸入寄存器加載到DAC寄存器;但是若將同一信號(hào)同時(shí)賦給WR和LDAC,則可在下降沿將16位數(shù)據(jù)加載到輸入寄存器,在上升沿將數(shù)據(jù)從輸入寄存器加載到DAC輸出。
由FPGA將24MHz的晶振時(shí)鐘分頻得到數(shù)據(jù)更新率,由此得到的時(shí)鐘信號(hào)經(jīng)高頻時(shí)鐘同步賦給DAC8820的WR和LDAC。由于DAC8820是電流輸出的,所以將電流輸出經(jīng)過(guò)OPA277電流電壓轉(zhuǎn)換輸出,見(jiàn)圖5。圖中的C1是補(bǔ)償電容,其作用是防止增益峰值的出現(xiàn)。
5 結(jié)論
綜上,此振動(dòng)模擬器的調(diào)頻信號(hào)的分辨率是16比特,可產(chǎn)生0 ~5kHz的清晰信號(hào),所以頻率精度可達(dá)到0.076Hz,并可與200KHz以下的確定頻率范圍的隨機(jī)噪聲進(jìn)行合成,輸出信號(hào)幅度分辨率可達(dá)16比特,而且噪聲的頻率范圍是可控的。
本文作者創(chuàng)新點(diǎn):充分利用了FPGA可現(xiàn)場(chǎng)編程的特點(diǎn),給讀者提供了一個(gè)實(shí)施簡(jiǎn)單,成本低,可按用戶(hù)需求靈活改變,且易升級(jí)的振動(dòng)模擬器的設(shè)計(jì)方案;且對(duì)有特殊要求的信號(hào)發(fā)生器的設(shè)計(jì)有一定借鑒意義。