定點(diǎn)DSP的準(zhǔn)確計(jì)時(shí)
1 TMS320F206的結(jié)構(gòu)特點(diǎn)
TMS320F206采用先進(jìn)的哈佛結(jié)構(gòu),它不同于傳統(tǒng)的馮·諾依曼(Von Neuman)結(jié)構(gòu)的并行體系結(jié)構(gòu),其主要特點(diǎn)是將程序和數(shù)據(jù)存儲(chǔ)在不同的存儲(chǔ)空間中,即程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器是兩個(gè)相互獨(dú)立的存儲(chǔ)器,每個(gè)存儲(chǔ)器獨(dú)立編址,獨(dú)立訪問(wèn)。此外還具有如下特點(diǎn):
(1)32K×16字的FLASH EEPROM 大大降低了開(kāi)發(fā)成本。
(2)采用100線TQFP的封裝技術(shù)。
(3)64K字的程序存儲(chǔ)空間?64K字的數(shù)據(jù)存儲(chǔ)空間和64K字的I/O空間通過(guò)三條并行總線(PBA?DRAB?DWAB)獨(dú)立操作。所以可以同時(shí)訪問(wèn)程序空間和數(shù)據(jù)空間;在一個(gè)指定機(jī)器周期內(nèi),中央算術(shù)邏輯單元可執(zhí)行多達(dá)三次的并行存儲(chǔ)器操作。
(4)片上4.5K的RAM 使得芯片可以實(shí)現(xiàn)快速的DSP計(jì)算,并使大部分運(yùn)算能夠在一個(gè)指令周期內(nèi)完成。
(5)具有豐富的指令集和靈活的尋址方式。
(6)有四條流水線操作和九級(jí)中斷,并且用戶可以屏蔽大多數(shù)中斷,且可通過(guò)軟件方式靈活控制。
2 定點(diǎn)DSP的定時(shí)器
2.1 DSP定時(shí)器定時(shí)原理
計(jì)數(shù)器每次減到0時(shí),就在下一CLKOUT1周期產(chǎn)生借位(Borrow),計(jì)數(shù)器就用各自相應(yīng)的周期寄存器內(nèi)容重新加載。當(dāng)TIM減到0時(shí),或者在定時(shí)器控制寄存器(TCR)中重新加載位(TRB)寫(xiě)入1,則PRD(定時(shí)器周期寄存器)加載進(jìn)TIM;同樣,若PSC(預(yù)分頻計(jì)數(shù)器)減到0,或者在TRB寫(xiě)入1,則TDDR(定時(shí)器除數(shù)寄存器)的值加載進(jìn)PSC。當(dāng)TIM減到0時(shí),它便產(chǎn)生一個(gè)借位脈沖,持續(xù)時(shí)間等于CLKOUT1的周期(tc(c)),該脈沖發(fā)送到①外部定時(shí)器輸出引腳(TOUT);②作為定時(shí)器中斷信號(hào)(TINT)。
定時(shí)器的功能框圖如圖1所示。
2.2 DSP定時(shí)器的寄存器
4位的TDDR和4位的PSC包括在TCR中。而TIM和PRD是16位寄存器??梢酝ㄟ^(guò)讀TCR、TIM、PRD得到該定時(shí)器和它的計(jì)數(shù)器的當(dāng)前狀態(tài)。
需要注意的是讀TIM可獲得定時(shí)器的當(dāng)前值,讀TCR可獲得PSC的值。由于讀TIM和TCR需要兩條指令,因而PSC在兩次讀之間可能有減操作,使讀數(shù)不精確。如果要求有精確的定時(shí),可以在讀此兩值之前停止定時(shí)器(設(shè)置TCR的TSS位為1,就停止定時(shí)器;清TSS為0,就重新啟動(dòng)定時(shí)器)。
定時(shí)器控制寄存器的格式如下:
3 定點(diǎn)DSP準(zhǔn)確計(jì)算時(shí)間
定時(shí)器時(shí)間的準(zhǔn)確計(jì)算對(duì)高精度地測(cè)量一些物理量是非常重要的。當(dāng)需要定時(shí)器計(jì)算的時(shí)間比較長(zhǎng)時(shí),也就是即使向PRD中置FFFFh時(shí),定時(shí)器計(jì)數(shù)還不夠,這時(shí)就需要利用定時(shí)器自身的中斷,即TOUT每產(chǎn)生一個(gè)脈沖就進(jìn)入定時(shí)器中斷服務(wù)子程序,利用進(jìn)入的次數(shù)來(lái)達(dá)到計(jì)時(shí)的目的。如果假設(shè)定時(shí)器的周期為0.001s(即PRD=1999,TDDR=9),在定時(shí)器中斷服務(wù)子程序中設(shè)一個(gè)計(jì)數(shù)器,每進(jìn)入一次加一個(gè)1,再把定時(shí)器周期乘以計(jì)數(shù)器計(jì)數(shù)就得出定時(shí)器的時(shí)間。但這種計(jì)算是粗糙的,不精確,達(dá)不到高精度要求。為此需要補(bǔ)充兩點(diǎn):
(1)當(dāng)停止定時(shí)器時(shí),定時(shí)器計(jì)數(shù)寄存器還有剩余值,必須計(jì)算這部分的時(shí)間。方法是先停止定時(shí)器,再讀TIM的值,然后讀TCR的值,通過(guò)運(yùn)算獲取PSC的值。再按公式(1)計(jì)算定時(shí)器在最后一次所開(kāi)銷(xiāo)的時(shí)間。定時(shí)器最后一次開(kāi)銷(xiāo)時(shí)間為:
式中,20M為本文采用的晶振頻率。
(2)進(jìn)入定時(shí)器中斷服務(wù)子程序,程序執(zhí)行本身要花費(fèi)一定的時(shí)間;而進(jìn)入中斷服務(wù)子程序時(shí),定時(shí)器就自動(dòng)停止,那么所計(jì)算的時(shí)間自然就少了。TMS320F206每個(gè)指令周期的執(zhí)行時(shí)間是50ns,通過(guò)計(jì)算中斷服務(wù)子程序的指令周期數(shù)和進(jìn)入中斷的次數(shù)可以計(jì)算出這部分的時(shí)間。
把這三部分時(shí)間加起來(lái)就得到準(zhǔn)確的定時(shí)器時(shí)間,有了準(zhǔn)確的時(shí)間,物理量的測(cè)量自然就準(zhǔn),精度就高。結(jié)果表明,通過(guò)這樣準(zhǔn)確計(jì)時(shí),使得頻率和相位的測(cè)量精度在萬(wàn)分之二以內(nèi)。如果測(cè)量的是一個(gè)標(biāo)準(zhǔn)的50Hz頻率,那么測(cè)量結(jié)果的范圍在50~50.001Hz。
4 DSP程序?qū)崿F(xiàn)
splk #0412h,64h
out 64h,0fff8h ;停止DSP定時(shí)器
in 65h,tim ;讀tim寄存器的數(shù)值
in 67h,tcr ;計(jì)算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 ;存定時(shí)器最后一次的時(shí)間單位為μs
lt 69h
lar ar2,#temptddr1 ;temptddr1=定時(shí)器的周期
mar *,ar2
mpy *
pac
add 68h ;加定時(shí)器最后一次的時(shí)間
sacl 68h ??;存定時(shí)器總的所耗時(shí)間(占時(shí)間的多數(shù))
lt 69h
lar ar2,#temptddr2 ??;temptddr2=0.5*32767
mar *,ar2
mpy * ;計(jì)算定時(shí)器中斷服務(wù)程序執(zhí)行時(shí)間
pac
add #1,14
sach 67h,1
lacl 68h
add 67h ;加定時(shí)器中斷服務(wù)程序執(zhí)行時(shí)間
sacl 68h ??;存總的時(shí)間(結(jié)束)
參考文獻(xiàn)
1 TMS320c1x/c2x/c2xx/c5x Assembly Language Tools User’s Guide. Texas Instruments,1999.7
2 TMS320c2xx User's Guide.Texas Instruments,1999.7
3 彭啟棕,李玉柏.DSP技術(shù).成都:電子科技大學(xué)出版社,1997
4 張雄偉,曹鐵勇. DSP芯片的原理與開(kāi)發(fā)應(yīng)用.(第二版). 北京:電子工業(yè)出版社,2000
5 王念旭.DSP基礎(chǔ)與應(yīng)用系統(tǒng)設(shè)計(jì).北京:北京航空航天大學(xué)出版社,2000
6 TMS320F/C240 DSP Controllers Reference Guide System And Peripherals. Texas Instruments, 1999.7