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