新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > TMS320C2XX開發(fā)設(shè)計(jì)中應(yīng)注意的問題

TMS320C2XX開發(fā)設(shè)計(jì)中應(yīng)注意的問題

作者: 時(shí)間:2007-03-09 來源:網(wǎng)絡(luò) 收藏

  高速器是當(dāng)前信息產(chǎn)業(yè)的熱點(diǎn)技術(shù)之一,采用最先進(jìn)的無疑會使所開發(fā)的產(chǎn)品具有更強(qiáng)的市場競爭力。與普通的MCU相比,芯片放棄了馮%26;#183;諾依曼結(jié)構(gòu),采用程序存儲器總線和數(shù)據(jù)存儲器總線分開的改進(jìn)的哈佛結(jié)構(gòu),獨(dú)立的程序和數(shù)據(jù)存儲器空間允許同時(shí)存取程序指定和數(shù)據(jù),因而大大提高了處理速度。在改進(jìn)的哈佛結(jié)構(gòu)的基礎(chǔ)上,芯片廣泛采用流水線操作減少指令執(zhí)行時(shí)間,從而進(jìn)一步增強(qiáng)了處理器的數(shù)據(jù)處理能力,非常適合于實(shí)時(shí),但同時(shí)也給設(shè)計(jì)者帶來了高頻干擾和流水線沖突等諸多問題。

  TMS320C2XX系列DSP芯片結(jié)構(gòu)資源相似,開發(fā)工具相同,因而其開發(fā)設(shè)計(jì)具有很高的可比性。TMS320F206(以下簡稱F206)是TI公司TMS320C2XX系列的一款高性價(jià)比定點(diǎn)DSP,目前已廣泛應(yīng)用于圖形圖像處理、語音處理、通信及儀器儀表等領(lǐng)域。由于DSP的開發(fā)、應(yīng)用方式與普通的MCU差異很大,因此探討其開發(fā)設(shè)計(jì)很有必要。筆者在設(shè)計(jì)以DSP為核心的產(chǎn)品開發(fā)F206時(shí)的幾點(diǎn)心得,希望對正在和即將進(jìn)行TMS320C2XX列系DSP開發(fā)的同仁們有所幫助。

  1 TMS320F206簡介

  F206是100引腳的TQFP(正方扁平)封裝,它主要具有如下特點(diǎn): (1)處理能力強(qiáng)。若時(shí)鐘采用20MHz晶振,則指令周期50ns,運(yùn)算能力高達(dá)20MIPS。DSP芯片采用靜態(tài)CMOS集成工藝制作,采用四級流水線操作,其先進(jìn)的哈佛結(jié)構(gòu)允許對數(shù)據(jù)與指令的操作同時(shí)進(jìn)行,因而大大提高了數(shù)據(jù)的吞吐率和指令的執(zhí)行速度,特殊的DSP指令系統(tǒng)提供了功能強(qiáng)大的操作。 (2)片內(nèi)具有16位的閃速存儲器和16位的RAM。利用閃速存儲器存儲程序,不令降低了成本、減小了體積,同時(shí)系統(tǒng)軟件升級也非常方便;大容量的片內(nèi)RAM可滿足大多數(shù)設(shè)計(jì)要求,無需擴(kuò)展片外存儲器,既降低了成本又使硬件設(shè)計(jì)十分簡潔。 (3)地址映射分為4個(gè)可獨(dú)立尋址的空間:64K字程序存儲器,包含程序執(zhí)行所用的指令和數(shù)據(jù)。字本地?cái)?shù)據(jù)存儲器,保存指令所用的數(shù)據(jù)。 32K字全局?jǐn)?shù)據(jù)存儲器,保存與其它處理器共用的數(shù)據(jù),或者用作額外數(shù)據(jù)空間。本地?cái)?shù)據(jù)存儲器的上端32K字(8000h-FFFFH)地址空間可用作全局?jǐn)?shù)據(jù)存儲器。64K字的輸入/輸出(I/O)空間,與外部外圍接口,并且包含片內(nèi)外圍寄存器。 (4)資源豐富。F206具有1個(gè)同步串行口SSP、1個(gè)異步串行口ASP、1個(gè)軟件可編程定時(shí)器(TIMER)以及大量中斷資源和獨(dú)特的JTAG接口等。由于與目標(biāo)系統(tǒng)之間采用了JTAG邏輯掃描電路接口(基于IEEE1149.1標(biāo)準(zhǔn)),在仿真時(shí)不占用硬件資源,且可隨時(shí)終止仿真察看CPU內(nèi)部及外設(shè)的工作情況,使得程序的調(diào)試和查錯(cuò)十分方便。通過JTAG端口可向片內(nèi)Flash串行下載程序,無需專門的編程器(XDS510仿真器即具有編程功能),進(jìn)一步減少了開發(fā)成本,便于開發(fā)設(shè)計(jì)和產(chǎn)品的軟件升級。

  2 硬件設(shè)計(jì)與調(diào)試

  2.1 硬件設(shè)計(jì)時(shí)應(yīng)注意的問題

  F206硬件設(shè)計(jì)時(shí),應(yīng)重點(diǎn)注意以下幾點(diǎn): (1)時(shí)鐘電路。DSP時(shí)鐘可由外部提供,也可由板上的振蕩器提供。但一般DSP系統(tǒng)中經(jīng)常使用外部時(shí)鐘輸入,因?yàn)槭褂猛獠繒r(shí)鐘時(shí),時(shí)鐘的精度高、穩(wěn)定性好、使用方便。由于DSP工作是由時(shí)鐘為基準(zhǔn),如果時(shí)鐘質(zhì)量不高,那么系統(tǒng)的可靠性、穩(wěn)定性就很難保證。因此,若采用外部時(shí)鐘,選擇晶振時(shí)應(yīng)對其穩(wěn)定性、毛刺做全面的檢驗(yàn),以便DSP系統(tǒng)可靠地工作。 (2)復(fù)位電路。應(yīng)同時(shí)設(shè)計(jì)上電復(fù)位電路和人工復(fù)位電路,在系統(tǒng)運(yùn)行中出現(xiàn)故障時(shí)可方便地人工復(fù)位。對于復(fù)位電路,一方面應(yīng)確保復(fù)位低電平時(shí)間足夠長,保證DSP可靠復(fù)位;另一方面應(yīng)保證穩(wěn)定性良好,防止DSP誤復(fù)位。 (3)在DSP電路中,對所有的輸入信號必須有明確的處理,不能懸浮或置之不理。尤其要注意的是:若設(shè)計(jì)中沒有到不可屏蔽硬件中斷NMI,則硬件設(shè)計(jì)時(shí)應(yīng)確保將其相應(yīng)引腳拉高,否則程序運(yùn)行時(shí)會出現(xiàn)不可預(yù)料的結(jié)果。若設(shè)計(jì)中用到NMI,也應(yīng)在程序正常執(zhí)行階段置其相應(yīng)引腳為高電平。 (4)模擬電路與數(shù)字電路應(yīng)分開布置,獨(dú)立布線后應(yīng)單點(diǎn)連接電源和地,避免相互干擾。 (5)DSP、片外程序存儲器和數(shù)據(jù)存儲器接入電源前,應(yīng)加濾波電容并使其盡量靠近芯片電源引腳,以濾除電源噪聲。另外,在DSP與片外程序存儲器和數(shù)字存儲器等關(guān)鍵部分周圍建議布上地網(wǎng),以減少外界干擾。 (6)片外程序存儲器和數(shù)據(jù)存儲器應(yīng)盡量靠近DSP芯片放置,同時(shí)要合理布局,使數(shù)據(jù)線和地址線長短基本保持一致。對于DSP系統(tǒng)而言,應(yīng)選擇存取速率與DSP相仿的外部存儲器,不然DSP的高速處理能力將不能充分發(fā)揮。DSP指令周期為ns級,因而DSP硬件系統(tǒng)中最易出現(xiàn)的問題是高頻干擾,因此在制作DSP硬件系統(tǒng)的印制電路板(PCB)時(shí),應(yīng)特別注意對地址線和數(shù)據(jù)線等重要信號線的布線要做到正確合理。布線時(shí)盡量使高頻線短而粗,且遠(yuǎn)離易受干擾的信號線,如模擬信號線等。 當(dāng)DSP周圍電路較復(fù)雜時(shí),建議將DSP及其時(shí)鐘電路、復(fù)位電路、片外程序存儲器、數(shù)據(jù)存儲器制作成最小系統(tǒng),以減少干擾、筆者曾在這個(gè)問題上花費(fèi)大量時(shí)間和精力,由于干擾嚴(yán)重,DSP根本無法正常工作。后將DSP及其時(shí)鐘電路、復(fù)位電路、片外程序存儲器和數(shù)據(jù)存儲器制成最小系統(tǒng),主要信號線通過金手指與其它相應(yīng)電路相連,結(jié)果DSP系統(tǒng)運(yùn)行正常。

  2.2 硬件調(diào)試時(shí)應(yīng)注意的問題

  在硬件調(diào)試前,應(yīng)先對電路板進(jìn)行細(xì)致的檢查,觀察有無短路或斷路情況(由于DSP的PCB板布線一般較密、較細(xì),這種情況發(fā)生概率還是比較高的)。加電后,應(yīng)用手感覺是否有些芯片特別熱。如果發(fā)現(xiàn)有些芯片燙得厲害,需立即掉電重新檢查電路。排除故障后,接著就應(yīng)檢查晶體是否振蕩,復(fù)位是否正確可靠。然后用示波器檢查DSP的CLK-OUT1和CLK-OUT2引腳的信號是否正常,若正常則表明DSP本身工作基本正常。

  2.2.1 保證電源的穩(wěn)定可靠

  在DSP硬件系統(tǒng)調(diào)試前,應(yīng)確保給實(shí)驗(yàn)板供電的電源有良好的恒壓恒流特性。尤其要注意的是,DSP的入口電壓應(yīng)保持在5.0%26;#177;0.05V。電壓過低,則通過JTAG接口向Flash寫入程序時(shí),會出現(xiàn)錯(cuò)誤提示;電壓過高,則會損壞DSP芯片。由于電源電壓過高,筆者曾有過一個(gè)上午燒壞3塊DSP的慘痛經(jīng)歷。另外,由于在調(diào)試時(shí)要頻繁對實(shí)驗(yàn)板接電和斷電,若電源質(zhì)量不好,則很可能在突然上電時(shí)因電壓陡升而燒壞DSP芯片。這樣既會造成經(jīng)濟(jì)損失,又將影響開發(fā)進(jìn)度。因此,在調(diào)試前應(yīng)高度重視電源的選擇,同時(shí)在調(diào)試過程中應(yīng)經(jīng)常檢查電源是否正常。

  2.2.2 利用仿真軟件排除硬件故障

  在完成地電路板的檢查后,就可通過仿真軟件來調(diào)試程序。由于仿真時(shí),程序代碼下載到目標(biāo)系統(tǒng)中的片外程序存儲器,因而通過仿真軟件可以比較容易地檢查出一些硬件故障。 在上電后,若仿真軟件調(diào)試窗口始終無法調(diào)入程序,則有兩種可能:(1)DSP芯片引腳存在斷路或短路現(xiàn)象;(2)DSP芯片損壞。倘若是第一次利用仿真器軟件調(diào)試程序,此時(shí)應(yīng)對實(shí)驗(yàn)板斷電,仔細(xì)檢查DSP芯片各引腳的焊接情況。如果軟件調(diào)試窗口曾正確調(diào)入程序,則可能是DSP芯片損壞。此時(shí),可通過檢測實(shí)驗(yàn)板的整板阻抗進(jìn)一步判斷DSP芯片是否受損。若整板阻抗急劇下降,可將給DSP芯片供電的電源線割斷,檢測DSP芯片的電阻。正常的DSP芯片的電阻為MΩ級,若被測芯片電阻明顯低于該值,則可斷定DSP芯片已被燒壞。 如果軟件調(diào)試窗口可調(diào)入程序,但調(diào)入的程序局部出錯(cuò),如對片外程序存儲器或數(shù)據(jù)存儲器操作的代碼變成了.word xxxx,此時(shí)可能是片外程序存儲器或數(shù)據(jù)存儲器出現(xiàn)故障。應(yīng)仔細(xì)檢查器是否存在短路或虛焊,若不存在則應(yīng)進(jìn)一步判斷存儲器是否受損。本人曾遇到上述現(xiàn)象,后經(jīng)仔細(xì)檢查,發(fā)現(xiàn)存儲器有引腳虛焊。

  3 軟件設(shè)計(jì)與調(diào)試

  哈佛結(jié)構(gòu)、流水線操作現(xiàn)加上集成電路的優(yōu)化設(shè)計(jì),使得DSP芯片的指令周期為ns級,快速的指令周期可使DSP芯片能夠?qū)崟r(shí)實(shí)現(xiàn)許多應(yīng)用。但在實(shí)際的程序設(shè)計(jì)中,DSP芯片的這些特點(diǎn)卻給程序設(shè)計(jì)者帶來了許多意想不到的麻煩。下面,筆者將根據(jù)自身的實(shí)際經(jīng)驗(yàn)介紹編程與調(diào)試時(shí)應(yīng)注意的一些問題。

  3.1 流水線沖突

  F206采用四級流水線操作,指令流水線由一系列總線操作組成,它具有4個(gè)獨(dú)立的操作階段:取指、譯碼、取操作數(shù)和執(zhí)行。由于4個(gè)操作階段是獨(dú)立的,因此這些操作可以交疊地進(jìn)行;在任意的指令周期內(nèi),1到4個(gè)不同的指令均可有效,各條指令均處于一個(gè)同的完成階段。因此,流水線沖突是不可避免的。通常情況下,發(fā)生流水線沖突時(shí),編程者可通過調(diào)整程序語句的次序或在相應(yīng)位置插入一定數(shù)量的NOP來解決。

  3.2 設(shè)置等待狀態(tài)寄存器

  對高速的DSP而言,它的讀操作從地址穩(wěn)定到數(shù)據(jù)有效僅需幾十ns的時(shí)間,而DSP外設(shè)的速度則參差不齊。為了解決高速DSP與低速外設(shè)在速度上的沖突,在高速的DSP與存儲器等外設(shè)的接口之間,等待狀態(tài)的設(shè)計(jì)是一個(gè)關(guān)鍵的問題。若DSP不能與外設(shè)很好配合,則會導(dǎo)致程序執(zhí)行結(jié)果出錯(cuò)。F206內(nèi)置一個(gè)軟件可編程等待狀態(tài)寄存器(WSGR),通過設(shè)置WSGR,可分別為片外存儲器和I/O端口設(shè)置CPU的等待時(shí)間。 在程序調(diào)試過程中,若程序隨機(jī)運(yùn)行,或仿真軟件調(diào)試窗口出現(xiàn)“Time out waiting for device”紅色告警字樣時(shí),而程序流程沒有問題,則可是DSP與外部慢速器件配件不正常,此時(shí)應(yīng)重新設(shè)置等待狀態(tài)寄存器,增加CPU等待外設(shè)的時(shí)間。由于例程[2]中WSGR值均為0000h,容易產(chǎn)生誤導(dǎo),使初學(xué)者誤以為在任何情況下WSGR值均為0000h。筆者在調(diào)試程序時(shí),曾遇到這個(gè)問題,后來不斷調(diào)整WSGR的設(shè)置,終于使程序能夠正常執(zhí)行。在具體應(yīng)用中,程序設(shè)計(jì)者應(yīng)根據(jù)實(shí)際用到的片外資源設(shè)置WSGR的值,切忌盲從。

  3.3 保留區(qū)域

  編程時(shí)應(yīng)注意設(shè)計(jì)中程序、數(shù)據(jù)存儲器配置的地址映射,切記不能向任何保留地址寫數(shù)據(jù),否則將造成處理器的不可預(yù)測操作。F206程序存儲器地址FE00h~FEFFh(片外)為保留地址,數(shù)據(jù)存儲器地址0000h~0005Fh、0080h~01FFH、0200h~02FFh(CNF=1時(shí))和0400h~07FFh均為保留地址。

  3.4 中斷資源

  F206中斷資源豐富,其0000h~003fh地址單元對應(yīng)中斷向量空間,每個(gè)中斷矢量均為一條轉(zhuǎn)移指令,該指令要求4個(gè)8bit字,因而中斷向量空間可容納32個(gè)中斷矢量。對于程序設(shè)計(jì)中沒有用到的向量空間,應(yīng)填零以防意外。F206不支持中斷嵌套,當(dāng)它響應(yīng)了某個(gè)硬件中斷時(shí),會自動將其中斷標(biāo)志位和中斷允許位INTM置1(INTM為1,禁止所有中斷),但在中斷服務(wù)程序結(jié)束后不會自動將二者清零。因此,在中斷服務(wù)程序結(jié)束前,應(yīng)先將這兩個(gè)標(biāo)志位清零,否則DSP將無法正常響應(yīng)中斷。注意,DSP中向標(biāo)志位寫入1才能對標(biāo)志位清零,并且應(yīng)先清除中斷標(biāo)志位,然后再對中斷允許位INTM清零。 若某一中斷客觀存在,而程序中又無相應(yīng)的中斷服務(wù)程序,則會導(dǎo)致程序紊亂。如在中斷屏蔽寄存器(IMR)中將異步串行口的傳送/接收中斷打開,此時(shí)若異步串行口控制寄存器(ASPCR)指傳送或接收中斷屏蔽,此時(shí)仍會產(chǎn)生該中斷,只是寫入異步數(shù)據(jù)發(fā)送和接收寄存器(ADTR)或讀ADTR的值為零,因而編程時(shí)還要對ADTR進(jìn)行讀或?qū)懱幚?,而不能只是簡單地清除其中斷?biāo)志位和中斷允許位后返回。筆者曾因這個(gè)問題耗時(shí)多日,程序調(diào)試總不能得到正確的結(jié)果,后編寫入相應(yīng)的中斷服務(wù)程序后,再進(jìn)行調(diào)試終于得到了正確結(jié)果。

  NMI中斷可用作軟件復(fù)位,但因?yàn)橹袛嗍噶績H僅是一條轉(zhuǎn)移指令,因而它既不中止存儲器操作也不初始化狀態(tài)位。如果要求DSP重新對外圍器件設(shè)置,則利用NMI軟件復(fù)位不能滿足要求。根據(jù)實(shí)際,筆者設(shè)計(jì)了一個(gè)利用NMI中斷硬件復(fù)位DSP的電路,如圖1所示。 在NMI中斷服務(wù)程序中,DSP給PO6口一個(gè)正永沖即可使DSP復(fù)位,但應(yīng)注意新增電路中的RC時(shí)間常數(shù)應(yīng)小于DSP原有復(fù)位電路的RC時(shí)間常數(shù),以免影響DSP正常復(fù)位。

  3.5 數(shù)據(jù)頁DP 在所有程序中必須初始化DP。

  初始化DP非常重要,復(fù)位不能初始化DP,并且上電時(shí),DP是不確定的。沒有初始化DP的程序就不能正確執(zhí)行。另外,在編程時(shí)應(yīng)注意:①DSP對片內(nèi)存儲區(qū)的訪問比片外存儲區(qū)要快,因此應(yīng)將經(jīng)常使用的數(shù)據(jù)分配至片內(nèi)存儲空間,以提高數(shù)據(jù)處理速度。②盡可能采用直接尋址的尋址方式,這樣可在提供大數(shù)據(jù)訪問能力的同時(shí),提高指令速度。這種尋址方式具有128字節(jié)的尋址能力,但尋址范圍是指定DP下的128字。當(dāng)程序復(fù)雜特別是在中斷存在的情況下,改變DP的值很容量造成程序的混亂?;诖丝紤]一般將DP的值固定不變,盡可能合理地在各功能模塊間分配這128個(gè)高效且使用方便的存儲單元。應(yīng)特別注意的是,DP的值置零,在操作完成后再將DP的值還原,這是因?yàn)镮FR、IMR的地址都是DP為零的相對地址。另外,在中斷程序入口如果使用直接尋址方式保存狀態(tài)寄存器的值,那么在中斷返回之間裝載所保存的值時(shí),也應(yīng)先將DP的值設(shè)成零,否則程序?qū)o法正常運(yùn)行。

  3.6 內(nèi)置閃速存儲器(Flash)

  F206的一個(gè)顯著優(yōu)勢是具備32K%26;#215;16位的片內(nèi)閃速存儲器,它具有可擦除、可編程和非易失電源等特點(diǎn)。在復(fù)位期間,通過將MP/MC置為低電平可選擇閃存。利用JTAG接口向目標(biāo)系統(tǒng)下載程序包括:Flash的清零(clear,所有位清零)、擦除(erase,所有位置1)及編程。其片內(nèi)Flash,由兩塊相對獨(dú)立的16KB Flash組成,因而每次清零、擦除需對兩塊16KB Flash分別進(jìn)行。F206運(yùn)算速度有20、28.5和40MIPS,但程序代碼成功燒錄進(jìn)片F(xiàn)lash的前提條件是其工作于20MIPS,否則程序無法燒尋進(jìn)DSP。另外應(yīng)將NMI中斷相應(yīng)引腳拉高,否則由JTAG將程序代碼燒錄進(jìn)Flash時(shí)會出現(xiàn)錯(cuò)誤提示,使燒錄無法完成。 筆者在調(diào)試程序時(shí)曾遇到這樣的情況,程序在仿真時(shí)可以正常運(yùn)行,燒錄到Flash后卻無法運(yùn)行了。原因是上電時(shí)DSP外圍芯片復(fù)位時(shí)間長于DSP的啟動時(shí)間,后來嘗試著在程序初始化之前插入一段延時(shí)(約為幾十ms),重新燒錄后程序執(zhí)行正常。

  DSP技術(shù)的發(fā)展越來越成熟,DSP的應(yīng)用也日益廣泛。了解和掌握DSP技術(shù),并應(yīng)用DSP技術(shù)開發(fā)新一代高科技產(chǎn)品十分必要。本文介紹的DSP開發(fā)中應(yīng)注意的幾個(gè)問題,可以大大縮短開發(fā)時(shí)間,僅供讀者參考。



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉