版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 20 外國(guó)詩(shī)兩首 教學(xué)設(shè)計(jì)
- 七年級(jí)地理下學(xué)期人教版 6.2亞洲的自然環(huán)境第一課時(shí) 教學(xué)設(shè)計(jì)
- 人教新課標(biāo)版高一歷史必修一第10課《鴉片戰(zhàn)爭(zhēng)》教案
- 旭日東升第1、2節(jié)(教案)體育二年級(jí)下冊(cè)
- 嶺南社版九年級(jí)美術(shù)上冊(cè)《9 鏤空的魅力》教學(xué)設(shè)計(jì)
- 高中語(yǔ)文統(tǒng)編版(部編版)必修上冊(cè)第六單元10.2《師說(shuō)》教學(xué)設(shè)計(jì)
- 高一上學(xué)期體育與健康人教版 足球:多種形式的腳內(nèi)側(cè)傳球傳球游戲 教案
- 高中信息技術(shù)選修3教案-2.1 域名與域名的管理1-教科版
- DB6110-T 52-2024 旅游葡萄酒酒莊建設(shè)規(guī)范
- 50米快速跑教案 高一上學(xué)期體育與健康人教版
- 作文批改-完整版PPT
- 功能性子宮出血-婦科教學(xué)課件
- 白事請(qǐng)柬模板【五篇】
- 人教版(PEP)小學(xué)英語(yǔ)五年級(jí)下冊(cè)《Unit4 When is the art show》B Read and write 教案
- 醫(yī)院感染監(jiān)測(cè)清單
- 初中 初三 心理健康 探索人生的意義(下) 課程PPT 課件
- 建筑勞務(wù)掛靠合同樣本(5篇)
- 電力架空線路工程監(jiān)理實(shí)施細(xì)則定稿(共19頁(yè))
- 《兒童支氣管哮喘》PPT課件(PPT 54頁(yè))
- 9.《復(fù)活》課件28張2021—2022學(xué)年統(tǒng)編版高中語(yǔ)文選擇性必修上冊(cè)
- 最全履帶吊起重性能表
評(píng)論
0/150
提交評(píng)論