摘 要: 以title="TMS320F206">TMS320F206為例,闡述了DSP芯片的調(diào)試方法與調(diào)試技巧。著重探討了DSP系統(tǒng)開發(fā)過程中的硬件設(shè)計與調(diào)試、軟件設(shè)計中的流水線沖突和等待狀態(tài)設(shè)置以及如何利用閃速存儲器等相關(guān)問題,具有較強(qiáng)的參考價值。
關(guān)鍵詞: TMS320F206 流水線 等待狀態(tài) 閃速存儲器
高速數(shù)字信號處理器是當(dāng)前信息產(chǎn)業(yè)的熱點技術(shù)之一,采用最先進(jìn)的DSP無疑會使所開發(fā)的產(chǎn)品具有更強(qiáng)的市場競爭力。與普通的單片機(jī)相比,DSP芯片放棄了馮·諾依曼結(jié)構(gòu),代之以程序和數(shù)據(jù)分開的哈佛結(jié)構(gòu),從而大大提高了處理速度,指令周期多為ns級,比普通單片機(jī)(多為μs級)快了3個數(shù)量級。因此,在硬件設(shè)計中要考慮高頻干擾問題。同時,DSP芯片廣泛采用流水線操作,這也會給軟件設(shè)計和調(diào)試帶來一定不便。諸如此類的問題在實際開發(fā)中還有許多。
本篇文章中,筆者以TI公司的TMS320F206為例,就DSP芯片的軟硬件設(shè)計與調(diào)試中可能遇到的問題及解決方法進(jìn)行闡述,希望能對正在從事DSP開發(fā)工作的同仁有所幫助。
1 TMS320F206簡介
TMS320F206是TI公司近年推出的一種性價比較高的定點DSP芯片。它的主要特點有:
(1)采用靜態(tài)CMOS集成工藝制作而成,先進(jìn)的哈佛結(jié)構(gòu)使得程序和數(shù)據(jù)存儲器獨立編址、獨立訪問,兩條總線可允許數(shù)據(jù)與指令的讀取同時進(jìn)行,從而使數(shù)據(jù)的吞吐率提高了一倍;高度專業(yè)化的指令系統(tǒng)提供了功能強(qiáng)大的信號處理操作;內(nèi)嵌閃速存儲器,可減小系統(tǒng)體積、提高系統(tǒng)穩(wěn)定性,而且毋需專門的編程器(XDS510仿真器即具有編程功能),從而減少了開發(fā)成本。
TMS320F206為100引腳的TQFP(正方扁平)封裝,體小質(zhì)輕,適于便攜式儀器的設(shè)計。
(2)TMS320F206用一個16×16的硬乘法器進(jìn)行有符號或無符號數(shù)的乘法運(yùn)算,積為32位。乘累加指令僅需一個機(jī)器周期(20MHz時鐘時為50ns),而在51及196等普通單片機(jī)中,乘法需利用軟件實現(xiàn),執(zhí)行時間為μs級。
(3)TMS320F206地址映射分為4個可獨立選擇的空間:
· 64K字程序存儲器
· 64K字本地數(shù)據(jù)存儲器
· 32K字全局?jǐn)?shù)據(jù)存儲器
· 64K字的I/O空間
(4)由于與目標(biāo)系統(tǒng)之間采用了JTAG邏輯掃描電路接口(基于IEEE1149.1標(biāo)準(zhǔn)),從而可真正做到完全的硬件仿真。在仿真時不占用硬件資源,且可隨時察看CPU內(nèi)部及外設(shè)的工作情況,為程序的調(diào)試和除錯帶來了極大方便。
2 硬件設(shè)計與調(diào)試
2.1 硬件設(shè)計
硬件設(shè)計應(yīng)注意如下要點:
(1)認(rèn)真處理好復(fù)位和時鐘信號。
(2)在DSP電路中,對所有的輸入信號必須有明確的處理,不能懸浮或置之不理。
(3)模擬電路和數(shù)字電路獨立布線,最后單點連接電源和地。
(4)片外程序存儲器和數(shù)據(jù)存儲器應(yīng)靠近DSP芯片放置,要合理布局,保證數(shù)據(jù)線和地址線長短基本一致(可參照最小用戶板或EVM板的布線)。
(5)關(guān)鍵部分建議布上地網(wǎng)。
在DSP硬件系統(tǒng)的印制電路板設(shè)計階段,關(guān)鍵是要使布線正確合理。布線正確一般都能做到,但要做到合理,則并不容易。DSP硬件系統(tǒng)中最易出現(xiàn)的問題是高頻干擾,因此在布線時應(yīng)盡量使高頻線短而粗,且遠(yuǎn)離易受干擾的信號線,如模擬信號線。此外,電源濾波、模擬線與數(shù)字線分離等也是不容忽視的。
設(shè)計并加工好印制電路板后就可以進(jìn)入硬件調(diào)試階段。在這個階段,首先應(yīng)對電路板進(jìn)行細(xì)致的常規(guī)檢查,防止短路和斷路現(xiàn)象。加電后,應(yīng)檢查晶體是否振蕩,復(fù)位是否正確可靠,并用示波器檢查DSP的CLKOUT1和CLKOUT2的信號是否正常,若正常則表明DSP本身基本正常。在做完這些基本檢查之后,就可以進(jìn)行系統(tǒng)硬件調(diào)試了。
2.2 硬件調(diào)試中應(yīng)注意的問題
2.2.1 保證電源的穩(wěn)定可靠
在DSP硬件系統(tǒng)的調(diào)試過程中,應(yīng)確保給實驗板供電的電源有好的恒壓恒流特性。因為在調(diào)試中要經(jīng)常對實驗板開斷電,若電源質(zhì)量不好,則很可能在突然上電時因電壓陡升而燒壞芯片(TMS320F206首當(dāng)其沖)。這樣既會造成經(jīng)濟(jì)損失(TMS320F206芯片較為昂貴),又將影響開發(fā)進(jìn)度。因此,在調(diào)試初期應(yīng)高度重視電源的選擇。
2.2.2 對受損芯片的判斷
實驗板上電運(yùn)行時,要經(jīng)常查看各芯片的發(fā)熱情況,發(fā)現(xiàn)過熱現(xiàn)象應(yīng)及時分析處理。當(dāng)懷疑有芯片損壞而又難以確認(rèn)時,可通過測量其對地電阻加以判斷。
筆者曾做過一塊實驗板,正常時檢測它的不帶電對地電阻為1MΩ左右;運(yùn)行一段時間后,發(fā)現(xiàn)軟件調(diào)試窗口無法正常調(diào)入程序,再次檢測整板的對地電阻,發(fā)現(xiàn)已降到90kΩ。由此,懷疑有芯片受損。根據(jù)現(xiàn)象初步判定是TMS320F206的問題,采取以下措施加以判斷:
將TMS320F206的電源引腳與實驗板的電源線之間的連線割斷,再測量整板的對地電阻,發(fā)現(xiàn)電阻值(原為90kΩ)開始回升——判斷有可能是受損的TMS320F206拉垮了整板電阻;進(jìn)一步檢測被損的TMS320F206芯片,其對地電阻僅為幾十kΩ,而正常的TMS320F206電阻約為2~3MΩ。由此斷定TMS320F206已被燒壞,更換芯片后,系統(tǒng)恢復(fù)正常。
當(dāng)然,并非總能一次就判斷準(zhǔn)確。若將懷疑的芯片割線后阻值仍未回升,說明該芯片沒有問題,可試著再割其它的芯片,直至找到癥結(jié)。做這項工作時,應(yīng)耐心觀察、細(xì)致分析、準(zhǔn)確判斷、及時總結(jié)。多做幾次后積累了一定經(jīng)驗,日后遇見類似問題就能很快找到解決方案。
2.2.3 結(jié)合軟件檢查短路與虛焊
TMS320F206為100引腳的TQFP(正方扁平)封裝;為追求開發(fā)板的小巧輕便,與此相應(yīng)的外部程序存儲器和數(shù)據(jù)存儲器以及其它功能模塊也多采用表貼元件。對于這些引腳細(xì)密的貼片,由于多采用人工焊貼,短路和虛焊的情況是很難杜絕的。當(dāng)實驗板剛從制板廠取出時,調(diào)試人員常會利用萬用表和針頭等工具對板子的焊貼工藝進(jìn)行檢查,對于明顯的錯誤可以及時更正;但由于貼片引腳細(xì)密繁多,一些隱蔽的短路和虛焊情況很可能被忽略。此時,利用軟件調(diào)試的方法可以較容易地查出硬件上的錯誤。
筆者曾設(shè)計了一套利用TMS320F206控制56k調(diào)制解調(diào)芯片組進(jìn)行異/同步數(shù)據(jù)傳輸?shù)膶嶋H系統(tǒng)。在軟硬件相結(jié)合的調(diào)試中,由于是劃分模塊進(jìn)行調(diào)試的,出錯的芯片目標(biāo)明確,一些遺漏的硬件錯誤很快暴露出來并得以解決。下面舉例加以說明。
現(xiàn)象一:用軟件調(diào)試器調(diào)入可執(zhí)行的輸出文件,即*.out文件,發(fā)現(xiàn)無論什么文件都調(diào)用失敗,就連開始的vector.h文件(中斷矢量標(biāo)志定義文件)也變成了一些不相干的代碼。
——根據(jù)經(jīng)驗判斷可能是TMS320F206有問題。再仔細(xì)復(fù)查實驗板上的DSP芯片,發(fā)現(xiàn)芯片上有兩個引腳發(fā)生了短路。排除故障后,程序調(diào)入成功。
現(xiàn)象二:用軟件調(diào)試器調(diào)入的文件局部出錯。例如,應(yīng)該是SPLK # lk,dma(存儲長立即數(shù)到數(shù)據(jù)存儲器空間)的地方都變成了. word xxxx。
——初步判斷可能是數(shù)據(jù)存儲器或程序存儲器出了問題。再仔細(xì)復(fù)查實驗板上的相關(guān)芯片,最終發(fā)現(xiàn)有一片程序存儲器的接地引腳是虛焊。故障排除后,程序調(diào)入正確。
現(xiàn)象三:局部功能模塊不能實現(xiàn)。在本設(shè)計中,要求調(diào)制解調(diào)器上電后,先接受DSP發(fā)來的ATZ命令(調(diào)制解調(diào)器復(fù)位命令);若調(diào)制解調(diào)器正常復(fù)位,則會返回結(jié)果碼OK。在實際調(diào)試中,發(fā)現(xiàn)始終收不到正確的結(jié)果碼,而程序設(shè)計又沒有錯誤,因此考慮硬件方面。
——該模塊涉及到的芯片是RC56D/SP(Conexant公司出品的56k調(diào)制解調(diào)芯片)。它包括一片微控制器MCU和一片數(shù)據(jù)泵MDP(分別為80引腳和100引腳的TQFP封裝),通過執(zhí)行固化在1Mbit(128K×8)RAM和2Mbit(256k×8)ROM/Flash ROM內(nèi)的固件來完成操作[3]。對這幾片芯片仔細(xì)檢查,發(fā)現(xiàn)微控制器(MCU)有兩處引腳虛焊,排除故障后,調(diào)制解調(diào)器正常復(fù)位。
2.3 軟件設(shè)計與調(diào)試
哈佛結(jié)構(gòu)、流水線操作、專用的硬件乘法器、特殊的DSP指令再加上集成電路的優(yōu)化設(shè)計,可使DSP芯片的指令周期達(dá)到幾十ns。快速的指令周期使得DSP芯片能夠?qū)崟r實現(xiàn)許多DSP應(yīng)用。然而在實際的程序設(shè)計中,由于DSP芯片的上述特點,程序員們常常會遇到許多意想不到的麻煩。這里,筆者將編程與調(diào)試中應(yīng)注意的問題和技巧作一介紹。
2.3.1 流水線沖突
TMS320F206采用了深度為4級的流水線操作,它具有4個獨立的操作階段:取指令、譯碼、取操作數(shù)和執(zhí)行。由于4個操作階段是獨立的,因此這些操作可以交疊進(jìn)行;在任意的指定周期內(nèi),1到4個不同的指令均可有效,各處于不同的完成階段。
由此可見,流水線沖突是不可避免的。一般情況下,當(dāng)流水線發(fā)生沖突時,由DSP自動插入延遲解決。當(dāng)無法自動解決時,需要程序員通過調(diào)整程序語句的次序或在程序中插入一定數(shù)量的NOP來解決。因此,若在調(diào)試時查不出代碼本身的問題,不妨試著在相關(guān)的位置插入幾個NOP指令。
2.3.2 軟件等待狀態(tài)發(fā)生器
為實現(xiàn)TMS320F206與慢速外部邏輯和存儲器的接口,等待狀態(tài)是十分必要的。當(dāng)CPU對慢速存儲器或端口進(jìn)行讀寫時,通過增加等待狀態(tài),可延長CPU等待外部存儲器或外部I/O端口的時間以便更好地響應(yīng)。為此,CPU為每個等待狀態(tài)提供了1個額外的周期。為避免總線沖突,所有向外部地址的寫操作均需要至少2個周期。
在程序的調(diào)試過程中,我們常用設(shè)置斷點的方法判斷局部功能模塊能否實現(xiàn)。若發(fā)現(xiàn)程序在尚未到達(dá)斷點時就隨機(jī)地停止運(yùn)行,或仿真窗口出現(xiàn)″Time out waiting for device″紅色告警字樣時,可優(yōu)先考慮調(diào)整等待狀態(tài)發(fā)生器控制寄存器(WSGR)的設(shè)置。
許多初學(xué)者在學(xué)習(xí)例程時發(fā)現(xiàn)其中的WSGR值均設(shè)為0000h(零等待狀態(tài)),就誤以為在任何情況下都可行,這是很不可取的。筆者在初次調(diào)試大型程序時,曾因為這個問題耗時多日;后來試著將WSGR值由0000h改為0002h就順利解決了(將片外低端程序空間的讀/寫等待狀態(tài)數(shù)設(shè)為2)。
下表顯示了等待狀態(tài)發(fā)生器控制寄存器(WSGR)的具體位設(shè)置:
說明:0=總讀為0;R=可讀;W=可寫;破折號后的值為WSGR的復(fù)位值。
第15~12位:保留位,總是為0。
第11~9位:ISWS-I/O空間等待狀態(tài)位,決定用于片外I/O空間的讀/寫等待狀態(tài)數(shù)(0~7)。
第8~6位:DSWS-數(shù)據(jù)空間等待狀態(tài)位,決定用于片外數(shù)據(jù)空間的讀/寫等待狀態(tài)數(shù)。
第5~3位:PSUWS-高端程序空間等待狀態(tài)位,決定用于片外高端程序空間的讀/寫等待狀態(tài)數(shù)。
第2~0位:PSLWS-低端程序空間等待狀態(tài)位,決定用于片外低端程序空間的讀/寫等待狀態(tài)數(shù)。
在具體應(yīng)用中,程序員可根據(jù)實際用到的片外資源靈活調(diào)整WSGR相關(guān)位的值。
2.3.3 有效利用片內(nèi)閃存(Flash Memory)
TMS320F206的一個顯著優(yōu)勢是具備32K片內(nèi)閃速存儲器塊。它具有可擦除、可編程和非易失電源等特點。在復(fù)位期間,通過將MP/MC置為低電平可以選擇閃存。若未選之,則從片外存儲器開始執(zhí)行操作。
在利用JTAG進(jìn)行硬件仿真時,有時會出現(xiàn)程序無法全速運(yùn)行的情況。這時不要總是在程序上冥思苦想,可以開闊思路從別處著手。若確信程序流程沒有什么問題,不妨試著將程序?qū)懭腴W存運(yùn)行。筆者曾遇到類似情況,程序燒入Flash運(yùn)行后一切正常,經(jīng)分析可能是實驗板上的片外程序/數(shù)據(jù)存儲器的布線不夠規(guī)范。調(diào)整布線重新制板后,程序在硬仿真時也能全速運(yùn)行了。
還有一種情況正好與之相反。程序在仿真窗口里可以正常運(yùn)行,寫入Flash后卻無法運(yùn)行了。在這種情況下,建議程序員在程序初始階段(如緊接著關(guān)中斷setc intm之后)加一小段延時(幾十ms,根據(jù)情況可以增減),可能會達(dá)到事半功倍的效果。
DSP技術(shù)的發(fā)展?jié)u趨成熟,DSP的應(yīng)用日益廣泛;了解和掌握DSP技術(shù),并應(yīng)用DSP技術(shù)開發(fā)新一代高科技產(chǎn)品是使我國電子工業(yè)走向高技術(shù)密集型的一條重要途徑。通過本文,筆者總結(jié)了自己在DSP開發(fā)工作中的經(jīng)驗與教訓(xùn),希望能對讀者有所啟示。
參考文獻(xiàn)
1 TMS320C2XX User’s Guide. Texas Instruments,1997
2 張雄偉. DSP芯片的原理與應(yīng)用.北京:電子工業(yè)出版社,2000
3 RC56D Modem Device Sets Designer’s Guide. Conexant Systems. Inc, January 1999