版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
TMS320C55x的總體結構封裝和引腳功能CPU結構CPU寄存器存儲空間和I/O空間堆棧操作中斷和復位操作第2章TMS320C55x的硬件結構VC5509-A評估板原理框圖2.1TMS320C55x的總體結構C55x芯片由CPU、存儲空間、片內外設組成不同芯片體系結構相同,具有相同的CPU,片上存儲器和外圍電路配置有所不同圖2-1TMS320VC5509A框圖2.1.1C55xCPU內部總線結構內部獨立總線:12組程序地址總線(PAB):1組,24位程序數據總線(PB):1組,32位數據讀地址總線(BAB、CAB、DAB):3組,24位數據讀總線(BB、CB、DB):3組,16位數據寫地址總線(EAB、FAB):2組,24位數據寫總線(EB、FB):2組,16位。2.1.2C55x的CPU組成指令緩沖單元(I單元)程序流單元(P單元)地址-數據流單元(A單元)數據運算單元(D單元)存儲器接口單元(M單元)2.1.3C55x存儲器配置存儲空間支持的存儲器類型特點
片內存儲空間共有352KB(176K字);外部存儲空間共有16MB(8M字)異步SRAM、EPROM;同步DRAM;同步突發(fā)SRAM采用統一的程序/地址空間存儲空間;I/O空間與程序/地址空間分開存儲器5501550255035506550755095510ROM(KB)32326464646432RAM(KB)326464128128256320表2C55x片內存儲器配置2.1.4C55x外設配置模數轉換器(ADC)可編程數字鎖相環(huán)時鐘發(fā)生器(DPLL)外部存儲器接口(EMIF)直接存儲器訪問控制器(DMA)多通道串行緩沖口(McBSP)10位,用于采集電壓、面板旋鈕的輸入值為VC5509A提供最小時鐘,CPU的時鐘頻率可達200MHz,最小機器周期為5ns可以實現與各種存儲器件無縫連接在無CPU涉入的情況下,允許數據在內部存儲器和外部存儲器、增強型主機接口(EHPI)之間傳輸為全雙工串口,VC5509設有3個McBSP增強型主機接口(EHPI)2個20位的通用定時/計數器8個可配置的通用I/O引腳(GPIO)實時時鐘(RealTimeClock,RTC)看門狗定時器(WatchdogTimer)
USBI2C總線接口
為16位并行接口,用于提供主處理器對DSP上的內部存儲器的訪問,可被配置成復用或非復用形式提供一個時間參考,并能產生基于時間的報警來中斷DSP可以在軟件陷入循環(huán)有沒有受控退出的情況下,防止系統死鎖目前VC5506、VC5507、VC5509各提供了1個USB接口2.2C55x的封裝和引腳功能不同C55x芯片通常有不同封裝為滿足不同用途需求,C55x同一個芯片也往往有多種封裝本節(jié)以TMS320VC5509APGE
封裝為例講述引腳配置及功能只給出VC5509APGE引腳的定義和簡要描述,詳細描述請參考文獻[SPRS205J圖2-2TMS320VC5509A的封裝(a)179腳BGA封裝(底視圖)(b)144腳PGE封裝(頂視圖)2.2.1引腳屬性表2-1VC5509APGE信號引腳對應圖(1)表2-1VC5509APGE信號引腳對應圖(2)表2-1VC5509APGE信號引腳對應圖(3)表2-1VC5509APGE信號引腳對應圖(4)2.2.2引腳信號定義與描述并行總線引腳初始化、中斷和復位引腳位輸入/輸出信號振蕩器/時鐘信號實時時鐘I2C總線McBSP接口USB接口A/D接口測試/仿真引腳電源引腳2.3C55x的CPU結構
存儲器接口單元(M單元)指令緩沖單元(I單元)程序流單元(P單元)地址數據流單元(A單元)數據計算單元(D單元)內部地址總線與數據總線圖2-3C55x的CPU結構框圖2.3.1存儲器接口單元(M單元)內部數據流、指令流接口管理所有來自CPU、數據空間或I/O空間的數據和指令負責CPU和數據空間以及或CPU和I/O空間的數據傳輸2.3.2指令緩沖單元(I單元)圖2-4I單元結構框圖每個機器周期,PB從程序空間傳送32位的程序代碼至I單元的指令緩沖隊列;當CPU準備譯碼時,6個字節(jié)的代碼從隊列發(fā)送到I單元的指令解碼器;其能夠識別指令邊界,譯碼8、16、24、32、40和48位的指令,決定2條指令是否并行執(zhí)行,將譯碼結果和立即數送至P單元、A單元、D單元2.3.3程序流單元(P單元)圖2-5P單元結構框圖程序地址產生邏輯:產生24位的程序空間取指的地址;可產生順序地址;也可以I單元的立即數或D單元的寄存器值作為地址程序控制邏輯:接收來自I單元的立即數,并測試來自A單元或D單元的結果從而執(zhí)行如下動作:測試條件執(zhí)行指令的條件是否成立,把測試結果送程序地址發(fā)生器;當中斷被請求或使能時,初始化中斷服務程序;控制單一指令重復或塊指令重復;管理并行執(zhí)行的指令P單元的作用:產生程序空間地址,并加載地址到PAB;控制指令流順序2.3.4地址數據流單元(A單元)圖2-6A單元結構框圖DAGEN產生所有讀寫數據空間的地址。
可接收來自I單元的立即數或來自A單元的寄存器值;根據P單元指示,對間接尋址方式時選擇使用線性尋址還是循環(huán)尋址。ALU可接收來自I單元的立即數或與存儲器、I/O空間、A單元寄存器、D單元寄存器和P單元寄存器進行雙向通信。可完成如下動作:加法、減法、比較、布爾邏輯、符號移位、邏輯移位和絕對值計算;測試、設置、清空、求補A單元寄存器位或存儲器位域;改變或轉移寄存器值,循環(huán)移位寄存器值,從移位器向一個A單元寄存器送特定值。2.3.5數據計算單元(D單元)圖2-7D單元結構框圖
接收來自I單元的立即數,與存儲器、I/O空間、D單元寄存器、P單元寄存器、A單元寄存器進行雙向通信;把移位結果送至D單元的ALU或A單元的ALU;實現40位累加器值最大左移31位或最大右移32位;實現16位寄存器、存儲器或I/O空間數據最大左移31位或最大右移32位;實現16位立即數最大左移15位;提取或擴張位域,執(zhí)行位計數;對寄存器值進行循環(huán)移位;
在累加器的值存入數據空間之前,對它們進行取整/飽和處理。
可從I單元接收立即數,或與存儲器、I/O空間、D單元寄存器、P單元寄存器、A單元寄存器進行雙向通信,還可接收移位器的結果;加法、減法、比較、取整、飽和、布爾邏輯以及絕對值運算;在執(zhí)行一條雙16位算術指令時,同時進行兩個算術操作;測試、設置、清除以及求D單元寄存器的補碼;對寄存器的值進行移動。
可支持乘法和加/減法。在單個機器周期內,每個MAC可以進行一次17×17位小數或整數乘法運算和一次帶有可選的32或40位飽和處理的40位加/減法運算。MAC的結果送累加器;
MAC接收來自I單元的立即數,或來自存儲器、I/O空間、A單元寄存器的數據,和D單元寄存器、P單元寄存器進行雙向通信;
MAC的操作會影響P單元狀態(tài)寄存器的某些位。2.3.6地址總線與數據總線C55x的CPU總線1組32位程序總線:PB5組16位數據總線:BB、CB、DB、EB、FB6組24位地址總線:PAB、BAB、CAB、DAB、EAB、FAB特點:這種總線并行機構使CPU在一個機器周期內,能夠讀1次32位程序代碼、讀3次16位數據、寫2次16位地址表2-4地址總線和數據總線的功能表2-5各種訪問類型下總線的使用(1)表2-5各種訪問類型下總線的使用(2)2.3.7指令流水線C55x的指令流水線分為兩個階段:第一階段——取指階段:從存儲器取來32位指令包,將其存入指令緩沖隊列(IBQ)中,并送48位指令包給第二流水階段第二階段——執(zhí)行階段:對指令進行譯碼,并完成數據訪問和計算。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概況?注意事項:
ST0_55、ST1_55和ST3_55都有兩個訪問地址;
T3、RSA0L、REA0L和SP有兩個訪問地址;任何裝入BRC1的指令將相同的值裝入BRS1。
對于ST0_55、ST1_55和ST3_55,對于其中一個地址,所有的C55x位均可訪問;在另外一個地址(稱為保護地址),某些保護位不能被修改。保護地址是為了提供對C54x代碼的支持,以便寫入ST0、ST1以及PMST(C54x對應ST3_55)
對于T3、RSA0L、REA0L和SP,當使用DP直接尋址方式訪問存儲器映射寄存器時,將訪問兩個地址中更高的地址,即
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)計數器0和116位BRS1BRC1保存寄存器16位BSA01,BSA23,BSA45,BSA67,BSAC循環(huán)緩沖區(qū)起始地址寄存器16位CDP系數數據指針(XCDP的低位部分)16位CDPHXCDP的高位部分7位CFCT控制流關系寄存器8位CSR計算單循環(huán)寄存器16位DBIER0,DBIER1調試中斷使能寄存器0和116位DP數據頁寄存器(XDP的低位部分)16位DPHXDP的高位部分7位IER0,IER1中斷使能寄存器0和116位IFR0,IFR1中斷標志寄存器0和116位IVPD,IVPH中斷向量指針16位表2-6寄存器總表(2)PC程序計數器24位PDP外設數據頁寄存器9位REA0,REA1塊循環(huán)結束地址寄存器0和124位RETA返回地址寄存器24位RPTC單循環(huán)計數器16位RSA0,RSA1塊循環(huán)起始地址寄存器0和124位SP數據堆棧指針16位SPHXSP和XSSP的高位7位SSP系統堆棧指針16位ST0_55~ST3_55狀態(tài)寄存器0~316位T0~T3暫時寄存器16位TRN0~TRN1變換寄存器0和116位XAR0~XAR7擴展輔助寄存器0~723位XCDP擴展系數數據指針23位XDP擴展數據頁寄存器23位XSP擴展數據堆棧指針23位XSSP擴展系統堆棧指針23位表2-7存儲器映射寄存器(1)
表2-7存儲器映射寄存器(2)
表2-7存儲器映射寄存器(3)
表2-7存儲器映射寄存器(4)
表2-7存儲器映射寄存器(5)
表2-7存儲器映射寄存器(6)
表2-7存儲器映射寄存器(7)
表2-7存儲器映射寄存器(8)
表2-7存儲器映射寄存器(9)
2.4.2累加器(AC0~AC3)C55x的CPU包括4個40位的累加器AC0、AC1、AC2、AC3AC0、AC1、AC2、AC3等價。任何一條使用一個累加器的指令,都可以通過編程來使用4個累加器中的任何一個在C54x兼容模式(C54CM=1)下,累加器AC0、AC1分別對應于C54x里的累加器A、B
每個累加器分為低字(ACxL)、高字(ACxH)和8個保護位(ACxG),用戶可以使用訪問存儲器映射寄存器的尋址方式,分別訪問這3部分
2.4.3變換寄存器TRN0、TRN1C55x有2個變換寄存器TRN0、TRN1用途:在比較-選擇-極值指令里使用比較兩個累加器的高段字和低段字后,執(zhí)行選擇兩個16位極值的指令,以更新TRN0和TRN1。比較累加器的高段字后更新TRN0,比較累加器的低段字后更新TRN1在比較完兩個累加器的全部40位后,執(zhí)行選擇一個40位極值的指令,以更新被選中的變換寄存器(TRN0或TRN1)
2.4.4T寄存器(T0-T3)
用途存放乘法、乘加以及乘減運算里的一個乘數存放D單元里加法、減法和裝入運算的移位數用交換指令交換輔助寄存器(AR0-AR7)和T寄存器中的內容時,跟蹤多個指針值在D單元ALU里作雙16位運算時,存放Viterbi蝶形的變換尺度CPU包括4個16位通用T寄存器:T0、T1、T2、T32.4.5用作數據地址空間和I/O空間的寄存器
表2-8用作數據地址空間和I/O空間的寄存器1.輔助寄存器(XAR0~XAR7/AR0~AR7)低字的作用:用于AR間接尋址模式,以及雙AR間接尋址模式。提供7位數據頁內的16位偏移量(形成一個23位地址);存放位地址;作為通用寄存器或計數器。高7位用于指定要訪問數據空間的數據頁訪問屬性:
XARn只能用專用指令訪問;
ARn可用專用指令訪問,也可以作為存儲器映射寄存器訪問;
ARnH不能單獨訪問,必須通過訪問XARn來訪問ARnHCPU在存儲器中映射了一個系數數據指針(CDP)和一個相關的擴展寄存器(CDPH):2.系數數據指針(XCDP/CDP)CPU可以連接這個寄存器形成一個擴展系數數據指針(XCDP)高7位(CDPH)用于指定要訪問數據空間的數據頁低字(CDP)用來作為16位偏移量與7位數據頁形成一個23位地址XCDP或CDP用在CDP間接尋址方式和系數間接尋址方式中,CDP可用于任何指令中訪問一個單數據空間值,在雙MAC指令中,它還可以獨立地提供第三個操作數。表2-10XCDP的訪問屬性
3.循環(huán)緩沖區(qū)首地址寄存器CPU有5個16位的循環(huán)緩沖區(qū)首地址寄存器:BSA01,BSA23,BSA45,BSA67,BSAC作用:定義循環(huán)的首地址每個循環(huán)緩沖區(qū)首地址寄存器與一個或兩個特殊的指針相關聯4.循環(huán)緩沖區(qū)大小寄存器三個16位的循環(huán)緩沖區(qū)大小寄存器(BK03,BK47,BKC)用途:指定循環(huán)緩沖區(qū)大?。ㄗ畲鬄?5535)每個循環(huán)緩沖區(qū)大小寄存器與一個或四個特殊的指針相關聯5.數據頁寄存器(XDP/DP)CPU在存儲器中映射了一個數據頁寄存器(DP)和一個相關的擴展寄存器(DPH)CPU連接這兩個寄存器形成一個擴展數據頁寄存器(XDP)DPH指定要訪問數據空間的7位數據頁低字(DP)用來代表一個16位偏移地址用途:在基于DP的直接尋址方式中,XDP指定23位地址在k16絕對尋址方式中,DPH與一個16位的立即數連接形成23位地址表2-13XDP寄存器的訪問屬性6.外設數據頁指針(PDP)對于PDP直接尋址方式,9位的外設數據頁指針(PDP)選擇64K字I/O空間中的一個128字頁面7.堆棧指針(XSP/SP,XSSP/SSP)有關堆棧指針數據堆棧指針(SP)系統堆棧指針(SSP)相關擴展寄存器(SPH)當訪問數據堆棧時,CPU連接SPH和SP形成一個擴展的堆棧指針(XSP),指向最后壓入數據堆棧的數據SPH代表7位數據頁SP指向頁中某個具體地址當訪問系統堆棧時,CPU連接SPH和SSP形成一個擴展的堆棧指針(XSSP),指向最后壓入系統堆棧的數據表2-14堆棧指針的訪問屬性2.4.6程序流寄存器(PC、RETA、CFCT)程序流寄存器(3個)寄存器描述PC24位的程序計數器。存放I單元里解碼的1~6字節(jié)代碼的地址.當CPU執(zhí)行中斷或調用子程序時,當前的PC值(返回地址)存起來,然后把新的地址裝入PC。當CPU從中斷服務或子程序返回時,返回地址重新裝入PCRETA返回地址寄存器。如果所選擇的堆棧配置使用快速返回,則在執(zhí)行子程序時,RETA就作為返回地址的暫存器。RETA和CFCT一起,高效執(zhí)行多層嵌套的子程序??捎脤iT的32位裝入和存儲指令,成對地讀寫RETA和CFCTCFCT控制流關系寄存器。CPU保存有激活的循環(huán)記錄(循環(huán)的前后關系)。如果選擇的堆棧配置使用快速返回,則在執(zhí)行子程序時,CFCT就作為8位循環(huán)關系的暫存器。RETA和CFCT一起,高效執(zhí)行多層嵌套的子程序??捎脤iT的32位裝入和存儲指令,成對地讀寫RETA和CFCTCFCT寄存器
CPU由內部位按照一定規(guī)則來存放循環(huán)的前后關系,即子程序里循環(huán)的狀態(tài)(激活和未激活)當CPU執(zhí)行中斷或調用子程序時,循環(huán)關系位就存放在CFCT里當CPU從中斷或調用子程序返回時,循環(huán)關系位就從CFCT恢復表2-16CFCT各位的含義2.4.7中斷管理寄存器表2-17中斷管理寄存器
中斷向量指針(IVPD,IVPH)DSP中斷向量指針(IVPD)主機中斷向量指針(IVPH)16位,指向256字節(jié)的程序空間中的中斷向量表(IV0~IV15和IV24~IV31),這些中斷向量供DSP專用16位,指向256字節(jié)的程序空間中的中斷向量表(IV16~IV23),這些中斷向量供DSP和主機共享使用?說明:如果IVPD和IVPH的值相同,所有中斷向量可能占有相同的256字節(jié)大小的程序空間;DSP硬件復位時,IVPD和IVPH都被裝入到FFFFH地址處;IVPD和IVPH均不受軟復位的影響
表2-18中斷向量地址?在修改IVP之前應確保:INTM=1,即所有可屏蔽中斷不能響應。每個硬件不可屏蔽中斷對于原來的IVPD和修改后的IVPD都有一個中斷向量和中斷服務程序。由16位的中斷向量指針加上一個5位的中斷編號后左移3位組成一個24位的中斷地址。
2.中斷標志寄存器(IFR0,IFR1)表2-19中斷標志寄存器IFR1表2-20中斷標志寄存器IFR016位的中斷標志寄存器IFR0和IFR1包括所有可屏蔽中斷的標志位當一個可屏蔽中斷向CPU提出申請時,IFR中相應的標志位置1,等待CPU應答中斷可以通過讀IFR標志已發(fā)送申請的中斷,或寫1到IFR相應的位撤銷中斷申請,即寫入1清相應位為0中斷被響應后將相應位清0,器件復位將所有位清03.中斷使能寄存器(IER0,IER1)表2-23中斷使能寄存器IER1表2-24中斷使能寄存器IER0通過設置IER0、IER1的位為
1,打開相應的可屏蔽中斷
0,關閉相應的可屏蔽上電復位時,將所有IER位清0。IER0、IER1不受軟件復位指令和DSP熱復位的影響,在全局可屏蔽中斷使能(INTM=1)之前應初始化它們。4.調試中斷使能寄存器(DBIER0,DBIER1)僅當CPU工作在實時仿真模式調試暫停時,這兩個16位的調試中斷使能寄存器才會使用如果CPU工作在實時方式下,DBIER0、DBIER1將被忽略2.4.8循環(huán)控制寄存器單循環(huán)指令可以重復執(zhí)行一個單周期指令或并行執(zhí)行兩個單周期指令,重復次數N被裝在RPTC中,指令將被重復執(zhí)行N+1次。在一些無條件單指令循環(huán)操作中,可以使用CSR設置重復次數。1.單指令循環(huán)控制寄存器(RPTC,CSR)2.塊循環(huán)寄存器(BRC0,BRC1,BRS1,RSA0,RSA1,REA0,REA1)塊循環(huán)指令可以實現2級嵌套,一個塊循環(huán)(1級)嵌套在另一個塊循環(huán)(0級)內部當C54CM=0,即工作在C55x方式下,才實現2級嵌套當無循環(huán)嵌套時,CPU使用0級寄存器當出現循環(huán)嵌套時,CPU對于1級嵌套使用1級寄存器當C54CM=1,即工作在C54x方式下只能使用0級寄存器,通過借助塊重復標志寄存器(BRAF)完成嵌套表2-23塊循環(huán)寄存器2.4.9狀態(tài)寄存器ST0_55ST0_55(以及ST1_55和ST3_55)有兩個訪問地址。所有位都可以由第一個地址訪問,而在另一個地址(保護地址)里,加黑部分不能修改;保護地址是為了支持把C54x的代碼寫入ST0、ST1和PMST累加器溢出標志(ACOV0,ACOV1,ACOV2,ACOV3)當累加器AC0、AC1、AC2或AC3有數據溢出時,相應的ACOV0、ACOV1、ACOV2或ACOV3被置1,直到發(fā)生以下任一事件:復位CPU執(zhí)行條件跳轉、調用、返回,或執(zhí)行一條測試ACOVx狀態(tài)的指令被指令清0溢出方式受M40位的影響當M40=0時,溢出檢測在第31位,與C54x兼容當M40=1時,溢出檢測在第39位2.進位位(CARRY)進位/借位的檢測取決于M40位當M40=0時,由第31位檢測進位/借位當M40=1時,由第39位檢測進位/借位當D單元ALU做加法運算時,若產生進位,則置位CARRY;如果不產生進位時,則將CARRY清0例外:使用以下語句(將Smem移動16位),有進位時置位CARRY,無進位時不清0。ADDSmem<<#16,[ACx,]ACy當D單元ALU做減法運算時若產生借位,將CARRY清0。如果不產生借位,則置位CARRY。例外:使用以下語句(將Smem移動16位),有借位時CARRY清0,無借位時CARRY不變。SUBSmem<<#16,[ACx,]ACyCARRY位可以被邏輯移位指令修改。對帶符號移位指令和循環(huán)移位指令,可以選擇CARRY位是否需要修改目的寄存器是累加器時,用以下指令修改CARRY位,以指示計算結果
MIN [src,]dst MAX [src,]dst ABS [src,]dst NEG [src,]dst可以通過下面兩條指令對CARRY清零和置位:
BCLR CARRY ;清零
BSET CARRY ;置位3.DP位域DP位域占據ST0_55的第8~0位提供與C54x兼容的數據頁指針C55x有一個獨立的數據頁指針DPDP(15~7)的任何變化都會反映在ST0_55的DP位域上?;贒P的直接尋址方式,C55x使用完整的數據頁指針DP(15~0),因此不需要使用ST0_55的DP位域。如果想裝入ST0_55,但不想改變DP位域的值,可以用OR或AND指令。所有能影響一個測試/控制位的指令,都可以選擇影響TC1還是TC2TCx或關于TCx的布爾表達式,都可以在任何條件指令里用作觸發(fā)器可以通過下面指令對TCx置位和清零:
BCLR TC1; TC1清零
BSET TC1; TC1置位
BCLR TC2; TC2清零
BSET TC2; TC2置位4.測試/控制位(TC1,TC2)
測試/控制位用于保存一些特殊指令的測試結果,使用要點如下:2.4.10狀態(tài)寄存器ST1_55如果C54CM=0C55x忽略ASM,C55x移位指令在暫存寄存(T0~T3)里指定累加器的移位值,或者直接在指令里用常數指定移位值。如果C54CM=1C55x以兼容方式運行C54x代碼,ASM用于給出某些C54x移位指令的移位值,移位范圍-16~15。1.ASM位如果C54CM=0,C55x不使用BRAF。如果C54CM=1,C55x以兼容方式運行C54x代碼,BRAF用于指定或控制一個塊循環(huán)操作的狀態(tài)。在由調用、中斷或返回引起的代碼切換過程中,都要保存和恢復BRAF的值。當執(zhí)行遠程跳轉(FB)或遠程調用(FCALL)指令時,BRAF自動清零。2.BRAF位如果C54CM=0,C55x忽略C16
指令本身決定是用單32位操作還是雙16位操作。如果C54CM=1,C55x以兼容方式運行C54x代碼,C16會影響某些指令的執(zhí)行。當C16=0時,關閉雙16位模式,D單元ALU執(zhí)行一條指令是以單32位操作(雙精度運算)形式當C16=1時,打開雙16位模式,D單元ALU執(zhí)行一條指令是以兩個并行的16位操作(雙16位運算)形式3.C16位如果C54CM=0,C55xCPU不支持C54x代碼如果C54CM=1,C55x的CPU支持C54x編寫的代碼在使用C54x代碼時就必須置位該模式,所有C55xCPU的資源都可以使用在移植代碼時,可以利用C55x增加的特性優(yōu)化代碼4.C54CM位可用以下指令或偽指令來改變模式:BCLRC54CM ;清零C54CM(運行時).C54CM_off ;告知匯編器C54CM=0BSETC54CM ;置位C54CM(運行時).C54CM_on ;告知匯編器C54CM=1如果CPL=0,CPL決定選擇DP直接尋址模式如果CPL=1,CPL決定選擇SP直接尋址模式可用以下指令和偽指令來改變尋址模式:BCLRCPL ;清零CPL(運行時).CPL_off ;告知匯編器CPL=0BSETCPL ;置位CPL(運行時).CPL_on ;告知匯編器CPL=15.CPL位如果FRCT=1,C55x打開小數模式。乘法運算的結果左移一位進行小數點調整。兩個帶符號的Q15制數相乘,得到一個Q31制數時,就要進行小數點調整。如果FRCT=0,C55x關閉小數模式。乘法運算的結果不移位??捎孟旅娴闹噶钋辶愫椭梦籉RCT:BCLRFRCT ;清零FRCTBSETFRCT ;置位FRCT6.FRCT位如果HM=0,C55x繼續(xù)執(zhí)行內部程序存儲器的指令。如果HM=1,C55x停止執(zhí)行內部程序存儲器的指令??捎孟旅娴闹噶钋辶愫椭梦籋M:BCLRHM ;清零HMBSETHM ;置位HM7.HM位當DSP得到HOLD信號時,會將外部接口總線置于高阻態(tài)。根據HM的值,DSP也可以停止內部程序執(zhí)行。如果INTM=0,C55x使能所有可屏蔽中斷如果INTM=1,C55x禁止所有可屏蔽中斷使用INTM位需要注意的要點:INTM位能夠全局使能或禁止可屏蔽中斷,但是它對不可屏蔽中斷無效。在使用INTM位時,要使用狀態(tài)位清零和置位指令來修改INTM位。其它能影響INTM位的,只有軟件中斷指令和軟件置位指令。8.INTM位CPU響應中斷請求時,自動保存INTM位。特別地,CPU把ST1_55保存到數據堆棧時,INTM位也被保存起來。執(zhí)行中斷服務子程序(ISR)之前,CPU自動置位INTM位,禁止所有的可屏蔽中斷。ISR可以通過清零INTM位,來重新開放可屏蔽中斷。中斷返回指令,從數據堆?;謴虸NTM位的值。在調試器實時仿真模式下,CPU暫停時,忽略INTM位,CPU只處理臨界時間中斷。如果M40=0,D單元的計算模式選擇32位模式:第31位是符號位計算過程中的進位取決于第31位由第31位判斷是否溢出飽和過程,飽和值是007FFFFFFFh(正溢出)或FF80000000h(負溢出)累加器和0的比較,用第31~0位來進行可對整個32位進行移位和循環(huán)操作9.M40位累加器左移或循環(huán)移位時,從第31位移出累加器右移或循環(huán)移位時,移入的位插入到第31位上對于累加器帶符號位的移位如果SXMD=0,則累加器的保護位值要設為0如果SXMD=1,累加器的保護位要設為第31位的值;對于累加器的任何循環(huán)移位或邏輯移位,都要清零目的累加器的保護位如果M40=1,D單元的計算模式選擇40位的帶符號移位模式:第39位是符號位計算過程中的進位取決于第39位由第39位判斷是否溢出飽和過程,飽和值是7FFFFFFFFFh(正溢出)或8000000000h(負溢出)累加器和0的比較,用第39~0位來進行可對整個40位進行移位和循環(huán)操作累加器左移或循環(huán)移位時,從第39位移出累加器右移或循環(huán)移位時,移入的位插入到第39位上如果SATD=0,關閉D單元的飽和模式,不執(zhí)行飽和模式如果SATD=1,打開D單元的飽和模式如果D單元內的運算產生溢出,則結果值飽和飽和值取決于M40位M40=0,CPU的飽和值為007FFFFFFFh(正溢出)或FF80000000h(負溢出)M40=1,CPU的飽和值為7FFFFFFFFFh(正溢出)或8000000000h(負溢出)10.SATD位如果SXMD=0,關閉D單元的符號擴展模式對于40位的運算,16位或更小的操作數都要補0,擴展至40位對于條件減法指令,任何16位的除數都可以得到理想的結果當D單元的ALU被局部配置為雙16位模式時,D單元ALU的高16位補零擴展至24位。累加器值右移時,高段和低段的16位補零擴展累加器帶符號移位時,如果是一個32位操作(M40=0),累加器的保護位(第39~32位)填零累加器帶符號右移時,移位值補零擴展11.SXMD位如果SXMD=1時,打開符號擴展模式:對于40位的運算,16位或更小的操作數,都要符號擴展至40位對于條件減法指令,16位的除數必須是正數,其最高位(MSB)必須是0當D單元的ALU局部配置為雙16位模式時,D單元ALU的高16位值帶符號擴展至24位。累加器右移時,高段和低段的16位都要帶符號擴展累加器帶符號移位時,其值帶符號擴展如果是一個32位操作(M40=0),則將第31位的值,復制到累加器的保護位(第39~32位)累加器帶符號右移時,除非有限定符uns()表明它是無符號的,否則移位值都要被帶符號擴展。對于無符號運算(布爾邏輯運算、循環(huán)移位和邏輯移位運算),不管SXMD的值是什么,輸入的操作數都要被補零擴展至40位。對于乘加單元MAC里的運算,不管SXMD值是多少,輸入的操作數都要帶符號擴展至17位。如果指令里的操作數是在限定符uns()里,則不管SXMD值是多少,都視為無符號的用下面的指令清零和置位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模式操作數,該操作數能有效執(zhí)行DSP專用程序。這些操作數里,有的在指針加/減時使用反向操作數。短偏移操作數不可用。如果ARMS=1,輔助寄存器(AR)間接尋址的CPU模式采用控制模式操作數,該操作數能為控制系統的應用優(yōu)化代碼的大小。短偏移操作數*ARn(short(#k3))可用。其它偏移需要在指令里進行2字節(jié)擴展,而這些有擴展的指令不能和其他指令并行執(zhí)行。2.ARMS位用下面的指令和偽指令來改變模式:BCLRARMS ;清零ARMS(運行時).ARMS_off ;告知編譯器ARMS=0BSETARMS ;置位ARMS(運行時).ARMS_on ;編譯器ARMS=1CDPLC位決定系數數據指針(CDP)是用線性尋址(CDPLC=0),還是循環(huán)尋址(CDPLC位=1)用下面的指令清零和置位CDPLC:BCLRCDPLC;清零CDPLCBSETCDPLC;置位CDPLC3.CDPLC位DBGM位用于調試程序里有嚴格時間要求的部分如果DBGM=0,使能該位如果DBGM=1,禁止該位。仿真器不能訪問存儲器和寄存器。軟件斷點仍然可以使CPU暫停,但不會影響硬件斷點或暫停請求4.DBGM位
為了保護流水,只能由狀態(tài)位清零/置位指令修改DBGM,其它指令都不會影響DBGM位:
BCLR DBGM ;清零DBGM BSET DBGM ;置位DBGM當CPU響應一個中斷請求時,會自動保護DBGM位的狀態(tài)。確切地說,當CPU把ST2_55保存到數據堆棧時,DGBM位就被保存起來執(zhí)行一個中斷服務子程序(ISR)前,CPU自動置位DBGM,禁止調試。ISR可以通過清零DBGM位,重新使能調試EALLOW使能(EALLOW=1)或禁止(EALLOW=0)對非CPU仿真寄存器的寫訪問當CPU響應一個中斷請求時,自動保存EALLOW位的狀態(tài)。確切地說,當CPU把ST2_55保存到數據堆棧時,也就是保存了EALLOW位執(zhí)行一個中斷服務子程序(ISR)前,CPU自動清EALLOW位,禁止訪問仿真寄存器。ISR通過置位EALLOW位,可以重新開放對仿真寄存器的訪問中斷返回指令,從數據堆棧恢復EALLOW位5.EALLOW位
在D單元執(zhí)行的一些指令里,CPU將rnd()括號里的操作數取整。取整操作的類型取決于RDM的值如果RDM=0,CPU給40位的操作數加上8000h(即215),然后CPU清零第15~0位,產生一個24位或16位的取整結果若結果是24位的整數,只有第39~16位是有意義的若結果是16位的整數,只有第31~16位是有意義的6.RDM位如果RDM=1,取整至最接近的整數。取整結果取決于40位操作數的第15~0位:If(0=<(位15-0)<8000h)
CPU清零第15~0位
If(8000h<(位15-0)<10000h)
CPU給該操作數加上8000h,再清零第15~0位
If((位15-0)==8000h) If(位31-16)是奇數
CPU給該操作數加上8000h,再清零第15~0位2.4.12狀態(tài)寄存器ST3_55?說明:
ST3_55的第11~8位總是寫作1100b(Ch)檢查是否已完成程序cache清零CACLR=0:已經完成。清零過程完成時,cache硬件清零CACLR位CACLR=1:未完成。所有的cache塊無效清零cache所需的時間周期數取決于存儲器的結構當cache清零后,指令緩沖器單元里的預取指令隊列的內容會自動清零1.CACLR位使能或禁止程序cacheCAEN=0:禁止。cache控制器不接收任何程序要求,所有的程序要求都由片內存儲器或片外存儲器(根據解碼的地址而定)來處理。CAEN=1:使能。依據解碼的地址,可以從cache、片內存儲器或片外存儲器提取程序代碼。當清零CAEN位禁止cache時,I單元的指令緩沖隊列的內容會自動清零2.CAEN位CAFRZ能鎖定程序cacheCAFRZ=0:cache工作在默認操作模式CAFRZ=1:cache被凍結(其內容被鎖定)。沒有訪問該cache時,它的內容不會更改,但被訪問時仍然可用。cache內容一直保持不變,直到CAFRZ位清零3.CAFRZ位檢測到一個內部總線錯誤時,置位CBERR。該錯誤使CPU在中斷標志寄存器1(IFR1)里置位總線錯誤中斷標志BERRINTF對CBERR位寫1無效。該位只在發(fā)生內部總線錯誤時才為1??偩€錯誤的中斷服務子程序,返回控制中斷程序的代碼以前,必須清零CBERR。4.CBERR位當CLKOFF=1,CLKOUT引腳的輸出被禁止,且保持高電平用下面的指令清零和置位CLKOFF:BCLRCLKOFF;清零CLKOFFBSETCLKOFF;置位CLKOFF5.CLKOFF位用HINT位通過主機接口,發(fā)送一個中斷請求給主機處理器。先清零,然后再給HINT置位,產生一個低電平有效的中斷脈沖:BCLRHINT;清零HINTBSETHINT;置位HINT6.HINT位MPNMC位使能或禁止片上ROMMPNMC=0:微計算機模式。使能片上ROM,可以在程序空間尋址。MPNMC=1:微處理器模式。禁止片上ROM,不映射在程序空間里。MPNMC的改變,反映復位過程中MP/MC引腳的邏輯電平(高電平-1,低電平-0)僅在復位時才對MP/MC引腳采樣。軟件中斷指令不影響MPNMC7.MPNMC位SATA決定A單元ALU的溢出結果是否飽和SATA=0:關閉。不執(zhí)行飽和SATA=1:打開。如果A單元的ALU里的計算產生溢出,則結果飽和至7FFFh(正向飽和)或8000h(負向飽和)8.SATA位SMUL位打開或關閉乘法的飽和模式如果SMUL=0:關閉。如果SMUL=1:打開。在SMUL=1、FRCT=1且SATD=1的情況下,8000h與8000h相乘的結果飽和至7FFFFFFFh(不受M40位的影響)。這樣,兩個負數的乘積就是一個正數。對于乘加/減指令,在乘法之后、加法/減法以前,執(zhí)行飽和運算9.SMUL位C54CM=0,CPU忽略SST,僅用指令判斷是否產生飽和C54CM=1,在C54x兼容模式下,SST打開或關閉飽和-存儲模式SST將影響一些累加器-存儲指令的執(zhí)行。SST=1時,在存儲之前,40位的累加器值要飽和為一個32位的值。如果累加器值要移位,則CPU執(zhí)行移位后飽和。10.SST位
對于受SST位影響的指令,CPU在存儲一個移位后或未移位的累積器值以前,對其進行飽和運算。是否飽和取決于符號擴展模式位(SXMD):SXMD=0:一個40位的數看作無符號數。如果該數值大于007FFFFFFFh,則CPU對其進行飽和運算,結果為7FFFFFFFhSXMD=1:一個40位的數看作有符號數。如果該數值小于0080000000h,則CPU產生一個32位的結果80000000h。如果該數大于007FFFFFFFh,則CPU產生的結果為7FFFFFFFh。2.5存儲空間和I/O空間存儲器映射程序空間數據空間I/O空間C55x的存儲(數據/程序)空間統一編址CPU讀取程序代碼時,使用24位地址訪問相關字節(jié)CPU讀寫數據時,使用23位地址訪問相關字兩種情況下地址總線上均為24位,只是數據尋址時地址總線上的最低位強制填充0C55x存儲空間(總共為16M字節(jié)或8M字)的劃分:128個主頁面(0~127),每個主頁面為64K字主頁面0的前192個字節(jié)或96個字(000000h~0000BFh)被MMR所占用2.5.1存儲器映射C55x的外部擴展存儲空間由CE[3:0]分為4個部分,每部分都可以支持同步或異步存儲器類型C55x的片內存儲器資源(以VC5509A為例)128K字RAMDARAM為32K字SARAM為96K字32K字ROM表2-26TMS320VC5509APGE存貯器映射DARAM(以VC5509A為例)雙存取RAM,分為8個8K字節(jié)或4K字的塊,每個8K字節(jié)的塊每周期可以訪問兩次(兩次讀或一次讀、一次寫)DARAM可被內部程序總線、數據總線或DMA訪問。前4塊DARAM可以被HPI訪問SARAM(以VC5509A為例)單存取RAM,分為24個8K字節(jié)或4K字的塊,每個8K字節(jié)的塊每周期只能訪問一次(一次讀或一次寫)表2-27TMS320VC5509A的DARAM塊表2-28TMS320VC5509A的SARAM塊2.5.2程序空間CPU使用24位寬的字節(jié)尋址從程序存儲器讀取指令地址總線是24位的,通過程序讀數據總線一次可以讀取32位的指令,指令中每8位占有一個字節(jié)地址圖2-29字節(jié)地址
例:若指令字節(jié)0占用地址000100h,則指令字節(jié)2占用地址000102h。程序空間的指令組織C55x支持8、16、24、32、48位的指令圖2-30指令的存儲情況
例:5個不同長度的指令在程序空間中的存儲情況。2.5.3數據空間CPU使用字地址訪問數據空間字地址為23位的,尋址16位的數據地址線為24位的,當CPU讀/寫數據空間時,23位的字地址最低位補一個0成為總地址例:字地址:
00000000000 0001 0000 0010地址總線:000000000000 0010 0000 0100
數據類型C55x指令集支持以下數據類型:字節(jié)(B):8位字(W):16位長字(LW):32位CPU有專用指令對字節(jié)進行讀操作,當寫操作時需要作0擴展或符號擴展圖2-32長字地址組織對于32位的長字,訪問地址為長字的高字(MSW)地址。
如果MSW是偶地址,則長字的低(MSW)地址為下一個地址如果MSW是奇地址,則長字的低(MSW)地址為前一個地址例,數據空間的數據組織。
訪問一個長字,必須參考它的高字(MSW),訪問C需要訪問000102h,訪問D需要訪問000105h
字地址也被用于字節(jié)地址,000107h既是F的地址,也是G的地址。專用字節(jié)指令會指明訪問的是低字節(jié)還是高字節(jié)。2.5.4I/O空間I/O空間和程序/數據空間是分開的,只能用來訪問DSP外設上的寄存器I/O空間里的字地址寬度是16位,可以訪問64K個地址對于I/O空間的讀寫是通過數據讀總線DAB和數據寫總線EAB進行的讀寫時要在16位地址前補0
例。設一條指令從16位地址0102h處讀取一個字,則DAB傳輸的24位地址為000102h。2.6堆棧操作數據堆棧和系統堆棧堆棧配置快返回與慢返回C55x支持兩個16位堆棧,即數據堆棧和系統堆棧訪問數據堆棧時,CPU將SPH和SP連接成XSPXSP包含了一個最后推入數據堆棧的23位地址,其中SPH里是7位的主數據頁,SP指向該頁上的一個字。CPU在每推入一個值入堆棧前,減小SP值;從堆棧彈出一個值以后,增加SP值。在堆棧操作中,SPH的值不變。2.6.1數據堆棧和系統堆棧圖2-34XSP和XSSP訪問系統堆棧時CPU將SPH和SSP連接成XSSP。XSSP包含了一個最后推入系統堆棧的值的地址CPU在每推入一個值進堆棧前,減小SSP值;從堆棧彈出一個值以后,增加SSP值。在堆棧操作中,SPH的值不變表2-29堆棧指針寄存器SSP可以與SP關聯,也可以獨立于SP如果選擇32位堆棧配置,則修改SSP與SP的方法一樣如果選擇雙16位堆棧配置,則SSP與SP獨立,SSP只有在自動環(huán)境切換時才能被修改2.6.2堆棧配置C55x提供了3種可能的堆棧配置一種配置使用快返回過程另外兩種使用慢返回過程通過給32位復位向量的第29、28位填入適當值,可以選擇一種堆棧配置方式復位向量的低24位就是復位中斷服務子程序(ISR)的起始地址表2-30堆棧配置快返回與慢返回過程的區(qū)別在于CPU怎樣保存和恢復兩個內部存儲器(即程序計數器PC和一個循環(huán)現場寄存器)的值PC裝的是I單元里1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東海洋大學《環(huán)境工程制圖與CAD》2023-2024學年第一學期期末試卷
- 廣東工商職業(yè)技術大學《和聲(2)》2023-2024學年第一學期期末試卷
- 廣東潮州衛(wèi)生健康職業(yè)學院《藏族文化概論》2023-2024學年第一學期期末試卷
- 廣東財經大學《內燃機設計》2023-2024學年第一學期期末試卷
- 社保統計培訓課件
- 安全運輸課件
- 《組織環(huán)境與文化》課件
- 培訓體系課件要求
- 贛州師范高等??茖W?!兜乩硇畔⑾到y開發(fā)》2023-2024學年第一學期期末試卷
- 《輔助技能》課件
- ISO 56001-2024《創(chuàng)新管理體系-要求》專業(yè)解讀與應用實踐指導材料之20:“7支持-7.3意識+7.4溝通”(雷澤佳編制-2025B0)
- 期末素養(yǎng)提升(試題)-2024-2025學年語文二年級上冊
- 西京學院《數據挖掘B》2023-2024學年第一學期期末試卷
- 2021年江蘇南京二十九中特長生考試數學試卷真題(含答案詳解)
- 選調生培訓心得體會集合6篇
- 北京市朝陽區(qū)2023-2024學年九年級上學期期末物理試卷
- 全國賽課一等獎初中統編版七年級道德與法治上冊《正確對待順境和逆境》教學設計
- 統編版(2024版)道德與法治七年級上冊期末質量監(jiān)測試卷 3套(含答案)
- 《地鐵車站突發(fā)事件應急工作規(guī)范》
- 2024年01月11073法律文書期末試題答案
- 申能集團在線測評題目
評論
0/150
提交評論