DSP TMS320F206復(fù)位問(wèn)題研究
TMS3206(以下簡(jiǎn)稱F206)是TI公司生產(chǎn)的定點(diǎn)DSP芯片TMS320C2XX系列中的一個(gè)成員,F206提供了一個(gè)4.5K字的片內(nèi)存儲(chǔ)器,片內(nèi)存儲(chǔ)器操作比外部存儲(chǔ)器具有更高的抗干擾能力、更低的價(jià)格和更低的功耗。此外,F206片內(nèi)還集成了32K字的閃速存儲(chǔ)器,當(dāng)系統(tǒng)斷電后,閃速存儲(chǔ)器內(nèi)容仍保持不變,加電后又可使用。F206的這些特點(diǎn)使得到了廣泛的應(yīng)用。
在電力故障錄波器的設(shè)計(jì)中使用了TMS320F206,主要目是是利用它較強(qiáng)的數(shù)據(jù)處理能力,對(duì)電力線路的電壓、電流信號(hào)進(jìn)行連續(xù)的16點(diǎn)FFT運(yùn)行(采集點(diǎn)數(shù)為64點(diǎn)/周期),計(jì)算出基波及各次諧波含量以便更準(zhǔn)確地進(jìn)行故障啟動(dòng)判斷。系統(tǒng)主要由數(shù)據(jù)采集及邏輯控制、F206(DSP)、硬件監(jiān)控電路、數(shù)據(jù)通信接口等部分構(gòu)成。為了滿足數(shù)據(jù)存儲(chǔ)及處理的需要,還在F206外擴(kuò)展了64K字的數(shù)據(jù)存儲(chǔ)RAM(四片IDT71256高速RAM芯片)。
電力故障錄波器的設(shè)計(jì)關(guān)鍵在于保證對(duì)電力故障信號(hào)及時(shí)準(zhǔn)確的記錄,系統(tǒng)對(duì)實(shí)時(shí)性的要求相當(dāng)高。此外,由于變電站、發(fā)電廠環(huán)境中的電磁條件十分復(fù)雜,加之系統(tǒng)運(yùn)行的時(shí)鐘頻率較高,極有可能產(chǎn)生干擾和被干擾現(xiàn)象。有鑒于此,為了保證系統(tǒng)運(yùn)行的實(shí)時(shí)性和穩(wěn)定性,必須非常小心地進(jìn)行復(fù)位及抗干擾設(shè)計(jì)。
下面就結(jié)合基于TMS320F206的故障錄波器的設(shè)計(jì)體會(huì),詳細(xì)探討DSP復(fù)位的特點(diǎn)、對(duì)系統(tǒng)運(yùn)行的影響和需要注意的問(wèn)題。
1 幾種復(fù)位方式的討論
對(duì)于TM320F206而言,復(fù)位是不可屏蔽的外部中斷(中斷矢量地址0000H),隨時(shí)可用它外F206置于一種已知狀態(tài)。復(fù)位是優(yōu)先級(jí)別最高的中斷,一般在加電后芯片處于未知狀態(tài)時(shí)對(duì)其復(fù)位。因?yàn)閺?fù)位信號(hào)終止存儲(chǔ)器操作并初始化各硬件狀態(tài)位,所以每次復(fù)位后系統(tǒng)應(yīng)重新運(yùn)行初始化程序。
在嚴(yán)格的意義上,F206的復(fù)位源只有一個(gè),即復(fù)位引腳RS產(chǎn)生一個(gè)低電平脈沖信號(hào),使芯片復(fù)位。為使系統(tǒng)在加電后能正確工作,RS端的低電平有效時(shí)間至少需要6個(gè)時(shí)鐘周期;F206鎖存復(fù)位脈沖并產(chǎn)生足夠長(zhǎng)的內(nèi)部復(fù)位脈沖以確保芯片復(fù)位;在RS上升沿后16個(gè)周期,芯片完成對(duì)硬件的初始化并從0000H單元開(kāi)始執(zhí)行第一條指令,通常這里是一條分支到系統(tǒng)初始化程序的跳轉(zhuǎn)指令。
雖然F206嚴(yán)格意義上的復(fù)位源只有一個(gè),但根據(jù)對(duì)復(fù)位源的不同操作,F206的復(fù)位又可以分上電復(fù)位、硬件監(jiān)復(fù)位、軟件復(fù)位等幾種不同的方式。
1.1 上電復(fù)位
前面已介紹過(guò),對(duì)于TMS320F206數(shù)字信號(hào)處理器而言,為使芯片初始化正確,一般應(yīng)保證復(fù)位端(RS)低電平至少持續(xù)6個(gè)時(shí)鐘周期,即當(dāng)時(shí)鐘為20MHz時(shí)為300ns。但在上電后,系統(tǒng)的晶振往往需要幾百毫秒的穩(wěn)定期,一般為100ms~300ms。根據(jù)這一特點(diǎn),可以使用如圖1中所示的上電復(fù)位電路。
1.2 硬件監(jiān)控復(fù)位(看門(mén)狗)
由于TMS320F206的工作時(shí)鐘頻率較高,加之故障錄波器的工作環(huán)境電磁干擾比較嚴(yán)重,為保證設(shè)備的正常運(yùn)行,必須設(shè)置硬件監(jiān)控功能。
F206芯片中并沒(méi)有內(nèi)置看門(mén)狗功能,所以只能使用外部硬件監(jiān)控電路。在有些DSP的相關(guān)設(shè)計(jì)資料中經(jīng)常推薦使用MAX706硬件監(jiān)控芯片,這種芯片具有時(shí)間長(zhǎng)達(dá)1.6s的看門(mén)狗定時(shí)器功能,這具備上電復(fù)位和電源監(jiān)控功能。
但是,根據(jù)我們的設(shè)計(jì)經(jīng)驗(yàn)和對(duì)系統(tǒng)運(yùn)行的仔細(xì)分析,使用MAX706等類似的許多硬件監(jiān)控芯片存在兩個(gè)需要注意的問(wèn)題。第一,看門(mén)狗定時(shí)器的時(shí)間過(guò)長(zhǎng),MAX706的典型時(shí)間為1.6s,也就是說(shuō),當(dāng)DSP中的程序運(yùn)行產(chǎn)生錯(cuò)誤時(shí),MAX706的典型時(shí)間為1.6s,也就是說(shuō),當(dāng)DSP中的程序運(yùn)行產(chǎn)生錯(cuò)誤時(shí),MAX706要在1.6s(相當(dāng)于80個(gè)工頻周期)后才能發(fā)出復(fù)位信號(hào)。第二,監(jiān)控芯片輸出的復(fù)位信號(hào)脈沖寬度過(guò)大,MAX706的典型值為200ms(相當(dāng)于10個(gè)工頻周期),這主要是為了兼顧上電復(fù)位時(shí)對(duì)晶振100ms~300ms穩(wěn)定期的要求。因此,從程序運(yùn)行產(chǎn)生錯(cuò)誤到DSP芯片完成復(fù)位,將有共1.8s的非受控時(shí)間,這對(duì)實(shí)時(shí)性要求很高的電力故障錄波器來(lái)說(shuō)是不能忍受的,如果在此期間電網(wǎng)發(fā)生故障,錄波器將無(wú)法作出正確的反應(yīng)。很顯然,必須尋找一種具有合適看門(mén)狗定時(shí)器時(shí)間和復(fù)位脈沖寬度的硬件監(jiān)控芯片。
由此看來(lái),硬件監(jiān)控電路的看門(mén)狗時(shí)間只要大于2ms即可滿足要求,過(guò)長(zhǎng)的看門(mén)狗時(shí)間是不必要的,對(duì)保證裝置的實(shí)時(shí)性也是十分不利的。
根據(jù)以上標(biāo)準(zhǔn),我們選用了MAX6374監(jiān)控芯片,其看門(mén)狗定時(shí)器時(shí)間可以通過(guò)外部引腳ST2、ST1、ST0的邏輯電平進(jìn)行精確調(diào)節(jié),其引腳電平與看門(mén)狗定時(shí)器時(shí)間的關(guān)系如表1所示。
表1 MAX6374引腳電平與看門(mén)狗定時(shí)器時(shí)間的關(guān)系
ST2電平 | ST1電平 | ST0電平 | 看門(mén)狗定時(shí)器時(shí)間 |
0 0 0 0 1 1 1 1 | 0 0 1 1 0 0 1 1 | 0 1 0 1 0 1 0 1 | 3ms 3s 1s 禁止看門(mén)狗功能 30μs 1s 10s 10s |
在此將看門(mén)狗定時(shí)器時(shí)間調(diào)節(jié)在3ms。
在對(duì)MAX6374監(jiān)控芯片的觸發(fā)操作時(shí),為了保證程序的緊湊和監(jiān)控的有效,不宜采用在一處發(fā)脈沖的方式,而應(yīng)該在程序的一點(diǎn)發(fā)出高電平,然后在另一點(diǎn)將電平變低,如此循環(huán)復(fù)地觸發(fā)看門(mén)狗定時(shí)器。
MAX6374的復(fù)位脈沖寬度為1μs,相當(dāng)于20個(gè)DSP時(shí)鐘周期(系統(tǒng)采用20MHz有源晶體振蕩器),完全滿足F206的復(fù)位要求。
MAX6374監(jiān)控芯片沒(méi)有上電復(fù)位和電壓監(jiān)控功能,需要另外設(shè)計(jì)上電復(fù)位電路。
1.3 軟件復(fù)位
除了使用硬件監(jiān)控功能外,在DSP系統(tǒng)的設(shè)計(jì)中,為了確保程序運(yùn)行的準(zhǔn)確可靠,還經(jīng)常使用軟件復(fù)位,即在程序開(kāi)始時(shí)在內(nèi)存中的特定位置設(shè)置標(biāo)志,在程序循環(huán)或運(yùn)行的重要位置檢測(cè)標(biāo)志,若標(biāo)志發(fā)生改變,則判斷系統(tǒng)因干擾或其它原因造成內(nèi)存中數(shù)據(jù)錯(cuò)誤,進(jìn)而發(fā)出軟件復(fù)位指令使系統(tǒng)復(fù)位,以免造成運(yùn)行錯(cuò)誤。
具體在故障錄波器的設(shè)計(jì)中,我們?cè)谄瑑?nèi)數(shù)據(jù)RAM和片外數(shù)據(jù)RAM中設(shè)置了若干檢測(cè)標(biāo)志,在每次程序循環(huán)時(shí)都對(duì)標(biāo)志進(jìn)行檢查。若片外數(shù)據(jù)RAM中的檢測(cè)標(biāo)志發(fā)生變化,則認(rèn)為片外數(shù)據(jù)RAM受到了干擾而產(chǎn)生錯(cuò)誤;若片內(nèi)數(shù)據(jù)RAM中的檢測(cè)標(biāo)志發(fā)生變化,則認(rèn)為DSP芯片也受到了干擾而產(chǎn)生錯(cuò)誤。實(shí)際經(jīng)驗(yàn)表明,片外RAM受干擾發(fā)生錯(cuò)誤的概率遠(yuǎn)大于DSP芯片受干擾時(shí)的情況。
但是,在TMS320F206的指令中,并沒(méi)有軟件復(fù)位指令,那么如何實(shí)現(xiàn)軟件復(fù)位功能呢?在設(shè)計(jì)中,我們可以利用程序指令NMI觸發(fā)不可屏蔽中斷NMI進(jìn)行復(fù)位操作,注意此時(shí)應(yīng)該將芯片的NMI引腳通過(guò)上位電阻接至電源正端,以防止意外的中斷。
在這里有兩種利用NMI中斷產(chǎn)生軟件復(fù)位的方法:第一種是NMI中斷矢量處或者中斷服務(wù)程序中放置一條無(wú)條件跳轉(zhuǎn)指令,使程序重新從0000H或指定的程序空間地址開(kāi)始運(yùn)行,但此時(shí)不影響芯片的任何模式也不中上正在工作的指令和存儲(chǔ)器操作。很顯然,這種軟件復(fù)位并非真正意義的的復(fù)位操作,而只是進(jìn)行程序初始化。這種方法適用于僅外部數(shù)據(jù)RAM被干擾時(shí)的情況。
第二種方法是將F206芯片的外部輸出引腳XF引至芯片的復(fù)位輸入端RS,在NMI中斷服務(wù)程序中將XF端置零以產(chǎn)生硬件復(fù)位信號(hào)(這里需要特別指出的是,XF端的芯片復(fù)位期間及復(fù)位后狀態(tài)為1)。顯然,此時(shí)芯片的復(fù)位操作與上電復(fù)位相同。這種方法適用于內(nèi)部數(shù)據(jù)RAM被干擾時(shí)的情況。
綜上所述,可以將幾種在DSP運(yùn)行時(shí)產(chǎn)生復(fù)位的方式列表比較,如表2所示。
表2 幾種復(fù)位方式比較
硬件監(jiān)控復(fù)位 | 軟件復(fù)位方式1 | 較件復(fù)位方式2 | |
是否進(jìn)行硬件初始化 | 是 | 否 | 是 |
對(duì)干擾的反應(yīng)時(shí)間 | 長(zhǎng) | 短 | 較短 |
對(duì)程序運(yùn)行連續(xù)性的影響 | 大 | 小 | 大 |
抗干擾處理能力 | 強(qiáng) | 弱 | 較強(qiáng) |
在程序設(shè)計(jì)中綜合采用以上幾種復(fù)位方式,完整的系統(tǒng)復(fù)位原理圖(包括電復(fù)位)如圖1所示。
圖中,在F206的復(fù)位端(RS)接一個(gè)或門(mén)的主目的是為了將幾種低電位的復(fù)位信號(hào)隔離起來(lái),不至于互相影響。
2 進(jìn)一步的說(shuō)明
?。?)在基于TMS320F206的電力故障錄波器設(shè)計(jì)中綜合使用了本文中討論的復(fù)位方法,其目的是在電磁干擾比較嚴(yán)重的工作條件下盡量保證裝置運(yùn)行的實(shí)時(shí)性和可靠性。但是,在一般的DSP系統(tǒng)設(shè)計(jì)時(shí)可以有選擇地加以運(yùn)用,而非需要全部使用到。實(shí)際上,在許多情況下,只要工作環(huán)境不是十分惡劣,并且印制板和軟件設(shè)計(jì)合理,DSP系統(tǒng)不采用外部硬件監(jiān)控也可以非常穩(wěn)定地工作。
(2)雖然本文中的討論是圍繞TMS320F206展開(kāi)的,但其思想也適用于TMS320F2XX和TMS320F24X兩個(gè)系列的其它型號(hào)的DSP。需要指出的是,主要用于控制領(lǐng)域的TMS320F24X芯片中自帶了硬件監(jiān)控電路而不需要外加。
?。?)選擇看門(mén)狗定時(shí)器時(shí)間必須充分考慮到程序設(shè)計(jì)中的中斷嵌、查詢等待、外部低速器件(如液晶顯示屏)等影響程序完成一個(gè)循環(huán)所需時(shí)間的各種因素并留有余量,否則會(huì)產(chǎn)生意外的看門(mén)狗復(fù)位,具體時(shí)間應(yīng)由試驗(yàn)決定。在設(shè)計(jì)初始階段最穩(wěn)妥的辦法是在監(jiān)控芯片的時(shí)間選擇端設(shè)置撥位開(kāi)關(guān),以便根據(jù)實(shí)際情況進(jìn)行選擇。
評(píng)論