- 相關(guān)推薦
定點DSP的準確計時
摘要:以定點DSP為例,闡述DSP芯片在實時控制領(lǐng)域中如何高精度地計算時間,為準確測量一些物理量打下堅實的基礎(chǔ),具有較高的參考價值。關(guān)鍵詞:DSP 準確 計時
數(shù)字信號處理(DSP)是一門涉及許多學科而又廣泛應用于許多領(lǐng)域的新興學科。20世紀60年代以來,隨著計算機技術(shù)和信息技術(shù)的飛速發(fā)展,數(shù)字信號處理技術(shù)應運而生,并得到迅速的發(fā)展。在過去的二十多年里,DSP已經(jīng)在通信等領(lǐng)域得到極為廣泛的應用,特別是在一些測量控制領(lǐng)域?熏應用更是越來越廣泛。本文擬采用定點DSP——TMS320F206來測量一些物理量,如測交流信號的頻率、相位,但這些物理量的測量都離不開信號時間的測量,所以采用定點DSP準確地測量時間直接關(guān)系到這些物理量測量是否精確,而且用定點DSP來準確定時并不是件容易的事。
1 TMS320F206的結(jié)構(gòu)特點
TMS320F206采用先進的哈佛結(jié)構(gòu),它不同于傳統(tǒng)的馮·諾依曼(Von Neuman)結(jié)構(gòu)的并行體系結(jié)構(gòu),其主要特點是將程序和數(shù)據(jù)存儲在不同的存儲空間中,即程序存儲器和數(shù)據(jù)存儲器是兩個相互獨立的存儲器,每個存儲器獨立編址,獨立訪問。此外還具有如下特點:
(1)32K×16字的FLASH EEPROM 大大降低了開發(fā)成本。
(2)采用100線TQFP的封裝技術(shù)。
(3)64K字的程序存儲空間、64K字的數(shù)據(jù)存儲空間和64K字的I/O空間通過三條并行總線(PBA、DRAB、DWAB)獨立操作。所以可以同時訪問程序空間和數(shù)據(jù)空間;在一個指定機器周期內(nèi),中央算術(shù)邏輯單元可執(zhí)行多達三次的并行存儲器操作。
(4)片上4.5K的RAM 使得芯片可以實現(xiàn)快速的DSP計算,并使大部分運算能夠在一個指令周期內(nèi)完成。
(5)具有豐富的指令集和靈活的尋址方式。
(6)有四條流水線操作和九級中斷,并且用戶可以屏蔽大多數(shù)中斷,且可通過軟件方式靈活控制。
圖1 定時器的功能框圖
2 定點DSP的定時器
2.1 DSP定時器定時原理
計數(shù)器每次減到0時,就在下一CLKOUT1周期產(chǎn)生借位(Borrow),計數(shù)器就用各自相應的周期寄存器內(nèi)容重新加載。當TIM減到0時,或者在定時器控制寄存器(TCR)中重新加載位(TRB)寫入1,則PRD(定時器周期寄存器)加載進TIM;同樣,若PSC(預分頻計數(shù)器)減到0,或者在TRB寫入1,則TDDR(定時器除數(shù)寄存器)的值加載進PSC。當TIM減到0時,它便產(chǎn)生一個借位脈沖,持續(xù)時間等于CLKOUT1的周期(tc(c)),該脈沖發(fā)送到①外部定時器輸出引腳(TOUT);②作為定時器中斷信號(TINT)。
定時器的功能框圖如圖1所示。
2.2 DSP定時器的寄存器
4位的TDDR和4位的PSC包括在TCR中。而TIM和PRD是16位寄存器?梢酝ㄟ^讀TCR、TIM、PRD得到該定時器和它的計數(shù)器的當前狀態(tài)。
需要注意的是讀TIM可獲得定時器的當前值,讀TCR可獲得PSC的值。由于讀TIM和TCR需要兩條指令,因而PSC在兩次讀之間可能有減操作,使讀數(shù)不精確。如果要求有精確的定時,可以在讀此兩值之前停止定時器(設(shè)置TCR的TSS位為1,就停止定時器;清TSS為0,就重新啟動定時器)。
定時器控制寄存器的格式如下:
(范文先生網(wǎng)www.gymyzhishaji.com收集整理)
3 定點DSP準確計算時間
定時器時間的準確計算對高精度地測量一些物理量是非常重要的。當需要定時器計算的時間比較長時,也就是即使向PRD中置FFFFh時,定時器計數(shù)還不夠,這時就需要利用定時器自身的中斷,即TOUT每產(chǎn)生一個脈沖就進入定時器中斷服務(wù)子程序,利用進入的次數(shù)來達到計時的目的。如果假設(shè)定時器的周期為0.001s(即PRD=1999,TDDR=9),在定時器中斷服務(wù)子程序中設(shè)一個計數(shù)器,每進入一次加一個1,再把定時器周期乘以計數(shù)器計數(shù)就得出定時器的時間。但這種計算是粗糙的,不精確,達不到高精度要求。為此需要補充兩點:
(1)當停止定時器時,定時器計數(shù)寄存器還有剩余值,必須計算這部分的時間。方法是先停止定時器,再讀TIM的值,然后讀TCR的值,通過運算獲。校樱玫闹。再按公式(1)計算定時器在最后一次所開銷的時間。定時器最后一次開銷時間為:
T=[(TDDR+1)×(PRD-TIM)+TDDR-PSC]/20M (1)
式中,20M為本文采用的晶振頻率。
(2)進入定時器中斷服務(wù)子程序,程序執(zhí)行
本身要花費一定的時間;而進入中斷服務(wù)子程序時,定時器就自動停止,那么所計算的時間自然就少了。TMS320F206每個指令周期的執(zhí)行時間是50ns,通過計算中斷服務(wù)子程序的指令周期數(shù)和進入中斷的次數(shù)可以計算出這部分的時間。
把這三部分時間加起來就得到準確的定時器時間,有了準確的時間,物理量的測量自然就準,精度就高。結(jié)果表明,通過這樣準確計時,使得頻率和相位的測量精度在萬分之二以內(nèi)。如果測量的是一個標準的50Hz頻率,那么測量結(jié)果的范圍在50~50.001Hz。
4 DSP程序?qū)崿F(xiàn)
splk #0412h,64h
out 64h,0fff8h ;停止DSP定時器
in 65h,tim ;讀tim寄存器的數(shù)值
in 67h,tcr ;計算tcr中psc的值
lacl 67h
and #03c0h ;與03c0h獲得psc的值
sacl 67h ;左移10位
lacc 67h,10
sach 67h
lacl #9
sub 67h
sacl 67h ;存psc中剩下的值(即使用了的)
lacl #07cfh
sub 65h
sacl 68h ;存prd-tim的值
lt 68h
mpy #10 ;TDDR+1
pac
sacl 68h
lacl 68h
add 67h
sacl 68h
lt 68h ;*0.1
lar ar1;#temptddr ;temptddr=0.1
mar *,ar1
mpy *
pac
add #1,14
sach 68h,1
lacl 68h
sfr
sacl 68h ;存定時器最后一次的時間單位為μs
lt 69h
lar ar2;#temptddr1 ;temptddr1=定時器的周期
mar *,ar2
mpy *
pac
add 68h ;加定時器最后一次的時間
sacl 68h ;存定時器總的所耗時間(占時間的多數(shù))
lt 69h
lar ar2,#temptddr2 ;temptddr2=0.5*32767
mar *,ar2
mpy * ;計算定時器中斷服務(wù)程序執(zhí)行時間
pac
add #1,14
sach 67h,1
lacl 68h
add 67h ;加定時器中斷服務(wù)程序執(zhí)行時間
sacl 68h ;存總的時間
【定點DSP的準確計時】相關(guān)文章:
定點dsp與浮點dsp的比較08-06
基于定點DSP的軟件鎖相環(huán)的設(shè)計和實現(xiàn)08-06
基于定點DSP的CMOS數(shù)字視頻監(jiān)控終端設(shè)計08-06
基于定點DSP的MP3間頻編碼算法研究及實現(xiàn)08-06
增強并口EPP與DSP接口的設(shè)計增強并口EPP與DSP接口的設(shè)計08-06
DSP接口效率的分析與提高08-06
基于DSP的自動對焦系統(tǒng)08-06
重提準確把握教材08-17