- 相關推薦
TMS320C2XX開發(fā)設計中應注意的問題
摘要:以TMS320F206為例,闡述了TMS320C2XX系列DSP芯片硬軟件設計中應注意的問題。著重探討了硬件設計、流水線沖突、中斷資源、閃速存儲器的使用等幾個重點問題。關鍵詞:TMS320F206 流水線 中斷 閃速存儲器
高速數(shù)字信號處理器是當前信息產業(yè)的熱點技術之一,采用最先進的DSP無疑會使所開發(fā)的產品具有更強的市場競爭力。與普通的MCU相比,DSP芯片放棄了馮·諾依曼結構,采用程序存儲器總線和數(shù)據存儲器總線分開的改進的哈佛結構,獨立的程序和數(shù)據存儲器空間允許同時存取程序指定和數(shù)據,因而大大提高了處理速度。在改進的哈佛結構的基礎上,DSP芯片廣泛采用流水線操作減少指令執(zhí)行時間,從而進一步增強了處理器的數(shù)據處理能力,非常適合于實時數(shù)字信號處理,但同時也給設計者帶來了高頻干擾和流水線沖突等諸多問題。
TMS320C2XX系列DSP芯片結構資源相似,開發(fā)工具相同,因而其開發(fā)設計具有很高的可比性。TMS320F206(以下簡稱F206)是TI公司TMS320C2XX系列的一款高性價比定點DSP,目前已廣泛應用于圖形圖像處理、語音處理、通信及儀器儀表等領域。由于DSP的開發(fā)、應用方式與普通的MCU差異很大,因此探討其開發(fā)設計很有必要。筆者在設計以DSP為核心的產品開發(fā)F206時的幾點心得,希望對正在和即將進行TMS320C2XX列系DSP開發(fā)的同仁們有所幫助。
1 TMS320F206簡介
F206是100引腳的TQFP(正方扁平)封裝,它主要具有如下特點:
(1)處理能力強。若時鐘采用20MHz晶振,則指令周期50ns,運算能力高達20MIPS。DSP芯片采用靜態(tài)CMOS集成工藝制作,采用四級流水線操作,其先進的哈佛結構允許對數(shù)據與指令的操作同時進行,因而大大提高了數(shù)據的吞吐率和指令的執(zhí)行速度,特殊的DSP指令系統(tǒng)提供了功能強大的數(shù)字信號處理操作。
(2)片內具有32K×16位的閃速存儲器和4.5K×16位的RAM。利用閃速存儲器存儲程序,不令降低了成本、減小了體積,同時系統(tǒng)軟件升級也非常方便;大容量的片內RAM可滿足大多數(shù)設計要求,無需擴展片外存儲器,既降低了成本又使硬件設計十分簡潔。
(3)地址映射分為4個可獨立尋址的空間:
·64K字程序存儲器,包含程序執(zhí)行所用的指令和數(shù)據。
·64K字本地數(shù)據存儲器,保存指令所用的數(shù)據。
·32K字全局數(shù)據存儲器,保存與其它處理器共用的數(shù)據,或者用作額外數(shù)據空間。本地數(shù)據存儲器的上端32K字(8000h-FFFFH)地址空間可用作全局數(shù)據存儲器。
·64K字的輸入/輸出(I/O)空間,與外部外圍接口,并且包含片內外圍寄存器。
(4)資源豐富。F206具有1個同步串行口SSP、1個異步串行口ASP、1個軟件可編程定時器(TIMER)以及大量中斷資源和獨特的JTAG接口等。由于與目標系統(tǒng)之間采用了JTAG邏輯掃描電路接口(基于IEEE1149.1標準),在仿真時不占用硬件資源,且可隨時終止仿真察看CPU內部及外設的工作情況,使得程序的調試和查錯十分方便。通過JTAG端口可向片內Flash串行下載程序,無需專門的編程器(XDS510仿真器即具有編程功能),進一步減少了開發(fā)成本,便于開發(fā)設計和產品的軟件升級。
2 硬件設計與調試
2.1 硬件設計時應注意的問題
F206硬件設計時,應重點注意以下幾點:
(1)時鐘電路。DSP時鐘可由外部提供,也可由板上的振蕩器提供。但一般DSP系統(tǒng)中經常使用外部時鐘輸入,因為使用外部時鐘時,時鐘的精度高、穩(wěn)定性好、使用方便。由于DSP工作是由時鐘為基準,如果時鐘質量不高,那么系統(tǒng)的可靠性、穩(wěn)定性就很難保證。因此,若采用外部時鐘,選擇晶振時應對其穩(wěn)定性、毛刺做全面的檢驗,以便DSP系統(tǒng)可靠地工作。
(2)復位電路。應同時設計上電復位電路和人工復位電路,在系統(tǒng)運行中出現(xiàn)故障時可方便地人工復位。對于復位電路,一方面應確保復位低電平時間足夠長,保證DSP可靠復位;另一方面應保證穩(wěn)定性良好,防止DSP誤復位。
(3)在DSP電路中,對所有的輸入信號必須有明確的處理,不能懸浮或置之不理。尤其要注意的是:若設計中沒有到不可屏蔽硬件中斷NMI,則硬件設計時應確保將其相應引腳拉高,否則程序運行時會出現(xiàn)不可預料的結果。若設計中用到NMI,也應在程序正常執(zhí)行階段置其相應引腳為高電平。
(4)模擬電路與數(shù)字電路應分開布置,獨立布線后應單點連接電源和地,避免相互干擾。
(5)DSP、片外程序存儲器和數(shù)據存儲器接入電源前,應加濾波電容并使其盡量靠近芯片電源引腳,以濾除電源噪聲。另外,在DSP與片外程序存儲器和數(shù)字存儲器等關鍵部分周圍建議布上地網,以減少外界干擾。
(6)片外程序存儲器和數(shù)據存儲器應盡量靠近DSP芯片放置,同時要合理布局,使數(shù)據線和地址線長短基本保持一致。對于DSP系統(tǒng)而言,應選擇存取速率與DSP相仿的外部存儲器,不然DSP的高速處理能力將不能充分發(fā)揮。
DSP指令周期為ns級,因而DSP硬件系統(tǒng)中最易出現(xiàn)的問題是高頻干擾,因此在制作DSP硬件系統(tǒng)的印制電路板(PCB)時,應特別注意對地址線和數(shù)據線等重要信號線的布線要做到正確合理。布線時盡量使高頻線短而粗,且遠離易受干擾的信號線,如模擬信號線等。
當DSP周圍電路較復雜時,建議將DSP及其時鐘電路、復位電路、片外程序存儲器、數(shù)據存儲器制作成最小系統(tǒng),以減少干擾、筆者曾在這個問題上花費大量時間和精力,由于干擾嚴重,DSP根本無法正常工作。后將DSP及其時鐘電路、復位電路、片外程序存儲器和數(shù)據存儲器制成最小系統(tǒng),主要信號線通過金手指與其它相應電路相連,結果DSP系統(tǒng)運行正常。
2.2 硬件調試時應注意的問題
在硬件調試前,應先對電路板進行細致的檢查,觀察有無短路或斷路情況(由于DSP的PCB板布線一般較密、較細,這種情況發(fā)生概率還是比較高的)。加電后,應用手感覺是否有些芯片特別熱。如果發(fā)現(xiàn)有些芯片燙得厲害,需立即掉電重新檢查電路。排除故障后,接著就應檢查晶體是否振蕩,復位是否正確可靠。然后用示波器檢查DSP的CLK-OUT1和CLK-OUT2引腳的信號是否正常,若正常則表明DSP本身工作基本正常。
2.2.1 保證電源的穩(wěn)定可靠
在DSP硬件系統(tǒng)調試前,應確保給實驗板供電的電源有良好的恒壓恒流特性。尤其要注意的是,DSP的入口電壓應保持在5.0±0.05V。電壓過低,則通過JTAG接口向Flash寫入程序時,會出現(xiàn)錯誤提示;電壓過高,則會損壞DSP芯片。由于電源電壓過高,筆者曾有過一個上午燒壞3塊DSP的慘痛經歷。另外,由于在調試時要頻繁對實驗板接電和斷電,若電源質量不好,則很可能在突然上電時因電壓陡升而燒壞DSP芯片。這樣既會造成經濟損失,又將影響開發(fā)進度。因此,在調試前應高度重視電源的選擇,同時在調試過程中應經常檢查電源是否正常。
2.2.2 利用仿真軟件排除硬件故障
在完成地電路板的檢查后,就可通過仿真軟件來調試程序。由于仿真時,程序代碼下載到目標系統(tǒng)中的片外程序存儲器,因而通過仿真軟件可以比較容易地檢查出一些硬件故障。
在上電后,若仿真軟件調試窗口始終無法調入程序,則有兩種可能:(1)DSP芯片引腳存在斷路或短路現(xiàn)象;(2)DSP芯片損壞。倘若是第一次利用仿真器軟件調試程序,此時應對實驗板斷電,仔細檢查DSP芯片各引腳的焊接情況。如果軟件調試窗口曾正確調入程序,則可能是DSP芯片損壞。此時,可通過檢測實驗板的整板阻抗進一步判斷DSP芯片是否受損。若整板阻抗急劇下降,可將給DSP芯片供電的電源線割斷,檢測DSP芯片的電阻。正常的DSP芯片的電阻為MΩ級,若被測芯片電阻明顯低于該值,則可斷定DSP芯片已被燒壞。
如果軟件調試窗口可調入程序,但調入的程序局部出錯,如對片外程序存儲器或數(shù)據存儲器操作的代碼變成了.word xxxx,此時可能是片外程序存儲器或數(shù)據存儲器出現(xiàn)故障。應仔細檢查器是否存在短路或虛焊,若不存在則應進一步判斷存儲器是否受損。本人曾遇到上述現(xiàn)象,后經仔細檢查,發(fā)現(xiàn)存儲器有引腳虛焊。
3 軟件設計與調試
哈佛結構、流水線操作現(xiàn)加上集成電路的優(yōu)化設計,使得DSP芯片的指令周期為ns級,快速的指令周期可使DSP芯片能夠實時實現(xiàn)許多應用。但在實際的程序設計中,DSP芯片的這些特點卻給程序設計者帶來了許多意想不到的麻煩。下面,筆者將根據自身的實際經驗介紹編程與調試時應注意的一些問題。
3.1 流水線沖突
F206采用四級流水線操作,指令流水線由一系列總線操作組成,它具有4個獨立的操作階段:取指、譯碼、取操作數(shù)和執(zhí)行。由于4個操作階段是獨立的,因此這些操作可以交疊地進行;在任意的指令周期內,1到4個不同的指令均可有效,各條指令均處于一個同的完成階段。因此,流水線沖突是不可避免的。通常情況下,發(fā)生流水線沖突時,編程者可通過調整程序語句的次序或在相應位置插入一定數(shù)量的NOP來解決。
3.2 設置等待狀態(tài)寄存器
對高速的DSP而言,它的讀操作從地址穩(wěn)定到數(shù)據有效僅需幾十ns的時間,而DSP外設的速度則參差不齊。為了解決高速DSP與低速外設在速度上的沖突,在高速的DSP與存儲器等外設的接口之間,等待狀態(tài)的設計是一個關鍵的問題。若DSP不能與外設很好配合,則會導致程序執(zhí)行結果出錯。F206內置一個軟件可編程等待狀態(tài)寄存器(WSGR),通過設置WSGR,可分別為片外存儲器和I/O端口設置CPU的等待時間。
在程序調試過程中,若程序隨機運行,或仿真軟件調試窗口出現(xiàn)“Time out waiting for device”紅色告警字樣時,而程序流程沒有問題,則可是DSP與外部慢速器件配件不正常,此時應重新設置等待狀態(tài)寄存器,增加CPU等待外設的時間。由于例程[2]中WSGR值均為0000h,容易產生誤導,使初學者誤以為在任何情況下WSGR值均為0000h。筆者在調試程序時,曾遇到這個問題,后來不斷調整WSGR的設置,終于使程序能夠正常執(zhí)行。在具體應用中,程序設計者應根據實際用到的片外資源設置WSGR的值,切忌盲從。
3.3 保留區(qū)域
編程時應注意設計中程序、數(shù)據存儲器配置的地址映射,切記不能向任何保留地址寫數(shù)據,否則將造成處理器的不可預測操作。F206程序存儲器地址FE00h~FEFFh(片外)為保留地址,數(shù)據存儲器地址0000h~0005Fh、0080h~01FFH、0200h~02FFh(CNF=1時)和0400h~07FFh均為保留地址。
3.4 中斷資源
F206中斷資源豐富,其0000h~003fh地址單元對應中斷向量空間,每個中斷矢量均為一條轉移指令,該指令要求4個8bit字,因而中斷向量空間可容納32個中斷矢量。對于程序設計中沒有用到的向量空間,應填零以防意外。F206不支持中斷嵌套,當它響應了某個硬件中斷時,會自動將其中斷標志位和中斷允許位INTM置1(INTM為1,禁止所有中斷),但在中斷服務程序結束后不會自動將二者清零。因此,在中斷服務程序結束前,應先將這兩個標志位清零,否則DSP將無法正常響應中斷。注意,DSP中向標志位寫入1才能對標志位清零,并且應先清除中斷標志位,然后再對中斷允許位INTM清零。
若某一中斷客觀存在,而程序中又無相應的中斷服務程序,則會導致程序紊亂。如在中斷屏蔽寄存器(IMR)中將異步串行口的傳送/接收中斷打開,此時若異步串行口控制寄存器(ASPCR)指傳送或接收中斷屏蔽,此時仍會產生該中斷,只是寫入異步數(shù)據發(fā)送和接收寄存器(ADTR)或讀ADTR的值為零,因而編程時還要對ADTR進行讀或寫處理,而不能只是簡單地清除其中斷標志位和中斷允許位后返回。筆者曾因這個問題耗時多日,程序調試總不能得到正確的結果,后編寫入相應的中斷服務程序后,再進行調試終于得到了正確結果。(范文先生網adivasplayground.com收集整理)
NMI中斷可用作軟件復位,但因為中斷矢量僅僅是一條轉移指令,因而它既不中止存儲器操作也不初始化狀態(tài)位。如果要求DSP重新對外圍器件設置,則利用NMI軟件復位不能滿足要求。根據實際,筆者設計了一個利用NMI中斷硬件復位DSP的電路,如圖1所示。
在NMI中斷服務程序中,DSP給PO6口一個正永沖即可使DSP復位,但應注意新增電路中的RC時間常數(shù)應小于DSP原有復位電路的RC時間常數(shù),以免影響DSP正常復位。
3.5 數(shù)據頁DP
在所有程序中必須初始化DP。初始化DP非常重要,復位不能初始化DP,并且上電時,DP是不確定的。沒有初始化DP的程序就不能正確執(zhí)行。另外,在編程時應注意:①DSP對片內存儲區(qū)的訪問比片外存儲區(qū)要快,因此應將經常使用的數(shù)據分配至片內存儲空間,以提高數(shù)據處理速度。②盡可能采用直接尋址的尋址方式,這樣可在提供大數(shù)據訪問能力的同時,提高指令速度。這種尋址方式具有128字節(jié)的尋址能力,但尋址范圍是指定DP下的128字。當程序復雜特別是在中斷存在的情況下,改變DP的值很容量造成程序的混亂;诖丝紤]一般將DP的值固定不變,盡可能合理地在各功能模塊間分配這128個高效且使用方便的存儲單元。應特別注意的是,DP的值置零,在操作完成后再將DP的值還原,這是因為IFR、IMR的地址都是DP為零的相對地址。另外,在中斷程序入口如果使用直接尋址方式保存狀態(tài)寄存器的值,那么在中斷返回之間裝載所保存的值時,也應先將DP的值設成零,否則程序將無法正常運行。
3.6 內置閃速存儲器(Flash)
F206的一個顯著優(yōu)勢是具備32K×16位的片內閃速存儲器,它具有可擦除、可編程和非易失電源等特點。在復位期間,通過將MP/MC置為低電平可選擇閃存。利用JTAG接口向目標系統(tǒng)下載程序包括:Flash的清零(clear,所有位清零)、擦除(erase,所有位置1)及編程。其片內Flash,由兩塊相對獨立的16KB Flash組成,因而每次清零、擦除需對兩塊16KB Flash分別進行。F206運算速度有20、28.5和40MIPS,但程序代碼成功燒錄進片F(xiàn)lash的前提條件是其工作于20MIPS,否則程序無法燒尋進DSP。另外應將NMI中斷相應引腳拉高,否則由JTAG將程序代碼燒錄進Flash時會出現(xiàn)錯誤提示,使燒錄無法完成。
筆者在調試程序時曾遇到這樣的情況,程序在仿真時可以正常運行,燒錄到Flash后卻無法運行了。原因是上電時DSP外圍芯片復位時間長于DSP的啟動時間,后來嘗試著在程序初始化之前插入一段延時(約為幾十ms),重新燒錄后程序執(zhí)行正常。
DSP技術的發(fā)展越來越成熟,DSP的應用也日益廣泛。了解和掌握DSP技術,并應用DSP技術開發(fā)新一代高科技產品十分必要。本文介紹的DSP開發(fā)中應注意的幾個問題,可以大大縮短開發(fā)時間,僅供讀者參考。
【TMS320C2XX開發(fā)設計中應注意的問題】相關文章:
CAI設計中應注意的若干問題08-17
稅款核定中應注意的問題08-07
開發(fā)商在土地一級開發(fā)中應注意的法律問題探討08-05
淺談語文教學設計中應注意的幾個問題08-20
醫(yī)學論文撰寫中應注意的問題08-18
歷史教學中應注意的幾個問題08-07
變頻器使用中應注意的問題08-06
傾聽:口語交際教學中應注意的問題08-17