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