MAXQ7654在信號(hào)濾波中的應(yīng)用_第1頁(yè)
MAXQ7654在信號(hào)濾波中的應(yīng)用_第2頁(yè)
MAXQ7654在信號(hào)濾波中的應(yīng)用_第3頁(yè)
MAXQ7654在信號(hào)濾波中的應(yīng)用_第4頁(yè)
MAXQ7654在信號(hào)濾波中的應(yīng)用_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

MAXQ7654在信號(hào)濾波中的應(yīng)用MAXQ7654在信號(hào)濾波中的應(yīng)用基于高性能、16位RISCMAXQ20核,MAXQ7654提供16通道、12位模數(shù)轉(zhuǎn)換器(ADC)和雙通道、12位數(shù)模轉(zhuǎn)換器(DAC)。除模擬電路外,MAXQ7654還具有完備的數(shù)字外設(shè),包括:CAN控制器、SPI接口和4個(gè)8/16位定時(shí)器,可用作計(jì)數(shù)器或可編程脈寬調(diào)制器。MAXQ7654提供128kB的程序存儲(chǔ)空間,能夠勝任絕大多數(shù)嵌入式混合信號(hào)處理應(yīng)用。

本文所描述的應(yīng)用旨在展示MAXQ7654的混合信號(hào)特性。微控制器利用一個(gè)DAC產(chǎn)生帶噪聲的正弦波。DAC輸出被接入一個(gè)ADC輸入通道進(jìn)行采樣。得到的采樣通過(guò)一個(gè)簡(jiǎn)易的有限激勵(lì)響應(yīng)(FIR)濾波器,以衰減信號(hào)中的高頻分量,從而在第二個(gè)DAC產(chǎn)生連續(xù),光滑的正弦波輸出。

利用豐富的模擬和數(shù)字外設(shè),在很多有意思的應(yīng)用中都可施展MAXQ7654的能力。本文聚焦于MAXQ7

654的信號(hào)處理能力,主要展示其ADC、DAC和硬件乘加單元。采用IAR編譯器和MAXQ7654評(píng)估板(EVkit),通過(guò)一個(gè)應(yīng)用實(shí)例說(shuō)明如何從一個(gè)充滿噪聲的正弦波中濾出一個(gè)干凈的低頻信號(hào)。

集成的模擬功能和外設(shè)使信號(hào)濾波成為可能

MAXQ7654集成了16通道、12位ADC,完成一次轉(zhuǎn)換僅需16個(gè)時(shí)鐘周期。時(shí)鐘頻率為8MHz(最大值)時(shí),每秒可完成500,000次采樣。測(cè)量單端模擬信號(hào)時(shí)可對(duì)多達(dá)16路信號(hào)進(jìn)行采樣,測(cè)量差分信號(hào)時(shí)可對(duì)多達(dá)8路輸入信號(hào)進(jìn)行采樣。該ADC也可進(jìn)行溫度測(cè)量——MAXQ7654內(nèi)含溫度傳感器,可讀取芯片(管芯)溫度。

MAXQ7654包括一個(gè)硬件乘加單元,用于信號(hào)處理。它能在一個(gè)周期中進(jìn)行兩個(gè)16位乘法,并且還有一個(gè)可選的累加器功能,可工作于帶符號(hào)或無(wú)符號(hào)模式。這樣一來(lái)簡(jiǎn)化了FIR和IIR濾波器的實(shí)現(xiàn);每個(gè)濾波因數(shù)只需3個(gè)機(jī)器周期的處理,其中還包括了調(diào)用濾波器的開銷。

JTAG調(diào)試引擎是MAXQ平臺(tái)公用的,當(dāng)應(yīng)用程序在目標(biāo)硬件上運(yùn)行時(shí),利用它可完成寄存器和存儲(chǔ)器的讀、寫操作。采用JTAG后還省掉了昂貴的仿真器。主要的C編譯器提供商,如Rowley、IAR和Python均支持MAXQ7654及其調(diào)試功能。

MAXQ平臺(tái)的一個(gè)新增外設(shè)是控制器局域網(wǎng)(CAN)2.0B接口,它是常用于工業(yè)和汽車應(yīng)用的通信協(xié)議。MAXQ7654的CAN控制器支持15個(gè)消息中心,比特率高達(dá)1Mbps。當(dāng)受到或發(fā)出消息后以中斷形式通知系統(tǒng)。

SPI.接口支持從機(jī)或主機(jī)模式,可進(jìn)行8位或16位數(shù)據(jù)傳輸。SPI常見于小型芯片當(dāng)中,如可編程充電器、數(shù)字電位器、DAC、ADC和存儲(chǔ)芯片。

MAXQ7654有4個(gè)多功能定時(shí)器。這些定時(shí)器采用8位或16位計(jì)數(shù)方式,支持周期性中斷、脈寬調(diào)制、捕獲及比較功能的自動(dòng)重裝載。

濾波應(yīng)用的軟件架構(gòu)

定時(shí)器產(chǎn)生中斷時(shí)第一個(gè)DAC輸出帶噪聲的正弦波,以確保輸出采樣具有固定的間隔。設(shè)計(jì)用于生成正弦波的代碼涉及到復(fù)雜的浮點(diǎn)計(jì)算,實(shí)現(xiàn)起來(lái)運(yùn)算量很大??紤]到正弦波數(shù)據(jù)是周期性重復(fù)出現(xiàn)的。重新計(jì)

算那些不會(huì)隨時(shí)間改變的正弦波數(shù)據(jù)會(huì)造成資源浪費(fèi)。因此,在應(yīng)用程序一開始就預(yù)先算出一組正弦波數(shù)據(jù)。

在正弦波數(shù)據(jù)初始化之后,定時(shí)器產(chǎn)生周期性中斷。定時(shí)器中斷程序代碼中的一個(gè)偽隨機(jī)數(shù)產(chǎn)生器用來(lái)產(chǎn)生噪聲,噪聲被直接疊加到干凈的正弦波數(shù)據(jù)中。結(jié)果被傳給DAC產(chǎn)生輸出信號(hào)。為了保持演示程序代碼的簡(jiǎn)潔,在用于產(chǎn)生輸出正弦波的定時(shí)中斷中同時(shí)對(duì)模擬輸入信號(hào)進(jìn)行采樣。當(dāng)讀取輸入采樣后,采樣信號(hào)通過(guò)簡(jiǎn)易的FIR濾波軟件處理,為使效率最大化,該濾波軟件用匯編語(yǔ)言來(lái)實(shí)現(xiàn)。濾波后的采樣信號(hào)隨后從第2個(gè)DAC輸出。用示波器來(lái)比較兩個(gè)DAC的輸出,可以發(fā)現(xiàn):一條正弦曲波較為粗糙,帶有噪聲,而另一條正弦波則看上去比較干凈,由于FIR濾波器的長(zhǎng)度,帶有輕微的相位延遲。

噪聲正弦波的生成和采樣

定時(shí)器中斷程序代碼如下,程序開始時(shí)已預(yù)先計(jì)算好正弦波數(shù)據(jù),本段代碼將其轉(zhuǎn)換為噪聲正弦波數(shù)據(jù)。

sample=static_sin_data[sinindex++]

;

sinnoise=((sinnoise^0x5C)*31)+0xabcd;

thisnoise=sinnoise;

if(thisnoise&0x01)

{

thisnoise=thisnoise&0x1ff;

}

else

{

thisnoise=

-1*(thisnoise&0x1ff)

;

}

sample+=thisnoise;

if(sample<0)

sample=sample*-1;

if(sample>4095)

sample=8192-sample;

DACI1=sample;//SendvaluetoDAC#1

if(sinindex>=SIN_WAVE_STEPS)sinindex=0;

sinnoise變量用來(lái)存儲(chǔ)偽隨機(jī)噪聲(可能是正的或負(fù)的)。噪聲被疊加給干凈的正弦波數(shù)據(jù)后,所產(chǎn)生的噪聲正弦波數(shù)據(jù)被直接賦給DACI1寄存器,以進(jìn)行數(shù)模轉(zhuǎn)換。

從ADC讀取采樣數(shù)據(jù)的過(guò)程幾乎同樣簡(jiǎn)單。設(shè)置完ADC的采樣輸入引腳后,軟件可通過(guò)檠疊USY位或者使能中斷來(lái)獲知轉(zhuǎn)換已經(jīng)結(jié)束。本實(shí)例代碼使用了查詢方式。

inputsample=ADC_Convert_Poll(AIN0|START_CONV|CONTINUOUS)

;

..

.

unsignedintADC_Convert_Poll(unsignedintControl_Reg)

{

ACNT=Control_Reg;//SettheADCparameters

while(ACNT_bit.ADCBY==1);//WaittillADCisnotbusy

returnADCD;//ReturntheADCresult}

注意,MAXQ7654中ADC的采樣率是500ksps。在8MHz時(shí)鐘下,只需等待16個(gè)時(shí)鐘周期便可完成一次轉(zhuǎn)換。

設(shè)計(jì)一個(gè)簡(jiǎn)單的數(shù)字濾波器

本應(yīng)用所產(chǎn)生的波形中包含一個(gè)強(qiáng)低頻信號(hào)和大量的高頻噪聲。用一個(gè)簡(jiǎn)單的低通濾波器可凈化該信號(hào)。

一個(gè)通用的FIR濾波器可用下式描述:

Y=AnXn

其中An是濾波因數(shù),Xn是以前的采樣輸入,Y是濾波器當(dāng)前的輸出。濾波因子決定濾波器的頻率響應(yīng),即不同的頻率成分是怎樣被衰減或突出的。

可用一個(gè)Java小程序(與本文源代碼一同發(fā)布)來(lái)基于極-零圖生成濾波因數(shù)(圖1)。該程序可生成一組高精度的浮點(diǎn)濾波因數(shù)。不過(guò),由于MAXQ7654有16位硬件乘加器,因此需要將浮點(diǎn)因數(shù)轉(zhuǎn)換成16位精度的定點(diǎn)因數(shù)。這一轉(zhuǎn)換會(huì)給理想的濾波器變換引入誤差。因此,該Java程序也給出了建立在定點(diǎn)因數(shù)之上的實(shí)際變換結(jié)果,并以圖形方式給出了誤差。注意:盡管該程序既支持極點(diǎn)(突出頻率分量)也支持零點(diǎn)(衰減頻率分量),但演示代碼只使用零點(diǎn)。無(wú)限激勵(lì)響應(yīng)濾波器(包含極點(diǎn)和零點(diǎn))可以由另外的軟件來(lái)實(shí)現(xiàn)。在應(yīng)用程序窗口底部的文本框中給出了生成的16位定點(diǎn)濾波因數(shù)以及其中的小數(shù)位數(shù)。

圖1.圖中給出了生成濾波器因數(shù)的Java程序輸出。該程序可生成理想轉(zhuǎn)換結(jié)果、實(shí)際轉(zhuǎn)換結(jié)果、誤差和16位濾波器因數(shù)。

高效數(shù)字濾波器的實(shí)現(xiàn)

本節(jié)討論怎樣在一個(gè)真正的數(shù)字濾波器里實(shí)現(xiàn)定點(diǎn)因數(shù)。為獲得最佳性能,數(shù)字濾波器算法采用匯編語(yǔ)言編寫。這使得應(yīng)用設(shè)計(jì)人員可根據(jù)具體要求來(lái)優(yōu)化濾波器程序。一兩個(gè)額外的周期都可對(duì)應(yīng)用的最大濾波器長(zhǎng)度和采樣率產(chǎn)生顯著影響。

本演示程序所采取的兩個(gè)關(guān)鍵措施使濾波器效率最大化。首先,該應(yīng)用采用非滾動(dòng)的濾

波器環(huán)。這會(huì)增加算法的代碼長(zhǎng)度,但會(huì)得到一個(gè)超快速濾波器,每個(gè)因數(shù)只需要3個(gè)周期和3個(gè)代碼字。這種設(shè)計(jì)是切實(shí)可行的。采用Kaiser窗設(shè)計(jì)一個(gè)250因數(shù)的高質(zhì)量濾波器所需代碼總長(zhǎng)度為750字。在一個(gè)代碼空間為65,536字的機(jī)器上,如果看重的是濾波器性能,采用這種設(shè)計(jì)方案是很有效的。

第2個(gè)有助于改進(jìn)濾波器效率的關(guān)鍵點(diǎn)是,將RAM中的256個(gè)字做為存儲(chǔ)先前輸入數(shù)據(jù)的環(huán)形緩沖器(通用濾波器方程中的Xn項(xiàng))。如果濾波器有250個(gè)因數(shù),則無(wú)論如何必須儲(chǔ)存250個(gè)先前的輸入值,這樣一來(lái)RAM中的256個(gè)字并沒(méi)有被浪費(fèi)。這樣設(shè)計(jì)的好處在于MAXQ的基址-偏址指針可被用來(lái)生成硬件環(huán)形緩沖器。由于指針會(huì)自動(dòng)在緩沖器邊界滾動(dòng),因此濾波器軟件不需要檢查指針是否已達(dá)數(shù)據(jù)緩沖器的起始位置。以下是數(shù)字濾波器代碼:filtersample:

pushDP[1]

pushDPC

moveAP,#0

sub#2048

moveDPC,#10h

moveBP,#W:sampletable;preserveIAR'ssoftwarestack

;probablyneedsthispreserved

;selectaccumulator0

;normalizetheinputsample

;DP[0]bytemode,BPwordmode

;startofthesampletablemoveDP[0],#B:sampleindex;pointtosamplecurrentindex

moveAP,#1

moveACC,@DP[0]

moveOffs,ACC

add#1

move@DP[0],ACC

move@BP[Offs],A[0]

moveMCNT,#22hfilterloop:;;Unrollthefilterloopforspeed.;selectaccumulator1

;getcurrenttableindex

;putitintheoffsetregister

;incrementthecurrentindex

;restorethetablepointer

;storethecurrentsample

;signed,accum,clearregsfirst;

moveMA,#0x16

moveMB,@BP[Offs--]

moveMA,#0x48

moveMB,@BP[Offs--]

...

moveMA,#0x7

moveMB,@BP[Offs--]

moveMA,#0x2

moveMB,@BP[Offs--]

nop

moveA[2],MC2;getMACresultHIGH

moveA[1],MC1;getMACresultMID

moveA[0],MC0;getMACresultLOW代碼中首先對(duì)輸入采樣標(biāo)準(zhǔn)化。由于MAXQ7654有12位ADC,因此輸入值從0到4095。為了使用數(shù)字濾波器,輸入值應(yīng)被標(biāo)準(zhǔn)化為-2048至+2047,也就是減去2048(2048=211)。一旦輸入采樣的指針初始化完成,并且當(dāng)前輸入采樣被儲(chǔ)存,程序代碼即開始執(zhí)行濾波操作。

MAXQ中的硬件乘加器單元使用起來(lái)十分方便。濾波器因數(shù)和輸入采樣載入乘法器寄存器,一個(gè)時(shí)鐘周期之后便可獲得相乘的結(jié)果。通過(guò)BP[OFF]指針可讀取輸入采樣,濾波器因數(shù)采用硬件編碼,從圖1所示的輸出窗口直接獲得(重現(xiàn)如下):

首行中的"14"表明濾波器中的數(shù)字其小數(shù)點(diǎn)之后有14位,濾波完成后結(jié)果必須右移14位。"27"表明濾波器有27個(gè)因數(shù)。在這些控制參數(shù)之后,列出了濾波器系數(shù),從A0開始(0x16,0x48,0xad,..)。

濾波器算法執(zhí)行完之后,累加結(jié)果即出現(xiàn)在乘加寄存器MC0、MC1、MC2中。必須對(duì)該結(jié)果進(jìn)行移位以補(bǔ)償定點(diǎn)基數(shù)。

如果想改變應(yīng)用中所使用的濾波器,只需改變?yōu)V波器循環(huán)標(biāo)號(hào)下面的代碼即可。對(duì)于各個(gè)由Java程序生成的因數(shù),可以增加以下一對(duì)指令:

moveMA,#COEFFICIENT_n

moveMB,@BP[Offs--]

同時(shí),如有必要,還注意應(yīng)改變移位數(shù)。

結(jié)果

這個(gè)簡(jiǎn)易的濾波器工作得很理想。圖2給出了用示波器捕獲的兩個(gè)MAXQ7654DAC的波形??梢杂^察到由于FIR濾波器的長(zhǎng)度,在干凈的輸出信號(hào)中存在相移。

圖2.下面的波形是MAXQ7654中DAC輸出的帶噪聲信號(hào)。它被采樣、濾波并輸出后顯示為上面的波形。

評(píng)估板

MAXQ7654評(píng)估板的原理圖隨源代碼一同發(fā)布。該評(píng)估板有很

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論