第3章 TMS320C54數(shù)字信號(hào)處理器硬件結(jié)構(gòu)_第1頁
第3章 TMS320C54數(shù)字信號(hào)處理器硬件結(jié)構(gòu)_第2頁
第3章 TMS320C54數(shù)字信號(hào)處理器硬件結(jié)構(gòu)_第3頁
第3章 TMS320C54數(shù)字信號(hào)處理器硬件結(jié)構(gòu)_第4頁
第3章 TMS320C54數(shù)字信號(hào)處理器硬件結(jié)構(gòu)_第5頁
已閱讀5頁,還剩149頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第3章TMS320C54x數(shù)字信號(hào)處理器硬件結(jié)構(gòu)3.1TMS320C54x的特點(diǎn)和基本結(jié)構(gòu)3.2TMS320C54x的總線結(jié)構(gòu)3.3中央處理單元(CPU)3.4TMS320C54x的存儲(chǔ)器結(jié)構(gòu)3.5TMS320C54x的片內(nèi)外設(shè)3.6小結(jié)DSP芯片屬于專用微處理器,不同廠家的DSP器件各不相同,但都具有哈佛結(jié)構(gòu)和硬件乘法電路等基本特征。TMS320C5400DSP具有高速度、低功耗、小型封裝和最佳電源效率等優(yōu)點(diǎn)。TMS320C54x是其一個(gè)子系列。3.1TMS320C54xDSP的特點(diǎn)與基本結(jié)構(gòu)技術(shù)指標(biāo)

對于同一系列的DSP器件,各型號(hào)器件所采用的CPU是基本相同的。TMS320C54x系列芯片中各型號(hào)器件內(nèi)部CPU結(jié)構(gòu)完全相同,只是在時(shí)鐘頻率、工作電壓、片內(nèi)存儲(chǔ)器容量大小、外圍設(shè)備和接口電路的設(shè)計(jì)上有所不同。表3-1TMS320C54x系列芯片的技術(shù)特征3.1.1TMS320C54x系列器件的基本結(jié)構(gòu)

TMS320C54x采用了增強(qiáng)的哈佛總線結(jié)構(gòu),允許數(shù)據(jù)存放在程序存儲(chǔ)器中,這些存放在程序存儲(chǔ)器中的數(shù)據(jù)可以由算術(shù)運(yùn)算指令直接調(diào)用,同時(shí),還提供了存儲(chǔ)指令的高速緩沖器和相應(yīng)的指令,這些指令只需要讀入一次,就可以連續(xù)使用而不需要再次從程序存儲(chǔ)器中讀出,從而減少了指令執(zhí)行所需要的時(shí)間,提高了運(yùn)行速度。圖3.1TMS320C54xDSP的內(nèi)部硬件組成框圖TMS320C54x的主要特性如下所示:CPU(實(shí)現(xiàn)高效的數(shù)據(jù)存取和處理能力)先進(jìn)的多總線結(jié)構(gòu)(8條16位總線)。40位算術(shù)邏輯運(yùn)算單元(ALU)。17位×17位并行乘法器與40位專用加法器相連。比較、選擇、存儲(chǔ)單元(CSSU)。指數(shù)編碼器可以在單個(gè)周期內(nèi)計(jì)算40位累加器中數(shù)值的指數(shù)。雙地址生成器包括8個(gè)輔助寄存器和兩個(gè)輔助寄存器算術(shù)運(yùn)算單元(ARAU)。3.1.2TMS320C54xDSP的特點(diǎn)存儲(chǔ)器(192K)64K字程序存儲(chǔ)器、64K字?jǐn)?shù)據(jù)存儲(chǔ)器以及64K字I/O空間。在C548、C549、C5402、C5410和C5420中程序存儲(chǔ)器可以擴(kuò)展。指令系統(tǒng)專業(yè)的指令集可以幫助快速實(shí)現(xiàn)復(fù)雜算法和優(yōu)化編程。單指令重復(fù)和塊指令重復(fù)操作。(RPTRPTB)塊存儲(chǔ)器傳送指令。(MVDDMVDK等)32位長操作數(shù)指令。(DLDDSTDADD等)同時(shí)讀入兩個(gè)或3個(gè)操作數(shù)的指令。(FIRSLMS等)并行存儲(chǔ)和并行加載的算術(shù)指令。(ST‖LDLD‖MAC等)條件存儲(chǔ)指令。(CMPSSACCDSRCCD等)從中斷快速返回指令。(RETF)在片外圍電路(如圖3.1所示)軟件可編程等待狀態(tài)發(fā)生器。可編程分區(qū)轉(zhuǎn)換邏輯電路。帶有內(nèi)部振蕩器。外部總線關(guān)斷控制,以斷開外部的數(shù)據(jù)總線、地址總線和控制信號(hào)。數(shù)據(jù)總線具有總線保持特性??删幊潭〞r(shí)器。并行主機(jī)接口(HPl)。電源可用IDLEl、IDLE2和IDLE3指令控制功耗,以工作在省電方式??梢钥刂脐P(guān)斷CLKOUT輸出信號(hào)。在片仿真接口具有符合IEEE1149.1標(biāo)準(zhǔn)的在片仿真接口(JTAG)。速度單周期定點(diǎn)指令的執(zhí)行時(shí)間為25/20/15/12.5/10-ns(40MIPS/50MIPS/66MIPS/80MIPS/100MIPS)。3.2TMS320C54x的總線結(jié)構(gòu)TMS320C54xDSP采用先進(jìn)的哈佛結(jié)構(gòu)并具有八組總線,其獨(dú)立的程序總線和數(shù)據(jù)總線允許同時(shí)讀取指令和操作數(shù),實(shí)現(xiàn)高度的并行操作。采用各自分開的數(shù)據(jù)總線分別用于讀數(shù)據(jù)和寫數(shù)據(jù),允許CPU在同一個(gè)機(jī)器周期內(nèi)進(jìn)行兩次讀操作數(shù)和一次寫操作數(shù)。獨(dú)立的程序總線和數(shù)據(jù)總線允許CPU同時(shí)訪問程序指令和數(shù)據(jù)。

返回首頁

(1)程序總線(PB)傳送從程序存儲(chǔ)器來的指令代碼和立即數(shù)。(2)三組數(shù)據(jù)總線(CB,DB和EB)分別連接不同功能的各種元器件,如CPU、數(shù)據(jù)地址產(chǎn)生邏輯、程序地址產(chǎn)生邏輯,片內(nèi)外設(shè)和數(shù)據(jù)存儲(chǔ)器。

CB和DB總線傳送從數(shù)據(jù)存儲(chǔ)器讀出的操作數(shù)。EB總線傳送寫入到存儲(chǔ)器中的數(shù)據(jù)。(3)四組地址總線(PAB,CAB,DAB和EAB)傳送執(zhí)行指令所需要的地址。表3-2讀/寫訪問時(shí)的總線占用說明C54x通過使用兩個(gè)輔助寄存器算術(shù)單元(ARAU0和ARAU1)(AuxiliaryRegisterArithmeticUnit),每周期能產(chǎn)生兩個(gè)數(shù)據(jù)存儲(chǔ)器地址。

PB總線能把存儲(chǔ)在程序空間的數(shù)據(jù)操作數(shù)(如系數(shù)表)傳送到乘法器和加法器中進(jìn)行乘/累加運(yùn)算,或者在數(shù)據(jù)移動(dòng)指令(MVPD和READA)中傳送到數(shù)據(jù)空間。這種能力再加上雙操作數(shù)讀的特性,支持單周期3操作數(shù)指令的執(zhí)行,如FIRS指令。3.3TMS320C54xDSP的CPU結(jié)構(gòu)TMS320C54x的CPU包括:

40-bit的算術(shù)邏輯運(yùn)算單元(ALU,ArithmeticLogicUnit)40-bit累加器A和B移位-16~31位的桶形移位寄存器(Barrelshifter)17×17bit乘法器/加法器單元(Multiplier/Adder)比較,選擇和存儲(chǔ)單元(CSSU,Compare,SelectionandStoreUnit)指數(shù)編碼器(EXPencoder)

CPU狀態(tài)和控制寄存器3.3.1算術(shù)邏輯運(yùn)算單元(ALU)

要點(diǎn):ALU如何獲取數(shù)據(jù),ALU輸出送往何方,溢出怎么辦?進(jìn)位位的作用,什么是雙16位算術(shù)運(yùn)算?要點(diǎn):作用,結(jié)構(gòu)和位置,A和B的異同,加載與存儲(chǔ)中的移位

3.3.2累加器A和BAG、AH、AL、BG、BH和BL都是存儲(chǔ)器映射寄存器(在存儲(chǔ)空間中占有地址),可作為獨(dú)立的寄存器,使用寄存器尋址方式,由特定的指令將其內(nèi)容放到16位數(shù)據(jù)存儲(chǔ)器中,并從數(shù)據(jù)存儲(chǔ)器中讀出或?qū)懭?2位累加器值。舉例:已知累加器A=FF12345678H,求執(zhí)行帶移位的STH和STL指令后,數(shù)據(jù)存儲(chǔ)單元T中的結(jié)果.1)STHA,8,T2)STHA,-8,T3)STLA,8,T3.3.3桶形移位器(定標(biāo)移位器)要點(diǎn):什么是定標(biāo)?移位處理的作用功能:把輸入的數(shù)據(jù)進(jìn)行0~31位的左移和0~15位的右移。(即定標(biāo))所移的位數(shù)就是指令中的移位數(shù)。移位數(shù)都是用二進(jìn)制補(bǔ)碼表示,正值表示左移,負(fù)值表示右移。移位數(shù)可由立即數(shù)、狀態(tài)寄存器ST1中的累加器移位方式(ASM)字段和被指定為移位數(shù)值寄存器的暫存器T來決定。4040多路開關(guān)符號(hào)控制

桶形移位寄存器(-16~31)

MSW/LSW線選EB15-EB0CB15-CB0DB15-DB016164016CSSUALUSXMTC(測試位)T(范圍-16~31)ASM(范圍-16~15)快速指令寄存器(范圍-16~31或0~15)BADC

輸入:DB:取得16位輸入數(shù)據(jù)。CB和DB:取得32位輸入數(shù)據(jù)。40位累加器A或B。輸出:ALU的一個(gè)輸入端。經(jīng)過MSW/LSW(MostSignificantWord/LeastSignificantWord,最高有效字/最低有效字)寫選擇單元至EB總線。3.3.4乘累加單元17×17位并行乘法器,與40位專用加法器相連,可用于進(jìn)行非流水線的單周期乘法-累加運(yùn)算。要點(diǎn):結(jié)構(gòu)、功能、數(shù)據(jù)流向A174040CDACtr符號(hào)位Ctr符號(hào)位乘法器(17×17)多路開關(guān)XMYM零檢測舍入飽和送至累加器A或B40OVMOVA/OVBZA/ZBFRCTFract/intYAXA加法器(40b)TCB15-CB0DB15-DB0PB15-PB0TDAP累加器A累加器B1717B03.3.5比較,選擇和存儲(chǔ)單元(CSSU)完成累加器的高位字和低位字之間的最大值比較,即選擇累加器中較大的字并存儲(chǔ)在數(shù)據(jù)存儲(chǔ)器中,比較結(jié)果存在狀態(tài)寄存器ST0中的測試/控制位(TC)和狀態(tài)轉(zhuǎn)移寄存器(TRN)的第0位中。同時(shí),CSSU支持各種Viterbi算法并利用優(yōu)化的片內(nèi)硬件加速Viterbi的蝶形運(yùn)算。要點(diǎn):結(jié)構(gòu)、功能Viterbi算法示意圖3.3.6指數(shù)編碼器用于支持單周期EXP的一個(gè)專用硬件??稍趩蝹€(gè)周期內(nèi)執(zhí)行EXP指令,求得累加器中數(shù)的指數(shù)值。在EXP指令中,累加器中的指數(shù)值能以二進(jìn)制補(bǔ)碼的形式存儲(chǔ)在T寄存器中,范圍為-8至31。

指數(shù)值定義為前面的冗余位數(shù)減8的差值,即累加器中為消除非有效符號(hào)位所需左移的位數(shù)。當(dāng)累加器中的值超過了32bits,該操作將產(chǎn)生負(fù)值。EXP編碼器6BA來自累加器A來自累加器B送至T寄存器要點(diǎn):結(jié)構(gòu)、功能,如何計(jì)算指數(shù)3.3.7CPU狀態(tài)和控制寄存器TMS320C54XX有3個(gè)狀態(tài)和控制寄存器:(1)狀態(tài)寄存器ST0(2)狀態(tài)寄存器ST1(3)處理器工作方式狀態(tài)寄存器PMST(ProcessorModeState)。要點(diǎn):3個(gè)狀態(tài)寄存器的功能,位置,各位的作用15~1312111098~0ARPTCCOVAOVBDP(1)狀態(tài)寄存器ST0(反映尋址要求和計(jì)算的中間運(yùn)行狀態(tài))151413121110987654~0BRAFCPLXFHMINTM0OVMSXMC16FRCTCMPTASM(2)狀態(tài)寄存器ST1

(反映尋址要求,計(jì)算的初始狀態(tài)設(shè)置,I/O及中斷控制)續(xù):

在操作中,可以使用置位指令SSBX和復(fù)位指令RSBX對ST0和ST1的各個(gè)位進(jìn)行單獨(dú)置位(置1)或清零(置0)。例如:SSBXSXM ;SXM=1,允許符號(hào)擴(kuò)展RSBXSXM ;SXM=0,禁止符號(hào)擴(kuò)展ARP、DP和ASM字段可以通過LD指令裝載一個(gè)短立即數(shù),ASM和DP也可以通過使用LD指令用數(shù)據(jù)存儲(chǔ)器的值來裝載。15~76543210IPTRMP/MCOVLYAVISDROMCLKOFFSMULSSTt(3)處理器方式狀態(tài)寄存器PMST

(設(shè)定并控制處理器的工作方式、決定存儲(chǔ)器的配置情況、反映處理器的工作狀態(tài))3.3.8尋址單元用以迅速有效地訪問存儲(chǔ)器單元,提高運(yùn)算和指令執(zhí)行效率

;

主要包括數(shù)據(jù)尋址和程序?qū)ぶ穬纱箢?/p>

;

程序?qū)ぶ愤^程中的一個(gè)關(guān)鍵單元是程序計(jì)數(shù)器PC;

對于數(shù)據(jù)尋址,指令執(zhí)行中所涉及的操作數(shù)地址一般由指令提供。為了加速數(shù)據(jù)尋址的速度,減少指令中為操作數(shù)地址所保留的比特位數(shù),提高指令執(zhí)行效率,一般DSP芯片都提供了多種數(shù)據(jù)尋址方式

。TMS320C54xDSP有兩個(gè)地址發(fā)生器:程序地址生成單元PAGEN(ProgramAddressGenerationLogic)和數(shù)據(jù)地址生成單元DAGEN(DataAddressGenerationLogic)。1.程序地址生成單元(PAGEN)PAGEN包括5個(gè)寄存器:程序計(jì)數(shù)器PC、重復(fù)計(jì)數(shù)器RC、塊重復(fù)計(jì)數(shù)器BRC、塊重復(fù)起始地址RSA和結(jié)束地址REA(后四個(gè)寄存器合起來也叫重復(fù)寄存器),這些寄存器可支持程序存儲(chǔ)器尋址。PAGEN使用PC對內(nèi)部或外部程序存儲(chǔ)器尋址。PC保存將被執(zhí)行的下一條指令的地址。通過程序地址總線(PAB),從程序存儲(chǔ)器中該地址處取回指令并裝入指令寄存器。當(dāng)裝入指令寄存器時(shí),PC保存下一地址。在重復(fù)操作指令中,數(shù)據(jù)表地址由PAGEN產(chǎn)生,而數(shù)據(jù)地址由DAGEN產(chǎn)生,從而允許重復(fù)指令從數(shù)據(jù)表中連續(xù)取值,以及在任一間接尋址方式下獲取數(shù)據(jù)。2.?dāng)?shù)據(jù)地址生成單元(DAGEN)

包括輔助寄存器指針ARP、循環(huán)緩沖區(qū)大小寄存器BK、DP、堆棧指針寄存器SP、8個(gè)輔助寄存器(AR0~AR7)和2個(gè)輔助寄存器算術(shù)單元(ARAU0和ARAU1)。ARAU0和ARAU1的主要功能是在ALU操作的同時(shí),執(zhí)行8個(gè)輔助寄存器(AR0~AR7)的16位無符號(hào)數(shù)算術(shù)運(yùn)算,

8個(gè)輔助寄存器支持間接尋址,利用包含在輔助寄存器中的16位地址,可訪問64K數(shù)據(jù)空間中的任意單元,AR0~AR7由ST0中的ARP來指定。3.4TMS320C54xDSP的存儲(chǔ)器結(jié)構(gòu)3.4.1存儲(chǔ)器空間3.4.2程序存儲(chǔ)器3.4.3數(shù)據(jù)存儲(chǔ)器3.4.4I/O存儲(chǔ)器返回首頁為了提高數(shù)據(jù)處理能力,TMS320C54xDSP芯片提供了片內(nèi)存儲(chǔ)器,包含ROM和RAM,而RAM通常有兩類:雙尋址RAM(DARAM)和單尋址RAM(SARAM),分別也可稱為雙口RAM和單口RAM?!颮AM總是安排到數(shù)據(jù)存儲(chǔ)空間,但也可以構(gòu)成程序存儲(chǔ)空間。★ROM一般構(gòu)成程序存儲(chǔ)空間,也可以部分地安排到數(shù)據(jù)存儲(chǔ)空間。使用片內(nèi)存儲(chǔ)器的優(yōu)點(diǎn):無需等待周期故性能更高;比外部存儲(chǔ)器成本低、功耗小。當(dāng)片內(nèi)存儲(chǔ)器不能滿足系統(tǒng)設(shè)計(jì)的存儲(chǔ)要求時(shí),就需要擴(kuò)展片外存儲(chǔ)器,擴(kuò)展存儲(chǔ)器主要分為兩類:隨機(jī)存儲(chǔ)器(RAM)和只讀存儲(chǔ)器(ROM),其中RAM主要指靜態(tài)RAM(SRAM);ROM包括EPROM、EEPROM、FlashMemory等,這一類存儲(chǔ)器主要用于存儲(chǔ)用戶程序和系統(tǒng)常數(shù)表,一般映射在程序存儲(chǔ)空間?!疌54x片內(nèi)存儲(chǔ)器資源配置DSP存儲(chǔ)器’C541’C542’C543’C545’C546’C548’C549’C5402’C5410’C5416’C5420ROM程序程序/數(shù)據(jù)DARAMSARAM28K20K8K5K02K2K010K02K2k010K048K32K16K6K048K32K16K6K02K2K08K24K16K16K08K24K4K4K4K16K0

16K16K08K56K

16K16K064K64K

00032K168K

注:用戶可以將雙尋址RAM(DARAM)和單尋址RAM(SARAM)配置為數(shù)據(jù)存儲(chǔ)器或程序/數(shù)據(jù)存儲(chǔ)器3.4.1存儲(chǔ)器空間★TMS320C54x存儲(chǔ)器的總存儲(chǔ)空間為192K字,由3個(gè)獨(dú)立的可選擇空間組成:64K字的程序存儲(chǔ)空間、64K字的數(shù)據(jù)存儲(chǔ)空間和64K字的I/O空間。對于548,549,5402和5410還可以外部擴(kuò)展程序空間。★程序存儲(chǔ)器空間包括程序指令和程序中所需的常數(shù)表格;數(shù)據(jù)存儲(chǔ)器空間用于存儲(chǔ)需要程序處理的數(shù)據(jù)或程序處理后的結(jié)果;I/O空間用于與存儲(chǔ)器映射的外圍設(shè)備相連接,也可以作為附加的數(shù)據(jù)存儲(chǔ)空間使用?!锲瑑?nèi)或片外的程序或數(shù)據(jù)存儲(chǔ)器及外設(shè)都要映射到這三個(gè)空間。C54x可通過設(shè)置處理器工作狀態(tài)寄存器PMST中的

MP/

、OVLY和DROM三個(gè)控制位來實(shí)現(xiàn)片內(nèi)RAM是否可以映射到程序存儲(chǔ)空間、片內(nèi)ROM是否可以映射到程序儲(chǔ)存空間或程序和數(shù)據(jù)存儲(chǔ)空間。MP/位:決定DSP芯片使用哪種工作方式。若MP/=0,則片內(nèi)ROM映射到程序空間。若MP/=1,則片內(nèi)ROM不映射為程序空間。OVLY位:決定片內(nèi)RAM是否映射到程序存儲(chǔ)空間若OVLY=1,則片內(nèi)RAM映射為程序和數(shù)據(jù)空間。若OVLY=0,則片內(nèi)RAM只映射為數(shù)據(jù)存儲(chǔ)空間而不映射為程序存儲(chǔ)空間。DROM位:決定片內(nèi)ROM是否使能映射為數(shù)據(jù)存儲(chǔ)空間。若DROM=1,則允許部分片內(nèi)ROM映射為數(shù)據(jù)空間。若DROM=0,則片內(nèi)ROM不映射成數(shù)據(jù)空間。不同的C54x的數(shù)據(jù)和程序存儲(chǔ)空間分配略有不同圖3-2TMS320VC5402存儲(chǔ)器分配圖(a)TMS320VC5402程序存儲(chǔ)器分配圖4K字16K字(b)TMS320VC5402數(shù)據(jù)存儲(chǔ)器分配圖4K字128字8K字24K字16K字3.4.2程序存儲(chǔ)器C54xDSP可尋址64K字的程序存儲(chǔ)空間(C548和C549可以擴(kuò)展到8M字)。C54xDSP的片內(nèi)ROM、雙尋址RAM(DARAM)以及單尋RAM(SARAM),都可以通過軟件映射到程序空間。所謂映射到程序存儲(chǔ)空間,就是指把片內(nèi)存儲(chǔ)器與程序存儲(chǔ)器空間對應(yīng)起來,通過訪問程序存儲(chǔ)空間就可以實(shí)現(xiàn)對這些片內(nèi)存儲(chǔ)器的訪問。片內(nèi)存儲(chǔ)器映射到程序存儲(chǔ)器的優(yōu)點(diǎn)就是提高了數(shù)據(jù)處理速度,因?yàn)镃PU對程序存儲(chǔ)器的訪問是在程序計(jì)數(shù)器的控制下自動(dòng)完成的。

1.程序存儲(chǔ)器的配置(PMST的設(shè)置)片內(nèi)存儲(chǔ)器是否作為程序存儲(chǔ)器,取決于軟件對處理器工作方式狀態(tài)存儲(chǔ)器PMST的狀態(tài)位MP/和OVLY的編程。(1)若當(dāng)MP/=1,OVLY=0時(shí),TMS320C549DSP工作在微處理器模式下,片內(nèi)RAM、片內(nèi)ROM不映射到程序存儲(chǔ)空間。(2)若MP/=0,OVLY=1時(shí),TMS320C549DSP工作在微計(jì)算機(jī)模式下,則片內(nèi)2K字ROM,片內(nèi)中斷向量分別映射到了程序存儲(chǔ)器的C000H~FEFFH,FF00H~FFFFH地址空間,片內(nèi)8K字的DARAM,24K字的SARAM分別映射到了程序存儲(chǔ)器0080H~1FFFH,2000H~7FFFH地址空間。(3)當(dāng)MP/=1,OVLY=1時(shí),TMS320C549DSP工作在微處理器模式下,片內(nèi)ROM不映射到程序存儲(chǔ)空間,但片內(nèi)8K字DARAM,24K字的SARAM分別映射到了程序存儲(chǔ)器0080H~1FFFH,2000H~7FFFH地址空間。(4)若MP/=0,OVLY=0時(shí),TMS320C549DSP工作在微計(jì)算機(jī)模式下,則片內(nèi)2K字ROM,片內(nèi)中斷向量分別映射到了程序存儲(chǔ)器的C000H~FEFFH,FF00H~FFFFH地址空間,但片內(nèi)DARAM,SARAM都不映射到程序存儲(chǔ)空間。

為了增強(qiáng)處理器的性能,增加執(zhí)行速度,將片內(nèi)ROM再細(xì)分為若干塊,這樣在片內(nèi)ROM的一個(gè)塊內(nèi)取指的同時(shí),又在別的塊中讀取數(shù)據(jù)。根據(jù)C54xDSP的不同,ROM可以組織成容量為2K字、4K字或8K字的塊。以2K字為塊單位以4K字為塊單位2.復(fù)位時(shí)片內(nèi)ROM在程序存儲(chǔ)器中的映射當(dāng)處理器復(fù)位時(shí),復(fù)位和中斷向量都映射到程序空間的FF80h。復(fù)位后,這些向量可以被重新映射到程序空間中任何一個(gè)128字頁的開頭。器件復(fù)位時(shí),復(fù)位、中斷和陷阱中斷向量被映射到程序存儲(chǔ)器FF80H地址開始的存儲(chǔ)空間中。然而,復(fù)位后,TMS320C54x的中斷向量表可以被重新映射到程序存儲(chǔ)器中任何128字頁的開始。這樣,就可以把中斷向量表從引導(dǎo)ROM中移出,然后再根據(jù)存儲(chǔ)器意圖重新配置其地址,這對于中斷操作有著十分重要的意義。3.片內(nèi)ROM的內(nèi)容和映射C54x的片內(nèi)ROM容量有大(28K字或48K字)有小(2K字),容量大的片內(nèi)ROM可以把用戶的程序代碼編寫進(jìn)去,然而片內(nèi)高2K字ROM中的內(nèi)容是由TI公司定義的。這2K字程序空間(F800h~FFFFh)中包含如下內(nèi)容:

1)自舉加載程序。從串行口、外部存儲(chǔ)器、I/O口、或者主機(jī)接口(如果存在的話)自舉加載。

2)256字μ律壓擴(kuò)表。

3)256字A律壓擴(kuò)表。

4)256字正弦函數(shù)值查找表。

5)中斷向量表。

注意:在C54xDSP的片內(nèi)ROM中,128字被保留用于器件的測試。寫到片內(nèi)ROM并且在片內(nèi)ROM執(zhí)行的應(yīng)用程序代碼必須保留128字(FF00h~FF7Fh)。4.擴(kuò)展程序存儲(chǔ)器C548和C549采用頁擴(kuò)展方法,使其程序空間可擴(kuò)展到8192K字(8M×16b),分成128頁,每頁64K字。為了能夠訪問這種分頁擴(kuò)展的程序存儲(chǔ)空間,這些芯片具有以下一些增強(qiáng)的特性:有23條地址線增加了一個(gè)額外的存儲(chǔ)器映射寄存器,即程序計(jì)數(shù)器擴(kuò)展寄存器(XPC),芯片通過XPC的值來訪問程序存儲(chǔ)器的各個(gè)頁,包含當(dāng)前程序存儲(chǔ)器地址的高7位6條額外的指令用于尋址擴(kuò)展的程序存儲(chǔ)空間,改變XPC的值當(dāng)片內(nèi)RAM安排到程序空間時(shí),每頁程序存儲(chǔ)器分成兩部分:一部分是公共的32K字,另一部分是各自獨(dú)立的32K字,公共存儲(chǔ)區(qū)為所有頁共享,而每頁獨(dú)立的32K字存儲(chǔ)區(qū)只能按指定的頁號(hào)尋址。如果片內(nèi)ROM被尋址(MP/=0),被尋址的片內(nèi)ROM只能在0頁,不能映射到程序存儲(chǔ)器的其它頁。擴(kuò)展程序存儲(chǔ)器的頁號(hào)由XPC寄存器設(shè)定。XPC映射到數(shù)據(jù)存儲(chǔ)單元001Eh。在硬件復(fù)位時(shí),XPC各位被置為0。

為了便于軟件進(jìn)行頁切換,設(shè)置了6條影響XPC的專用指令:

FB[D]——長跳轉(zhuǎn)指令;

FBACC[D]——長跳轉(zhuǎn)到累加器A或B所

指定的位置;

FCALA[D]——長調(diào)用累加器A或B所指

定的位置;

FCALL[D]——長調(diào)用指令;

FRET[D]——長返回;

FRETE[D]——帶中斷使能的長返回指令。圖2-6C5402擴(kuò)展程序存儲(chǔ)器圖返回本節(jié)C5402采用頁擴(kuò)展方法,使其程序空間可擴(kuò)展到1024K字(1M×16b)。有20根地址線。C5402的程序空間分成16頁,每頁64K字3.4.3數(shù)據(jù)存儲(chǔ)器C54x的數(shù)據(jù)存儲(chǔ)器的容量最多可達(dá)64K字。數(shù)據(jù)存儲(chǔ)器包含片內(nèi)或片外的RAM,片內(nèi)的RAM映射到數(shù)據(jù)存儲(chǔ)空間。此外,C54x還可以通過軟件將片內(nèi)ROM映射為數(shù)據(jù)存儲(chǔ)空間。表2-4各種C54xDSP可用的片內(nèi)數(shù)據(jù)存儲(chǔ)器的容量(單位:K字)1.?dāng)?shù)據(jù)存儲(chǔ)器的配置(PMST的設(shè)置)

TMS320C54x可尋址64K字?jǐn)?shù)據(jù)存儲(chǔ)器空間,數(shù)據(jù)存儲(chǔ)器空間包含片內(nèi)和片外,采用內(nèi)部和外部存儲(chǔ)器統(tǒng)一編址。片內(nèi)DARAM映射為數(shù)據(jù)存儲(chǔ)空間。對于C54xDSP,用戶可以通過設(shè)置PMST寄存器的DROM位,將部分片內(nèi)ROM映射到數(shù)據(jù)存儲(chǔ)空間。這一部分片內(nèi)ROM既可以在數(shù)據(jù)存儲(chǔ)空間使能(DROM位置1),也可以在程序空間使能(MP/清0)。復(fù)位時(shí),處理器將DROM位清0。

當(dāng)DAGEN產(chǎn)生的數(shù)據(jù)地址處于內(nèi)部存儲(chǔ)器的范圍內(nèi)時(shí),CPU直接對內(nèi)部數(shù)據(jù)存儲(chǔ)器尋址。

當(dāng)DAGEN產(chǎn)生的數(shù)據(jù)地址不在內(nèi)部存儲(chǔ)器的范圍內(nèi)時(shí),CPU自動(dòng)對外部數(shù)據(jù)存儲(chǔ)器尋址。

2.片內(nèi)的RAM的組織為了提高處理器的性能,片內(nèi)RAM也細(xì)分成若干塊。分塊后,用戶可以在同一個(gè)時(shí)鐘周期內(nèi)從同一塊DARAM取出兩個(gè)操作數(shù),并將數(shù)據(jù)寫入到另一塊DARAM中,但一個(gè)SARAM塊在一個(gè)機(jī)器周期只能被訪問一次。C54xDSP內(nèi)的RAM的分塊組織見圖2-15所示。

8K

8K

0060H

1FFFH

2000H

3FFFH

圖2-15C5402的RAM分塊圖8K字的DARAM24K字的SARAM6K字的DARAM10K字的DARAM5K字的DARAM64K字的數(shù)據(jù)存儲(chǔ)器空間包括存儲(chǔ)器映射寄存器,所有C54xDSP上的DARAM的起始1K字的塊包括存儲(chǔ)器映射CPU寄存器(0000H-001FH)和外設(shè)寄存器(0020H-005FH),32字的暫存存儲(chǔ)器DARAM(0060H-007FH)和896字的DARAM(0080H-03FFH)。C54x內(nèi)部RAM前1K的配置:0380H~03FFH0300H~037FH0280H~02FFH0200H~027FH0180H~01FFH0100H~017FH0080H~00FFH0060H~007FH0200H~005FH0000H~001FH存儲(chǔ)器映射的CPU寄存器存儲(chǔ)器映像的CPU寄存器,特殊功能寄存器0000~001FH:特殊功能寄存器存儲(chǔ)器映射的外設(shè)寄存器存儲(chǔ)器映射的外設(shè)寄存器0020~005FH:外設(shè)寄存器暫存器SPRAM(DP=0)32字暫存寄存器SPRAM0060~007FH:暫存寄存器DARAM(DP=7)DARAM(DP=6)DARAM(DP=5)DARAM(DP=4)DARAM(DP=3)DARAM(DP=2)DARAM(DP=1)0080~03FFH:7個(gè)DARAM數(shù)據(jù)塊。3.數(shù)據(jù)存儲(chǔ)器映射寄存器

特殊功能寄存器

功能:主要用于程序的運(yùn)算處理和尋址方式的選

擇和設(shè)定。地址范圍:0000H~001FH。

’C5402的CPU寄存器共有27個(gè),CPU訪問這些寄存器時(shí),不需要插入等待時(shí)間。

外設(shè)寄存器

功能:用來控制片內(nèi)外設(shè)電路的狀態(tài)和存放數(shù)據(jù)。

地址范圍:0020H~005FH。

包括串行口通信控制寄存器組、定時(shí)器定時(shí)控制寄存器組、時(shí)鐘周期設(shè)定寄存器組等。訪問它們需使用專門的外設(shè)總線結(jié)構(gòu)。

暫存器SPRAM

功能:用來暫存變量。地址范圍:0060H~007FH。

地址符號(hào)寄存器名稱地址符號(hào)寄存器名稱00H

IMR中斷屏蔽寄存器10HAR0輔助寄存器001H

IFR中斷標(biāo)志寄存器11H

AR1輔助寄存器102H

保留(用于測試)12HAR2輔助寄存器203H保留(用于測試)13H

AR3輔助寄存器304H保留(用于測試)14H

AR4輔助寄存器405H保留(用于測試)15HAR5輔助寄存器506H

ST0狀態(tài)寄存器016H

AR6輔助寄存器607H

ST1狀態(tài)寄存器117H

AR7輔助寄存器708H

AL累加器A低字(15~0位)18H

SP堆棧指針09H

AH累加器A高字(31~16位)19H

BK循環(huán)緩沖區(qū)長度寄存器0AH

AG累加器A保護(hù)位(39~32位)1AH

BRC塊重復(fù)計(jì)數(shù)器0BH

BL累加器B低字(15~0位)1BH

RSA塊重復(fù)起始地址寄存器0CH

BH累加器B高字(31~16位)1CHREA塊重復(fù)結(jié)束地址寄存器0DH

BG累加器B保護(hù)位(39~32位)1DHPMST處理器模式狀態(tài)寄存器0EH

T暫存寄存器1EHXPC程序計(jì)數(shù)器擴(kuò)展寄存器0FH

TRN狀態(tài)轉(zhuǎn)移寄存器1FH保留特殊功能寄存器注:程序計(jì)數(shù)器擴(kuò)展寄存器(XPC)僅C548、C549、C5402、C5410、C5420有第2章TMS320C54x的硬件結(jié)構(gòu)2.存儲(chǔ)器映像寄存器

片內(nèi)外設(shè)寄存器存在于一個(gè)專用的外設(shè)總線結(jié)構(gòu)中,它可以發(fā)送數(shù)據(jù)至外設(shè)總線或者從外設(shè)中接收數(shù)據(jù)。設(shè)置或清除寄存器的控制位可以激活、屏蔽或者重新配置外設(shè)狀態(tài)。

不同型號(hào)的芯片具有不同的片內(nèi)外設(shè)寄存器?!疌549片內(nèi)外設(shè)寄存器地址符號(hào)寄存器名稱地址符號(hào)寄存器名稱20H

BDRR0緩沖串行口0數(shù)據(jù)接收寄存器35HTRAD

TDM串行口接收地址寄存器

21HBDXR0緩沖串行口0數(shù)據(jù)發(fā)送寄存器36~37H保留22H

BSPC0緩沖串行口0控制寄存器38HAXR0

ABU0發(fā)送地址寄存器23H

BSPCE0緩沖串行口0控制擴(kuò)展寄存器39H

BKX0

ABU0發(fā)送緩沖范圍寄存器24H

TIM定時(shí)設(shè)定寄存器3AH

ARR0

ABU0接收地址寄存器25H

PRD定時(shí)周期寄存器3BHBKR0

ABU0接收緩沖范圍寄存器26H

TCR定時(shí)控制寄存器3CH

AXR1

ABU1發(fā)送地址寄存器27H保留3DH

BKX1

ABU1發(fā)送緩沖范圍寄存器28HSWWSR軟件等待狀態(tài)寄存器3EH

ARR1

ABU1接收地址寄存器29HBSCR多路開關(guān)控制寄存器3FH

BKR1

ABU1接收緩沖范圍寄存器2A~2BH

保留40H

BDRR1緩沖串行口1數(shù)據(jù)接收寄存器2CH

HPIC主機(jī)口(HPI)控制寄存器41H

BDXR1緩沖串行口1數(shù)據(jù)發(fā)送寄存器2D~2FH

保留42HBSPC1緩沖串行口1控制寄存器30H

TRCV

TDM串行口數(shù)據(jù)接收寄存器43HBSPCE1緩沖串行口1控制擴(kuò)展寄存器31HTDXR

TDM串行口數(shù)據(jù)發(fā)送寄存器44~57H保留32HTSPCTDM串行口控制寄存器58HCLKMD時(shí)鐘模式寄存器33H

TCSR

TDM串行口通道選擇寄存器

59~5FH

保留34H

TRTA

TDM串行口接收發(fā)送寄存器

3.4.4I/O存儲(chǔ)器除程序存儲(chǔ)器空間和數(shù)據(jù)存儲(chǔ)器空間外,C54x系列器件還提供了64K字的I/O存儲(chǔ)器空間(0000h~FFFFh),I/O空間都位于片外。I/O空間的作用是與片外設(shè)備連接,所以利用它可以擴(kuò)展外部存儲(chǔ)器。

采用IOSTRB、R/W、IS等信號(hào)可以實(shí)現(xiàn)對外部I/O設(shè)備的訪問。有兩條指令PORTR和PORTW可以對I/O存儲(chǔ)器空間數(shù)據(jù)的存取。I/O空間的讀寫時(shí)序與程序存儲(chǔ)器空間和數(shù)據(jù)存儲(chǔ)器空間有很大不同,這有助于訪問單獨(dú)I/O映射的設(shè)備而不是存儲(chǔ)器。

TMS320C54x還有一個(gè)可屏蔽存儲(chǔ)器保護(hù)選項(xiàng),用來保護(hù)片內(nèi)存儲(chǔ)器的內(nèi)容。當(dāng)選定這項(xiàng)時(shí),所有外部產(chǎn)生的指令都不能訪問片內(nèi)存儲(chǔ)器空間。返回本節(jié)3.5TMS320C54xDSP片內(nèi)外設(shè)TMS320C54xDSP的CPU都是相同的,由x所表示的子系列器件的差別在于其片內(nèi)外圍電路的不同。下面介紹幾種常見的片內(nèi)外設(shè)。1.中斷系統(tǒng)2.定時(shí)器3.主機(jī)接口(HPI)4.串行口5.外部總線結(jié)構(gòu)返回首頁3.5.1中斷系統(tǒng)

中斷系統(tǒng)是DSP應(yīng)用系統(tǒng)實(shí)現(xiàn)實(shí)時(shí)操作和多任務(wù)多進(jìn)程操作的關(guān)鍵部分。

’C54x的中斷系統(tǒng)根據(jù)芯片型號(hào)的不同,提供了24~27個(gè)硬件及軟件中斷源,分為11~14個(gè)中斷優(yōu)先級(jí),可實(shí)現(xiàn)多層任務(wù)嵌套。

中斷是指CPU暫時(shí)停止當(dāng)前程序的執(zhí)行,而去執(zhí)行中斷服務(wù)程序,并在服務(wù)完成后自動(dòng)返回原程序執(zhí)行的過程。

1.中斷類型

軟件中斷

硬件中斷

——

由程序指令產(chǎn)生的中斷。

如:INTR、TRAP或RESET。

——

由外圍設(shè)備信號(hào)產(chǎn)生的中斷。

硬件中斷①受外部中斷引腳信號(hào)觸發(fā)的外部硬件中斷:RS和NMI引腳,INT0-INT3引腳

②受片內(nèi)外設(shè)電路信號(hào)觸發(fā)的內(nèi)部硬件中斷:串行口中斷:接收中斷:BRINT0、BRINT1發(fā)送中斷:BXINT0、BXINT1定時(shí)器中斷:TINT0、TINT1DMA中斷:DMAC5~DMAC0HPI中斷:HPINT

從引起中斷的來源分:

不論是軟件中斷還是硬件中斷,’C54x的中斷都可以分成兩大類。

可屏蔽中斷

非屏蔽中斷

1)可屏蔽中斷

可用軟件設(shè)置來屏蔽或開放的中斷,即通過對中斷屏蔽寄存器(IMR)中的相應(yīng)位和狀態(tài)寄存器(ST1)中的中斷允許控制位INTM編程來屏蔽或開放中斷。

TMS320C54xDSP最多可支持16個(gè)用戶可屏蔽中斷。

VC5402共有13個(gè)可屏蔽中斷:INT3~INT0

——

外部中斷

BRINT0、BXINT0BRINT1、BXINT1

——

串行口中斷

TINT0、TINT1

——

定時(shí)器中斷

DMAC4、DMAC5

——

DMA中斷

HPINT——

HPI中斷

中斷分類無法用軟件屏蔽,一旦發(fā)生,CPU立即響應(yīng),從主程序轉(zhuǎn)移到中斷服務(wù)程序(ISP)。C54x的非屏蔽中斷包括:①所有的軟件中斷②兩個(gè)外部硬件中斷(RS和NMI)。

2)非屏蔽中斷

RS:

是一個(gè)對C54x所有操作方式產(chǎn)生影響的非屏蔽中斷。

NMI:

不會(huì)對C54x的任何操作方式產(chǎn)生影響。當(dāng)中斷響應(yīng)時(shí),所有其他中斷將被禁止。

中斷向量中存放對應(yīng)中斷服務(wù)程序的入口地址,采用中斷向量來確定CPU響應(yīng)每個(gè)中斷時(shí)程序指針(PC)的跳轉(zhuǎn)地址。C5000,C6000等系列DSP芯片都采用了軟件可重定位中斷向量形式。TMS320C54xDSP給每個(gè)中斷源都分配一個(gè)確定的中斷向量號(hào)。所有的中斷向量放在一起就是中斷向量表。TMS320C54xDSP在中斷向量表中為每個(gè)中斷向量提供了4個(gè)字的存儲(chǔ)空間用于對應(yīng)中斷服務(wù)程序的存放。2.中斷向量

當(dāng)同時(shí)有多個(gè)中斷出現(xiàn)時(shí),’C54x將按照中斷優(yōu)先級(jí)別的高低對它們進(jìn)行中斷響應(yīng)。VC5402中斷源和優(yōu)先級(jí)中斷序號(hào)

中斷名稱

中斷地址

中斷優(yōu)先級(jí)

功能

0RS/SINTR00H1復(fù)位(硬件和軟件復(fù)位)

1NMI/SINT1604H2不可屏蔽中斷

2SINT1708H——軟件中斷#17

3SINT180CH——軟件中斷#184SINT1910H——軟件中斷#195SINT2014H——軟件中斷#206SINT2118H——軟件中斷#217SINT221CH——軟件中斷#22VC5402中斷源和優(yōu)先級(jí)中斷序號(hào)

中斷名稱

中斷地址

中斷優(yōu)先級(jí)

功能

8SINT2320H——軟件中斷#239SINT2424H——軟件中斷#2410SINT2528H——軟件中斷#25

11SINT262CH——軟件中斷#2612SINT2730H——軟件中斷#2713SINT2834H——軟件中斷#2814SINT2938H——軟件中斷#2915SINT303CH——軟件中斷#30VC5402中斷源和優(yōu)先級(jí)中斷序號(hào)

中斷名稱

中斷地址

中斷優(yōu)先級(jí)

功能

16INT0/SINT040H3外部用戶中斷#0

17INT1/SINT144H4外部用戶中斷#1

18INT2/SINT248H5外部用戶中斷#219TINT0/SINT34CH6內(nèi)部定時(shí)器0中斷

20

BRINT0/SINT4

50H7緩沖串口McBSP0接收中斷

21

BXINT0/SINT5

54H8緩沖串口McBSP0發(fā)送中斷

22保留(DMAC0)/SINT6

58H9保留(默認(rèn))或DMA通道0中斷,由DMPREC寄存器選擇

VC5402中斷源和優(yōu)先級(jí)中斷序號(hào)

中斷名稱

中斷地址

中斷優(yōu)先級(jí)

功能

23

TINT1(DMAC1)/SINT7

5CH10內(nèi)部定時(shí)器1中斷(默認(rèn))或DMA通道1中斷,由DMPREC寄存器選擇24INT3/SINT8

60H11外部用戶中斷#325

HPINT/SINT9

64H12HPI中斷26BRINT1(DMAC2)/SINT10

68H13緩沖串口McBSP1接收中斷(默認(rèn))或DMA通道2中斷,由DMPREC寄存器選擇

27BXINT1(DMAC3)/SINT116CH14緩沖串口McBSP1發(fā)送中斷(默認(rèn))或DMA通道3中斷,由DMPREC寄存器選擇

VC5402中斷源和優(yōu)先級(jí)中斷序號(hào)

中斷名稱

中斷地址

中斷優(yōu)先級(jí)

功能

28

DMAC4/SINT12

70H

15DMA通道4中斷29

DMAC5/SINT13

74H16DMA通道5中斷

HPINT/SINT9

78H~7FH——保留中斷向量地址

中斷向量可以映射到程序存儲(chǔ)器的任何128字頁面的起始位置,除保留區(qū)域外。C54x的中斷向量地址是由PMST寄存器中的IPTR(9位中斷向量指針)和左移2位后的中斷向量號(hào)所組成。

中斷向量地址=IPTR+(左移2位的中斷向量序號(hào))

例如,IPTR=0001H,INT0的中斷向量序號(hào)為10H,中斷向量的地址為00C0H。

中斷向量地址=0

00000001100

0000

=00C0H復(fù)位時(shí),IPTR為全1(IPTR=1FFh),并按此值將復(fù)位向量映像到程序存儲(chǔ)器的511頁空間。此時(shí),IPTR=1FFh=111111111b,由表查得復(fù)位的中斷序號(hào)為0,因此復(fù)位所對應(yīng)的中斷地址為:硬件復(fù)位后的開始地址為0FF80h。除硬件復(fù)位向量外,其它的中斷向量,只要改變IPTR位的值,都可以重新安排它們的地址。

例如,SINTR中斷,用0001h加載IPTR,IPTR=0001h=000000001b,由表查得SINTR中斷序號(hào)為0h=00000b,左移2位后仍為0h=0000000b。即此時(shí)中斷向量被移到從0080h單元開始的程序存儲(chǔ)器空間中斷向量表程序.sect“.vectors”

;定義段的名稱為vectors,使后面的代碼和數(shù)據(jù)與該段相關(guān)聯(lián).refstart;程序入口,主程序中必須有start標(biāo)號(hào)

.align0x80;將段程序計(jì)數(shù)器對準(zhǔn)128字的邊界,確保在偽指令后的代碼開始于第X個(gè)字或頁面邊界RESET:;復(fù)位中斷,優(yōu)先級(jí)最高

BDstart;執(zhí)行完該語句下面的一條語句后,跳轉(zhuǎn)到start處

STM#200,SP;設(shè)置堆棧大小為200個(gè)字nmi:RETE;NMI非屏蔽中斷返回,下面依次為VC5402的各個(gè)中斷

NOPNOPNOP;程序內(nèi)部的軟件中斷,每個(gè)中斷占4個(gè)字sint17.space4*16;.space開辟空間(單位:bit)sint18.space4*16sint19.space4*16程序中需要響應(yīng)中斷處理時(shí),應(yīng)將中斷向量表文件加入到工程中去。這個(gè)文件的格式比較固定,下面給出一個(gè)中斷向量表文件的例程。sint20.space4*16Sint21.space4*16sint22.space4*16sint23.space4*16Sint24.space4*16Sint25.space4*16sint26.space4*16Sint27.space4*16sint28.space4*16sint29.space4*16Sint30.space4*16int0:Bint_program;外部中斷0入口點(diǎn),響應(yīng)中斷跳到標(biāo)號(hào)int_program,在主程序中必須有這個(gè)標(biāo)號(hào)

nopnopnopint1:RETE;外部中斷1nopnopnopint2:RETE;外部中斷2nopnopnoptint:RETE;定時(shí)器中斷

nopnopnoprint0:RETE;串口0接收中斷

nopnopnopxint0:RETE;串口0發(fā)送中斷

nopnopnoprint1:RETE;串口1接收中斷

nopnopnopxint1:RETE;串口1發(fā)送中斷

nopnopnopint3:RETE;外部中斷3nopnopnop.end

’C54x中斷系統(tǒng)設(shè)置兩個(gè)中斷管理寄存器,分別為中斷標(biāo)志寄存器IFR和中斷屏蔽寄存器IMR。

3.中斷寄存器

1)

中斷標(biāo)志寄存器IFR(0001H)中斷標(biāo)志寄存器IFR是一個(gè)存儲(chǔ)器映射寄存器,包含所有可屏蔽中斷的標(biāo)志位,對各硬件中斷請求進(jìn)行標(biāo)志,當(dāng)一個(gè)中斷出現(xiàn)時(shí),IFR中的相應(yīng)的中斷標(biāo)志位置1,直到CPU識(shí)別該中斷為止。對IFR來說,某位為1表示DSP收到了一個(gè)相應(yīng)的中斷請求,用軟件將IFR某位置1,等效于DSP收到了一個(gè)中斷請求。

’C5402中斷標(biāo)志寄存器IFR的結(jié)構(gòu):15

141312111098保留DMAC5DMAC4BXINT1BRINT1HPINTINT376543210TINT1DMAC0BXINT0BRINT0TINT0INT2INT1INT0

中斷標(biāo)志寄存器IFR各位的功能。

名稱功能

名稱功能

15~14保留保留位,總是06DMAC0DMA通道0中斷標(biāo)志13DMAC5DMA通道5中斷標(biāo)志5BXINT0緩沖串口發(fā)送中斷0標(biāo)志12DMAC4DMA通道4中斷標(biāo)志4BRINT0緩沖串口接收中斷0標(biāo)志11BXINT1緩沖串口發(fā)送中斷1標(biāo)志3TINT0定時(shí)器中斷0標(biāo)志10BRINT1緩沖串口接收中斷1標(biāo)志2INT2外部中斷2標(biāo)志9HPINTHPI中斷標(biāo)志1INT1外部中斷1標(biāo)志8INT3外部中斷3標(biāo)志0INT0外部中斷0標(biāo)志7TINT1定時(shí)器中斷1標(biāo)志

在C54x系列芯片中,IFR中5~0位對應(yīng)的中斷源完全相同,分別為外部中斷和通信中斷標(biāo)志寄存位,而15~6位中斷源根據(jù)芯片的不同,定義的中斷源類型不同。有三種情況將清除中斷標(biāo)志:

軟件和硬件復(fù)位,即C54x的復(fù)位引腳RS=0;

將1寫到IFR中的適當(dāng)位(相應(yīng)位變成0),相應(yīng)的尚未處理完的中斷被清除;③

使用相應(yīng)的中斷號(hào)響應(yīng)該中斷,

即執(zhí)行INTR#K指令。

2)

中斷屏蔽寄存器IMR(0000H)

中斷屏蔽寄存器是一個(gè)存儲(chǔ)器映射寄存器,主要用于控制硬件中斷的屏蔽和開放。

當(dāng)狀態(tài)寄存器ST1中的INTM位為0,IMR中的某位置1時(shí),開放相應(yīng)的中斷。復(fù)位時(shí),IMR均設(shè)為0.

中斷屏蔽寄存器IMR的結(jié)構(gòu)與IFR完全一致:15

141312111098保留DMAC5DMAC4BXINT1BRINT1HPINTINT376543210TINT1DMAC0BXINT0BRINT0TINT0INT2INT1INT0用戶可以對IMR寄存器進(jìn)行讀寫操作。通過讀IMR可以檢查某個(gè)中斷是否被屏蔽,通過寫IMR可以屏蔽或開放某個(gè)中斷,在IMR位置0,則屏蔽該中斷。中斷控制主要是屏蔽某些中斷,避免其他中斷對當(dāng)前運(yùn)行程序的干擾,以及防止同級(jí)中斷之間的響應(yīng)競爭。4.中斷處理的步驟

1)接收中斷請求一個(gè)中斷可由硬件設(shè)備(引腳或片內(nèi)外設(shè))或軟件指令提出請求。如果中斷源正在請求一個(gè)可屏蔽中斷,IFR寄存器中相應(yīng)的中斷標(biāo)志位都會(huì)被置1。當(dāng)相應(yīng)的中斷響應(yīng)后,該標(biāo)志位自動(dòng)被清除。軟件中斷是由程序指令產(chǎn)生的中斷請求,當(dāng)軟件中斷請求時(shí),一般為下列情形之一:

INTR指令:允許執(zhí)行任何的可屏蔽中斷,包括用戶定義的中斷(從SINT0到SINT30);

TRAP指令:與INTR指令相同,但不影響狀態(tài)寄存器ST1的中斷方式(INTM)位;

RESET指令:可在程序的任何時(shí)候產(chǎn)生,使處理器返回一個(gè)預(yù)定狀態(tài)。復(fù)位指令影響ST0,ST1寄存器,但對PMST寄存器沒影響。

對于軟件中斷和非屏蔽硬件中斷,CPU將立即響應(yīng),進(jìn)入相應(yīng)中斷服務(wù)程序。對于可屏蔽中斷,只要滿足以下3種條件后CPU才能響應(yīng)中斷。2)中斷響應(yīng)

當(dāng)前中斷優(yōu)先級(jí)最高。

’C54x按照中斷優(yōu)先級(jí)響應(yīng)中斷請求。

INTM位清0。

當(dāng)INTM=0,所有可屏蔽中斷被使能。當(dāng)INTM=1,所有可屏蔽中斷被禁止。

IMR屏蔽位為1。

在IMR中,中斷的相應(yīng)位為1,表明允許該中斷。

滿足上述條件后,CPU響應(yīng)中斷,終止當(dāng)前正進(jìn)行的操作,指令計(jì)數(shù)器PC自動(dòng)轉(zhuǎn)向相應(yīng)的中斷向量地址,取出中斷服務(wù)程序地址,并發(fā)出硬件中斷響應(yīng)信號(hào)IACK,而清除相應(yīng)的中斷標(biāo)志位。3)執(zhí)行中斷服務(wù)程序

保護(hù)現(xiàn)場,將程序計(jì)數(shù)器PC值壓入堆棧;

將中斷向量的地址加載到PC;③

從中斷向量所指定的地址開始取指;④

執(zhí)行分支轉(zhuǎn)移,進(jìn)入中斷服務(wù)程序;⑤

執(zhí)行中斷服務(wù)程序直到出現(xiàn)返回指令;

從堆棧中彈出返回地址,加載到PC中;⑦

繼續(xù)執(zhí)行主程序。CPU響應(yīng)中斷后,DSP執(zhí)行中斷向量地址所指向的分支轉(zhuǎn)移指令,并執(zhí)行中斷服務(wù)程序,具體步驟如下:

注意:在中斷響應(yīng)時(shí),程序擴(kuò)展寄存器XPC不會(huì)自動(dòng)壓入堆棧。(若ISR在程序空間的擴(kuò)展頁上,程序須用軟件將XPC壓入堆棧,此時(shí)中斷返回必須使用FRET[D]遠(yuǎn)程返回指令。一般建議中斷服務(wù)程序放在DSP片內(nèi)程序空間。建議進(jìn)入中斷服務(wù)程序時(shí),只執(zhí)行改變堆棧頂PC值的修改,返回到程序中即可,最后跳轉(zhuǎn)到中斷點(diǎn)。4)保存中斷上下文當(dāng)執(zhí)行一個(gè)中斷服務(wù)程序時(shí),有些寄存器必須保存在堆棧中。當(dāng)程序從ISR返回時(shí),用戶軟件代碼必須恢復(fù)這些寄存器的上下文。

使用堆棧操作指令可以將這些寄存器傳送到堆棧中,或者從堆棧中取出。

PSHM指令:將MMR寄存器中的內(nèi)容傳送到堆棧中;

POPM指令:從堆棧中讀出的數(shù)據(jù)傳送到MMR寄存器中;PSHD指令:將數(shù)據(jù)存儲(chǔ)器中的數(shù)據(jù)傳送到堆棧;

POPD指令:從堆棧中讀出的數(shù)據(jù)傳送到數(shù)據(jù)存儲(chǔ)器中.

當(dāng)保存和恢復(fù)上下文時(shí),應(yīng)考慮如下幾點(diǎn):

①當(dāng)使用堆棧保存上下文時(shí),必須按相反的方向執(zhí)行恢復(fù);②寄存器BRC應(yīng)在ST1的BRAF位之前恢復(fù),否則,若在恢復(fù)BRC之前,中斷服務(wù)程序中的BRC=0,則先前恢復(fù)的BRAF位會(huì)被清0。

5.中斷操作流程

(1)可屏蔽中斷操作過程:

設(shè)置IFR寄存器的相應(yīng)標(biāo)志位;

測試中斷響應(yīng)條件;

當(dāng)中斷響應(yīng)后,清除相應(yīng)的標(biāo)志位,屏蔽其他可屏蔽中斷;

PC值保存到堆棧中;

分支轉(zhuǎn)移執(zhí)行中斷服務(wù)程序;

中斷返回,將返回地址從堆棧中彈出給PC;

CPU繼續(xù)執(zhí)行主程序。

(2)非屏蔽中斷操作過程:

CPU立刻響應(yīng)該中斷,產(chǎn)生中斷響應(yīng)信號(hào);

如果中斷是由RS、NMI或INTR指令請求的,則INTM位被置1;

若INTR指令已經(jīng)請求了一個(gè)可屏蔽中斷,則相應(yīng)的標(biāo)志位被清零;

PC值保存到堆棧中;

分支轉(zhuǎn)移執(zhí)行中斷服務(wù)程序;

中斷返回,將返回地址從堆棧中彈出給PC;

CPU繼續(xù)執(zhí)行主程序。

在工業(yè)應(yīng)用中,計(jì)數(shù)器和定時(shí)器常用于檢測和控制中的時(shí)序協(xié)調(diào)及控制。

’C54x的片內(nèi)定時(shí)器是一個(gè)可編程的定時(shí)器,可用于周期地產(chǎn)生中斷。定時(shí)器的最高分辨率為處理器的CPU時(shí)鐘速度。通過帶4位預(yù)定標(biāo)器的16位計(jì)數(shù)器,可以獲得較大范圍的定時(shí)頻率。

3.5.2定時(shí)器

’C54x的定時(shí)器是一個(gè)帶有4位預(yù)分頻器的16位可軟件編程減法計(jì)數(shù)器。

這個(gè)減法計(jì)數(shù)器每來1個(gè)時(shí)鐘周期自動(dòng)減1,當(dāng)計(jì)數(shù)器減到0時(shí)產(chǎn)生定時(shí)中斷。

通過編程設(shè)置特定的狀態(tài)可使定時(shí)器停止、恢復(fù)運(yùn)行、復(fù)位或禁止。

定時(shí)器硬件上主要由3個(gè)16位存儲(chǔ)器映射寄存器【定時(shí)寄存器TIM、定時(shí)周期寄存器PRD、定時(shí)控制寄存器TCR】及相應(yīng)的邏輯控制電路組成。

寄存器TIM、PRD和TCR映射到存儲(chǔ)器的地址分別為0024H、0025H和0026H。1.定時(shí)器結(jié)構(gòu)

(1).定時(shí)器的組成

主定時(shí)器模塊預(yù)定標(biāo)器模塊周期寄存器PRD定時(shí)寄存器TIM借位13預(yù)定標(biāo)計(jì)數(shù)器PSC借位預(yù)定標(biāo)分頻系數(shù)TDDR12111&SRESETTRBCLKOUTTSSTINTTOUTTMS320C54xDSP片內(nèi)定時(shí)器結(jié)構(gòu)圖主定時(shí)器模塊:由PRD和TIM組成預(yù)定標(biāo)器模塊:由TCR的TDDR和PSC位域組成定時(shí)器由CPU提供時(shí)鐘邏輯控制電路:由三個(gè)或門和一個(gè)與門組成。復(fù)位SRESET和TRB:①通過或門1、3控制TIM的加載計(jì)數(shù);②通過或門1、2控制PSC的加載計(jì)數(shù)。停止控制位TSS:通過與門屏蔽CLKOUT信號(hào)來控制定時(shí)器的啟動(dòng)。TINT——外部定時(shí)中斷,定時(shí)時(shí)間到發(fā)中斷;TOUT——定時(shí)輸出,輸出定時(shí)波形。表3-1定時(shí)器的三個(gè)16位寄存器Timer0地址Timer1地址(僅C5402有)寄存器說明0024H0030HTIM定時(shí)器寄存器,減1計(jì)數(shù)器,每計(jì)數(shù)一次自動(dòng)減10025H0031HPRD定時(shí)器周期寄存器,時(shí)間常數(shù)寄存器,用于重載TIM的值。當(dāng)TIM減為0后,CPU自動(dòng)將PRD的值裝入TIM0026H0032HTCR定時(shí)器控制寄存器,包含定時(shí)器的控制和狀態(tài)位*定時(shí)控制寄存器TCR

16位存儲(chǔ)器映射寄存器,包含定時(shí)器的控制位和狀態(tài)位。15~1211109~6543~0TCR0026h保留

Soft

Free

PSC

TRB

TSS

TDDR

保留位軟件調(diào)試控制位

預(yù)定標(biāo)計(jì)數(shù)器

重新加載位停止?fàn)顟B(tài)位分頻系數(shù)TCR位結(jié)構(gòu)圖表3-2定時(shí)器控制寄存器(TCR)的功能定時(shí)器可以通過啟動(dòng)定時(shí)控制寄存器(TCR)完成以下操作:●設(shè)定定時(shí)器的工作方式(Soft、Free);●設(shè)定預(yù)定標(biāo)計(jì)數(shù)器中的當(dāng)前數(shù)值(PSC);●啟動(dòng)或停止定時(shí)器(TSS);●重新裝載定時(shí)器(TRB);●設(shè)置定時(shí)器的分頻值(TDDR)。

定時(shí)器的工作過程:由邏輯控制電路控制定時(shí)器運(yùn)行。①

定時(shí)分頻系數(shù)和周期數(shù)分別裝入TCR和PRD寄存器中;②

每來一個(gè)定時(shí)脈沖CLKOUT,計(jì)數(shù)器PSC減1;③

當(dāng)PSC減至0時(shí),PSC產(chǎn)生借位信號(hào);④在PSC的借位信號(hào)作用下,TIM減1計(jì)數(shù),同時(shí)將分頻系數(shù)裝入PSC,重新計(jì)數(shù);⑤

當(dāng)TIM減到0時(shí),定時(shí)時(shí)間到,由借位產(chǎn)生定時(shí)中斷TINT和定時(shí)輸出TOUT,并將PRD中的時(shí)間常數(shù)重新裝入TIM。定時(shí)中斷的周期=

CLKOUT×(TDDR+1)×(PRD+1)其中:CLKOUT-CPU時(shí)鐘周期TDDR-定時(shí)器分頻系數(shù)PRD-定時(shí)器時(shí)間常數(shù)讀TIM和TCR寄存器,可以知道定時(shí)器中的當(dāng)前值和預(yù)定標(biāo)計(jì)數(shù)器中的當(dāng)前值。由于讀這兩個(gè)寄存器要用兩條指令,就有可能在兩次讀之間發(fā)生讀數(shù)變化。若需要精確的定時(shí)測量,應(yīng)在讀這兩值之前先關(guān)閉定時(shí)器。用定時(shí)器可以產(chǎn)生外圍電路(如模擬接口電路)所需的采樣時(shí)鐘信號(hào)。一種方法是直接利用引腳TOUT的輸出信號(hào);另一種方法是利用中斷,周期地讀一個(gè)寄存器。2.定時(shí)時(shí)間3.定時(shí)器的用法關(guān)閉定時(shí)器:只要將TCR的TSS位置1,切斷時(shí)鐘輸入,定時(shí)器停止工作,減小功耗定時(shí)器初始化:(1)將TCR的TSS位置1(關(guān)閉定時(shí)器)(2)加載PRD(3)加載TCR(使TDDR初始化,令TSS位為0,TRB位置1),啟動(dòng)定時(shí)器開放定時(shí)中斷:(1)將IFR中的TINT位置1,清除尚未處理完的定時(shí)器中斷(2)將IMR中的TINT位置1,開放定時(shí)中斷(3)將ST1中的INTM位清0,從整體上開放中斷復(fù)位時(shí):TIM和PRD都置成FFFFH,定時(shí)器的分頻系數(shù)TDDR置0,定時(shí)器開始工作*【例】定時(shí)器自動(dòng)裝載定時(shí)。TSS=0:啟動(dòng)定時(shí)器;TRB=1:自動(dòng)裝載;TDDR=Ah:分頻系數(shù)10

soft=1,free=0:計(jì)數(shù)器減至0時(shí),停止工作;TCR=0AAAH。定時(shí)周期:0101H;清除尚未處理完的定時(shí)器中斷:IFR=0008H;

開放定時(shí)器中斷:IMR=0008H。

STM#0000H,SWWSR

;不插等待時(shí)間STM#0010H,TCR

;TSS=0關(guān)閉定時(shí)器

STM#0101H,PRD

;加載周期寄存器(PRD)

STM#0AAAH,TCR;裝入定時(shí)器控制字,啟動(dòng)定時(shí)器

STM#0080H,IFR;消除尚未處理完的定時(shí)器中斷

STM#0080H,IMR

;開放定時(shí)器中斷

RSBXINTM;開放中斷返回本節(jié)3.5.3主機(jī)接口主機(jī)接口(HPI,HostPortInterface)是C54xDSP系列定點(diǎn)芯片內(nèi)部具有的一種并行接口部件,

通過它可以連接到標(biāo)準(zhǔn)的微處理器總線。主機(jī)接口通常在主機(jī)和DSP內(nèi)核之間共享一塊可以訪問的位于DSP器件上的存儲(chǔ)器。TMS320C54xDSP上配置的是一個(gè)8位HPI接口,其內(nèi)部簡化框圖如圖3-23所示。主機(jī)和DSP可獨(dú)立地對HPI接口操作,通過主機(jī)接口,可實(shí)現(xiàn)主機(jī)與DSP片內(nèi)存儲(chǔ)器之間信息的高速交換。主機(jī)是HPI的主控者,HPI作為一個(gè)外設(shè)與主機(jī)相連接,使主機(jī)的訪問操作很容易。主機(jī)接口包括一個(gè)8比特的雙向數(shù)據(jù)總線、各種控制信號(hào)及3個(gè)寄存器(HPIC、HPIA和HPID)。片外的主機(jī)通過修改HPI控制寄存器(HPIC)設(shè)置HPI的工作方式,通過設(shè)置HPI地址寄存器(HPIA)來指定要訪問的片內(nèi)RAM單元,通過讀/寫數(shù)據(jù)鎖存器(HPID)來對指定存儲(chǔ)器單元讀/寫。主機(jī)通過HCNTL0、HCNTLl管腳電平選擇3個(gè)寄存器中的一個(gè)。主機(jī)和C54xDSP都可以訪問HPIC。圖3-23TMS320C54xDSPHPI內(nèi)部簡化框圖地址寄存器

HPI的外部接口為8位的總線,通過兩個(gè)連續(xù)的8位字節(jié)組合在一起形成一個(gè)16位字,HPI就可為C54xDSP提供16位的數(shù)。當(dāng)主機(jī)使用HPI寄存器執(zhí)行一個(gè)數(shù)據(jù)傳輸時(shí),HPI控制邏輯自動(dòng)執(zhí)行對一個(gè)專用2K字的C54xDSP內(nèi)部的雙尋址RAM的訪問,以完成數(shù)據(jù)處理。然后C54xDSP可以在它的存儲(chǔ)器空間讀寫數(shù)據(jù)。HPIRAM也可以用作通用目標(biāo)雙尋址數(shù)據(jù)或程序RAM。圖3.24主機(jī)與TMS320C54xDSP主機(jī)接口的連接

主機(jī)的接口采用8條數(shù)據(jù)線、兩條地址線、一條讀/寫線和一條數(shù)據(jù)鎖存和選通線,還有一個(gè)中斷連接以使DSP能向主機(jī)提出新的數(shù)據(jù)申請,雖然沒有主機(jī)向DSP申請的中斷連接,但在主機(jī)寫新數(shù)據(jù)時(shí)會(huì)自動(dòng)產(chǎn)生主機(jī)向DSP的中斷申請。HPI與主機(jī)的連接*表3-29HPI-8接口信號(hào)名稱及其功能返回本節(jié)3.5.4串行口

’C54x為用戶提供了豐富的同步串行口,可與雙向串口器件實(shí)現(xiàn)高效的串行通信。

’C54x的串行口有四種類型:

標(biāo)準(zhǔn)同步串口SP緩沖同步串口BSP多路緩沖串口McBSP時(shí)分多路同步串口TMD

功能是提供器件內(nèi)外數(shù)據(jù)的串行通信,串行通信是指發(fā)送器將并行數(shù)據(jù)逐位移出成為串行數(shù)據(jù)流

溫馨提示

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

評(píng)論

0/150

提交評(píng)論