TMSCx的硬件結(jié)構(gòu)-修改_第1頁
TMSCx的硬件結(jié)構(gòu)-修改_第2頁
TMSCx的硬件結(jié)構(gòu)-修改_第3頁
TMSCx的硬件結(jié)構(gòu)-修改_第4頁
TMSCx的硬件結(jié)構(gòu)-修改_第5頁
已閱讀5頁,還剩171頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

TMS320C55x的總體結(jié)構(gòu)封裝和引腳功能CPU結(jié)構(gòu)CPU寄存器存儲(chǔ)空間和I/O空間堆棧操作中斷和復(fù)位操作第2章TMS320C55x的硬件結(jié)構(gòu)VC5509-A評估板原理框圖2.1TMS320C55x的總體結(jié)構(gòu)C55x芯片由CPU、存儲(chǔ)空間、片內(nèi)外設(shè)組成不同芯片體系結(jié)構(gòu)相同,具有相同的CPU,片上存儲(chǔ)器和外圍電路配置有所不同圖2-1TMS320VC5509A框圖2.1.1C55xCPU內(nèi)部總線結(jié)構(gòu)內(nèi)部獨(dú)立總線:12組程序地址總線(PAB):1組,24位程序數(shù)據(jù)總線(PB):1組,32位數(shù)據(jù)讀地址總線(BAB、CAB、DAB):3組,24位數(shù)據(jù)讀總線(BB、CB、DB):3組,16位數(shù)據(jù)寫地址總線(EAB、FAB):2組,24位數(shù)據(jù)寫總線(EB、FB):2組,16位。2.1.2C55x的CPU組成指令緩沖單元(I單元)程序流單元(P單元)地址-數(shù)據(jù)流單元(A單元)數(shù)據(jù)運(yùn)算單元(D單元)存儲(chǔ)器接口單元(M單元)2.1.3C55x存儲(chǔ)器配置存儲(chǔ)空間支持的存儲(chǔ)器類型特點(diǎn)

片內(nèi)存儲(chǔ)空間共有352KB(176K字);外部存儲(chǔ)空間共有16MB(8M字)異步SRAM、EPROM;同步DRAM;同步突發(fā)SRAM采用統(tǒng)一的程序/地址空間存儲(chǔ)空間;I/O空間與程序/地址空間分開存儲(chǔ)器5501550255035506550755095510ROM(KB)32326464646432RAM(KB)326464128128256320表2C55x片內(nèi)存儲(chǔ)器配置2.1.4C55x外設(shè)配置模數(shù)轉(zhuǎn)換器(ADC)可編程數(shù)字鎖相環(huán)時(shí)鐘發(fā)生器(DPLL)外部存儲(chǔ)器接口(EMIF)直接存儲(chǔ)器訪問控制器(DMA)多通道串行緩沖口(McBSP)10位,用于采集電壓、面板旋鈕的輸入值為VC5509A提供最小時(shí)鐘,CPU的時(shí)鐘頻率可達(dá)200MHz,最小機(jī)器周期為5ns可以實(shí)現(xiàn)與各種存儲(chǔ)器件無縫連接在無CPU涉入的情況下,允許數(shù)據(jù)在內(nèi)部存儲(chǔ)器和外部存儲(chǔ)器、增強(qiáng)型主機(jī)接口(EHPI)之間傳輸為全雙工串口,VC5509設(shè)有3個(gè)McBSP增強(qiáng)型主機(jī)接口(EHPI)2個(gè)20位的通用定時(shí)/計(jì)數(shù)器8個(gè)可配置的通用I/O引腳(GPIO)實(shí)時(shí)時(shí)鐘(RealTimeClock,RTC)看門狗定時(shí)器(WatchdogTimer)

USBI2C總線接口

為16位并行接口,用于提供主處理器對DSP上的內(nèi)部存儲(chǔ)器的訪問,可被配置成復(fù)用或非復(fù)用形式提供一個(gè)時(shí)間參考,并能產(chǎn)生基于時(shí)間的報(bào)警來中斷DSP可以在軟件陷入循環(huán)有沒有受控退出的情況下,防止系統(tǒng)死鎖目前VC5506、VC5507、VC5509各提供了1個(gè)USB接口2.2C55x的封裝和引腳功能不同C55x芯片通常有不同封裝為滿足不同用途需求,C55x同一個(gè)芯片也往往有多種封裝本節(jié)以TMS320VC5509APGE

封裝為例講述引腳配置及功能只給出VC5509APGE引腳的定義和簡要描述,詳細(xì)描述請參考文獻(xiàn)[SPRS205J圖2-2TMS320VC5509A的封裝(a)179腳BGA封裝(底視圖)(b)144腳PGE封裝(頂視圖)2.2.1引腳屬性表2-1VC5509APGE信號(hào)引腳對應(yīng)圖(1)表2-1VC5509APGE信號(hào)引腳對應(yīng)圖(2)表2-1VC5509APGE信號(hào)引腳對應(yīng)圖(3)表2-1VC5509APGE信號(hào)引腳對應(yīng)圖(4)2.2.2引腳信號(hào)定義與描述并行總線引腳初始化、中斷和復(fù)位引腳位輸入/輸出信號(hào)振蕩器/時(shí)鐘信號(hào)實(shí)時(shí)時(shí)鐘I2C總線McBSP接口USB接口A/D接口測試/仿真引腳電源引腳2.3C55x的CPU結(jié)構(gòu)

存儲(chǔ)器接口單元(M單元)指令緩沖單元(I單元)程序流單元(P單元)地址數(shù)據(jù)流單元(A單元)數(shù)據(jù)計(jì)算單元(D單元)內(nèi)部地址總線與數(shù)據(jù)總線圖2-3C55x的CPU結(jié)構(gòu)框圖2.3.1存儲(chǔ)器接口單元(M單元)內(nèi)部數(shù)據(jù)流、指令流接口管理所有來自CPU、數(shù)據(jù)空間或I/O空間的數(shù)據(jù)和指令負(fù)責(zé)CPU和數(shù)據(jù)空間以及或CPU和I/O空間的數(shù)據(jù)傳輸2.3.2指令緩沖單元(I單元)圖2-4I單元結(jié)構(gòu)框圖每個(gè)機(jī)器周期,PB從程序空間傳送32位的程序代碼至I單元的指令緩沖隊(duì)列;當(dāng)CPU準(zhǔn)備譯碼時(shí),6個(gè)字節(jié)的代碼從隊(duì)列發(fā)送到I單元的指令解碼器;其能夠識(shí)別指令邊界,譯碼8、16、24、32、40和48位的指令,決定2條指令是否并行執(zhí)行,將譯碼結(jié)果和立即數(shù)送至P單元、A單元、D單元2.3.3程序流單元(P單元)圖2-5P單元結(jié)構(gòu)框圖程序地址產(chǎn)生邏輯:產(chǎn)生24位的程序空間取指的地址;可產(chǎn)生順序地址;也可以I單元的立即數(shù)或D單元的寄存器值作為地址程序控制邏輯:接收來自I單元的立即數(shù),并測試來自A單元或D單元的結(jié)果從而執(zhí)行如下動(dòng)作:測試條件執(zhí)行指令的條件是否成立,把測試結(jié)果送程序地址發(fā)生器;當(dāng)中斷被請求或使能時(shí),初始化中斷服務(wù)程序;控制單一指令重復(fù)或塊指令重復(fù);管理并行執(zhí)行的指令P單元的作用:產(chǎn)生程序空間地址,并加載地址到PAB;控制指令流順序2.3.4地址數(shù)據(jù)流單元(A單元)圖2-6A單元結(jié)構(gòu)框圖DAGEN產(chǎn)生所有讀寫數(shù)據(jù)空間的地址。

可接收來自I單元的立即數(shù)或來自A單元的寄存器值;根據(jù)P單元指示,對間接尋址方式時(shí)選擇使用線性尋址還是循環(huán)尋址。ALU可接收來自I單元的立即數(shù)或與存儲(chǔ)器、I/O空間、A單元寄存器、D單元寄存器和P單元寄存器進(jìn)行雙向通信。可完成如下動(dòng)作:加法、減法、比較、布爾邏輯、符號(hào)移位、邏輯移位和絕對值計(jì)算;測試、設(shè)置、清空、求補(bǔ)A單元寄存器位或存儲(chǔ)器位域;改變或轉(zhuǎn)移寄存器值,循環(huán)移位寄存器值,從移位器向一個(gè)A單元寄存器送特定值。2.3.5數(shù)據(jù)計(jì)算單元(D單元)圖2-7D單元結(jié)構(gòu)框圖

接收來自I單元的立即數(shù),與存儲(chǔ)器、I/O空間、D單元寄存器、P單元寄存器、A單元寄存器進(jìn)行雙向通信;把移位結(jié)果送至D單元的ALU或A單元的ALU;實(shí)現(xiàn)40位累加器值最大左移31位或最大右移32位;實(shí)現(xiàn)16位寄存器、存儲(chǔ)器或I/O空間數(shù)據(jù)最大左移31位或最大右移32位;實(shí)現(xiàn)16位立即數(shù)最大左移15位;提取或擴(kuò)張位域,執(zhí)行位計(jì)數(shù);對寄存器值進(jìn)行循環(huán)移位;

在累加器的值存入數(shù)據(jù)空間之前,對它們進(jìn)行取整/飽和處理。

可從I單元接收立即數(shù),或與存儲(chǔ)器、I/O空間、D單元寄存器、P單元寄存器、A單元寄存器進(jìn)行雙向通信,還可接收移位器的結(jié)果;加法、減法、比較、取整、飽和、布爾邏輯以及絕對值運(yùn)算;在執(zhí)行一條雙16位算術(shù)指令時(shí),同時(shí)進(jìn)行兩個(gè)算術(shù)操作;測試、設(shè)置、清除以及求D單元寄存器的補(bǔ)碼;對寄存器的值進(jìn)行移動(dòng)。

可支持乘法和加/減法。在單個(gè)機(jī)器周期內(nèi),每個(gè)MAC可以進(jìn)行一次17×17位小數(shù)或整數(shù)乘法運(yùn)算和一次帶有可選的32或40位飽和處理的40位加/減法運(yùn)算。MAC的結(jié)果送累加器;

MAC接收來自I單元的立即數(shù),或來自存儲(chǔ)器、I/O空間、A單元寄存器的數(shù)據(jù),和D單元寄存器、P單元寄存器進(jìn)行雙向通信;

MAC的操作會(huì)影響P單元狀態(tài)寄存器的某些位。2.3.6地址總線與數(shù)據(jù)總線C55x的CPU總線1組32位程序總線:PB5組16位數(shù)據(jù)總線:BB、CB、DB、EB、FB6組24位地址總線:PAB、BAB、CAB、DAB、EAB、FAB特點(diǎn):這種總線并行機(jī)構(gòu)使CPU在一個(gè)機(jī)器周期內(nèi),能夠讀1次32位程序代碼、讀3次16位數(shù)據(jù)、寫2次16位地址表2-4地址總線和數(shù)據(jù)總線的功能表2-5各種訪問類型下總線的使用(1)表2-5各種訪問類型下總線的使用(2)2.3.7指令流水線C55x的指令流水線分為兩個(gè)階段:第一階段——取指階段:從存儲(chǔ)器取來32位指令包,將其存入指令緩沖隊(duì)列(IBQ)中,并送48位指令包給第二流水階段第二階段——執(zhí)行階段:對指令進(jìn)行譯碼,并完成數(shù)據(jù)訪問和計(jì)算。1.概況:表2-6取指階段流水線的意義圖2-8指令流水線(取指階段)2.取指階段圖2-9指令流水線(執(zhí)行階段)3.執(zhí)行階段表2-7執(zhí)行階段流水線的意義(1)表2-7執(zhí)行階段流水線的意義(2)C55x的寄存器(見表2-6)C55x寄存器的映射地址及描述(見表2-7)2.4CPU寄存器2.4.1概況?注意事項(xiàng):

ST0_55、ST1_55和ST3_55都有兩個(gè)訪問地址;

T3、RSA0L、REA0L和SP有兩個(gè)訪問地址;任何裝入BRC1的指令將相同的值裝入BRS1。

對于ST0_55、ST1_55和ST3_55,對于其中一個(gè)地址,所有的C55x位均可訪問;在另外一個(gè)地址(稱為保護(hù)地址),某些保護(hù)位不能被修改。保護(hù)地址是為了提供對C54x代碼的支持,以便寫入ST0、ST1以及PMST(C54x對應(yīng)ST3_55)

對于T3、RSA0L、REA0L和SP,當(dāng)使用DP直接尋址方式訪問存儲(chǔ)器映射寄存器時(shí),將訪問兩個(gè)地址中更高的地址,即

T3=23H(不是0EH);

RSA0L=3DH(不是1BH);

REA0L=3FH(不是1CH);

SP=4DH(不是18H)表2-6寄存器總表(1)縮寫名稱大小AC0~AC3累加器0~340位AR0~AR7輔助寄存器0~716位BK03,BK47,BKC循環(huán)緩沖區(qū)大小寄存器16位BRC0,BRC1塊循環(huán)計(jì)數(shù)器0和116位BRS1BRC1保存寄存器16位BSA01,BSA23,BSA45,BSA67,BSAC循環(huán)緩沖區(qū)起始地址寄存器16位CDP系數(shù)數(shù)據(jù)指針(XCDP的低位部分)16位CDPHXCDP的高位部分7位CFCT控制流關(guān)系寄存器8位CSR計(jì)算單循環(huán)寄存器16位DBIER0,DBIER1調(diào)試中斷使能寄存器0和116位DP數(shù)據(jù)頁寄存器(XDP的低位部分)16位DPHXDP的高位部分7位IER0,IER1中斷使能寄存器0和116位IFR0,IFR1中斷標(biāo)志寄存器0和116位IVPD,IVPH中斷向量指針16位表2-6寄存器總表(2)PC程序計(jì)數(shù)器24位PDP外設(shè)數(shù)據(jù)頁寄存器9位REA0,REA1塊循環(huán)結(jié)束地址寄存器0和124位RETA返回地址寄存器24位RPTC單循環(huán)計(jì)數(shù)器16位RSA0,RSA1塊循環(huán)起始地址寄存器0和124位SP數(shù)據(jù)堆棧指針16位SPHXSP和XSSP的高位7位SSP系統(tǒng)堆棧指針16位ST0_55~ST3_55狀態(tài)寄存器0~316位T0~T3暫時(shí)寄存器16位TRN0~TRN1變換寄存器0和116位XAR0~XAR7擴(kuò)展輔助寄存器0~723位XCDP擴(kuò)展系數(shù)數(shù)據(jù)指針23位XDP擴(kuò)展數(shù)據(jù)頁寄存器23位XSP擴(kuò)展數(shù)據(jù)堆棧指針23位XSSP擴(kuò)展系統(tǒng)堆棧指針23位表2-7存儲(chǔ)器映射寄存器(1)

表2-7存儲(chǔ)器映射寄存器(2)

表2-7存儲(chǔ)器映射寄存器(3)

表2-7存儲(chǔ)器映射寄存器(4)

表2-7存儲(chǔ)器映射寄存器(5)

表2-7存儲(chǔ)器映射寄存器(6)

表2-7存儲(chǔ)器映射寄存器(7)

表2-7存儲(chǔ)器映射寄存器(8)

表2-7存儲(chǔ)器映射寄存器(9)

2.4.2累加器(AC0~AC3)C55x的CPU包括4個(gè)40位的累加器AC0、AC1、AC2、AC3AC0、AC1、AC2、AC3等價(jià)。任何一條使用一個(gè)累加器的指令,都可以通過編程來使用4個(gè)累加器中的任何一個(gè)在C54x兼容模式(C54CM=1)下,累加器AC0、AC1分別對應(yīng)于C54x里的累加器A、B

每個(gè)累加器分為低字(ACxL)、高字(ACxH)和8個(gè)保護(hù)位(ACxG),用戶可以使用訪問存儲(chǔ)器映射寄存器的尋址方式,分別訪問這3部分

2.4.3變換寄存器TRN0、TRN1C55x有2個(gè)變換寄存器TRN0、TRN1用途:在比較-選擇-極值指令里使用比較兩個(gè)累加器的高段字和低段字后,執(zhí)行選擇兩個(gè)16位極值的指令,以更新TRN0和TRN1。比較累加器的高段字后更新TRN0,比較累加器的低段字后更新TRN1在比較完兩個(gè)累加器的全部40位后,執(zhí)行選擇一個(gè)40位極值的指令,以更新被選中的變換寄存器(TRN0或TRN1)

2.4.4T寄存器(T0-T3)

用途存放乘法、乘加以及乘減運(yùn)算里的一個(gè)乘數(shù)存放D單元里加法、減法和裝入運(yùn)算的移位數(shù)用交換指令交換輔助寄存器(AR0-AR7)和T寄存器中的內(nèi)容時(shí),跟蹤多個(gè)指針值在D單元ALU里作雙16位運(yùn)算時(shí),存放Viterbi蝶形的變換尺度CPU包括4個(gè)16位通用T寄存器:T0、T1、T2、T32.4.5用作數(shù)據(jù)地址空間和I/O空間的寄存器

表2-8用作數(shù)據(jù)地址空間和I/O空間的寄存器1.輔助寄存器(XAR0~XAR7/AR0~AR7)低字的作用:用于AR間接尋址模式,以及雙AR間接尋址模式。提供7位數(shù)據(jù)頁內(nèi)的16位偏移量(形成一個(gè)23位地址);存放位地址;作為通用寄存器或計(jì)數(shù)器。高7位用于指定要訪問數(shù)據(jù)空間的數(shù)據(jù)頁訪問屬性:

XARn只能用專用指令訪問;

ARn可用專用指令訪問,也可以作為存儲(chǔ)器映射寄存器訪問;

ARnH不能單獨(dú)訪問,必須通過訪問XARn來訪問ARnHCPU在存儲(chǔ)器中映射了一個(gè)系數(shù)數(shù)據(jù)指針(CDP)和一個(gè)相關(guān)的擴(kuò)展寄存器(CDPH):2.系數(shù)數(shù)據(jù)指針(XCDP/CDP)CPU可以連接這個(gè)寄存器形成一個(gè)擴(kuò)展系數(shù)數(shù)據(jù)指針(XCDP)高7位(CDPH)用于指定要訪問數(shù)據(jù)空間的數(shù)據(jù)頁低字(CDP)用來作為16位偏移量與7位數(shù)據(jù)頁形成一個(gè)23位地址XCDP或CDP用在CDP間接尋址方式和系數(shù)間接尋址方式中,CDP可用于任何指令中訪問一個(gè)單數(shù)據(jù)空間值,在雙MAC指令中,它還可以獨(dú)立地提供第三個(gè)操作數(shù)。表2-10XCDP的訪問屬性

3.循環(huán)緩沖區(qū)首地址寄存器CPU有5個(gè)16位的循環(huán)緩沖區(qū)首地址寄存器:BSA01,BSA23,BSA45,BSA67,BSAC作用:定義循環(huán)的首地址每個(gè)循環(huán)緩沖區(qū)首地址寄存器與一個(gè)或兩個(gè)特殊的指針相關(guān)聯(lián)4.循環(huán)緩沖區(qū)大小寄存器三個(gè)16位的循環(huán)緩沖區(qū)大小寄存器(BK03,BK47,BKC)用途:指定循環(huán)緩沖區(qū)大?。ㄗ畲鬄?5535)每個(gè)循環(huán)緩沖區(qū)大小寄存器與一個(gè)或四個(gè)特殊的指針相關(guān)聯(lián)5.數(shù)據(jù)頁寄存器(XDP/DP)CPU在存儲(chǔ)器中映射了一個(gè)數(shù)據(jù)頁寄存器(DP)和一個(gè)相關(guān)的擴(kuò)展寄存器(DPH)CPU連接這兩個(gè)寄存器形成一個(gè)擴(kuò)展數(shù)據(jù)頁寄存器(XDP)DPH指定要訪問數(shù)據(jù)空間的7位數(shù)據(jù)頁低字(DP)用來代表一個(gè)16位偏移地址用途:在基于DP的直接尋址方式中,XDP指定23位地址在k16絕對尋址方式中,DPH與一個(gè)16位的立即數(shù)連接形成23位地址表2-13XDP寄存器的訪問屬性6.外設(shè)數(shù)據(jù)頁指針(PDP)對于PDP直接尋址方式,9位的外設(shè)數(shù)據(jù)頁指針(PDP)選擇64K字I/O空間中的一個(gè)128字頁面7.堆棧指針(XSP/SP,XSSP/SSP)有關(guān)堆棧指針數(shù)據(jù)堆棧指針(SP)系統(tǒng)堆棧指針(SSP)相關(guān)擴(kuò)展寄存器(SPH)當(dāng)訪問數(shù)據(jù)堆棧時(shí),CPU連接SPH和SP形成一個(gè)擴(kuò)展的堆棧指針(XSP),指向最后壓入數(shù)據(jù)堆棧的數(shù)據(jù)SPH代表7位數(shù)據(jù)頁SP指向頁中某個(gè)具體地址當(dāng)訪問系統(tǒng)堆棧時(shí),CPU連接SPH和SSP形成一個(gè)擴(kuò)展的堆棧指針(XSSP),指向最后壓入系統(tǒng)堆棧的數(shù)據(jù)表2-14堆棧指針的訪問屬性2.4.6程序流寄存器(PC、RETA、CFCT)程序流寄存器(3個(gè))寄存器描述PC24位的程序計(jì)數(shù)器。存放I單元里解碼的1~6字節(jié)代碼的地址.當(dāng)CPU執(zhí)行中斷或調(diào)用子程序時(shí),當(dāng)前的PC值(返回地址)存起來,然后把新的地址裝入PC。當(dāng)CPU從中斷服務(wù)或子程序返回時(shí),返回地址重新裝入PCRETA返回地址寄存器。如果所選擇的堆棧配置使用快速返回,則在執(zhí)行子程序時(shí),RETA就作為返回地址的暫存器。RETA和CFCT一起,高效執(zhí)行多層嵌套的子程序??捎脤iT的32位裝入和存儲(chǔ)指令,成對地讀寫RETA和CFCTCFCT控制流關(guān)系寄存器。CPU保存有激活的循環(huán)記錄(循環(huán)的前后關(guān)系)。如果選擇的堆棧配置使用快速返回,則在執(zhí)行子程序時(shí),CFCT就作為8位循環(huán)關(guān)系的暫存器。RETA和CFCT一起,高效執(zhí)行多層嵌套的子程序。可用專門的32位裝入和存儲(chǔ)指令,成對地讀寫RETA和CFCTCFCT寄存器

CPU由內(nèi)部位按照一定規(guī)則來存放循環(huán)的前后關(guān)系,即子程序里循環(huán)的狀態(tài)(激活和未激活)當(dāng)CPU執(zhí)行中斷或調(diào)用子程序時(shí),循環(huán)關(guān)系位就存放在CFCT里當(dāng)CPU從中斷或調(diào)用子程序返回時(shí),循環(huán)關(guān)系位就從CFCT恢復(fù)表2-16CFCT各位的含義2.4.7中斷管理寄存器表2-17中斷管理寄存器

中斷向量指針(IVPD,IVPH)DSP中斷向量指針(IVPD)主機(jī)中斷向量指針(IVPH)16位,指向256字節(jié)的程序空間中的中斷向量表(IV0~I(xiàn)V15和IV24~I(xiàn)V31),這些中斷向量供DSP專用16位,指向256字節(jié)的程序空間中的中斷向量表(IV16~I(xiàn)V23),這些中斷向量供DSP和主機(jī)共享使用?說明:如果IVPD和IVPH的值相同,所有中斷向量可能占有相同的256字節(jié)大小的程序空間;DSP硬件復(fù)位時(shí),IVPD和IVPH都被裝入到FFFFH地址處;IVPD和IVPH均不受軟復(fù)位的影響

表2-18中斷向量地址?在修改IVP之前應(yīng)確保:INTM=1,即所有可屏蔽中斷不能響應(yīng)。每個(gè)硬件不可屏蔽中斷對于原來的IVPD和修改后的IVPD都有一個(gè)中斷向量和中斷服務(wù)程序。由16位的中斷向量指針加上一個(gè)5位的中斷編號(hào)后左移3位組成一個(gè)24位的中斷地址。

2.中斷標(biāo)志寄存器(IFR0,IFR1)表2-19中斷標(biāo)志寄存器IFR1表2-20中斷標(biāo)志寄存器IFR016位的中斷標(biāo)志寄存器IFR0和IFR1包括所有可屏蔽中斷的標(biāo)志位當(dāng)一個(gè)可屏蔽中斷向CPU提出申請時(shí),IFR中相應(yīng)的標(biāo)志位置1,等待CPU應(yīng)答中斷可以通過讀IFR標(biāo)志已發(fā)送申請的中斷,或?qū)?到IFR相應(yīng)的位撤銷中斷申請,即寫入1清相應(yīng)位為0中斷被響應(yīng)后將相應(yīng)位清0,器件復(fù)位將所有位清03.中斷使能寄存器(IER0,IER1)表2-23中斷使能寄存器IER1表2-24中斷使能寄存器IER0通過設(shè)置IER0、IER1的位為

1,打開相應(yīng)的可屏蔽中斷

0,關(guān)閉相應(yīng)的可屏蔽上電復(fù)位時(shí),將所有IER位清0。IER0、IER1不受軟件復(fù)位指令和DSP熱復(fù)位的影響,在全局可屏蔽中斷使能(INTM=1)之前應(yīng)初始化它們。4.調(diào)試中斷使能寄存器(DBIER0,DBIER1)僅當(dāng)CPU工作在實(shí)時(shí)仿真模式調(diào)試暫停時(shí),這兩個(gè)16位的調(diào)試中斷使能寄存器才會(huì)使用如果CPU工作在實(shí)時(shí)方式下,DBIER0、DBIER1將被忽略2.4.8循環(huán)控制寄存器單循環(huán)指令可以重復(fù)執(zhí)行一個(gè)單周期指令或并行執(zhí)行兩個(gè)單周期指令,重復(fù)次數(shù)N被裝在RPTC中,指令將被重復(fù)執(zhí)行N+1次。在一些無條件單指令循環(huán)操作中,可以使用CSR設(shè)置重復(fù)次數(shù)。1.單指令循環(huán)控制寄存器(RPTC,CSR)2.塊循環(huán)寄存器(BRC0,BRC1,BRS1,RSA0,RSA1,REA0,REA1)塊循環(huán)指令可以實(shí)現(xiàn)2級嵌套,一個(gè)塊循環(huán)(1級)嵌套在另一個(gè)塊循環(huán)(0級)內(nèi)部當(dāng)C54CM=0,即工作在C55x方式下,才實(shí)現(xiàn)2級嵌套當(dāng)無循環(huán)嵌套時(shí),CPU使用0級寄存器當(dāng)出現(xiàn)循環(huán)嵌套時(shí),CPU對于1級嵌套使用1級寄存器當(dāng)C54CM=1,即工作在C54x方式下只能使用0級寄存器,通過借助塊重復(fù)標(biāo)志寄存器(BRAF)完成嵌套表2-23塊循環(huán)寄存器2.4.9狀態(tài)寄存器ST0_55ST0_55(以及ST1_55和ST3_55)有兩個(gè)訪問地址。所有位都可以由第一個(gè)地址訪問,而在另一個(gè)地址(保護(hù)地址)里,加黑部分不能修改;保護(hù)地址是為了支持把C54x的代碼寫入ST0、ST1和PMST累加器溢出標(biāo)志(ACOV0,ACOV1,ACOV2,ACOV3)當(dāng)累加器AC0、AC1、AC2或AC3有數(shù)據(jù)溢出時(shí),相應(yīng)的ACOV0、ACOV1、ACOV2或ACOV3被置1,直到發(fā)生以下任一事件:復(fù)位CPU執(zhí)行條件跳轉(zhuǎn)、調(diào)用、返回,或執(zhí)行一條測試ACOVx狀態(tài)的指令被指令清0溢出方式受M40位的影響當(dāng)M40=0時(shí),溢出檢測在第31位,與C54x兼容當(dāng)M40=1時(shí),溢出檢測在第39位2.進(jìn)位位(CARRY)進(jìn)位/借位的檢測取決于M40位當(dāng)M40=0時(shí),由第31位檢測進(jìn)位/借位當(dāng)M40=1時(shí),由第39位檢測進(jìn)位/借位當(dāng)D單元ALU做加法運(yùn)算時(shí),若產(chǎn)生進(jìn)位,則置位CARRY;如果不產(chǎn)生進(jìn)位時(shí),則將CARRY清0例外:使用以下語句(將Smem移動(dòng)16位),有進(jìn)位時(shí)置位CARRY,無進(jìn)位時(shí)不清0。ADDSmem<<#16,[ACx,]ACy當(dāng)D單元ALU做減法運(yùn)算時(shí)若產(chǎn)生借位,將CARRY清0。如果不產(chǎn)生借位,則置位CARRY。例外:使用以下語句(將Smem移動(dòng)16位),有借位時(shí)CARRY清0,無借位時(shí)CARRY不變。SUBSmem<<#16,[ACx,]ACyCARRY位可以被邏輯移位指令修改。對帶符號(hào)移位指令和循環(huán)移位指令,可以選擇CARRY位是否需要修改目的寄存器是累加器時(shí),用以下指令修改CARRY位,以指示計(jì)算結(jié)果

MIN [src,]dst MAX [src,]dst ABS [src,]dst NEG [src,]dst可以通過下面兩條指令對CARRY清零和置位:

BCLR CARRY ;清零

BSET CARRY ;置位3.DP位域DP位域占據(jù)ST0_55的第8~0位提供與C54x兼容的數(shù)據(jù)頁指針C55x有一個(gè)獨(dú)立的數(shù)據(jù)頁指針DPDP(15~7)的任何變化都會(huì)反映在ST0_55的DP位域上。基于DP的直接尋址方式,C55x使用完整的數(shù)據(jù)頁指針DP(15~0),因此不需要使用ST0_55的DP位域。如果想裝入ST0_55,但不想改變DP位域的值,可以用OR或AND指令。所有能影響一個(gè)測試/控制位的指令,都可以選擇影響TC1還是TC2TCx或關(guān)于TCx的布爾表達(dá)式,都可以在任何條件指令里用作觸發(fā)器可以通過下面指令對TCx置位和清零:

BCLR TC1; TC1清零

BSET TC1; TC1置位

BCLR TC2; TC2清零

BSET TC2; TC2置位4.測試/控制位(TC1,TC2)

測試/控制位用于保存一些特殊指令的測試結(jié)果,使用要點(diǎn)如下:2.4.10狀態(tài)寄存器ST1_55如果C54CM=0C55x忽略ASM,C55x移位指令在暫存寄存(T0~T3)里指定累加器的移位值,或者直接在指令里用常數(shù)指定移位值。如果C54CM=1C55x以兼容方式運(yùn)行C54x代碼,ASM用于給出某些C54x移位指令的移位值,移位范圍-16~15。1.ASM位如果C54CM=0,C55x不使用BRAF。如果C54CM=1,C55x以兼容方式運(yùn)行C54x代碼,BRAF用于指定或控制一個(gè)塊循環(huán)操作的狀態(tài)。在由調(diào)用、中斷或返回引起的代碼切換過程中,都要保存和恢復(fù)BRAF的值。當(dāng)執(zhí)行遠(yuǎn)程跳轉(zhuǎn)(FB)或遠(yuǎn)程調(diào)用(FCALL)指令時(shí),BRAF自動(dòng)清零。2.BRAF位如果C54CM=0,C55x忽略C16

指令本身決定是用單32位操作還是雙16位操作。如果C54CM=1,C55x以兼容方式運(yùn)行C54x代碼,C16會(huì)影響某些指令的執(zhí)行。當(dāng)C16=0時(shí),關(guān)閉雙16位模式,D單元ALU執(zhí)行一條指令是以單32位操作(雙精度運(yùn)算)形式當(dāng)C16=1時(shí),打開雙16位模式,D單元ALU執(zhí)行一條指令是以兩個(gè)并行的16位操作(雙16位運(yùn)算)形式3.C16位如果C54CM=0,C55xCPU不支持C54x代碼如果C54CM=1,C55x的CPU支持C54x編寫的代碼在使用C54x代碼時(shí)就必須置位該模式,所有C55xCPU的資源都可以使用在移植代碼時(shí),可以利用C55x增加的特性優(yōu)化代碼4.C54CM位可用以下指令或偽指令來改變模式:BCLRC54CM ;清零C54CM(運(yùn)行時(shí)).C54CM_off ;告知匯編器C54CM=0BSETC54CM ;置位C54CM(運(yùn)行時(shí)).C54CM_on ;告知匯編器C54CM=1如果CPL=0,CPL決定選擇DP直接尋址模式如果CPL=1,CPL決定選擇SP直接尋址模式可用以下指令和偽指令來改變尋址模式:BCLRCPL ;清零CPL(運(yùn)行時(shí)).CPL_off ;告知匯編器CPL=0BSETCPL ;置位CPL(運(yùn)行時(shí)).CPL_on ;告知匯編器CPL=15.CPL位如果FRCT=1,C55x打開小數(shù)模式。乘法運(yùn)算的結(jié)果左移一位進(jìn)行小數(shù)點(diǎn)調(diào)整。兩個(gè)帶符號(hào)的Q15制數(shù)相乘,得到一個(gè)Q31制數(shù)時(shí),就要進(jìn)行小數(shù)點(diǎn)調(diào)整。如果FRCT=0,C55x關(guān)閉小數(shù)模式。乘法運(yùn)算的結(jié)果不移位??捎孟旅娴闹噶钋辶愫椭梦籉RCT:BCLRFRCT ;清零FRCTBSETFRCT ;置位FRCT6.FRCT位如果HM=0,C55x繼續(xù)執(zhí)行內(nèi)部程序存儲(chǔ)器的指令。如果HM=1,C55x停止執(zhí)行內(nèi)部程序存儲(chǔ)器的指令??捎孟旅娴闹噶钋辶愫椭梦籋M:BCLRHM ;清零HMBSETHM ;置位HM7.HM位當(dāng)DSP得到HOLD信號(hào)時(shí),會(huì)將外部接口總線置于高阻態(tài)。根據(jù)HM的值,DSP也可以停止內(nèi)部程序執(zhí)行。如果INTM=0,C55x使能所有可屏蔽中斷如果INTM=1,C55x禁止所有可屏蔽中斷使用INTM位需要注意的要點(diǎn):INTM位能夠全局使能或禁止可屏蔽中斷,但是它對不可屏蔽中斷無效。在使用INTM位時(shí),要使用狀態(tài)位清零和置位指令來修改INTM位。其它能影響INTM位的,只有軟件中斷指令和軟件置位指令。8.INTM位CPU響應(yīng)中斷請求時(shí),自動(dòng)保存INTM位。特別地,CPU把ST1_55保存到數(shù)據(jù)堆棧時(shí),INTM位也被保存起來。執(zhí)行中斷服務(wù)子程序(ISR)之前,CPU自動(dòng)置位INTM位,禁止所有的可屏蔽中斷。ISR可以通過清零INTM位,來重新開放可屏蔽中斷。中斷返回指令,從數(shù)據(jù)堆棧恢復(fù)INTM位的值。在調(diào)試器實(shí)時(shí)仿真模式下,CPU暫停時(shí),忽略INTM位,CPU只處理臨界時(shí)間中斷。如果M40=0,D單元的計(jì)算模式選擇32位模式:第31位是符號(hào)位計(jì)算過程中的進(jìn)位取決于第31位由第31位判斷是否溢出飽和過程,飽和值是007FFFFFFFh(正溢出)或FF80000000h(負(fù)溢出)累加器和0的比較,用第31~0位來進(jìn)行可對整個(gè)32位進(jìn)行移位和循環(huán)操作9.M40位累加器左移或循環(huán)移位時(shí),從第31位移出累加器右移或循環(huán)移位時(shí),移入的位插入到第31位上對于累加器帶符號(hào)位的移位如果SXMD=0,則累加器的保護(hù)位值要設(shè)為0如果SXMD=1,累加器的保護(hù)位要設(shè)為第31位的值;對于累加器的任何循環(huán)移位或邏輯移位,都要清零目的累加器的保護(hù)位如果M40=1,D單元的計(jì)算模式選擇40位的帶符號(hào)移位模式:第39位是符號(hào)位計(jì)算過程中的進(jìn)位取決于第39位由第39位判斷是否溢出飽和過程,飽和值是7FFFFFFFFFh(正溢出)或8000000000h(負(fù)溢出)累加器和0的比較,用第39~0位來進(jìn)行可對整個(gè)40位進(jìn)行移位和循環(huán)操作累加器左移或循環(huán)移位時(shí),從第39位移出累加器右移或循環(huán)移位時(shí),移入的位插入到第39位上如果SATD=0,關(guān)閉D單元的飽和模式,不執(zhí)行飽和模式如果SATD=1,打開D單元的飽和模式如果D單元內(nèi)的運(yùn)算產(chǎn)生溢出,則結(jié)果值飽和飽和值取決于M40位M40=0,CPU的飽和值為007FFFFFFFh(正溢出)或FF80000000h(負(fù)溢出)M40=1,CPU的飽和值為7FFFFFFFFFh(正溢出)或8000000000h(負(fù)溢出)10.SATD位如果SXMD=0,關(guān)閉D單元的符號(hào)擴(kuò)展模式對于40位的運(yùn)算,16位或更小的操作數(shù)都要補(bǔ)0,擴(kuò)展至40位對于條件減法指令,任何16位的除數(shù)都可以得到理想的結(jié)果當(dāng)D單元的ALU被局部配置為雙16位模式時(shí),D單元ALU的高16位補(bǔ)零擴(kuò)展至24位。累加器值右移時(shí),高段和低段的16位補(bǔ)零擴(kuò)展累加器帶符號(hào)移位時(shí),如果是一個(gè)32位操作(M40=0),累加器的保護(hù)位(第39~32位)填零累加器帶符號(hào)右移時(shí),移位值補(bǔ)零擴(kuò)展11.SXMD位如果SXMD=1時(shí),打開符號(hào)擴(kuò)展模式:對于40位的運(yùn)算,16位或更小的操作數(shù),都要符號(hào)擴(kuò)展至40位對于條件減法指令,16位的除數(shù)必須是正數(shù),其最高位(MSB)必須是0當(dāng)D單元的ALU局部配置為雙16位模式時(shí),D單元ALU的高16位值帶符號(hào)擴(kuò)展至24位。累加器右移時(shí),高段和低段的16位都要帶符號(hào)擴(kuò)展累加器帶符號(hào)移位時(shí),其值帶符號(hào)擴(kuò)展如果是一個(gè)32位操作(M40=0),則將第31位的值,復(fù)制到累加器的保護(hù)位(第39~32位)累加器帶符號(hào)右移時(shí),除非有限定符uns()表明它是無符號(hào)的,否則移位值都要被帶符號(hào)擴(kuò)展。對于無符號(hào)運(yùn)算(布爾邏輯運(yùn)算、循環(huán)移位和邏輯移位運(yùn)算),不管SXMD的值是什么,輸入的操作數(shù)都要被補(bǔ)零擴(kuò)展至40位。對于乘加單元MAC里的運(yùn)算,不管SXMD值是多少,輸入的操作數(shù)都要帶符號(hào)擴(kuò)展至17位。如果指令里的操作數(shù)是在限定符uns()里,則不管SXMD值是多少,都視為無符號(hào)的用下面的指令清零和置位SXMD:

BCLRSXMD ;清零SXMDBSETSXMD ;置位SXMDXF是通用的輸出位,能用軟件處理且可輸出至DSP引腳用下面的指令清零和置位XF:BCLRXF ;清零XFBSETXF ;置位XF12.XF位2.4.11狀態(tài)寄存器ST2_55ARnLC(n=0、1、2、3、4、5、6、7)位決定ARn用作線性尋址還是循環(huán)尋址。ARnLC=0:線性尋址ARnLC=1:循環(huán)尋址1.AR0LC~AR7LC位域

用狀態(tài)位清零/置位指令來清零/置位ARnLC。例:BCLRAR3LC ;清零AR3LCBSETAR3LC ;置位AR3LC如果ARMS=0,輔助寄存器(AR)間接尋址的CPU模式采用DSP模式操作數(shù),該操作數(shù)能有效執(zhí)行DSP專用程序。這些操作數(shù)里,有的在指針加/減時(shí)使用反向操作數(shù)。短偏移操作數(shù)不可用。如果ARMS=1,輔助寄存器(AR)間接尋址的CPU模式采用控制模式操作數(shù),該操作數(shù)能為控制系統(tǒng)的應(yīng)用優(yōu)化代碼的大小。短偏移操作數(shù)*ARn(short(#k3))可用。其它偏移需要在指令里進(jìn)行2字節(jié)擴(kuò)展,而這些有擴(kuò)展的指令不能和其他指令并行執(zhí)行。2.ARMS位用下面的指令和偽指令來改變模式:BCLRARMS ;清零ARMS(運(yùn)行時(shí)).ARMS_off ;告知編譯器ARMS=0BSETARMS ;置位ARMS(運(yùn)行時(shí)).ARMS_on ;編譯器ARMS=1CDPLC位決定系數(shù)數(shù)據(jù)指針(CDP)是用線性尋址(CDPLC=0),還是循環(huán)尋址(CDPLC位=1)用下面的指令清零和置位CDPLC:BCLRCDPLC;清零CDPLCBSETCDPLC;置位CDPLC3.CDPLC位DBGM位用于調(diào)試程序里有嚴(yán)格時(shí)間要求的部分如果DBGM=0,使能該位如果DBGM=1,禁止該位。仿真器不能訪問存儲(chǔ)器和寄存器。軟件斷點(diǎn)仍然可以使CPU暫停,但不會(huì)影響硬件斷點(diǎn)或暫停請求4.DBGM位

為了保護(hù)流水,只能由狀態(tài)位清零/置位指令修改DBGM,其它指令都不會(huì)影響DBGM位:

BCLR DBGM ;清零DBGM BSET DBGM ;置位DBGM當(dāng)CPU響應(yīng)一個(gè)中斷請求時(shí),會(huì)自動(dòng)保護(hù)DBGM位的狀態(tài)。確切地說,當(dāng)CPU把ST2_55保存到數(shù)據(jù)堆棧時(shí),DGBM位就被保存起來執(zhí)行一個(gè)中斷服務(wù)子程序(ISR)前,CPU自動(dòng)置位DBGM,禁止調(diào)試。ISR可以通過清零DBGM位,重新使能調(diào)試EALLOW使能(EALLOW=1)或禁止(EALLOW=0)對非CPU仿真寄存器的寫訪問當(dāng)CPU響應(yīng)一個(gè)中斷請求時(shí),自動(dòng)保存EALLOW位的狀態(tài)。確切地說,當(dāng)CPU把ST2_55保存到數(shù)據(jù)堆棧時(shí),也就是保存了EALLOW位執(zhí)行一個(gè)中斷服務(wù)子程序(ISR)前,CPU自動(dòng)清EALLOW位,禁止訪問仿真寄存器。ISR通過置位EALLOW位,可以重新開放對仿真寄存器的訪問中斷返回指令,從數(shù)據(jù)堆?;謴?fù)EALLOW位5.EALLOW位

在D單元執(zhí)行的一些指令里,CPU將rnd()括號(hào)里的操作數(shù)取整。取整操作的類型取決于RDM的值如果RDM=0,CPU給40位的操作數(shù)加上8000h(即215),然后CPU清零第15~0位,產(chǎn)生一個(gè)24位或16位的取整結(jié)果若結(jié)果是24位的整數(shù),只有第39~16位是有意義的若結(jié)果是16位的整數(shù),只有第31~16位是有意義的6.RDM位如果RDM=1,取整至最接近的整數(shù)。取整結(jié)果取決于40位操作數(shù)的第15~0位:If(0=<(位15-0)<8000h)

CPU清零第15~0位

If(8000h<(位15-0)<10000h)

CPU給該操作數(shù)加上8000h,再清零第15~0位

If((位15-0)==8000h) If(位31-16)是奇數(shù)

CPU給該操作數(shù)加上8000h,再清零第15~0位2.4.12狀態(tài)寄存器ST3_55?說明:

ST3_55的第11~8位總是寫作1100b(Ch)檢查是否已完成程序cache清零CACLR=0:已經(jīng)完成。清零過程完成時(shí),cache硬件清零CACLR位CACLR=1:未完成。所有的cache塊無效清零cache所需的時(shí)間周期數(shù)取決于存儲(chǔ)器的結(jié)構(gòu)當(dāng)cache清零后,指令緩沖器單元里的預(yù)取指令隊(duì)列的內(nèi)容會(huì)自動(dòng)清零1.CACLR位使能或禁止程序cacheCAEN=0:禁止。cache控制器不接收任何程序要求,所有的程序要求都由片內(nèi)存儲(chǔ)器或片外存儲(chǔ)器(根據(jù)解碼的地址而定)來處理。CAEN=1:使能。依據(jù)解碼的地址,可以從cache、片內(nèi)存儲(chǔ)器或片外存儲(chǔ)器提取程序代碼。當(dāng)清零CAEN位禁止cache時(shí),I單元的指令緩沖隊(duì)列的內(nèi)容會(huì)自動(dòng)清零2.CAEN位CAFRZ能鎖定程序cacheCAFRZ=0:cache工作在默認(rèn)操作模式CAFRZ=1:cache被凍結(jié)(其內(nèi)容被鎖定)。沒有訪問該cache時(shí),它的內(nèi)容不會(huì)更改,但被訪問時(shí)仍然可用。cache內(nèi)容一直保持不變,直到CAFRZ位清零3.CAFRZ位檢測到一個(gè)內(nèi)部總線錯(cuò)誤時(shí),置位CBERR。該錯(cuò)誤使CPU在中斷標(biāo)志寄存器1(IFR1)里置位總線錯(cuò)誤中斷標(biāo)志BERRINTF對CBERR位寫1無效。該位只在發(fā)生內(nèi)部總線錯(cuò)誤時(shí)才為1??偩€錯(cuò)誤的中斷服務(wù)子程序,返回控制中斷程序的代碼以前,必須清零CBERR。4.CBERR位當(dāng)CLKOFF=1,CLKOUT引腳的輸出被禁止,且保持高電平用下面的指令清零和置位CLKOFF:BCLRCLKOFF;清零CLKOFFBSETCLKOFF;置位CLKOFF5.CLKOFF位用HINT位通過主機(jī)接口,發(fā)送一個(gè)中斷請求給主機(jī)處理器。先清零,然后再給HINT置位,產(chǎn)生一個(gè)低電平有效的中斷脈沖:BCLRHINT;清零HINTBSETHINT;置位HINT6.HINT位MPNMC位使能或禁止片上ROMMPNMC=0:微計(jì)算機(jī)模式。使能片上ROM,可以在程序空間尋址。MPNMC=1:微處理器模式。禁止片上ROM,不映射在程序空間里。MPNMC的改變,反映復(fù)位過程中MP/MC引腳的邏輯電平(高電平-1,低電平-0)僅在復(fù)位時(shí)才對MP/MC引腳采樣。軟件中斷指令不影響MPNMC7.MPNMC位SATA決定A單元ALU的溢出結(jié)果是否飽和SATA=0:關(guān)閉。不執(zhí)行飽和SATA=1:打開。如果A單元的ALU里的計(jì)算產(chǎn)生溢出,則結(jié)果飽和至7FFFh(正向飽和)或8000h(負(fù)向飽和)8.SATA位SMUL位打開或關(guān)閉乘法的飽和模式如果SMUL=0:關(guān)閉。如果SMUL=1:打開。在SMUL=1、FRCT=1且SATD=1的情況下,8000h與8000h相乘的結(jié)果飽和至7FFFFFFFh(不受M40位的影響)。這樣,兩個(gè)負(fù)數(shù)的乘積就是一個(gè)正數(shù)。對于乘加/減指令,在乘法之后、加法/減法以前,執(zhí)行飽和運(yùn)算9.SMUL位C54CM=0,CPU忽略SST,僅用指令判斷是否產(chǎn)生飽和C54CM=1,在C54x兼容模式下,SST打開或關(guān)閉飽和-存儲(chǔ)模式SST將影響一些累加器-存儲(chǔ)指令的執(zhí)行。SST=1時(shí),在存儲(chǔ)之前,40位的累加器值要飽和為一個(gè)32位的值。如果累加器值要移位,則CPU執(zhí)行移位后飽和。10.SST位

對于受SST位影響的指令,CPU在存儲(chǔ)一個(gè)移位后或未移位的累積器值以前,對其進(jìn)行飽和運(yùn)算。是否飽和取決于符號(hào)擴(kuò)展模式位(SXMD):SXMD=0:一個(gè)40位的數(shù)看作無符號(hào)數(shù)。如果該數(shù)值大于007FFFFFFFh,則CPU對其進(jìn)行飽和運(yùn)算,結(jié)果為7FFFFFFFhSXMD=1:一個(gè)40位的數(shù)看作有符號(hào)數(shù)。如果該數(shù)值小于0080000000h,則CPU產(chǎn)生一個(gè)32位的結(jié)果80000000h。如果該數(shù)大于007FFFFFFFh,則CPU產(chǎn)生的結(jié)果為7FFFFFFFh。2.5存儲(chǔ)空間和I/O空間存儲(chǔ)器映射程序空間數(shù)據(jù)空間I/O空間C55x的存儲(chǔ)(數(shù)據(jù)/程序)空間統(tǒng)一編址CPU讀取程序代碼時(shí),使用24位地址訪問相關(guān)字節(jié)CPU讀寫數(shù)據(jù)時(shí),使用23位地址訪問相關(guān)字兩種情況下地址總線上均為24位,只是數(shù)據(jù)尋址時(shí)地址總線上的最低位強(qiáng)制填充0C55x存儲(chǔ)空間(總共為16M字節(jié)或8M字)的劃分:128個(gè)主頁面(0~127),每個(gè)主頁面為64K字主頁面0的前192個(gè)字節(jié)或96個(gè)字(000000h~0000BFh)被MMR所占用2.5.1存儲(chǔ)器映射C55x的外部擴(kuò)展存儲(chǔ)空間由CE[3:0]分為4個(gè)部分,每部分都可以支持同步或異步存儲(chǔ)器類型C55x的片內(nèi)存儲(chǔ)器資源(以VC5509A為例)128K字RAMDARAM為32K字SARAM為96K字32K字ROM表2-26TMS320VC5509APGE存貯器映射DARAM(以VC5509A為例)雙存取RAM,分為8個(gè)8K字節(jié)或4K字的塊,每個(gè)8K字節(jié)的塊每周期可以訪問兩次(兩次讀或一次讀、一次寫)DARAM可被內(nèi)部程序總線、數(shù)據(jù)總線或DMA訪問。前4塊DARAM可以被HPI訪問SARAM(以VC5509A為例)單存取RAM,分為24個(gè)8K字節(jié)或4K字的塊,每個(gè)8K字節(jié)的塊每周期只能訪問一次(一次讀或一次寫)表2-27TMS320VC5509A的DARAM塊表2-28TMS320VC5509A的SARAM塊2.5.2程序空間CPU使用24位寬的字節(jié)尋址從程序存儲(chǔ)器讀取指令地址總線是24位的,通過程序讀數(shù)據(jù)總線一次可以讀取32位的指令,指令中每8位占有一個(gè)字節(jié)地址圖2-29字節(jié)地址

例:若指令字節(jié)0占用地址000100h,則指令字節(jié)2占用地址000102h。程序空間的指令組織C55x支持8、16、24、32、48位的指令圖2-30指令的存儲(chǔ)情況

例:5個(gè)不同長度的指令在程序空間中的存儲(chǔ)情況。2.5.3數(shù)據(jù)空間CPU使用字地址訪問數(shù)據(jù)空間字地址為23位的,尋址16位的數(shù)據(jù)地址線為24位的,當(dāng)CPU讀/寫數(shù)據(jù)空間時(shí),23位的字地址最低位補(bǔ)一個(gè)0成為總地址例:字地址:

00000000000 0001 0000 0010地址總線:000000000000 0010 0000 0100

數(shù)據(jù)類型C55x指令集支持以下數(shù)據(jù)類型:字節(jié)(B):8位字(W):16位長字(LW):32位CPU有專用指令對字節(jié)進(jìn)行讀操作,當(dāng)寫操作時(shí)需要作0擴(kuò)展或符號(hào)擴(kuò)展圖2-32長字地址組織對于32位的長字,訪問地址為長字的高字(MSW)地址。

如果MSW是偶地址,則長字的低(MSW)地址為下一個(gè)地址如果MSW是奇地址,則長字的低(MSW)地址為前一個(gè)地址例,數(shù)據(jù)空間的數(shù)據(jù)組織。

訪問一個(gè)長字,必須參考它的高字(MSW),訪問C需要訪問000102h,訪問D需要訪問000105h

字地址也被用于字節(jié)地址,000107h既是F的地址,也是G的地址。專用字節(jié)指令會(huì)指明訪問的是低字節(jié)還是高字節(jié)。2.5.4I/O空間I/O空間和程序/數(shù)據(jù)空間是分開的,只能用來訪問DSP外設(shè)上的寄存器I/O空間里的字地址寬度是16位,可以訪問64K個(gè)地址對于I/O空間的讀寫是通過數(shù)據(jù)讀總線DAB和數(shù)據(jù)寫總線EAB進(jìn)行的讀寫時(shí)要在16位地址前補(bǔ)0

例。設(shè)一條指令從16位地址0102h處讀取一個(gè)字,則DAB傳輸?shù)?4位地址為000102h。2.6堆棧操作數(shù)據(jù)堆棧和系統(tǒng)堆棧堆棧配置快返回與慢返回C55x支持兩個(gè)16位堆棧,即數(shù)據(jù)堆棧和系統(tǒng)堆棧訪問數(shù)據(jù)堆棧時(shí),CPU將SPH和SP連接成XSPXSP包含了一個(gè)最后推入數(shù)據(jù)堆棧的23位地址,其中SPH里是7位的主數(shù)據(jù)頁,SP指向該頁上的一個(gè)字。CPU在每推入一個(gè)值入堆棧前,減小SP值;從堆棧彈出一個(gè)值以后,增加SP值。在堆棧操作中,SPH的值不變。2.6.1數(shù)據(jù)堆棧和系統(tǒng)堆棧圖2-34XSP和XSSP訪問系統(tǒng)堆棧時(shí)CPU將SPH和SSP連接成XSSP。XSSP包含了一個(gè)最后推入系統(tǒng)堆棧的值的地址CPU在每推入一個(gè)值進(jìn)堆棧前,減小SSP值;從堆棧彈出一個(gè)值以后,增加SSP值。在堆棧操作中,SPH的值不變表2-29堆棧指針寄存器SSP可以與SP關(guān)聯(lián),也可以獨(dú)立于SP如果選擇32位堆棧配置,則修改SSP與SP的方法一樣如果選擇雙16位堆棧配置,則SSP與SP獨(dú)立,SSP只有在自動(dòng)環(huán)境切換時(shí)才能被修改2.6.2堆棧配置C55x提供了3種可能的堆棧配置一種配置使用快返回過程另外兩種使用慢返回過程通過給32位復(fù)位向量的第29、28位填入適當(dāng)值,可以選擇一種堆棧配置方式復(fù)位向量的低24位就是復(fù)位中斷服務(wù)子程序(ISR)的起始地址表2-30堆棧配置快返回與慢返回過程的區(qū)別在于CPU怎樣保存和恢復(fù)兩個(gè)內(nèi)部存儲(chǔ)器(即程序計(jì)數(shù)器PC和一個(gè)循環(huán)現(xiàn)場寄存器)的值PC裝的是I單元里1

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論