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