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