《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 業(yè)界動態(tài) > 定點(diǎn)DSP的準(zhǔn)確計(jì)時

定點(diǎn)DSP的準(zhǔn)確計(jì)時

2008-08-05
作者:葉水生1,周日貴2

  摘? 要: 以定點(diǎn)DSP為例,闡述DSP芯片在實(shí)時控制領(lǐng)域中如何高精度地計(jì)算時間,為準(zhǔn)確測量一些物理量打下堅(jiān)實(shí)的基礎(chǔ),具有較高的參考價值。

  關(guān)鍵詞: DSP? 準(zhǔn)確? 計(jì)時

?

  數(shù)字信號處理(DSP)是一門涉及許多學(xué)科而又廣泛應(yīng)用于許多領(lǐng)域的新興學(xué)科。20世紀(jì)60年代以來,隨著計(jì)算機(jī)技術(shù)和信息技術(shù)的飛速發(fā)展,數(shù)字信號處理技術(shù)應(yīng)運(yùn)而生,并得到迅速的發(fā)展。在過去的二十多年里,DSP已經(jīng)在通信等領(lǐng)域得到極為廣泛的應(yīng)用,特別是在一些測量控制領(lǐng)域,應(yīng)用更是越來越廣泛。本文擬采用定點(diǎn)DSP——TMS320F206來測量一些物理量,如測交流信號的頻率?相位,但這些物理量的測量都離不開信號時間的測量,所以采用定點(diǎn)DSP準(zhǔn)確地測量時間直接關(guān)系到這些物理量測量是否精確,而且用定點(diǎn)DSP來準(zhǔn)確定時并不是件容易的事。

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ù)存儲" title="數(shù)據(jù)存儲">數(shù)據(jù)存儲在不同的存儲空間中,即程序存儲器和數(shù)據(jù)存儲器是兩個相互獨(dú)立的存儲器,每個存儲器獨(dú)立編址,獨(dú)立訪問。此外還具有如下特點(diǎn):

  (1)32K×16字的FLASH EEPROM 大大降低了開發(fā)成本。???

  (2)采用100線TQFP的封裝技術(shù)。

  (3)64K字的程序存儲空間?64K字的數(shù)據(jù)存儲空間和64K字的I/O空間通過三條并行總線(PBA?DRAB?DWAB)獨(dú)立操作。所以可以同時訪問程序空間和數(shù)據(jù)空間;在一個指定機(jī)器周期內(nèi),中央算術(shù)邏輯單元可執(zhí)行多達(dá)三次的并行存儲器操作。

  (4)片上4.5K的RAM 使得芯片可以實(shí)現(xiàn)快速的DSP計(jì)算,并使大部分運(yùn)算能夠在一個指令周期" title="指令周期">指令周期內(nèi)完成。

  (5)具有豐富的指令集和靈活的尋址方式。

  (6)有四條流水線操作和九級中斷,并且用戶可以屏蔽大多數(shù)中斷,且可通過軟件方式靈活控制。

2 定點(diǎn)DSP的定時器

2.1 DSP定時器定時原理

  計(jì)數(shù)器每次減到0時,就在下一CLKOUT1周期產(chǎn)生借位(Borrow),計(jì)數(shù)器就用各自相應(yīng)的周期寄存器內(nèi)容重新加載" title="加載">加載。當(dāng)TIM減到0時,或者在定時器控制寄存器" title="控制寄存器">控制寄存器(TCR)中重新加載位(TRB)寫入1,則PRD(定時器周期寄存器)加載進(jìn)TIM;同樣,若PSC(預(yù)分頻計(jì)數(shù)器)減到0,或者在TRB寫入1,則TDDR(定時器除數(shù)寄存器)的值加載進(jìn)PSC。當(dāng)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得到該定時器和它的計(jì)數(shù)器的當(dāng)前狀態(tài)。

  需要注意的是讀TIM可獲得定時器的當(dāng)前值,讀TCR可獲得PSC的值。由于讀TIM和TCR需要兩條指令,因而PSC在兩次讀之間可能有減操作,使讀數(shù)不精確。如果要求有精確的定時,可以在讀此兩值之前停止定時器(設(shè)置TCR的TSS位為1,就停止定時器;清TSS為0,就重新啟動定時器)。

定時器控制寄存器的格式如下:

3 定點(diǎn)DSP準(zhǔn)確計(jì)算時間

  定時器時間的準(zhǔn)確計(jì)算對高精度地測量一些物理量是非常重要的。當(dāng)需要定時器計(jì)算的時間比較長時,也就是即使向PRD中置FFFFh時,定時器計(jì)數(shù)還不夠,這時就需要利用定時器自身的中斷,即TOUT每產(chǎn)生一個脈沖就進(jìn)入定時器中斷服務(wù)子程序" title="子程序">子程序,利用進(jìn)入的次數(shù)來達(dá)到計(jì)時的目的。如果假設(shè)定時器的周期為0.001s(即PRD=1999,TDDR=9),在定時器中斷服務(wù)子程序中設(shè)一個計(jì)數(shù)器,每進(jìn)入一次加一個1,再把定時器周期乘以計(jì)數(shù)器計(jì)數(shù)就得出定時器的時間。但這種計(jì)算是粗糙的,不精確,達(dá)不到高精度要求。為此需要補(bǔ)充兩點(diǎn):

  (1)當(dāng)停止定時器時,定時器計(jì)數(shù)寄存器還有剩余值,必須計(jì)算這部分的時間。方法是先停止定時器,再讀TIM的值,然后讀TCR的值,通過運(yùn)算獲取PSC的值。再按公式(1)計(jì)算定時器在最后一次所開銷的時間。定時器最后一次開銷時間為:

  

式中,20M為本文采用的晶振頻率。

  (2)進(jìn)入定時器中斷服務(wù)子程序,程序執(zhí)行本身要花費(fèi)一定的時間;而進(jìn)入中斷服務(wù)子程序時,定時器就自動停止,那么所計(jì)算的時間自然就少了。TMS320F206每個指令周期的執(zhí)行時間是50ns,通過計(jì)算中斷服務(wù)子程序的指令周期數(shù)和進(jìn)入中斷的次數(shù)可以計(jì)算出這部分的時間。

  把這三部分時間加起來就得到準(zhǔn)確的定時器時間,有了準(zhǔn)確的時間,物理量的測量自然就準(zhǔn),精度就高。結(jié)果表明,通過這樣準(zhǔn)確計(jì)時,使得頻率和相位的測量精度在萬分之二以內(nèi)。如果測量的是一個標(biāo)準(zhǔn)的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????? ????????????? ;計(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????? ?       ? ?;存定時器最后一次的時間單位為μ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?? *????????         ?。挥?jì)算定時器中斷服務(wù)程序執(zhí)行時間

??? pac??????????????

??? add?? #1,14

??? sach? 67h,1

??? lacl?? 68h?

??? add?? 67h???? ??         ;加定時器中斷服務(wù)程序執(zhí)行時間

??? sacl?? 68h?????????????    ??;存總的時間(結(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芯片的原理與開發(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

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。