《DSP器件及應(yīng)用》課件第2章_第1頁
《DSP器件及應(yīng)用》課件第2章_第2頁
《DSP器件及應(yīng)用》課件第2章_第3頁
《DSP器件及應(yīng)用》課件第2章_第4頁
《DSP器件及應(yīng)用》課件第2章_第5頁
已閱讀5頁,還剩320頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第2章TMS320‘C2000DSP的硬件結(jié)構(gòu)

2.1TMS320‘C2000的總線結(jié)構(gòu)2.2TMS320‘C2000的CPU結(jié)構(gòu)2.3TMS320‘C2000的存儲器與I/O空間2.4TMS320‘C2000的程序控制2.5TMS320‘C20x的片內(nèi)外設(shè)2.6TMS320‘C24xx的功能結(jié)構(gòu)2.7小結(jié)

TMS320‘C2000系列芯片是16位定點DSP芯片,屬于第二代定點DSP的衍生代產(chǎn)品,具有優(yōu)化的內(nèi)部結(jié)構(gòu)、更快的速度、更多的片內(nèi)資源及更小的體積和功耗,適合數(shù)字采集、快速控制、音頻等多種應(yīng)用。

TMS320C'2000DSP的體系結(jié)構(gòu)采用改進型哈佛結(jié)構(gòu),其程序存儲器和數(shù)據(jù)存儲器分別獨立且有各自的總線結(jié)構(gòu)。TMS320'C2000系列芯片有3個主要的組成部分,即中央處理單元(CPU)、片內(nèi)存儲器和片內(nèi)外設(shè)。圖2.1為TMS320'C2000的內(nèi)部結(jié)構(gòu)框圖,圖中清晰地表明了CPU的結(jié)構(gòu)及CPU各部件之間的關(guān)系。所有的TMS320'C2000系列器件都采用同樣的中央處理單元、總線結(jié)構(gòu)和指令集,不同的器件則具有不同的片內(nèi)存儲器配置和片內(nèi)外設(shè)。圖2.1TMS320'C2000的內(nèi)部結(jié)構(gòu)框圖

2.1TMS320‘C2000的總線結(jié)構(gòu)

6條各自獨立的16位總線的總線結(jié)構(gòu)賦予TMS320’C2000DSP強大的內(nèi)部數(shù)據(jù)通信功能,使數(shù)據(jù)在各部件間交換順暢,并可在同一時鐘周期內(nèi)并發(fā)使用,從而得到優(yōu)越的性能。圖2.2給出了TMS320‘C2000DSP總線結(jié)構(gòu)框圖,TMS320’C2000內(nèi)部正是圍繞著這6條16位總線構(gòu)造的,分別介紹如下:

(1)?PAB(ProgramAddr.Bus):程序地址總線,提供讀/寫程序存儲器的地址。

(2)?DRAB(Data-ReadAddr.Bus):數(shù)據(jù)讀地址總線,提供讀數(shù)據(jù)存儲器的地址。

(3)?DWAB(Data-WriteAddr.Bus):數(shù)據(jù)寫地址總線,提供寫數(shù)據(jù)存儲器的地址。

(4)?PRDB(ProgramReadBus):程序讀總線,承載指令碼,傳送立即操作數(shù)及表信息,實現(xiàn)從程序存儲器到CPU的傳輸。圖2.2TMS320'C2000總線結(jié)構(gòu)框圖

(5)?DRDB(DataReadBus):數(shù)據(jù)讀總線,提供數(shù)據(jù)傳送通道,把源操作數(shù)從數(shù)據(jù)存儲器或程序存儲器傳送(讀入)到CPU(如中央算術(shù)邏輯單元CALU、硬件乘法器和輔助寄存器算術(shù)單元ARAU等)中。

(6)?DWEB(DataWriteBus):數(shù)據(jù)寫總線,提供數(shù)據(jù)傳送通道,把目標操作數(shù)(或運算結(jié)果)從CPU(如中央算術(shù)邏輯單元CALU、硬件乘法器和輔助寄存器算術(shù)單元ARAU等)傳送(寫出)到數(shù)據(jù)存儲器或程序存儲器中。

TMS320‘C2000總線結(jié)構(gòu)特點如下:

(1)采用各自獨立的數(shù)據(jù)地址總線分別用于讀數(shù)據(jù)(DRAB)和寫數(shù)據(jù)(DWAB),因此,CPU的讀和寫可在一個周期內(nèi)進行。

(2)獨立的程序空間和數(shù)據(jù)空間允許CPU同時訪問程序指令和數(shù)據(jù)。

由以上的總線結(jié)構(gòu)特點可以看出:讀程序、讀數(shù)據(jù)和寫數(shù)據(jù)分別采用各自分開的地址總線及數(shù)據(jù)傳送總線,將取指、讀數(shù)據(jù)、寫數(shù)據(jù)分成3個不同的空間,這樣在1個時鐘周期內(nèi)可進行訪問指令代碼、讀數(shù)據(jù)、保存運算結(jié)果3種不同的操作,前提是程序代碼和讀/寫片內(nèi)數(shù)據(jù)存儲器不在同一區(qū)塊上,而程序置于片外也無妨。又因為ARAU與CPU的其它運算部件可并行運作,所以在同一周期內(nèi)將產(chǎn)生出新的地址。這種并行機制可以支持在單個機器周期內(nèi)完成一組算術(shù)、邏輯、位操作運算。例如,單周期乘累加指令(如MPYA)在1個周期里完成操作數(shù)(乘數(shù))的讀入、與被乘數(shù)(T寄存器值)的乘積、前次乘積與累加器值的累加、下次操作數(shù)地址的變更、后面指令代碼的讀入等多個操作,而在重復(fù)執(zhí)行的MACD指令里還要做一次當前操作數(shù)向高存儲單元移位的操作。這種并行操作既離不開硬件乘法器和中央算術(shù)邏輯單元,又依賴于多總線結(jié)構(gòu)。

在這里需要指出的是,由于TMS320'C2000具有豐富的片內(nèi)存儲資源,為了減少其外部引腳和減小體積,將3套內(nèi)部總線合并為1套外部擴展總線,分離的程序和數(shù)據(jù)空間在外存儲器中通過1套地址/數(shù)據(jù)總線分時復(fù)用,因此,同時使用外部擴展程序/數(shù)據(jù)存儲器會降低TMS320'C2000DSP的性能。

2.2TMS320‘C2000的CPU結(jié)構(gòu)

CPU部分是DSP的核心,是整個芯片的指揮部件。所有的TMS320’C2000系列DSP都具有相同的CPU結(jié)構(gòu)。TMS320‘C2000DSP的CPU主要包括以下幾個部分:

(1)?32位中央算術(shù)邏輯單元CALU;

(2)?32位累加器ACC;

(3)用于CALU的輸入與輸出數(shù)據(jù)定標移位器;

(4)?16位×16位硬件乘法器MUL;

(5)乘積比例移位器;

(6)數(shù)據(jù)地址產(chǎn)生邏輯,含8個輔助寄存器和1個輔助寄存器算術(shù)單元ARAU;

(7)程序地址產(chǎn)生邏輯。

TMS320'C2000CPU的運算部件結(jié)構(gòu)如圖2.3所示。顯然,該CPU運算部件包括以下3個主要部件:輸入定標部分、乘法部分和中央算術(shù)邏輯部分。CPU的運算部件是DSP最核心的部分,我們將對DSP的運算部件進行詳細介紹。數(shù)據(jù)地址發(fā)生器在CPU中是一個重要而較為獨立的單元部件,有必要專門作為一個小節(jié)討論;同樣,程序地址產(chǎn)生邏輯也將作為一個專門的部分,在程序控制一節(jié)講述。而CPU中的狀態(tài)寄存器ST0和ST1除提供運算的標志位外,還提供對整個DSP的工作模式、直接尋址等的控制,因此這部分也單列出來分析。圖2.3TMS320'C2000CPU的運算部件2.2.1輸入定標部分

32位輸入數(shù)據(jù)定標移位器(ISCALE)的功能是把來自存儲器的16位數(shù)據(jù)左移0~16位變成32位送往中央算術(shù)邏輯單元(CALU),以與32位的CALU對齊。為了進行數(shù)據(jù)的比例運算和邏輯操作,這種對齊是必要的。作為程序或數(shù)據(jù)空間與CALU之間數(shù)據(jù)通路的一部分,輸入數(shù)據(jù)定標移位器的操作無需額外的時鐘周期開銷。圖2.4示出了輸入數(shù)據(jù)定標移位器的輸入、輸出和移位計數(shù)的關(guān)系。圖2.4輸入數(shù)據(jù)定標移位器的輸入、輸出和移位計數(shù)的關(guān)系輸入數(shù)據(jù)定標移位器(輸入移位器)的16位輸入來自于復(fù)工器MUX,而MUX根據(jù)指令代碼可選擇兩種來源的輸入:

(1)數(shù)據(jù)讀總線(DRDB),該輸入值來自于存放指令操作數(shù)的數(shù)據(jù)存儲器。

(2)程序讀總線(PRDB),該輸入值為指令操作數(shù)給出的常數(shù)值。

輸入數(shù)據(jù)定標移位器的輸出則是經(jīng)移位后的32位輸出,和CALU已經(jīng)對齊,作為CALU運算的一個輸入量。移位方式如下:

(1)均進行左移:左移時,沒有使用的低位LSB以0填充,而沒有用到的高位MSB則根據(jù)狀態(tài)寄存器ST1中的符號擴展模式位(SXM)的設(shè)置情況決定填入0還是進行符號擴展。當SXM?=?0時,不做符號擴展,此時未用到的高位(MSB)填入0;當SXM?=?1時,做符號擴展,此時將輸入數(shù)據(jù)的符號位(最高位)擴展到未用到的高位(MSB)上。這兩種情況下的移位操作分別如圖2.5和圖2.6所示。圖2.5SXM?=?0時輸入數(shù)據(jù)定標移位器的操作圖2.6SXM?=?1時輸入數(shù)據(jù)定標移位器的操作

(2)移位次數(shù)確定:該輸入移位器可做0~16位的左移操作,次數(shù)N可在指令中以常數(shù)的方式確定,也可以由T寄存器的低4位給出。而后者,由于T寄存器的值隨時可以修改(動態(tài)確定),因此更能滿足系統(tǒng)的性能要求。2.2.2乘法部分

借助于16位×16位的硬件乘法器,TMS320‘C2000系列DSP可以在一個周期內(nèi)完成帶符號數(shù)或無符號數(shù)的2的補碼的乘法運算。圖2.7給出了乘法部件的示意圖。可見,硬件乘法器包括4個部件,即T寄存器(TREG)、乘法器、P寄存器(PREG)和乘積移位器(ProductShifter)。圖2.7TMS320'C2000CPU的乘法部件

(1)?T寄存器(TREG):16位的暫存寄存器,用來保存乘法運算中的其中一個乘數(shù)。此外,它也可作為輸入移位器的移位次數(shù)。T寄存器可直接加載。

(2)乘法器:16位×16位,結(jié)果為32位,單周期完成。其中,一個16位輸入值為T寄存器內(nèi)容,T寄存器在乘法實現(xiàn)之前預(yù)先加載。另一個16位輸入值為來自于數(shù)據(jù)存儲器的直接/間接尋址的操作數(shù),或來自于程序存儲器的立即操作數(shù)。乘積結(jié)果送到32位P寄存器中。

(3)P寄存器(PREG):32位的乘積寄存器,用來保存32位乘積結(jié)果,也可預(yù)先加載而提供乘累加指令的初值,這樣就可避免由于初值的不確定而出現(xiàn)的混亂。輸出時其值被復(fù)制到乘積移位器。

(4)乘積移位器(ProductShifter):通過乘積移位器對32位乘積結(jié)果先進行定標移位,然后再將全部的32位送進CALU去累加,或經(jīng)指令SPH(或SPL)將乘積移位器的高位字或低位字分別保存到數(shù)據(jù)存儲器中。乘積移位器有4種移位模式,由狀態(tài)寄存器ST1中的乘積移位模式位(PM)的設(shè)置情況決定,如表2.1所示。

利用乘法器、TREG和PREG,TMS320'C2000可高效地實現(xiàn)基本的DSP運算,如卷積、相關(guān)和濾波等。每條乘法指令有效的執(zhí)行時間短至一個CPU周期。

表2.1乘積移位器的移位模式注:Q31格式是一種二進制小數(shù)格式,該格式是在二進制小數(shù)點的后面有31位二進制數(shù)。2.2.3中央算術(shù)邏輯部分

中央算術(shù)邏輯部分為CPU中使用次數(shù)最多的運算部件,包括中央算術(shù)邏輯單元(CALU)、累加器(ACC)和輸出移位器(OutputShifter)3個部分。圖2.8為中央算術(shù)邏輯部分示意圖。圖2.8TMS320'C2000CPU的中央算術(shù)邏輯部分

1.中央算術(shù)邏輯單元(CALU)

CALU的功能是完成各種算術(shù)運算和邏輯操作,包括16位加法運算、16位減法運算、布爾邏輯操作、位操作(位測試、移位和循環(huán)移位,其中移位和循環(huán)移位由ACC完成)。這些操作大多數(shù)可在單周期內(nèi)完成。

CALU的輸入為ACC和一個操作數(shù),該操作數(shù)可來自于輸入移位器(InputShifter)或乘積移位器(ProductShifter),由不同的指令來選取。

CALU的輸出直接送ACC,再通過輸出移位器送數(shù)據(jù)存儲器保存。

CALU中的大多運算受符號擴展模式位SXM的影響,當SXM?=?0時,進行無符號數(shù)運算操作;當SXM?=?1時,進行有符號數(shù)運算操作,要做符號擴展。

2.累加器(ACC)

累加器ACC的功能是存儲CALU的操作結(jié)果,它可分為高16位部分(ACCH)和低16位部分(ACCL)。在ACC中可完成移位和循環(huán)移位(包含進位位)的位操作,以實現(xiàn)數(shù)據(jù)的定標或邏輯位的測試控制。與ACC關(guān)聯(lián)的狀態(tài)位有以下4個:

(1)進位位(C):當CALU進行加法或減法運算時,若相加不產(chǎn)生進位或相減產(chǎn)生借位,則C被復(fù)位(C?=?0)(例外:高16位加指令若相加不產(chǎn)生進位,則不影響C);若相加產(chǎn)生進位或相減不產(chǎn)生借位,則C被置位(C?=?1)(例外:高16位減指令若相減不產(chǎn)生借位,則不影響C)。另外,ACC做位操作時,左移或循環(huán)左移,ACC的最高位進入C,且循環(huán)左移時C進入ACC的最低位;右移或循環(huán)右移,ACC的最低位進入C,且循環(huán)右移時C進入ACC的最高位。

(2)溢出模式位(OVM):決定ACC進行運算時產(chǎn)生溢出的方式。當OVM?=?0時,正常溢出;當OVM?=?1時,極值溢出(正溢出為7FFFFFFFh;負溢出為80000000h)。

(3)溢出標志位(OV):運算時若累加器不產(chǎn)生溢出,則清零(OV?=?0);若產(chǎn)生溢出(不管是正溢出還是負溢出),則置位(OV?=?1)。

(4)測試/控制標志位(TC):根據(jù)測試指令及被測位的值設(shè)置TC為0或1。

3.輸出移位器(OutputShifter)

輸出移位器(或稱為輸出數(shù)據(jù)定標移位器)的32位輸入接累加器的32位輸出,而其16位輸出接到寫數(shù)據(jù)總線。該輸出移位器的功能是首先拷貝累加器的32位值,然后對其左移,移位時高位丟棄,低位補0。具體移位數(shù)由指令指定,可移動0~7位。最后將移位器中的高位字或低位字保存到數(shù)據(jù)存儲器中(用SACH指令可保存ACC高位字,用SACL指令可保存ACC低位字),而累加器的內(nèi)容保持為移位前的值不變。圖2.9和圖2.10分別表示了這兩種關(guān)系。移位不單獨占用周期。圖2.9移位并保存ACC高位字圖2.10移位并保存ACC低位字2.2.4輔助寄存器算術(shù)單元(ARAU)和輔助寄存器

CPU還有一個與中央算術(shù)邏輯單元(CALU)無關(guān)的算術(shù)單元,這就是輔助寄存器算術(shù)單元(ARAU)。ARAU的主要功能是對8個16位輔助寄存器(AR7~AR0)執(zhí)行算術(shù)運算,該操作可與CALU中的操作并行進行。圖2.11提供了ARAU及相關(guān)邏輯的結(jié)構(gòu)示意圖。圖2.11TMS320'C2000CPU的ARAU及相關(guān)邏輯的結(jié)構(gòu)示意圖

8個輔助寄存器(AR7~AR0)提供了靈活而有效的間接尋址(后續(xù)章節(jié)將專門討論),此時ARAU可用來產(chǎn)生數(shù)據(jù)存儲器地址。通過輔助寄存器中的16位地址可以訪問64KW數(shù)據(jù)存儲器地址空間的任意單元。

狀態(tài)寄存器中有兩個專用的3位(bit15~bit13),分別用做輔助寄存器指針(ARP)和輔助寄存器指針緩沖器(ARB)。ARP用于選擇8個輔助寄存器中的其中一個,ARP?=?0時選擇AR0,ARP?=?1時選擇AR1,…,ARP?=?7時選擇AR7。被ARP選中的輔助寄存器稱為當前輔助寄存器。ARP可通過指令直接加載或修改,也可通過間接尋址的輔助操作來修改或加載。ARB為ARP的緩沖寄存器,它總是復(fù)制當前ARP的值,其用途主要是避免狀態(tài)寄存器進、出軟堆棧時破壞ARP。

ARAU的輸出有3條通道。當處理一條指令時,當前AR的內(nèi)容用做訪問數(shù)據(jù)存儲器的地址。如果是讀數(shù)據(jù)指令,ARAU就把該地址送到數(shù)據(jù)讀地址總線(DRAB);如果是寫數(shù)據(jù)指令,ARAU就把該地址送到數(shù)據(jù)寫地址總線(DWAB)。指令執(zhí)行完后,當前AR的內(nèi)容通過ARAU進行無符號的算術(shù)運算,從而被更新。當需保存某個輔助寄存器(ARx)的值時,便接通數(shù)據(jù)寫總線(DWEB)。

ARAU對ARx進行運算以產(chǎn)生指令所要求的地址,其運算包括以下幾種情況:

(1)對輔助寄存器線性增量或減量:+/-1或+/-AR0;

(2)對輔助寄存器加一個常數(shù)或減去一個常數(shù),該常數(shù)為8位常數(shù);

(3)把AR0的內(nèi)容與當前AR的內(nèi)容進行比較(CMPR指令),結(jié)果影響TC標志(通過DWEB修改狀態(tài)寄存器ST1中的TC位)。通常ARAU在流水線的譯碼階段(指定操作的指令正在被譯碼時)進行它的算術(shù)運算,這就能在下條指令譯碼之前產(chǎn)生地址。有一例外情況,就是在處理NORM指令時,在流水線的執(zhí)行階段修改輔助寄存器和/或ARP。

輔助寄存器除用來產(chǎn)生數(shù)據(jù)存儲器地址外,還有其它用途。例如:①通過CMPR指令,使輔助寄存器支持條件分支、調(diào)用和返回,即上面的(3)運算;②當做通用寄存器或軟件計數(shù)器使用。2.2.5狀態(tài)寄存器ST0與ST1

兩個16位的狀態(tài)寄存器ST0、ST1是用來表明操作的當前狀態(tài)和操作控制的。它們既可保存在數(shù)據(jù)存儲器中,也可由數(shù)據(jù)存儲器來加載。因此可用指令對這兩個寄存器進行讀和寫,從而可保存或恢復(fù)子程序的操作/執(zhí)行狀態(tài)。

用LST(加載狀態(tài)寄存器)指令可對ST0和ST1進行寫(INTM位除外,它不受LST的影響),而用SST(保存狀態(tài)寄存器)指令可對ST0和ST1進行讀并保存。可用SETC或CLRC指令對ST1、ST2中的某些位單獨置位或清零。例如,可用SETCSXM指令將符號擴展模式置1,用CLRCSXM將其清0,而其它位不受影響。圖2.12和圖2.13分別給出了狀態(tài)寄存器ST0、?ST1各位的定義。其中有些位是保留的(陰影部分),讀出時為1,寫入時不受影響。R表示可讀,W表示可寫,-x表示不受復(fù)位影響,-0表示復(fù)位時清零,-1表示復(fù)位時置位。圖2.12狀態(tài)寄存器ST0各位的定義圖2.13狀態(tài)寄存器ST1各位的定義

1.狀態(tài)寄存器ST0

狀態(tài)寄存器ST0各位的功能介紹如下:

●?D15~D13

ARP——輔助寄存器指針(AuxiliaryRegisterPointer)。在間接尋址模式中該位用于選擇當前使用的輔助寄存器AR0~AR7。使用MAR指令、LST指令和間接尋址訪問存儲器指令可以加載ARP。當ARP被裝載時,先前的ARP值被復(fù)制到ARB緩沖器中(LST指令除外)。

●?D12

OV——溢出標志位(OverflowFlagBit)。OV=1,表示CALU運算發(fā)生了溢出。溢出時,OV位保持置位狀態(tài),直到被復(fù)位指令、條件轉(zhuǎn)移指令或LST指令清0。●?D11

OVM——溢出模式位(OverflowModeBit)。OVM決定當CALU發(fā)生溢出時的處理方式。當累加器處于溢出方式(OVM?=?1)且發(fā)生溢出時,產(chǎn)生下面兩種情況:

(1)溢出方向為正(正向溢出),累加器被最大正數(shù)(7FFFFFFFh)填充。

(2)溢出方向為負(負向溢出),累加器被最小負數(shù)(80000000h)填充。

當OVM=0時,按正常情況處理累加器,用SETCOVM或CLRCOVM指令可將該位置1或清0,LST指令可修改OVM?!?D9

INTM——中斷模式位(InterruptModeBit)。該位用來允許或禁止所有的可屏蔽中斷。INTM?=?0,使能所有可屏蔽中斷;INTM?=?1,禁止所有可屏蔽中斷。

用SETCINTM或CLRCINTM指令可對該位置1或清0;?LST指令不能影響INTM位;INTM不影響不可屏蔽中斷、復(fù)位以及軟件啟動的中斷;發(fā)生中斷(TRAP指令除外)及復(fù)位時INTM置1。

●?D8~D0

DP——數(shù)據(jù)存儲器頁指針(DataPagePointer)。當一條指令采用直接尋址方式時,這個9位的DP字段與指令中的低7位拼接起來形成數(shù)據(jù)存儲器的16位地址。

2.狀態(tài)寄存器ST1

狀態(tài)寄存器ST1各位的功能介紹如下:

●?D15~D13

ARB——輔助寄存器指針緩存器(AuxiliaryRegisterPointerBuffer)。除LST指令外,每當加載輔助寄存器指針(ARP)時,ARP原來的值就拷貝到ARB。當用LST指令加載ARB時,同樣的值也拷貝到ARP。

●?D12

CNF——片內(nèi)DARAM配置位(On-chipDARAMConfigurationBit)。該位決定可配置的雙訪問RAM(B0)塊映射到數(shù)據(jù)空間(CNF?=?0)還是映射到程序空間(CNF?=?1)。SETCCNF或CLRCCNF可對該位置1或清0,復(fù)位時CNF?=?0?!?D11

TC——測試/控制標志位(Test/ControlFlagBit)。TC在以下情況下置1:由BIT或BITT測試的位是1時置1;被CMPR測試的當前輔助寄存器和AR0之間的比較條件成立時置1;用NORM指令測試時,累加器最高兩位異或結(jié)果為1(相異)時置1。LST指令可改變TC值。

●?D10

SXM——符號擴展模式位(InterruptModeBit)。若SXM?=?0,禁止符號擴展;若SXM?=?1,則移位時進行符號擴展。某些指令不受SXM的控制,例如ADDS指令,不管SXM如何,都禁止符號擴展。SETCSXM或CLRCSXM指令將該位置1或清0,通過LST指令可對其加載,復(fù)位時SXM置1。

●?D9

C——進位位(CarryBit)。C?=?0時,相減有借位或相加無進位;C?=?1時,相加有進位或相減無借位。

累加器的值循環(huán)移動:左移時,最高位進入C;右移時,最低位進入C。用SETC、CLRC、LST指令可影響C,復(fù)位時C位置1?!?D4

XF——XF引腳狀態(tài)位(XFPinStatusBit)。SETCXF將XF置1,CLRC將XF清0,LST指令可修改XF,復(fù)位時XF置1。

●?D1~D0

PM——乘積移位模式(ProductShiftMode)。PM決定乘積寄存器(PREG)的值在送往CALU或數(shù)據(jù)存儲器時如何進行移位。移位模式見表2.1。復(fù)位時PM置00。2.2.6系統(tǒng)配置寄存器

TMS320‘C20x器件沒有系統(tǒng)配置寄存器。TMS320LF/LC240x的系統(tǒng)配置寄存器包括兩個系統(tǒng)控制和狀態(tài)寄存器(SCSR1和SCSR2),這兩個寄存器均為存儲器映射寄存器,它們分別對TMS320’C240x的系統(tǒng)信號和片內(nèi)外設(shè)模塊進行選擇配置。

1.系統(tǒng)控制和狀態(tài)寄存器1(SCSR1)——地址7018h

圖2.14為SCSR1各位的定義,其中各符號的意義同圖2.12和圖2.13,圖2.15也是如此。圖2.14SCSR1各位的定義

SCSR1各位的功能如下:

●?D15

Reserved——保留位。

●?D14

CLKSRC——CLKOUT引腳時鐘源選擇位。CLKSRC為0時,CLKOUT引腳輸出CPU時鐘;CLKSRC為1時,CLKOUT引腳輸出看門狗時鐘WDCLK。

●?D13~D12

LPM——低功耗模式選擇位,指明CPU在執(zhí)行IDLE指令時芯片進入哪一種低功能模式。LPM1、LPM0的狀態(tài)及對應(yīng)的低功耗模式如下:

LPM1LPM0 模式

0 0 IDLE1(LMP0)模式

0 1 IDLE2(LPM1)模式

1 x HALT(LPM2)模式

●?D11~D9

CLKPS——PLL時鐘預(yù)定標選擇位,這3位對輸入時鐘頻率fin選擇PLL倍頻系數(shù),其狀態(tài)及對應(yīng)的系統(tǒng)時鐘頻率如下:

CLKPS2

CLKPS1 CLKPS0 系統(tǒng)時鐘頻率

0 0

0

4×fin

0 0

1

2×fin

0 1

0

1.33×fin

0 1

1

1×fin

1 0

0

0.8×fin

1 0

1

0.66×fin

1 1

0

0.57×fin

1 1

1

0.5×fin

●?D8

Reserved——保留位。●?D7

ADCCLKEN——模/數(shù)轉(zhuǎn)換(ADC)模塊時鐘使能控制位。該位為0時,禁止ADC模塊的時鐘;該位為1時,使能ADC模塊的時鐘,且正常運行。

●?D6

SCICLKEN——串行通信接口(SCI)模塊時鐘使能控制位。該位為0時,禁止SCI模塊的時鐘;該位為1時,使能SCI模塊的時鐘,且正常運行。

●?D5

SPICLKEN——串行外設(shè)接口(SPI)模塊時鐘使能控制位。該位為0時,禁止SPI模塊的時鐘;該位為1時,使能SPI模塊的時鐘,且正常運行。●?D4

CANCLKEN——控制器局域網(wǎng)(CAN)模塊時鐘使能控制位。該位為0時,禁止CAN模塊的時鐘;該位為1時,使能CAN模塊的時鐘,且正常運行。

●?D3

EVBCLKEN——事件管理器B(EVB)模塊時鐘使能控制位。該位為0時,禁止EVB模塊的時鐘;該位為1時,使能EVB模塊的時鐘,且正常運行。

●?D2

EVACLKEN——事件管理器A(EVA)模塊時鐘使能控制位。該位為0時,禁止EVA模塊的時鐘;該位為1時,使能EVA模塊的時鐘,且正常運行?!?D1

Reserved——保留位。

●?D0

ILLADR——無效地址檢測位。當檢測到一個無效地址時,該位被置1。被置1后該位需要通過用戶軟件清0。向該位寫1可將其清0。在初始化程序中應(yīng)將該位清0。檢測到一個非法地址時將會產(chǎn)生一個不可屏蔽中斷(NMI)。

2.系統(tǒng)控制和狀態(tài)寄存器2(SCSR2)——地址7019h

圖2.15為SCSR2各位的定義。

SCSR2各位的功能如下:

●?D15~D7

Reserved——保留位。圖2.15SCSR2各位的定義●?D6

I/PQUAL——輸入時鐘限定器,用來限定輸入到CAP1~6、XINT1~2、ADCSOC及PDPINTA/B引腳上的信號被正確鎖存需要的最小脈沖寬度,引腳內(nèi)部的輸入狀態(tài)只有在脈沖達到這個寬度之后才改變。當這些引腳作為I/O功能使用時,該位無效。

D6 輸入時鐘限定

0至少5個時鐘周期

1至少11個時鐘周期

該位僅針對240xA器件,不針對240x器件?!?D5

WDOVERRIDE——WD保護位。復(fù)位后為1,向該位寫1可將其清0。但不能通過軟件使該位為1。該位用來控制是否允許用戶用軟件禁止WD工作(將程序監(jiān)視控制器寄存器WDCR中的WDDIS位置1)。當該位為0時,用戶不能通過軟件來禁止WD;當該位為1時,復(fù)位值,用戶可以通過軟件來禁止WD工作。

●?D4

XMIFHi-Z——外部存儲器接口信號(XMIF)高阻控制位。當該位為0時,所有XMIF信號為正常驅(qū)動模式;當該位為1時,所有XMIF信號為高阻態(tài)?!?D3

引導(dǎo)ROM使能位。該位反映了/XF引腳在復(fù)位時的狀態(tài),該位可被軟件改變。當該位為0時,使能引導(dǎo)ROM,地址空間0000h~00FFh被片內(nèi)引導(dǎo)ROM塊占用。該方式禁止使用Flash存儲器。當該位為1時,禁止引導(dǎo)ROM,對TMS320LF2407A和TMS320LF2406A片內(nèi)Flash程序存儲器映射地址范圍為0000h~7FFFh,對TMS320LF2402A地址范圍為0000h~1FFFh?!?D2

微處理器/微控制器選擇位。該位反映了器件復(fù)位時引腳上的狀態(tài)。復(fù)位之后,可通過軟件來改變這一位以控制存儲器映射到片內(nèi)或片外。當該位為0時,器件設(shè)置為微控制器方式,程序地址0000h~7FFFh被映射到片內(nèi)(即Flash);當該位為1時,器件設(shè)置為微處理器方式,程序地址0000h~7FFFh被映射到片外(用戶需提供外部存儲器)。

●?D1~D0

DONPON——程序/數(shù)據(jù)空間選擇位。 DON

PON SARAM狀態(tài)

0 0 地址空間不被映射,該空間被分

配到外部存儲器

0 1 SARAM被映射到片內(nèi)程序空間

1 0 SARAM被映射到片內(nèi)數(shù)據(jù)空間

1 1 SARAM既被映射到片內(nèi)程序空

間又被映射到片內(nèi)數(shù)據(jù)空間

2.3TMS320‘C2000的存儲器與I/O空間

TMS320'C2000DSP的存儲器結(jié)構(gòu)基于改進型哈佛結(jié)構(gòu),采用獨立的程序存儲器、數(shù)據(jù)存儲器和I/O空間,即它們可以有相同的地址,而它們的訪問通過控制線來區(qū)分。除此之外,數(shù)據(jù)存儲器還分為局部數(shù)據(jù)存儲器和全局數(shù)據(jù)存儲器,這二者也可共用相同的地址空間,它們的訪問除了通過不同的控制線來區(qū)分以外,還受全局存儲器分配寄存器(GREG)的控制。程序、數(shù)據(jù)、I/O這三個存儲空間可以通過三組16位并行地址總線(PAB、DRAB、DWAB)來訪問。其中的任意一組可訪問不同的空間,以實現(xiàn)不同的器件操作。由于總線工作是分離的,因此可以同時訪問程序和數(shù)據(jù)空間。在一個給定的機器周期內(nèi),CALU可以執(zhí)行多達3次的并行存儲器操作。由此可以看出,TMS320‘C2000的224KW尋址空間分為以下四種可獨立選擇的空間:

(1)?64KW的程序存儲器空間,存放要執(zhí)行的指令及程序執(zhí)行時使用的數(shù)據(jù)。

(2)?64KW的局部數(shù)據(jù)存儲器空間,存放指令使用的數(shù)據(jù)。

(3)?32KW的全局數(shù)據(jù)存儲器空間(通過擴展得到),存放與其它處理器共用的數(shù)據(jù),或者作為一個附加的數(shù)據(jù)空間。局部數(shù)據(jù)空間中的高32KW地址(8000h~FFFFh)可作為全局數(shù)據(jù)空間。局部數(shù)據(jù)存儲器和全局數(shù)據(jù)存儲器可以是兩個不同的物理存儲器,通過修改GREG的內(nèi)容來控制當前使用何種數(shù)據(jù)存儲器。

(4)?64KW的I/O訪問空間,用于與外部的設(shè)備接口和尋址片內(nèi)外設(shè)寄存器。

上述224KW尋址空間包括一定數(shù)量的片內(nèi)存儲器、外部存儲器和I/O設(shè)備,而其物理存儲器類型又可以是RAM、ROM、Flash等。事實上,由于芯片中有些空間作為專用空間,而有些空間則保留以備日后升級用,例如程序空間中中斷向量表要占用部分存儲空間,數(shù)據(jù)空間中有專用的內(nèi)存映射寄存器和保留段,而I/O空間中有專用的I/O空間映射寄存器和保留段,因此實際可用地址空間不足224KW。2.3.1與外部存儲器和I/O空間接口的信號

表2.2給出了與外部存儲器和I/O空間接口的信號。微處理器/微計算機選擇信號決定工作模式。當使用外部程序存儲空間時,DSP可工作在兩種模式下:高電平為微處理器模式,此時內(nèi)部程序ROM/Flash不可用;低電平為微計算機模式,內(nèi)外存儲器共用程序存儲空間。當只使用內(nèi)部存儲空間時,DSP工作在微計算機模式,此時應(yīng)置為低電平。I/O操作與此信號無關(guān)。表2.2與外部存儲器和I/O空間接口的信號注:表中電特性一欄中,“I”表示輸入,“O”表示輸出,“Z”表示高阻Hiz。不管使用何種工作模式,當CPU使用內(nèi)部資源時,相應(yīng)的對外控制信號會變?yōu)楦咦?。例如使用?nèi)部程序存儲器時,地址總線A15~A0、數(shù)據(jù)總線D15~D0變?yōu)楦咦鐷iz,程序選通信號、選通指示信號變?yōu)闊o效(高電平狀態(tài));使用內(nèi)部數(shù)據(jù)存儲器時,地址總線A15~A0、數(shù)據(jù)總線D15~D0變?yōu)楦咦鐷iz,數(shù)據(jù)選通信號、選通指示信號

變?yōu)闊o效(高電平狀態(tài));使用內(nèi)部I/O映射寄存器時,地址總線A15~A0、數(shù)據(jù)總線D15~D0變?yōu)楦咦鐷iz,I/O選通信號、選通指示信號變?yōu)闊o效(高電平狀態(tài))。

另外,當輸入信號被激活(為低有效)時,地址總線、數(shù)據(jù)總線以及相應(yīng)的控制信號全部變?yōu)楦咦?。當只使用外部局部?shù)據(jù)存儲器時,可不需信號;當使用局部和全局數(shù)據(jù)存儲器時,必須使用信號來區(qū)分二者。為高時為局部數(shù)據(jù)存儲器,為低時則為全局數(shù)據(jù)存儲器。

是為與早期產(chǎn)品兼容而設(shè)計的,純粹是選通指示信號,在硬件電路中可不用。

讀寫選擇信號也是冗余信號,但可作為外接雙向緩沖器的方向選擇信號使用。

就緒信號READY為外部硬件等待狀態(tài)發(fā)生之用。除非等待時間很長,否則一般只使用內(nèi)部等待狀態(tài)發(fā)生器,此時,應(yīng)將READY拉高,上拉可用10~100kΩ的電阻實現(xiàn)。2.3.2存儲器的類型

所有的TMS320'C2000器件都包括288W的雙訪問數(shù)據(jù)RAM(DARAM)和256W的數(shù)據(jù)/程序DARAM。隨著具體型號的不同,TMS320'C2000器件可能具有數(shù)據(jù)/程序單訪問RAM(SARAM)、只讀存儲器(ROM)或者閃爍存儲器(Flash)。

TMS320'C2000還具有映射在數(shù)據(jù)存儲器空間的CPU寄存器和映射在片內(nèi)I/O空間的外設(shè)寄存器。

1.片內(nèi)雙訪問RAM(DARAM)

DARAM是每個機器周期可被訪問兩次的存儲器。所有的TMS320'C2000器件都具有544W的片內(nèi)DARAM,544W的DARAM被分成B0[256W]、B1[256W]和B2[32W]3塊,它們主要被配置成數(shù)據(jù)存儲器(可雙訪問操作)。但在需要時也可將B0配置成程序存儲器(B1、B2塊不行,它們只能用做數(shù)據(jù)空間)。B0塊是配置成程序存儲空間還是數(shù)據(jù)存儲空間,要根據(jù)狀態(tài)寄存器ST1的CNF位的值判斷決定。由于DARAM可以在一個周期內(nèi)訪問兩次,因而改善了CPU的速度。該CPU運行于4周期流水方式。在這種流水方式下,CPU在第3個周期讀數(shù)據(jù),在第4個周期寫數(shù)據(jù)。然而,DARAM允許CPU在一個周期內(nèi)讀寫數(shù)據(jù),CPU在該周期的主(正)相內(nèi)向DARAM寫數(shù)據(jù),而在從(負)相內(nèi)從DARAM讀數(shù)據(jù)。例如,設(shè)有兩條指令A(yù)和B,指令A(yù)在CPU周期的主相內(nèi)將累加器的值存入DARAM中,指令B在從相內(nèi)從DARAM中將一個新的值裝入累加器。因為雙訪問的操作包括寫,所以它只能是RAM,而不能是ROM。

2.片內(nèi)單訪問程序/數(shù)據(jù)RAM(SARAM)

一個時鐘周期只能訪問一次的存儲器稱為單訪問存儲器(SARAM),如TMS320C206和TMS320F206等型號的DSP器件中具有4KW的SARAM。這些SARAM可以被用做程序存儲器或/和數(shù)據(jù)存儲器,通過I/O映射寄存器PMST的DON和PON兩位來選定,DON和PON為非互斥關(guān)系。加載到SARAM中的程序代碼可以全速執(zhí)行。當DON被置成1時,SARAM被用做數(shù)據(jù)存儲器,要占用從800h開始的一段數(shù)據(jù)存儲器空間;當DON被置成0時,SARAM不被用做數(shù)據(jù)存儲器,不占用數(shù)據(jù)存儲器空間(留作外部數(shù)據(jù)存儲器擴展用)。PON的情形類似,但地址是從8000h開始的??梢姡琒ARAM可單獨用做數(shù)據(jù)存儲器(DON?=?1,PON?=?0),或單獨用做程序存儲器(DON?=?0,PON?=?1),或既用做數(shù)據(jù)存儲器,又用做程序存儲器(DON?=?1,PON?=?1),或廢棄不用(DON?=?0,PON?=?0)。SARAM既用做數(shù)據(jù)存儲器又用做程序存儲器時,映射到數(shù)據(jù)存儲空間的地址(從800h開始)和映射到程序存儲空間的地址(從8000h開始)是不同的。雖然具有雙倍地址空間,但由于SARAM的物理存儲器只有一個,因此實際應(yīng)用中應(yīng)該按SARAM的物理空間分開使用,如4KW的SARAM,程序存儲器用8000h~0fffh空間,而數(shù)據(jù)存儲器可用1000h~17ffh空間。

3.工廠掩模的片內(nèi)ROM

TMS320‘C2000器件中有些片種具有片內(nèi)掩模型ROM來作為程序存儲器,例如TMS320C204和TMS320C209配置4KWROM,TMS320C206則配置32KWROM等。復(fù)位(reset)時驅(qū)動引腳為低,即可選中該ROM。若不選該ROM,器件將從片外存儲器開始啟動執(zhí)行。如果用戶希望使用自己的ROM,則可以按目標文件(.obj)格式提供希望裝入ROM的代碼或數(shù)據(jù)(表格),TI公司將產(chǎn)生相應(yīng)的掩膜來對該ROM編程。

4.閃爍存儲器Flash

TMS320‘C2000器件中一些片種具有片內(nèi)Flash,它是電可擦除、可編程、非易失性(可長久保存)的存儲器。每塊Flash都有一組控制寄存器,用來擦除、編程和測試該Flash塊。這些Flash塊可以通過在復(fù)位期間驅(qū)動引腳為低來選擇。若不選Flash,器件將從片外的存儲器開始執(zhí)行。

有的器件片內(nèi)Flash帶有加密位,如TMS320LF/LC240XA系列就帶有加密位。2.3.3程序存儲器

程序存儲器空間用于存放應(yīng)用程序的代碼、數(shù)據(jù)表信息及常量。TMS320'C2000程序存儲器空間的尋址范圍為216?=?64?KW,可對片內(nèi)存儲器或片外存儲器尋址。每個TMS320'C2000器件都有片內(nèi)DARAM塊B0,B0可配置為程序存儲器和數(shù)據(jù)存儲器,片內(nèi)其它程序存儲器可能是SARAM、ROM或Flash。TMS320'C2000程序存儲器地址空間的具體分布依型號的不同有所差異,主要表現(xiàn)在ROM/Flash的使用及其容量的大小上。為了便于說明,本節(jié)以最常用的TMS320F206DSP為例加以介紹,TMS320F206的程序存儲器空間的分布如圖2.16所示。圖2.16TMS320F206的程序存儲器空間分布

64KW的程序存儲器空間被分為兩大部分,32KW為片內(nèi)Flash,另外32KW為片外存儲器。片內(nèi)Flash的0000h~003fh空間用于存放中斷向量(InterruptVectors),其它部分(0040h~7fffh)則是存放程序代碼和數(shù)據(jù)表。對絕大多數(shù)應(yīng)用系統(tǒng)來說,這些程序存儲器已經(jīng)足夠,不必另加外部擴展。8000h~0ffffh的另外32KW為片外存儲器空間,當PON?=?1時,片內(nèi)的SARAM被映射到程序存儲器空間的8000h~8fffh區(qū)段,這時片外程序存儲器空間的8000h~8fffh區(qū)段不能使用(不被選中);當CNF?=?1時,片內(nèi)DARAM中的B0塊被映射到程序存儲器空間的0ff00h~0ffffh區(qū)段,這時片外程序存儲器空間的0ff00h~0ffffh區(qū)段不能使用(不被選中)。如確實需要,可對程序存儲器加以擴展,一個8KW的程序存儲器擴展電路如圖2.17所示,圖中用兩片8K×8b的存儲器擴展成8K×16b的靜態(tài)存儲器,然后與TMS320'C2000芯片相連。TMS320'C2000的外部存儲器一般使用靜態(tài)存儲器SRAM,這樣可省去刷新電路,但成本稍高。使用隨機存儲器RAM,利于程序的反復(fù)加載和調(diào)試,但是若無需調(diào)試,也可用EPROM/EEPROM/Flash等可編程只讀存儲器,這時信號不必使用。圖2.178KW程序存儲器的擴展電路當TMS320‘C2000芯片的CPU訪問片內(nèi)程序存儲器時,外部程序存儲器選通信號和處于無效狀態(tài)。僅當CPU在映射到外部存儲器的地址范圍內(nèi)進行訪問時,外部總線才有效。此時,=0,=0,選通外部程序存儲器(?

=?0)。

得注意的是,使用外部存儲器時,應(yīng)考慮其速度因素。由于DSP速度較快,當使用外部存儲器時,要選擇高速的存儲器。若外部存儲器速度不足以勝任實時單周期操作,應(yīng)通過軟件等待發(fā)生器或READY信號插入等待周期。使用程序存儲器可按以下慣例考慮:

(1)在程序調(diào)試過程中,一般可用SARAM和B0塊作為部分或全部程序存儲器,這樣加載和修改程序都很方便。對無SRAM的DSP,應(yīng)將B0塊作為程序存儲器的活動區(qū),以便適時修改代碼,給調(diào)試帶來方便。當程序確實太長時,可考慮使用擴展程序(靜態(tài)隨機)存儲器,等程序調(diào)試可行后,再換成只讀存儲器。

(2)在實際使用時,單獨用片內(nèi)Flash作為程序存儲器,而SARAM和DARAM全部用做數(shù)據(jù)存儲器,特別是DARAM應(yīng)用在頻繁讀寫的數(shù)據(jù)區(qū),這樣可提高程序執(zhí)行速度,同時充分利用片內(nèi)資源,降低系統(tǒng)成本。

(3)對于某些常數(shù)、初始化數(shù)據(jù)段、信號處理使用的系數(shù)等,可設(shè)計成數(shù)據(jù)表存放在程序存儲器中。這些數(shù)據(jù)表可作為操作數(shù)使用,也可通過指令將其轉(zhuǎn)移到數(shù)據(jù)存儲器中,再進行使用。2.3.4數(shù)據(jù)存儲器

TMS320'C2000DSP的數(shù)據(jù)存儲器空間有兩大類,一類是局部數(shù)據(jù)存儲器,另一類是全局數(shù)據(jù)存儲器。局部數(shù)據(jù)存儲器包括片內(nèi)數(shù)據(jù)存儲器和外部擴展數(shù)據(jù)存儲器,共64KW的容量。而全局數(shù)據(jù)存儲器則必須通過外部擴展,主要用于處理器或系統(tǒng)之間的數(shù)據(jù)通信,可以像郵箱一樣使用。全局數(shù)據(jù)存儲器的容量最大為32KW,可根據(jù)需要由寄存器GREG確定實際容量。唯一區(qū)分局部數(shù)據(jù)存儲器和全局數(shù)據(jù)存儲器的控制信號是總線請求信號,因此在使用外部擴展局部數(shù)據(jù)存儲器和全局數(shù)據(jù)存儲器時,必須有此信號存在,方能正確操作。

TMS320'C2000的數(shù)據(jù)存儲器空間分布如圖2.18所示,圖中上半部分為局部數(shù)據(jù)存儲器空間,下半部分為全局數(shù)據(jù)存儲器空間。訪問數(shù)據(jù)存儲器有直接尋址模式和間接尋址模式。當使用直接尋址模式對局部數(shù)據(jù)存儲器尋址時,將局部數(shù)據(jù)存儲器按地址分塊,每塊128W為一頁。64KW的局部數(shù)據(jù)存儲器可分為512頁,記為0~511。局部數(shù)據(jù)存儲器的分頁及第0頁的地址映射如圖2.19所示。圖2.18數(shù)據(jù)存儲器空間分布圖2.19TMS320'C2000數(shù)據(jù)存儲器的數(shù)據(jù)頁配置及第0頁的地址映射局部數(shù)據(jù)存儲器空間中,地址0000h~005fh存儲塊為存儲器映射寄存器使用;地址0060h~007fh存儲塊為片內(nèi)雙訪問存儲器DARAM的B2塊;地址0080h~01ffh存儲塊為TMS320'C2000保留段,以備將來系統(tǒng)升級使用;當CNF?=?0時,地址0200h~02ffh存儲塊為片內(nèi)雙訪問存儲器DARAM的B0塊,而當CNF?=?1時,地址0200h~02ffh存儲塊為保留段;地址0300h~03ffh存儲塊為片內(nèi)雙訪問存儲器DARAM的B1塊;地址0400h~07ffh存儲塊為保留段;對于具有片內(nèi)SARAM的DSP,當DON?=?1時,地址0800h~17ffh存儲塊為片內(nèi)單訪問存儲器SARAM,當DON?=?0或DSP無片內(nèi)SARAM時,數(shù)據(jù)存儲器0800h~0ffffh可全部用做外部擴展。需說明的是,即使外部存儲器用做全部數(shù)據(jù)空間(0000h~0ffffh),在片內(nèi)使用或保留的區(qū)段,外部空間是不會被尋址的(相應(yīng)的控制信號在片內(nèi)操作時無效)。因此,最大擴展外部局部數(shù)據(jù)存儲器空間為58KW(當使用SARAM作為數(shù)據(jù)存儲器時)或62KW(當不使用或無SARAM作為數(shù)據(jù)存儲器時)。在TMS320‘C2000DSP中,DON和PON可同時有效,即SARAM可同時被用做程序存儲器和數(shù)據(jù)存儲器,這時在這一區(qū)段出現(xiàn)數(shù)據(jù)與程序存儲區(qū)的物理重疊,但邏輯上是分開的。

數(shù)據(jù)和程序的存放應(yīng)在物理位置上有所區(qū)分,否則數(shù)據(jù)的存儲將可能破壞程序代碼。物理位置的區(qū)分可按低4KW地址來劃分。當程序使用8000h~87ffh的2KW段時,數(shù)據(jù)則可使用1000h~17ffh的2KW段。雖然局部數(shù)據(jù)存儲器和全局數(shù)據(jù)存儲器各有64KW和32KW的獨立空間,?但由于只有信號作為區(qū)分,因此局部數(shù)據(jù)存儲器和全局數(shù)據(jù)存儲器不能同時同址使用。表2.3給出了由GREG寄存器配置全局數(shù)據(jù)存儲器容量的情況。GREG連到內(nèi)部數(shù)據(jù)總線的低8位,GREG的高8位為任意值。GREG是存儲器映射寄存器,它被分配到數(shù)據(jù)存儲單元的0005h處。由表2.3可知,當局部和全局數(shù)據(jù)存儲器共享64KW存儲空間,可方便地操作局部和全局數(shù)據(jù)存儲器,無需頻繁修改GREG;但當二者均使用最大容量,或出現(xiàn)地址的邏輯重疊區(qū)時,必須借助修改GREG來切換對局部和全局數(shù)據(jù)存儲器的讀寫操作控制。信號在GREG分配的全局數(shù)據(jù)存儲器操作時有效。表2.3GREG寄存器與局部和全局數(shù)據(jù)存儲器的關(guān)系表2.3列出了GREG的可用值及相應(yīng)的地址范圍。注意:只能選擇該表所列的GREG值,選擇其它值會使存儲器映射分成碎片。

局部和全局數(shù)據(jù)存儲器的擴展與程序存儲器的擴展方法相同,只需將信號換成即可。?圖2.20描述了8000h~ffffh?段32KW的局部數(shù)據(jù)存儲器和8000h~ffffh段32KW的全局數(shù)據(jù)存儲器擴展電路。事實上,局部數(shù)據(jù)存儲器可增大至64KW,做最大容量擴展。全局存儲器中,只有當A15?=?1時才有效變低,因此,A15不必用做譯碼。圖2.20數(shù)據(jù)存儲器的擴展2.3.5I/O空間

I/O空間用于對片內(nèi)外設(shè)和片外設(shè)備(如模擬數(shù)字接口、編碼解碼接口等)的訪問。TMS320‘C2000器件支持64K×16b的I/O地址空間,如圖2.21所示。I/O地址空間被劃分成3塊,地址段0000h~feffh為外部端口使用;地址段ff00h~ff0fh為片內(nèi)I/O空間,用于測試保留,用戶不得使用;地址段ff10h~ffffh為片內(nèi)使用,作為I/O映射寄存器。表2.4列出了TMS320F206上映射到片內(nèi)I/O空間的寄存器。其它TMS320'C2000DSP器件的I/O映射寄存器與此表有所差異。兩條特殊的指令I(lǐng)N和OUT用于對這些空間(包括外部I/O端口和片內(nèi)I/O寄存器)進行訪問。訪問外部并行I/O端口與訪問程序存儲器、數(shù)據(jù)存儲器復(fù)用同樣的地址總線和數(shù)據(jù)總線。DSP對I/O端口的操作指令為I/O端口與存儲空間交換數(shù)據(jù),因此其執(zhí)行時間較長,需2(IN)/3(OUT)個或以上的周期才能完成。若需要單周期的快速端口操作,可將數(shù)據(jù)存儲空間的一小部分分配給外設(shè),以存儲器方式的操作代替I/O慢速操作,即可實現(xiàn)快速外設(shè)數(shù)據(jù)交換。但應(yīng)注意這是以犧牲數(shù)據(jù)存儲器容量為代價的。圖2.21I/O空間分布表2.4映射到I/O空間的片內(nèi)寄存器進行外部I/O端口操作時,I/O選通信號被激活有效。TMS320‘C2000DSP的I/O操作是16位的,若只用8位,則可選高字節(jié)或低字節(jié)。圖2.22給出了一個8位輸入(I/O地址為0000h,使用低字節(jié))和一個8位輸出(I/O地址為0001h,使用低字節(jié))的I/O接口的例子。圖中用和片選邏輯一起形成外部設(shè)備的寫允許信號。當?shù)刂窞?000h時,選中74AC244,使外部輸入到達數(shù)據(jù)總線;當?shù)刂窞?001h時,選中74AC273,數(shù)據(jù)總線上的數(shù)據(jù)輸出到外部設(shè)備。由于讀端口不進行寫操作,因此可省略部分信號(未用信號)參與譯碼。又由于內(nèi)部I/O操作不產(chǎn)生有效的信號,故可采用部分譯碼電路。這種簡化方法可節(jié)省硬件開銷。圖2.22上的譯碼電路可以驅(qū)動8個外設(shè)。圖2.22I/O端口的擴展舉例2.3.6TMS320F206/LF2407的地址映射與存儲器配置

1.TMS320F206的地址映射與存儲器配置

圖2.23給出了TMS320F206存儲器地址分配示意圖,表2.5為該存儲器分配表。

注:①當CNF?=?1時,程序存儲器中的地址為fe00h~feffh和ff00h~ffffh的區(qū)域分配給了同一物理塊DARAMB0。例如,寫fe00h與寫ff00h的效果是相同的。為簡單起見,當CNF?=?1時,將fe00h~feffh作為保留區(qū)。

②當CNF?=?0時,數(shù)據(jù)存儲器中的地址為0100h~01ffh和0200h~02ffh的區(qū)域分配給了同一物理塊DARAMB0。例如,寫0100h與寫0200h的效果是相同的。為簡單起見,當CNF?=?0時,將0100h~01ffh作為保留區(qū)。

③數(shù)據(jù)存儲器中地址為0300h~03ffh和0400h~04ffh的區(qū)域分配給了同一物理塊DARAMB1。例如,寫0400h與寫0300h的效果是相同的。為簡單起見,將0400h~04ffh作為保留區(qū)。

注意:不要寫保留地址。為避免處理器的不可預(yù)測的操作,不能向任何已標明為保留的地址寫數(shù)據(jù)。這包括未指定給任何片內(nèi)寄存器的0000h~005fh范圍內(nèi)的數(shù)據(jù)存儲器地址,以及未指定給任何片內(nèi)寄存器的ff00h~ffffh范圍內(nèi)的I/O地址。

圖2.23TMS320F206存儲器地址分配示意圖

DON和PON是F206器件中PMST寄存器的bit2和bit1,通過寫操作可設(shè)置它們,將SARAM分配到程序存儲器或數(shù)據(jù)存儲器,其邏輯關(guān)系如下:

DONPON SARAM的分配

0 0 SARAM不映射,地址在外部存儲器(復(fù)位值)

0 1 SARAM在片內(nèi)程序存儲器8000h~8fffh

1 0 SARAM在片內(nèi)數(shù)據(jù)存儲器0800h~17ffh

1 1 SARAM同時被分配到程序存儲器和數(shù)據(jù)存儲器,

地址同上

PMST寄存器的bit0位鎖定在引腳上,?對其進行寫操作可設(shè)置為微處理器(高)或微計算機(低)模式。表2.5TMS320F206存儲器分配表

2.TMS320LF2407的地址映射與存儲器配置

圖2.24給出了TMS320LF2407存儲器地址分配示意圖。

TMS320LF2407的片內(nèi)外設(shè)均由相應(yīng)的寄存器進行管理,這些寄存器都是16位的數(shù)據(jù)存儲器映射寄存器,表2.6給出了TMS320LF2407數(shù)據(jù)存儲器映射寄存器的配置表。注:如果?=?0,為片內(nèi)Flash程序存儲器;如果?=?1,則為外部程序存儲器。

引導(dǎo)ROM:如果使能引導(dǎo)ROM,則程序存儲器0000h~00ffh區(qū)域?qū)⒈灰龑?dǎo)ROM占用。

①片內(nèi)程序存儲器0040h~0043h區(qū)域為保留空間。

②當CNF?=?1時,程序存儲器中的地址為fe00h~feffh和ff00h~ffffh的區(qū)域分配給了同一物理塊DARAM(B0)。例如,向fe00h寫數(shù)和向ff00h寫數(shù)的效果是相同的。為簡單起見,將fe00h~feffh作為保留區(qū)。

③當CNF?=?0時,數(shù)據(jù)存儲器中的地址為0100h~01ffh和0200h~02ffh的區(qū)域分配給了同一物理塊DARAM(B0)。例如,向0100h寫數(shù)和向0200h寫數(shù)的效果是相同的。為簡單起見,將0100h~01FFh作為保留區(qū)。

④數(shù)據(jù)存儲器中地址為0300h~03ffh和0400h~04ffh的區(qū)域分配給了同一物理塊DARAM(B1)。例如,向0300h寫數(shù)和向0400h寫數(shù)的效果是相同的。為了簡單起見,將0400h~04FFh作為保留區(qū)。

圖2.24TMS320LF2407存儲器地址分配示意圖注:非法區(qū)域是指如果對這些區(qū)域進行訪問,將會產(chǎn)生一個不可屏蔽中斷(NMI)。保留區(qū)域用于測試,如果對這些區(qū)域進行訪問,將會產(chǎn)生不可預(yù)測的結(jié)果。

2.4TMS320‘C2000的程序控制

TMS320'C2000DSP的改進型哈佛結(jié)構(gòu)和內(nèi)部多總線的應(yīng)用,使DSP具有并行操作的基礎(chǔ);而取指、譯碼、取操作數(shù)及執(zhí)行的重疊流水線結(jié)構(gòu),使指令的執(zhí)行效率大大提高,指令平均執(zhí)行時間降低,與單周期指令具有相同的執(zhí)行效果;硬件乘法單元和加法單元的有機組合,使單周期完成乘法和加法的指令成為可能;主運算單元(中央算術(shù)邏輯單元(CALU))以外的輔助寄存器算術(shù)單元(ARAU),使DSP在進行算術(shù)邏輯操作的同時,能及時產(chǎn)生源或目標操作數(shù)的地址,這使指令的功能得以提高,特別是進行FFT運算時,存儲單元的位倒序相當方便,且無需額外的周期?;赥MS320'C2000如此特殊的結(jié)構(gòu),了解其指令執(zhí)行的程序控制,有助于進行有效編程,并提高程序的執(zhí)行效率。程序控制一般指的是控制一個或多個指令塊的執(zhí)行次序,內(nèi)容包括程序地址的產(chǎn)生,流水線順序執(zhí)行,無條件及有條件的分支、調(diào)用、返回,指令重復(fù)執(zhí)行以及中斷系統(tǒng)等(在高級的DSP器件中還包括指令塊的重復(fù)、Cache的使用控制、多處理器的協(xié)調(diào)等內(nèi)容)。2.4.1TMS320‘C2000DSP的程序地址產(chǎn)生

通常CPU順序執(zhí)行程序。也就是說,CPU一般是順序地從程序存儲器的連續(xù)地址單元中取出指令,即當前地址加1。但在某些情況下,CPU非順序執(zhí)行程序,必須轉(zhuǎn)移到不連續(xù)的新地址去執(zhí)行程序,例如分支程序、子程序調(diào)用、響應(yīng)中斷等。緊接著的下一指令的地址來源于指令操作字、累加器低半部分ACCL(分支或調(diào)用)、堆棧(返回)、微堆棧(塊操作)、向量表(中斷)等。這就要求CPU在執(zhí)行當前指令的同時,能夠生成下一個指令機器碼所在的程序存儲器地址。為此,在TMS320'C2000的CPU內(nèi)部設(shè)置了一套程序地址產(chǎn)生邏輯,如圖2.25所示。程序地址產(chǎn)生邏輯由程序計數(shù)器PC、程序地址寄存器PAR、堆棧STACK及微堆棧MSTACK等部件組成,下面分別加以介紹。圖2.25程序地址產(chǎn)生邏輯原理圖

1.程序計數(shù)器PC

程序地址產(chǎn)生邏輯利用16位的程序計數(shù)器PC尋址內(nèi)部和外部程序存儲器,PC含有要執(zhí)行的下條指令的地址,經(jīng)程序地址總線PAB從程序存儲器中取出該地址的指令,并將其加載到指令寄存器。此時,PC的值被更新為下一指令的地址。

PC的新值總是等于下一條指令所在的地址。當CPU順序執(zhí)行時,若當前指令字長為1W,則PC值?=?當前值+1;若當前指令字長為2W,則PC值?=?當前值+2;當分支(跳轉(zhuǎn))時,則將指令后的長立即數(shù)或累加器低半部分ACCL加載到PC;當子程序調(diào)用時,將PC中下一條指令的地址首先壓入堆棧,然后將調(diào)用指令后的長立即數(shù)或累加器低半部分ACCL直接加載到PC,當子程序返回時,則將棧頂內(nèi)容(即返回地址)從堆棧中彈出到PC;當中斷調(diào)用時,也是首先將剛執(zhí)行完的指令的下條指令地址入棧,然后把中斷向量表的內(nèi)容(中斷向量地址)裝入PC。

2.堆棧STACK

TMS320'C2000DSP具有一個寬為16、深度為8級的硬件堆棧,當調(diào)用子程序或發(fā)生中斷時,程序地址產(chǎn)生邏輯利用該堆棧保存返回地址,如圖2.26所示。當程序中有少于8級嵌套的子調(diào)序調(diào)用和中斷時,堆棧也可用于保存子程序或中斷服務(wù)程序中的數(shù)據(jù),或用于其它目的。訪問硬件堆??梢杂弥噶頟USH和POP來實現(xiàn),這兩條指令將棧頂?shù)闹蹬c累加器低半部分ACCL之間相互傳送。當多于8級嵌套時,會發(fā)生堆棧溢出,這時會使程序的執(zhí)行發(fā)生混亂。為了解決這一問題,DSP提供了一個使用軟堆棧的辦法。利用PSHD和POPD指令將數(shù)據(jù)從數(shù)據(jù)存儲器壓入棧頂或從棧頂彈出數(shù)據(jù)到數(shù)據(jù)存儲器,這個數(shù)據(jù)存儲器一般使用片內(nèi)雙訪問存儲器,常用B2塊(0060h~007Fh),經(jīng)堆棧軟擴展后可適用于多級嵌套的復(fù)雜程序。圖2.26堆棧操作示意圖

3.微堆棧MSTACK

當CPU執(zhí)行塊操作時,要使用PC作為第一個操作數(shù)的地址增量,而用ARAU產(chǎn)生第2個操作數(shù)地址,這時要使用一個微堆棧(只有一級的堆棧)MSTACK來暫時保存返回地址(下條指令對應(yīng)的PC值)。這種操作開始時,首先將PC+1(或PC+2)的地址送到微堆棧MSTACK保存,然后將首操作數(shù)的地址存入PC中,用ARAU產(chǎn)生第2個操作數(shù)地址。當這些指令重復(fù)執(zhí)行時,PC可使首操作數(shù)的地址自動增量,ARAU使第2個操作數(shù)的地址改變,到所重復(fù)的指令完成時再將微堆棧彈回到PC。2.4.2TMS320‘C2000DSP的流水線

指令流水線包括指令執(zhí)行時發(fā)生的一系列總線操作。TMS320'C2000DSP的流水線有4級,如圖2.27所示。圖2.27TMS320'C2000DSP的4級流水線操作

4級流水線把一個指令分解成4個獨立的階段:取指令(Fetch)、譯碼(Decode)、取操作數(shù)(Operand)、執(zhí)行(Execute)。由于這4個操作階段是相互獨立的,因此,這些操作可以重疊執(zhí)行。在任意的指定周期內(nèi),1~4條不同的指令均可有效(均被激活),每條被激活的指令均處于一個不同的操作階段。對于指令流,指令的4個階段在同一時間上的重疊使指令的平均執(zhí)行時間減少。在無流水線時,一條指令的執(zhí)行時間為4個周期,有了流水線后,指令的平均執(zhí)行時間?=?無流水線執(zhí)行時間÷流水線級數(shù)?=?4÷4?=?1,即一條指令只需單周期執(zhí)行的時間。

分支、調(diào)用、中斷等操作會破壞流水線,而流水線的建立需4個周期才能完成,因此在這種情況下,指令的平均執(zhí)行時間會加長。在多重循環(huán)的情況下,由于流水線被破壞,因此會耗費掉相當多的時間。為了解決這一問題,可采用空間換時間的技術(shù)(在高級DSP中,有塊重復(fù)指令,可很方便地實現(xiàn)程序塊的重復(fù)執(zhí)行而不影響流水線),把要重復(fù)的指令段重復(fù)排列在程序存儲器中,這樣利用流水線的特性可使程序按單周期的方式運行。這在TMS320F206中容易實現(xiàn),因為32KW的程序Flash對大多數(shù)應(yīng)用而言已足夠。若是單指令反復(fù)執(zhí)行,則可用單指令重復(fù)指令RPT方便地重復(fù)執(zhí)行某條指令,而不會破壞流水線。2.4.3TMS320‘C2000DSP的非順序執(zhí)行

TMS320'C2000DSP的CPU有指令重復(fù)、分支、調(diào)用、返回、中斷等非順序執(zhí)行方式,除指令重復(fù)不會破壞流水線(使流水線暫停)外,其它情況均會破壞流水線,但只有這樣才能完成程序要求的功能。因此在高級DSP中設(shè)置了延遲分支、調(diào)用、返回等模式,以彌補破壞流水線帶來的時間損失。

1.分支、調(diào)用和返回

除了無條件分支、調(diào)用和返回外,TMS320'C2000DSP還提供了一種帶條件判斷的分支、調(diào)用和返回指令,這給程序的編制和控制帶來了很大的方便。無條件分支直接控制程序的流向,由指令字的長立即操作數(shù)或累加器的低半部ACCL直接無條件給出程序跳轉(zhuǎn)地址,CPU轉(zhuǎn)移到該地址繼續(xù)往下執(zhí)行。無條件調(diào)用則是直接無條件地轉(zhuǎn)移到指令字的長立即數(shù)或累加器的低半部ACCL指定的地址執(zhí)行,完成后返回原斷點處執(zhí)行,這種操作要借助堆棧保存斷點(PC值入棧)。無條件返回則是無條件地將由于子程序調(diào)用(無論有無條件)或中斷調(diào)用而轉(zhuǎn)移到新程序地址處的PC再轉(zhuǎn)回到原斷點處(棧頂彈出值)繼續(xù)往下執(zhí)行。在TMS320'C2000中,條件分支、調(diào)用和返回所完成的功能與無條件分支、調(diào)用和返回是完全一致的,區(qū)別僅在于前者的執(zhí)行是有條件的,只有條件成立時才執(zhí)行該操作,否則CPU順序往下執(zhí)行。這種條件可以是無條件、單條件或多條件的組合。多條件時只有全部條件都成立,才認為是條件滿足,只要有一個條件不成立,就認為條件不滿足??蓽y試(判斷)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論