實(shí)驗(yàn)三-用定時(shí)器實(shí)現(xiàn)數(shù)字振蕩器DSP_第1頁
實(shí)驗(yàn)三-用定時(shí)器實(shí)現(xiàn)數(shù)字振蕩器DSP_第2頁
實(shí)驗(yàn)三-用定時(shí)器實(shí)現(xiàn)數(shù)字振蕩器DSP_第3頁
實(shí)驗(yàn)三-用定時(shí)器實(shí)現(xiàn)數(shù)字振蕩器DSP_第4頁
實(shí)驗(yàn)三-用定時(shí)器實(shí)現(xiàn)數(shù)字振蕩器DSP_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

實(shí)驗(yàn)三用定時(shí)器實(shí)現(xiàn)數(shù)字振蕩器1、實(shí)驗(yàn)?zāi)康暮鸵笤跀?shù)字信號(hào)處理中,正弦/余弦信號(hào)是最常見的信號(hào)之一。為了產(chǎn)生這些信號(hào),通常的方法是講某個(gè)頻率的正弦/余弦值余弦計(jì)算出來后制成一個(gè)表,DSP工作時(shí)僅作查表運(yùn)算即可。在本實(shí)驗(yàn)中將介紹另一種獲得正弦/余弦信號(hào)的方法,即利用數(shù)字振蕩器用疊代方法產(chǎn)生正弦信號(hào)。根本思路是:利用定時(shí)器產(chǎn)生了一個(gè)2kHz的正弦信號(hào),定時(shí)器被設(shè)置成每25uS產(chǎn)生一次中斷,〔等效于采樣速率未40k〕利用該中斷,在該中斷效勞程序中用疊代算法計(jì)算出一個(gè)SNT值,并利用CCS的圖形顯示功能查看波形。本實(shí)驗(yàn)除了學(xué)習(xí)數(shù)字振蕩器的DSP實(shí)現(xiàn)原理外,同時(shí)還學(xué)習(xí)C54X定時(shí)器使用以及中斷效勞程序編寫。另外,在本實(shí)驗(yàn)中我們將使用匯編語言和C語言分別完成源程序的編寫。2、實(shí)驗(yàn)原理〔1〕數(shù)字振蕩器原理設(shè)沖擊響應(yīng)鼓勵(lì)下,一個(gè)系統(tǒng)的傳遞函數(shù)為正弦序列sinkwT,其z變換為其中,A=2coswT,B=-1,C=sinwT。設(shè)初始條件為0,求出上式的反Z變換得:y[k]=Ay[k-1]+By[k-2]+Cx[k-1]這是個(gè)二階差分方程,其單位沖擊響應(yīng)即為sinkwT。利用單位沖擊函數(shù)x[k-1]的性質(zhì),即僅當(dāng)k=1時(shí),x[k-1]=1,代入上式得:k=0y[0]=Ay[-1]+By[-2]+0=0k=1y[1]=Ay[0]+By[-2]+c=ck=2y[2]=Ay[1]+By[0]+0=Ay[1]k=3y[3]=Ay[2]+By[1]k=ny[n]=Ay[n-1]+By[n-2]在k﹥2以后,y[k]能用y[k-1]和y[k-2]算出,這是一個(gè)遞歸得方法。根據(jù)上面得說明,我們可以開始數(shù)字振蕩器得設(shè)計(jì)。設(shè)該振蕩器得頻率為2kHz,采樣率為40kHz〔通過定時(shí)器設(shè)置,每隔25us中斷一次,即產(chǎn)生一個(gè)y[n]〕那么遞歸得差分方程系數(shù)為:A=2coswT=2cos(2×PI×2000/40000)=2×0.95105652B=-1C=sinwT=sin(2×PI×2000/40000)=0.30901699為了便于定點(diǎn)DSP處理,我們將所有系數(shù)除以2,然后用16為定點(diǎn)格式表示為:這便是本實(shí)驗(yàn)中查生2kHz陣線信號(hào)的三個(gè)系數(shù)。在本實(shí)驗(yàn)中,主程序在初始化時(shí)先計(jì)算出y[1]和y[2],然后開放定時(shí)器中斷。以后每次進(jìn)入定時(shí)器中斷效勞程序時(shí),利用前面的y[1]和y[2],計(jì)算出新的所有y[n],通過CCS提供的圖形顯示工具,我們將在圖形窗口中看到一個(gè)正弦信號(hào)波形。下面時(shí)初始化和中斷效勞程序代碼片斷:初始化y[1]和y[2]:SSBXFRCT:置FRCT=1,準(zhǔn)備進(jìn)行小數(shù)乘法運(yùn)算ST#INIT_A,AA:將常數(shù)A裝入變量AAST#INIT_B,BB:將常數(shù)B裝入變量BBST#INIT_C,CC:將常數(shù)C裝入變量CCPSHDCC:將變量CC壓入堆棧POPDy2:初始化y2=CCLDAA.T:裝AA到T存放器MPYy2,A:y2乘系數(shù)A,結(jié)果放入A存放器STHA,y1:將A存放器得高16位存入變量y1中斷效勞程序片斷LDBB,T:將系數(shù)B裝入T存放器MPYy2,A:y2乘系數(shù)B,結(jié)果放入A存放器LTDy1:將y1裝入T存放器,同時(shí)復(fù)制到y(tǒng)2MACAA,A:完成新正弦數(shù)據(jù)的計(jì)算,A存放器中為y1*AA+y2*BBSTHA,l,y1:將新數(shù)據(jù)存入y1,因所有系數(shù)都除過2,所以在保存結(jié)果時(shí)轉(zhuǎn)移一位,恢復(fù)數(shù)據(jù)正常大小STHA,l,y0:將新正弦數(shù)據(jù)存入y0(2)C54X的定時(shí)器操作C54X的片內(nèi)定時(shí)器利用CLKOUT時(shí)鐘計(jì)數(shù),用戶使用三個(gè)存放器〔TIM,PRD,TCR〕來控制定時(shí)器,參見表4-1。在表4-2中列出了定時(shí)器控制存放器的各個(gè)比特位的具體定義?!甐C5402得另一個(gè)定時(shí)器〔定時(shí)器1〕的控制存放器分別為:0×30〔TIM1〕,0×31〔PRD1〕,0×32〔TCR1〕。表4-1‘VC5402定時(shí)器0的相關(guān)存放器存放器地址名稱用途0024hTIM定時(shí)器存放器,每計(jì)數(shù)一次自動(dòng)減一0025hPRD定時(shí)器周期存放器,當(dāng)TIM減為0后,CPU自動(dòng)將PRD的值裝入TIM0026hTCR定時(shí)器控制存放器表4-2定時(shí)器控制就存起〔TCR〕bit概要比特名稱功能15-12保存讀出時(shí)為011soft該比特位與10位配合使用以決定定時(shí)器在使用仿真調(diào)試時(shí)的狀態(tài).Soft=0當(dāng)進(jìn)入仿真調(diào)試時(shí),定時(shí)器立即停止工作。Soft=1當(dāng)計(jì)數(shù)器被減為0后,停止工作。10free該比特位與11位配合使用以決定定時(shí)器在使用仿真調(diào)試時(shí)的狀態(tài)free=0根據(jù)11比特位決定定時(shí)器狀態(tài)free=1忽略11比特位,定時(shí)器不受影像9-6PSC定時(shí)器預(yù)置計(jì)數(shù)器。當(dāng)PSC減為0后,CPU自動(dòng)將TDDR裝入,然后TIM開始減1。5TRB定時(shí)器復(fù)位。當(dāng)TRB=1時(shí),CPU將PRD存放器的值裝入TIM存放器,將TDDR的值裝入PSC4TSS定時(shí)器停止?fàn)顟B(tài)。當(dāng)系統(tǒng)復(fù)位時(shí),TSS被去除,定時(shí)器立刻開始工作。TSS=0表示啟動(dòng)定時(shí)器TSS=1表示停止定時(shí)器0-3TDDR定時(shí)器擴(kuò)展周期。當(dāng)PSC減到0,CPU自動(dòng)將TDDR的值裝入PSC,然后TIM減。所以整個(gè)定時(shí)器得周期存放器可以有20個(gè)比特〔PRD+TDDR〕.從上面的介紹可以看到定時(shí)器實(shí)際上可以有20個(gè)比特的周期存放器。它對(duì)于CLKOUT信號(hào)計(jì)數(shù),先將PSC減1,知道PSC為0。這是CPU發(fā)出TINT中斷,同時(shí)在TOUT引腳輸出一個(gè)脈沖信號(hào),脈沖寬度與CLKOUT一致。然后用PDR重新裝入TIM,重復(fù)下去一直到系統(tǒng)或定時(shí)器復(fù)位。因而定時(shí)器中斷得頻率由一下的公式?jīng)Q定:TINT的頻率=其中tc表示CLKOUT的周期。定時(shí)器當(dāng)前得值可以通過讀取TIM存放器和TCR存放器的PSC比特位得到。下面時(shí)本實(shí)驗(yàn)中初始化定時(shí)器得程序片段:STM#10h,TCR:停止定時(shí)器STM#2499,PDR:設(shè)置PDR存放器值為2499,TINT中斷頻率為Foutclk/(2499+1)=100MHz/2500=40KHzSTM#20h,TCR:重新裝入TIM和,PSC,然后啟動(dòng)定時(shí)器〔3〕C54X中斷的使用在C54X中用戶可以通過中斷屏蔽酒釀起IMR來決定開放或關(guān)閉一個(gè)中斷請(qǐng)求。圖4-1出了C5402得IMR存放器的各個(gè)比特位的定義。圖4-1C5402的IMR存放器其中,HPINT表示HPI接口中斷,INT3-INTO為外部引腳產(chǎn)生的中斷,TXINT和TRINT為TDM串口發(fā)送和接受中斷,BXINT0和BRINT0為BSP串口的發(fā)送和接收中斷,TINT0為定時(shí)器0中斷。在中斷屏蔽存放器IMR中,1表示允許CPU響應(yīng)對(duì)應(yīng)的中斷,0表示禁止。當(dāng)然要CPU響應(yīng)中斷,ST1存放器中的INTM還應(yīng)該為0(允許所有的中斷)。當(dāng)DSP響應(yīng)中斷時(shí),PC指針指向中斷向量表中對(duì)應(yīng)中斷的地址,進(jìn)入中斷效勞子程序。中斷向量表是C54X存放中斷效勞程序的一段內(nèi)存區(qū)域,大小為80H。在中斷向量表中,每一個(gè)中斷占用4個(gè)字的空間,一般情況是將一條跳轉(zhuǎn)或延時(shí)延時(shí)跳轉(zhuǎn)指令存放于此。當(dāng)然,如果中斷效勞程序很短〔小于或等于4個(gè)字〕,可以直接放入該向量表。中斷向量表的位置可以通過修改基地址來改變,其基地址由PMST存放器中的IPTR(15-7bit)決定。表4-3給出了中斷向量表的各中斷的偏移說明。例如C54x復(fù)位后其IPTR全為1,所以中斷向量表位置在OFF80H,因而復(fù)位后程序從OFF80H開始運(yùn)行。本實(shí)驗(yàn)的初始化程序讀取中斷向量表的起始地址,然后設(shè)置PMST的高9位,以便DSP能正確響應(yīng)中斷,代碼如下:LD#0,dp;設(shè)置DP頁指針SSBXintm;關(guān)閉所有中斷LD#vector;讀出中斷向量〔地址vector在中斷向量表程序中定義〕AND#OFF80h,A;保存PMST的低7位ORPMST,A;STLMA,PMST;設(shè)置PMST(其中包括IPTR)表4-354X的中斷向量表3、實(shí)驗(yàn)內(nèi)容本實(shí)驗(yàn)需要使用C54X匯編語言或C語言實(shí)現(xiàn)數(shù)字振蕩器,并通過CCS提供的圖形顯示窗口觀察輸出信號(hào)波形以及頻譜。實(shí)驗(yàn)分下面幾步完成:〔1〕根據(jù)確定數(shù)字振蕩器的頻率,確定系數(shù)。數(shù)字振蕩器系數(shù)確實(shí)定在前面已經(jīng)說明,這里不再贅述?!?〕啟動(dòng)CCS,新建工程文件,如文件名為sinewave.mak。選擇Project菜單中的addFiletoProject選項(xiàng),將匯編源程序exer3.sdm、vec_tAble.asm和連接定位sinewaved文件依次添加到工程文件中。注意,你可以在添加文件對(duì)話框中選擇顯示不同的文件類型來加快文件選擇速度。你頁可以使用鼠標(biāo)右鍵單擊工程文件名〔如sinewave.mak〕并選擇addFiles愛添加需要的文件。其中,exer3.asm包括初始化代碼和中斷效勞程序,而vec_talbe.asm包含中斷向量表?!?〕選擇Project菜單中的Option選項(xiàng),或使用鼠標(biāo)右鍵單擊工程文件名〔如sinewave.mak〕并選擇Option項(xiàng)來修改或添加編譯、連接中使用的參數(shù)。例如,選擇assemble窗口,選擇“EnableSymbolicDebugInformation〞以便使用匯編代碼級(jí)調(diào)試〔你可以在匯編源程序設(shè)置斷點(diǎn)等等〕。選擇Linker窗口,在“OutputFilename〞欄中寫入輸出OUT文件的名字,如sina.out,你還可以設(shè)置生成的MaP文件名?!?〕寫成編譯、連接,正確生成OUT文件。然后使用File菜單中的“LoadProgram〞選項(xiàng),將生成的OUT文件〔如sina.out〕裝入DSP的片內(nèi)存儲(chǔ)器。這是CCS將顯示程序的起始地址_c_int00.〔5〕選ViewGraphTime/Frequency…翻開圖形顯示設(shè)置窗口。在彈出的對(duì)話框中按下列圖設(shè)置,主要修改“STaraddress〞為y0(y0為生成的正弦波輸出變量);“acquisitionBufferSize〞為1,“DSPDataType〞為“16-bitsignedinteger〞。(6)在匯編源程序的中斷效勞程序〔_tint〕中的“nop〞語句處設(shè)置斷點(diǎn)。該行被加亮為洋紅色。選擇Debuganimate,運(yùn)行程序,觀察輸出波形?!?〕用右鍵單擊圖形顯示窗口,并選擇“Proporties〞項(xiàng)以便修改顯示屬性。將“DisplayType〞項(xiàng)改為“FFTMagnitude〞以便顯示信號(hào)頻譜。修改“SamplingRate(Hz)〞項(xiàng)為40000,然后退出。注意觀察生成的正弦波頻率?!?〕去除所有斷點(diǎn),關(guān)閉除波形顯示窗口外的所有窗口,并關(guān)閉工程文件?,F(xiàn)面我們使用C語言完本錢實(shí)驗(yàn)。新建一個(gè)工程文件,如sinewave_c.mak并添加timer.c,vec_table.asm源程序,再添加timerd,再添加C使用的標(biāo)準(zhǔn)庫rts.lib。該文件應(yīng)該再CCS安裝目錄中。例如,假設(shè)CCS安裝在d:\ti下,那么rts.lib應(yīng)該在d:\ti\c5400\cgtools\lib下。修改編譯、連接選項(xiàng),參加符號(hào)調(diào)試選項(xiàng),修改生成的OUT文件名,如tiner.out。〔9〕完成編譯。連接,正確生成OUT文件。然后使用File菜單的“LoadProgram〞選項(xiàng),將生成的OUT文件〔如timer.out〕裝入DSP的片內(nèi)存儲(chǔ)器。這時(shí)CCS將顯示程序的啟始地址_c_int00.(10)翻開C源程序〔timer.c〕窗口,在中斷效勞程序〔函數(shù)tint()〕的“con_buf=0;〞語句處增加一個(gè)斷點(diǎn)。同樣翻開圖形顯示窗口,并將“STartaddress〞改為128,“DisplayDataSize〞改為128,“DSPDataType〞為“32-bitfloatingpoint〞。選擇Debug→animate,運(yùn)行程序,觀察輸出波形。算算頻率是否是2kHz?同樣用右鍵單擊圖形顯示窗口,顯示信號(hào)頻譜,。注意修改“SamplingRata(Hz)〞項(xiàng)為40000,然后退出。注意觀察生成的正弦波頻率。實(shí)驗(yàn)結(jié)果實(shí)驗(yàn)程序:title

"sine.asm"

.mmregs

.global

_c_int00,_tint,vector

OFF_INTIMER

.set

04Ch

COM_A

.set

07642h

COM_B

.set

0c000h

COM_C

.set

0187eh

.bss

y0,1

.bss

y1,1

.bss

y2,1

.bss

temp,1

.bss

Aa,1

.bss

Bb,1

.bss

Cc,1

.text

_c_int00:

ld

#0,dp

ssbx

intm

st

#1fffh,sp

ld

#vector,

a

and

#0FF80h,

a

andm

#007Fh,

pmst

or

pmst,

a

stlm

a,

pmst

stm

#10h,TCR

stm

#2499,PRD

stm

#20h,TCR

ldm

IMR,a

or

#08h,a

stlm

a,IMR

ld

#temp,dp

ssbx

FRCT

st

#COM_A,Aa

st

#COM_B,Bb

st

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論