版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第2章PSoC3/5CPU子系統(tǒng)
Chapter2CPUSub-SystemofPSoC3/5第2章PSoC3/5CPU子系統(tǒng)
--前言
本章詳細(xì)介紹了PSoC3/5的CPU系統(tǒng)的結(jié)構(gòu)原理。PSoC3使用了8051的CPU核,而PSoC5使用了ARM的Cortex-M3的CPU核。本章的內(nèi)容主要包括:8051CPU核;Cortex-M3CPU核;DMA和PHUB;中斷控制器等內(nèi)容。通過本章內(nèi)容的學(xué)習(xí),讀者將系統(tǒng)學(xué)習(xí)8051和Cortex-M3CPU核的結(jié)構(gòu)原理和簡(jiǎn)單的接口功能,為基于PSoC3/5的設(shè)計(jì)和調(diào)試打下堅(jiān)實(shí)基礎(chǔ)。8051CPU核
--8051內(nèi)部結(jié)構(gòu)
PSoC3使用單周期的8051核,與MCS-51指令集兼容,使用了一個(gè)流水的RISC結(jié)構(gòu),使用1-2個(gè)時(shí)鐘周期來執(zhí)行大多數(shù)的指令,峰值處理能力為24MIPS。單周期的8051核比標(biāo)準(zhǔn)的8051處理器快幾十倍。8051CPU核
--8051內(nèi)部結(jié)構(gòu)其特性主要包括:?jiǎn)沃芷诘?051CPU;最大64kB的Flash,2kB的EEPROM,8kB的SRAM;可編程和嵌套向量中斷控制器;直接存儲(chǔ)器訪問(DirectMemoryAccess,DMA)控制器;外設(shè)HUB(PHUB);外部存儲(chǔ)器接口(ExternalMemoryInterface,EMIF);8051CPU核
--8051尋址模式8051CPU支持下面的尋址模式:
1.直接尋址:操作數(shù)由一個(gè)直接8位地址域指定。當(dāng)使用這種模式時(shí),只能訪問內(nèi)部RAM和特殊功能寄存器(SpecialFunctionRegister,SFR)。比如指令:MOVA,3AH,將片內(nèi)RAM中3AH單元中的數(shù)據(jù)送給累加器A。8051CPU核
--8051尋址模式2.間接尋址:指令指定一個(gè)寄存器,該寄存器包含操作數(shù)的地址。寄存器R0和R1用來指定8位地址,數(shù)據(jù)指針寄存器(DataPointer,DPTR)用來指定16位的地址。比如指令:ANLA,@R1,以R1寄存器的內(nèi)容60H為地址,將60H地址單元的內(nèi)容與累加器A中的數(shù)相“與”,結(jié)果存放在A中。8051CPU核
--8051尋址模式3.寄存器尋址:某特定指令用來訪問寄存器組中的R0-R7寄存器中的一個(gè)。由于這些指令不需要地址域,因此這些指令訪問效率更高。比如指令:INCR0,將寄存器R0的內(nèi)容加1,再送回R0。8051CPU核
--8051尋址模式4.寄存器指定指令尋址:一些指令指向某個(gè)寄存器。比如,一些指令總是在累加器上工作。在這種情況下就不需要操作數(shù)。比如:CLRA,將累加器A清除。
8051CPU核
--8051尋址模式5.索引尋址:這種類型的尋址只能用來訪問程序存儲(chǔ)器。這種模式使用數(shù)據(jù)指針作為基地址,累加器值作為偏移地址來讀取程序存儲(chǔ)器。比如指令:MOVA,@A+DTTR,將DPTR和A的內(nèi)容相加所得到的程序存儲(chǔ)器地址單元的內(nèi)容送A。8051CPU核
--8051尋址模式6.立即數(shù)尋址:一些指令直接加載常數(shù)的值,而不是地址。比如指令:MOVA,#3AH,將8位的立即數(shù)3A送給累加器。8051CPU核
--8051尋址模式7.位尋址:在這種模式下,操作數(shù)時(shí)256比特中的某一位。比如指令:MOVC,2BH,把位尋址區(qū)的2BH位狀態(tài)送累加位C。8051CPU核
--8051指令集
8051的指令集包括:算術(shù)運(yùn)算指令;邏輯指令;數(shù)據(jù)傳輸指令;布爾指令;程序分支指令;8051CPU核
--8051指令集(算術(shù)指令)
算術(shù)指令支持直接、間接、寄存器、立即數(shù)和寄存器指定指令尋址方式。算術(shù)模式用于加、減、乘、除、遞增和遞減操作。8051CPU核
--8051指令集(算術(shù)指令)指令功能ADDA,Rn(A)+(Rn)→(A)ADDA,Direct(A)+(Direct)→(A)ADDA,@Ri(A)+((Ri))→(A)ADDA,#data(A)+#data→(A)ADDCA,Rn(A)+(Rn)+(CY)→(A)ADDCA,Direct(A)+(Direct)+(CY)→(A)ADDCA,@Ri(A)+((Ri))+(CY)→(A)ADDCA,#data(A)+#data+(CY)→(A)SUBBA,Rn(A)-(Rn)-(CY)→(A)SUBBA,Direct(A)-(Direct)-(CY)→(A)SUBBA,@Ri(A)-((Ri))-(CY)→(A)SUBBA,#data(A)-#data-(CY)→(A)INCA(A)+1→(A)8051CPU核
--8051指令集(算術(shù)指令)指令功能INCRn(Rn)+1→(Rn)INCDirect(direct)+1→(direct)INC@Ri((Ri))+1→((Ri))DECA(A)-1→(A)DECRn(Rn)-1→(Rn)DECDirect(direct)-1→(direct)DEC@Ri((Ri))-1→((Ri))INCDPTR(DPTR)+1→(DPTR)MULAB(A)x(B)→高8位存在B中,低8位存在A中DIVAB(A)/(B)→商存在A中,余數(shù)存在B中DAA對(duì)BCD加法結(jié)果進(jìn)行調(diào)整8051CPU核
--8051指令集(邏輯指令)
邏輯指令執(zhí)行布爾操作,比如AND,OR,XOR操作,對(duì)累加器內(nèi)容進(jìn)行旋轉(zhuǎn),累加器半字交換。
指令功能ANLA,Rn(A)^(Rn)→(A)ANLA,Direct(A)^(Direct)→(A)ANLA,@Ri(A)^((Ri))→(A)ANLA,#data(A)^#data→(A)ANLDirect,A(Direct)^(A)→(Direct)ANLDirect,#data(Direct)^#data→(Direct)ORLA,Rn(A)ⅴ(Rn)→(A)ORLA,Direct(A)ⅴ(Direct)→(A)ORLA,@Ri(A)ⅴ((Ri))→(A)ORLA,#data(A)ⅴ#data→(A)ORLDirect,A(Direct)ⅴ(A)→(Direct)ORLDirect,#data(Direct)ⅴ#data→(Direct)8051CPU核
--8051指令集(邏輯指令)指令功能XRLA,Rn(A)+(Rn)→(A)XRLA,Direct(A)+(Direct)→(A)XRLA,@Ri(A)+((Ri))→(A)XRLA,#data(A)+#data→(A)XRLDirect,A(Direct)+(A)→(Direct)XRLDirect,#data(Direct)+#data→(Direct)CLRA0→(A)CPLA(A)→(A)RLA循環(huán)左移,a7→a0,a6→a7,…a7→a0,RLCA帶進(jìn)位的循環(huán)左移,a7→CY,a6→a7,CY→a0RRA循環(huán)右移,a0→a7,a7→a6,…a0→a7,RRCA帶進(jìn)位的循環(huán)右移,a0→CY,a7→a6,…a0→CY,SWAPA累加器半字節(jié)互換指令,A3,0→A7,4,A7,4→A3,08051CPU核
--8051指令集(數(shù)據(jù)傳送指令)8051數(shù)據(jù)傳輸指令有三種類型:內(nèi)部數(shù)據(jù)、外部數(shù)據(jù)和查找表。
1)內(nèi)部數(shù)據(jù)傳輸指令該類型數(shù)據(jù)傳輸指令是在任何兩個(gè)內(nèi)部RAM或者SFR間實(shí)現(xiàn)數(shù)據(jù)傳輸;這些指令使用直接、間接、寄存器和立即數(shù)尋址。
2)外部數(shù)據(jù)傳輸指令-該類型傳輸指令是在累加器和外部地址空間實(shí)現(xiàn)數(shù)據(jù)傳輸數(shù)據(jù),這種傳輸只能使用MOVX指令。
3)查找表傳輸指令-只在累加器和程序存儲(chǔ)器之間實(shí)現(xiàn)數(shù)據(jù)傳輸,這種傳輸只能使用MOVC指令。8051CPU核
--8051指令集(數(shù)據(jù)傳送指令)指令功能MOVA,Rn(Rn)→(A)MOVA,Direct(Direct)→(A)MOVA,@Ri((Ri))→(A)MOVA,#data#data→(A)MOVRn,A(A)→(Rn)MOVRn,Direct(Direct)→(Rn)MOVRn,#data#data→(Rn)MOVDirect,A(A)→(Direct)MOVDirect,Rn(Rn)→(Direct)MOVDirect,Direct(Direct)→(Direct)MOVDirect,@Ri((Ri))→(Direct)MOVDirect,#data#data→(Direct)MOV@Ri,A(A)→((Ri))MOV@Ri,Direct(Direct)→((Ri))MOV@Ri,#data#data→((Ri))MOVDPTR,#data16#data→(DPTR)8051CPU核
--8051指令集(數(shù)據(jù)傳送指令)指令功能MOVCA,@A+DPTR((A+DPTR))→(A)A與程序存儲(chǔ)器的傳送指令MOVCA,@A+PC((A+PC))→(A)MOVXA,@Ri((Ri))→A
A與片外數(shù)據(jù)存儲(chǔ)器的傳送指令MOVXA,@DPTR((DPTR))→(A)MOVX@Ri,A(A)→((Ri))MOVX@DPTR,A(A)→((DPTR))PUSHDirect(Direct)→(SP),SP+1→SPPOPDirect(SP)→(Direct),SP-1→SPXCHA,Rn(A)→(Rn),(Rn)→(A)字節(jié)交換指令XCHA,Direct(Direct)→(A),(A)→(Direct)XCHA,@Ri((Ri))→(A),(A)→((Ri))XCHDA,@Ri((Ri))3,0→(A3,0),(A)3,0→((Ri))3,0半字節(jié)交換指令8051CPU核
--8051指令集(布爾指令)
8051核有獨(dú)立的位可尋址的存儲(chǔ)位置。它有128比特的位可尋址的RAM和SFR集。布爾指令集包括move,set,clear,toggle,OR,AND和有條件跳轉(zhuǎn)指令。8051CPU核
--8051指令集(布爾指令)指令功能CLRC0→(C)CLRbit0→(bit)SETBC1→(C)SETBbit1→(bit)CPLC(/C)→(C)CPLbit(/bit)→(bit)ANLC,bit(C)^(bit)→(C)ANLC,/bit(C)^(/bit)→(C)ORLC,bit(C)∨(bit)→(C)ORLC./bit(C)∨(/bit)→(C)MOVC,bit(bit)→(C)MOVbit,C(C)→(bit)8051CPU核
--8051指令集(布爾指令)指令功能JCrel(C)=1,程序轉(zhuǎn)向PC當(dāng)前值(PC+2)與第二字節(jié)中帶符號(hào)的相對(duì)地址rel之和的目標(biāo)地址JNCrel(C)=0,程序轉(zhuǎn)向PC當(dāng)前值(PC+2)與第二字節(jié)中帶符號(hào)的相對(duì)地址rel之和的目標(biāo)地址JBbit,rel(bit)=1,程序轉(zhuǎn)向PC當(dāng)前值(PC+2)與第二字節(jié)中帶符號(hào)的相對(duì)地址rel之和的目標(biāo)地址JNBbit,rel(bit)=0,程序轉(zhuǎn)向PC當(dāng)前值(PC+2)與第二字節(jié)中帶符號(hào)的相對(duì)地址rel之和的目標(biāo)地址JBCbit,rel(bit)=1,0→(bit),程序轉(zhuǎn)向PC當(dāng)前值(PC+2)與第二字節(jié)中帶符號(hào)的相對(duì)地址rel之和的目標(biāo)地址8051CPU核
--8051指令集(分支指令)8051支持有條件和無條件的分支指令,這些分支指令用于修改程序的執(zhí)行順序。指令功能ACALLaddr11絕對(duì)調(diào)用指令,(PC)+2→(PC),(PC)→(SP),(SP)+2→(SP)LCALLaddr16長(zhǎng)調(diào)用指令,(PC)+3→(PC),(PC)→(SP),(SP)+2→(SP)RET子程序返回指令,結(jié)束子程序,(SP)→(PC),(SP)-2→(SP)RETI中斷返回指令,結(jié)束中斷程序AJMPaddr11短轉(zhuǎn)移指令,addr11→(PC)LJMPaddr16長(zhǎng)轉(zhuǎn)移指令,addr16→(PC)SJMPrel相對(duì)轉(zhuǎn)移指令,(PC)+2+rel→(PC)JMP@A+DPTR間接轉(zhuǎn)移指令,(A)+(DPTR)→(PC)8051CPU核
--8051指令集(跳轉(zhuǎn)指令)指令功能JZrel(Z)=0,(PC)+rel→(PC)JNZrel(Z)=1,(PC)+rel→(PC)CJNEA,Direct,rel(A)≠(Direct),(PC)+rel→(PC)比較轉(zhuǎn)移指令CJNEA,#data,rel(A)≠#data,(PC)+rel→(PC)CJNERn,#data,rel(Rn)≠#data,(PC)+rel→(PC)CJNE@Ri,#data,rel((Ri))≠#data,(PC)+rel→(PC)DJNZRn,rel(Rn)-1→(Rn),(Rn)≠0,(PC)+rel→(PC)循環(huán)轉(zhuǎn)移指令DJNZDirect,rel(Direct)-1→(Direct),(Direct)≠0,(PC)+rel→(PC)NOP(PC)+1→(PC)Cortex-M3CPU核
--前言
PSoC5使用了ARM的Cortex-M3CPU核,該CPU是一個(gè)低功耗的32位的三級(jí)流水核,其性能為1.25DMIPS/MHz。該CPU核應(yīng)用于深層次的嵌入式應(yīng)用,該應(yīng)用要求更快的中斷處理能力。該CPU核子系統(tǒng)包含下面的特性:集成可嵌套向量中斷控制器(NestVectoredInterruptController,NVIC);集成全特性的調(diào)試和跟蹤模塊;最大256KB的Flash存儲(chǔ)器,2KB的EEPROM,64KB的SRAM;高速緩存Cache控制器;外設(shè)HUB(PHUB);DMA控制器;外部存儲(chǔ)器接口EMIF;Cortex-M3CPU核
--結(jié)構(gòu)圖Cortex-M3CPU核
--結(jié)構(gòu)特點(diǎn)Cortex-M3CPU的特性包括:1.4GB的尋址空間預(yù)定義的地址空間用于代碼,數(shù)據(jù)和外設(shè)。多個(gè)總線用于有效和同步的訪問代碼、數(shù)據(jù)和外設(shè)。2.Thumb-2指令集該指令集在Thumb級(jí)代碼密度上提供ARM級(jí)性能。其中包括16/32比特的指令。高級(jí)指令包括:位域控制;硬件乘法和除法;飽和;if-then;等待事件和中斷;專用的訪問和桶型;特殊寄存器訪問。Cortex-M3不支持ARM指令。Cortex-M3CPU核
--結(jié)構(gòu)特點(diǎn)3.位寬(Bit-band)支持原子的位級(jí)的寫和讀操作4.非對(duì)齊數(shù)據(jù)存儲(chǔ)和訪問支持不同字節(jié)長(zhǎng)度數(shù)據(jù)的連續(xù)存儲(chǔ)5.兩種權(quán)限級(jí)和兩種模式兩種權(quán)限包括特權(quán)級(jí)和用戶級(jí);兩種模式包括線程和句柄。一些指令只能在特權(quán)級(jí)上進(jìn)行執(zhí)行。存在兩個(gè)堆棧指針:主堆棧指針MSP和進(jìn)程堆棧指針PSP。這些特性支持運(yùn)行在一個(gè)或多個(gè)用戶級(jí)處理的多任務(wù)的操作系統(tǒng)。Cortex-M3CPU核
--Cortex-M3操作模式
Cortex-M3工作在特權(quán)級(jí)或者用戶級(jí)上,線程或句柄模式下。由于在特權(quán)模式下才有句柄模式,實(shí)際上CPU只有三種操作模式。條件特權(quán)級(jí)用戶級(jí)運(yùn)行一個(gè)異常句柄模式不使用運(yùn)行主程序線程模式線程模式Cortex-M3CPU核
--Cortex-M3操作模式在用戶級(jí)上,訪問某些指令、特殊寄存器、配置寄存器和調(diào)試元件被阻塞。如果試圖這樣做,將引起嚴(yán)重的錯(cuò)誤。在特權(quán)級(jí)上,允許訪問所有的指令和寄存器。當(dāng)處理一個(gè)異常時(shí),處理器運(yùn)行在句柄模式(總是在特權(quán)級(jí)上),否則運(yùn)行在線程模式。Cortex-M3CPU核
--Cortex-M3寄存器寄存器功能R0-R12通用寄存器R0-R12沒有特殊結(jié)構(gòu)定義的使用。大多數(shù)指令標(biāo)明使用寄存器用R0-R12標(biāo)識(shí)。低寄存器:所有標(biāo)明通用寄存器的指令均可訪問寄存器R0-R7高寄存器:所有標(biāo)明通用寄存器的32位指令均可訪問寄存器R8-R12;所有的16位指令均不能訪問高寄存器。R13R13為堆棧指針寄存器。它是一個(gè)分組(banked)的寄存器,它在兩個(gè)32位的堆棧指針MSP和PSP之間進(jìn)行切換。當(dāng)CPU在用戶級(jí)和線程模式下,使用PSP指針;在其它級(jí)和模式下,使用MSP。忽略SP的[0:1]位,被看作0,SP總是對(duì)其一個(gè)字(4個(gè)字節(jié))邊界。R14R14為連接寄存器(LinkRegister,LR),當(dāng)調(diào)用一個(gè)子程序時(shí),LR保存返回的地址。R15R15是程序寄存器。忽略PC的0位,被看作0,指令總是對(duì)齊半字(2個(gè)字節(jié))邊界。Cortex-M3CPU核
--Cortex-M3寄存器寄存器功能xPSR程序狀態(tài)寄存器被分成3個(gè)狀態(tài)寄存器,這些寄存器能一起訪問或單獨(dú)訪問。應(yīng)用程序狀態(tài)寄存器APSR的[27:31]位包含程序的狀態(tài)位,比如零、進(jìn)位、負(fù);中斷程序狀態(tài)寄存器IPSR的[0:8]位包含現(xiàn)在異常號(hào);執(zhí)行程序狀態(tài)寄存器EPSR的[10:15]包含可繼續(xù)中斷的控制位和[25:26]包含IF-THEN指令,第24位總是設(shè)置為1,用于指示在thumb模式下。試圖清除該位,將產(chǎn)生故障異常。PRIMASK
一位中斷屏蔽寄存器。當(dāng)設(shè)置時(shí),它只允許非屏蔽中斷NMI和硬件故障異常。所有其它異常和中斷都被屏蔽。FAULTMASK
一位中斷屏蔽寄存器。當(dāng)設(shè)置時(shí),只允許非屏蔽中斷NMI。所有其它異常和中斷都被屏蔽。Cortex-M3CPU核
--Cortex-M3寄存器寄存器功能BASEPRI
該寄存器最多9位,定義了屏蔽優(yōu)先級(jí)。當(dāng)設(shè)置時(shí),禁止所有相同或更高優(yōu)先級(jí)中斷。如果設(shè)置為0,禁止屏蔽功能。CONTROL
該寄存器有2位,用于控制操作模式。位0,=0表示在特權(quán)級(jí)的線程模式;=1表示用戶級(jí)線程模式。位1,=0默認(rèn)使用MSP,1=使用可替換的堆棧。如果在線程模式下或者用戶級(jí)下,可替換的堆棧為PSP。對(duì)于句柄模式,沒有可替換的堆棧;當(dāng)為句柄模式時(shí),該位必須為0。PSoC3/5CPU子系統(tǒng)
--Cache控制器結(jié)構(gòu)及功能
PSoC5在CPU和Flash存儲(chǔ)器之間添加了一個(gè)指令高速緩存Cache。這樣可以保證有較快的指令執(zhí)行速度。Cache也減少了對(duì)Flash的頻繁,這樣也降低了系統(tǒng)的功耗。Cache控制器的主要特點(diǎn)有:指令高速緩存;全關(guān)連,即任意的Flash地址能保存在Cache的任意位置;每行8個(gè)字,每個(gè)字有8個(gè)字節(jié)(每行64個(gè)字節(jié));PSoC3總共8行共512個(gè)字節(jié)的高速緩存,PSoC5總共有16行共1k字節(jié)的高速緩存;數(shù)據(jù)存儲(chǔ)使用單端口RAM,表明不能同時(shí)進(jìn)行讀寫操作;PSoC3為16位尋址;PSoC5為32位尋址;用于CPU和PHUBFlash讀接口的專用8個(gè)字節(jié)緩沖區(qū);PSoCCreator支持讀、寫、鎖定、無效,刷新和使能高速緩存。
PSoC3/5CPU子系統(tǒng)
--Cache控制器結(jié)構(gòu)及功能PSoC3/5CPU子系統(tǒng)
--Cache控制器結(jié)構(gòu)及功能
高速緩存的作用是用于緩存那些要訪問的指令,和從Flash中預(yù)取指令。高速緩存緩沖高速緩存存儲(chǔ)器的一部分,被稱為緩存行(CacheLine)。每個(gè)緩存行都有寄存器集(TAGs)描述現(xiàn)在緩存的內(nèi)容和映射的地址。處理器的請(qǐng)求存在或不在高速緩存中。如果CPU請(qǐng)求不在高速緩存中,則產(chǎn)生缺失(Miss)條件。
PSoC3/5CPU子系統(tǒng)
--Cache控制器結(jié)構(gòu)及功能
高速緩存控制器允許在CPU時(shí)鐘超過Flash訪問時(shí)間的時(shí)候,快速的訪問Flash存儲(chǔ)器。高速緩存塊只是用于緩存指令。它用于服務(wù)來自CPU的取指。將來自Flash的移行代碼保存到它的內(nèi)部緩沖區(qū),用于之后CPU快速的訪問。PSoC3/5CPU子系統(tǒng)
--Cache控制器結(jié)構(gòu)及功能
當(dāng)高速緩存滿時(shí),一個(gè)已經(jīng)存在于高速緩存的有效行必須從高速緩存中移出,這樣是為了給新的請(qǐng)求行留出空間。用于移出高速緩存行的是最久不用(LeastRecentlyUsed,LRU)算法。LRU保持訪問CacheLine的順序。取指產(chǎn)生命中(在緩存SRAM中找到數(shù)據(jù)),標(biāo)記該行是最近最常使用的(MostRecentlyUsed,MRU)(不考慮該行是否被鎖定)。鎖定行是指不能被高速緩存覆蓋的行。取指產(chǎn)生缺失(在CacheSRAM中沒有找到數(shù)據(jù)),然后選擇非鎖定行來進(jìn)行替換操作,將其標(biāo)記為MRU。PSoC3/5CPU子系統(tǒng)
--Cache控制器結(jié)構(gòu)及功能
通過控制寄存器CACHE_CR_CACHEABLE來使能或者禁止高速緩存。該位指明完成TAG更新和代碼保護(hù)的擁有者(ownership)。如果使能取指高速緩存,硬件將更新TAG,而用戶軟件不能對(duì)TAG進(jìn)行寫操作。當(dāng)禁止高速緩存時(shí),軟件才能訪問TAG和高速緩存SRAM。這樣可以允許軟件完全的訪問TAG和SRAM,而不會(huì)和硬件訪問產(chǎn)生競(jìng)爭(zhēng)。如果禁止高速緩存,硬件不對(duì)TAG進(jìn)行更新。PSoC3/5CPU子系統(tǒng)
--Cache控制器結(jié)構(gòu)及功能
軟件能直接加載指令到高速緩存中,并設(shè)置TAG以允許CPU從高速緩存加載指令(而不是從Flash)。每個(gè)緩存行能通過寫相應(yīng)的TAG寄存器來鎖定。下面給出其步驟:清除CACHE_CR_CACHEABLE來阻止在更新時(shí),引起寫CacheRAM的取指操作;清除CACHE_TAG[0..7],使一行或幾行無效;這將阻止在加載過程中。引起讀緩存行取指;用期望的指令寫高速緩存RAM的位置;更新相應(yīng)的CACHE_TAG寄存器位來標(biāo)記有效的和鎖定修改的行。設(shè)置CACHE_CR_CACHEABLE來重新激活由高速緩存缺失,而產(chǎn)生的寫高速緩存RAM。PSoC3/5CPU子系統(tǒng)
--DMA和PHUB結(jié)構(gòu)及功能
PHUB和DMA控制器用于在CPU和外設(shè)之間,以及外設(shè)之間進(jìn)行數(shù)據(jù)傳輸。在啟動(dòng)時(shí),PHUB和DMA也控制設(shè)備的配置。PHUB由下面構(gòu)成:中心hub包含DMA控制器、仲裁器和路由器router;多個(gè)訪問通道(spoke)由hub連接到大多數(shù)的外設(shè);PHUB由兩個(gè)主設(shè)備:CPU和DMA控制器。主設(shè)備可以初始化總線交易。DMA通道能在沒有CPU干預(yù)的情況下處理與外設(shè)的通訊。當(dāng)有多重請(qǐng)求時(shí),中心hub的仲裁器用于確定哪個(gè)DMA通道具有最高的優(yōu)先級(jí)。DMA和PHUB結(jié)構(gòu)及功能
--PHUB和DMA的功能
DMA和PHUB結(jié)構(gòu)及功能
--PHUB和DMA的功能
從圖中可以看到,PHUB外部有兩個(gè)本地存儲(chǔ)器空間:配置存儲(chǔ)器空間(ConfigurationMemory,CFGMEM),CFGMEM是通道配置存儲(chǔ)器用于保存每個(gè)記錄的信息。交易描述存儲(chǔ)器空間(TransactionDescriptionMemory,TDMEM),TDMEM保存用于通道的TD鏈,該通道用于向DMAC提供指令用于執(zhí)行該通道的DMA序列。DMA和PHUB結(jié)構(gòu)及功能
--PHUB和DMA的功能PHUB的特性主要包含以下幾個(gè)方面:CPU和DMA控制器都是PHUB的主設(shè)備;8個(gè)多層AHB總線并行訪問通道用于外設(shè)的訪問;同步CPU和DMA用于訪問在不同路徑spoke的外設(shè);同步的DMA源和目的用于不同訪問路徑的猝發(fā)式交易;支持8,16,24和32位的尋址和數(shù)據(jù);DMA和PHUB結(jié)構(gòu)及功能
--PHUB和DMA的功能PHUBSpokes外設(shè)0SRAM1IO,PICU,EMIF2PHUB本地配置,電源管理器,時(shí)鐘,IC,SWV,EEPROM,Flash編程接口3模擬接口和裁減,抽取器4USB,CAN,I2C,定時(shí)器,計(jì)數(shù)器和PWM5保留/DFB6UDB組17UDB組2
PHUB的訪問路徑和外設(shè)的對(duì)應(yīng)關(guān)系
DMA和PHUB結(jié)構(gòu)及功能
--PHUB和DMA的功能DMA特性主要包含以下幾個(gè)方面:24個(gè)DMA通道;每個(gè)通道有1個(gè)或多個(gè)交易描述符(TransactionDescriptors,TD)用于配置通道的行為。最大可以定義128個(gè)TD;TD能被動(dòng)態(tài)的更新;每個(gè)通道有8個(gè)優(yōu)先級(jí);任何一個(gè)可連接的數(shù)字信號(hào),CPU和DMA通道能觸發(fā)一個(gè)交易;每個(gè)通道在每次傳輸時(shí),最多可以產(chǎn)生兩個(gè)中斷;交易能被擱置或取消;支持無限或者1-64kB交易大小;TD能被嵌套和/或者鏈接用于復(fù)雜的交易;DMA和PHUB結(jié)構(gòu)及功能
--DMA優(yōu)先級(jí)及交易類型
當(dāng)CPU和DMA控制器的訪問需要相同的總線資源時(shí),CPU比DMA控制器的優(yōu)先級(jí)高但是由于系統(tǒng)結(jié)構(gòu),CPU不能“餓死”DMA控制器(即DMA控制器不會(huì)總是得不到響應(yīng))。高優(yōu)先級(jí)的DMA通過能打斷當(dāng)前的DMA傳輸。在中斷的情況下,允許先完成當(dāng)前的數(shù)據(jù)傳輸交易。為了保證當(dāng)多個(gè)DMA同步訪問時(shí)的時(shí)延限制,一個(gè)公平算法用于保證優(yōu)先級(jí)為2-7的DMA交易有交織的最小的總線帶寬百分比。優(yōu)先級(jí)0-1的DMA交易不使用公平算法,可以使用100%的總線帶寬。當(dāng)有相同優(yōu)先級(jí)的DMA訪問有沖突時(shí),一個(gè)被使用的簡(jiǎn)單循環(huán)算法用于最后共享總線帶寬。DMA和PHUB結(jié)構(gòu)及功能
--DMA優(yōu)先級(jí)及交易類型表給出了所保證的優(yōu)先級(jí)為0-7的總線帶寬。當(dāng)不使用公平算法時(shí),DMA訪問僅取決于優(yōu)先級(jí),不保證總線帶寬。優(yōu)先級(jí)總線帶寬百分比%0100.01100.0250.0325.0412.556.263.171.5DMA和PHUB結(jié)構(gòu)及功能
--DMA優(yōu)先級(jí)及交易類型
每個(gè)DMA通道的靈活配置和多個(gè)通道的鏈接允許創(chuàng)建簡(jiǎn)單和復(fù)雜的應(yīng)用。下面給出了通常使用的DMA交易方式:1.簡(jiǎn)單DMA
在簡(jiǎn)單DMA模式下,一個(gè)單TD在源和“池”(外設(shè)或存儲(chǔ)器位置)進(jìn)行數(shù)據(jù)傳輸。DMA和PHUB結(jié)構(gòu)及功能
--DMA優(yōu)先級(jí)及交易類型2.自動(dòng)重復(fù)DMA
當(dāng)重復(fù)的讀取系統(tǒng)存儲(chǔ)器和寫外設(shè)時(shí),使用這種模式。將單個(gè)TD鏈接在一起時(shí),可以實(shí)現(xiàn)這種模式。3.“乒乓”DMA
這種模式用于下面的這種情況,即一個(gè)客戶端填充緩沖區(qū),另一個(gè)客戶端讀取在另一個(gè)緩沖區(qū)接收到的數(shù)據(jù)。最簡(jiǎn)單的一種形式是,將兩個(gè)TD鏈接在一起,當(dāng)任務(wù)完成時(shí),兩個(gè)TD可以互相進(jìn)行調(diào)用。4.循環(huán)DMA
循環(huán)DMA和“兵乓”DMA類似,只不過是它的緩沖區(qū)多于兩個(gè)。這種模式有多個(gè)TD,當(dāng)最后一個(gè)TD完成后,又返回第一個(gè)TD。DMA和PHUB結(jié)構(gòu)及功能
--DMA優(yōu)先級(jí)及交易類型5.分散聚集DMA
在這種模式下,存在多個(gè)不連續(xù)的源或目的,它們要求高效的執(zhí)行整個(gè)DMA交易。比如:向設(shè)備發(fā)送一個(gè)保存在不同存儲(chǔ)區(qū)域的數(shù)據(jù)包,數(shù)據(jù)包包含:頭部、數(shù)據(jù)和尾部。分散聚集DMA允許使用鏈上的多個(gè)TD將這些數(shù)據(jù)片斷集中在一起。比如:設(shè)備接收到數(shù)據(jù),這些數(shù)據(jù)需要放在不同的存儲(chǔ)空間上以方便軟件的處理。鏈上的每個(gè)TD用于說明每個(gè)離散部分的位置。DMA和PHUB結(jié)構(gòu)及功能
--DMA優(yōu)先級(jí)及交易類型6.分組排隊(duì)DMA
該模式和分散聚集DMA模式類似,但是專指分組協(xié)議。通過這些協(xié)議,將與發(fā)送和接收數(shù)據(jù)相關(guān)的配置、數(shù)據(jù)和狀態(tài)周期分割。比如:發(fā)送一個(gè)分組,在外設(shè)內(nèi)寫存儲(chǔ)器映射的配置寄存器,用于說明隨后數(shù)據(jù)周期的傳輸長(zhǎng)度。然后CPU在系統(tǒng)存儲(chǔ)器的任意位置來設(shè)置這個(gè)配置信息,并將其和TD一起復(fù)制到外設(shè)中。在配置周期后,開始數(shù)據(jù)周期TD。當(dāng)數(shù)據(jù)周期結(jié)束后,調(diào)用狀態(tài)周期TD用于從外設(shè)讀取一些存儲(chǔ)器映射的狀態(tài)信息。多個(gè)配置,數(shù)據(jù)和狀態(tài)周期集“子鏈”能被串在一起來建立一個(gè)更大的鏈,用于以這種方式發(fā)送多個(gè)分組。DMA和PHUB結(jié)構(gòu)及功能
--DMA優(yōu)先級(jí)及交易類型7.嵌套DMA
當(dāng)存儲(chǔ)器映射的TD配置空間和其他外設(shè)相似時(shí),一個(gè)TD可以修改另一個(gè)TD。比如,第一個(gè)TD加載第二個(gè)TD的配置信息,然后調(diào)用第二個(gè)TD。第二個(gè)TD根據(jù)應(yīng)用程序的要求搬移數(shù)據(jù)。當(dāng)?shù)诙€(gè)TD完成后,第二個(gè)TD調(diào)用第一個(gè)TD,然后重新更新第二個(gè)TD的配置信息。中斷控制器結(jié)構(gòu)及功能
--中斷控制器結(jié)構(gòu)原理
中斷源包含:固定功能模塊、DMA通道和UDB模塊。
中斷控制器的塊圖結(jié)構(gòu)中斷控制器結(jié)構(gòu)及功能
--中斷控制器結(jié)構(gòu)原理IDMUX的中斷處理過程中斷控制器結(jié)構(gòu)及功能
--中斷優(yōu)先級(jí)
中斷控制器提供了中斷優(yōu)先級(jí)處理的能力來幫助為每個(gè)中斷分配不同的優(yōu)先級(jí)。下面分析不同優(yōu)先級(jí)的處理:中斷控制器結(jié)構(gòu)及功能
--中斷優(yōu)先級(jí)
1.如果一個(gè)中斷INTB被確認(rèn),而另一個(gè)中斷INTA正在執(zhí)行,這里有三種可能性用于處理這種情況:
1)如果INTA的優(yōu)先級(jí)比INTB低,則:INTA在執(zhí)行點(diǎn)上停下來;INTA的現(xiàn)場(chǎng)入棧,開始執(zhí)行INTB;執(zhí)行完INTB后,INTA繼續(xù)從剛才中斷的點(diǎn)上繼續(xù)執(zhí)行;中斷控制器結(jié)構(gòu)及功能
--中斷優(yōu)先級(jí)2)如果INTA的優(yōu)先級(jí)比INTB高,則:INTB將等待INTA執(zhí)行完畢;當(dāng)INTA執(zhí)行完后,INTB開始執(zhí)行;3)如果INTA和INTB有相同的優(yōu)先級(jí),則:如果INTA正在執(zhí)行,則INTB等待INTA執(zhí)行完。當(dāng)INTA執(zhí)行完后,INTB開始執(zhí)行;如果INTB正在執(zhí)行,則INTA等待INTB執(zhí)行完。當(dāng)INTB執(zhí)行完后,INTA開始執(zhí)行。中斷控制器結(jié)構(gòu)及功能
--中斷優(yōu)先級(jí)2.同時(shí)產(chǎn)生中斷
1)如果INTA優(yōu)先級(jí)低于INTB,則INTB獲得仲裁權(quán),開始執(zhí)行;
2)如果INTA優(yōu)先級(jí)高于INTB,則INTA獲得仲裁權(quán),開始執(zhí)行;
3)如果INTA和INTB有相同的優(yōu)先級(jí),則具有低索引值的中斷獲得仲裁權(quán),開始執(zhí)行。中斷控制器結(jié)構(gòu)及功能
--中斷的執(zhí)行
中斷控制器用于中斷信號(hào)的確認(rèn)和處理。下面給出其具體步驟:1)確認(rèn)中斷線;2)設(shè)置Pending位,表示中斷正在等待執(zhí)行;3)優(yōu)先級(jí)解碼單元確認(rèn),中斷執(zhí)行的時(shí)間;4)中斷控制器向CPU發(fā)送中斷請(qǐng)求信號(hào)和用于執(zhí)行中斷程序的中斷向量地址;5)CPU接收到請(qǐng)求;6)中斷入口-CPU響應(yīng)中斷入口。中斷控制器清除pending位。7)當(dāng)前的中斷號(hào)和優(yōu)先級(jí)通過中斷控制器,進(jìn)入中斷控制器堆棧;8)中斷退出-當(dāng)中斷執(zhí)行完成后,CPU空閑出來尋找下一個(gè)請(qǐng)求。CPU響應(yīng)中斷退出,中斷上下文(比如:中斷號(hào)和優(yōu)先級(jí))從堆棧彈出。中斷控制器結(jié)構(gòu)及功能
--PSoC3中斷控制器
中斷控制器提供了一種機(jī)制,使得在不需要考慮目前主程序所執(zhí)行的任務(wù)的情況下,就可以在新的地址執(zhí)行程序。中斷控制器提供了比傳統(tǒng)8051中斷控制器更多的性能,這些性能主要包括:32個(gè)中斷向量;使用動(dòng)態(tài)的向量地址直接跳轉(zhuǎn)到代碼空間的中斷服務(wù)程序ISR;每個(gè)向量有多個(gè)源;靈活的中斷到向量的匹配;中斷控制器結(jié)構(gòu)及功能
--PSoC3中斷控制器每個(gè)中斷向量有獨(dú)立的使能和禁止;每個(gè)中斷能動(dòng)態(tài)的分配8個(gè)優(yōu)先級(jí)中的一個(gè);8級(jí)的嵌套中斷;多重I/O中斷向量;軟件能發(fā)送中斷;軟件能清除尚未相應(yīng)的中斷中斷控制器結(jié)構(gòu)及功能
--PSoC3中斷控制器
當(dāng)一個(gè)中斷還未響應(yīng)時(shí),執(zhí)行完當(dāng)前的指令,程序計(jì)數(shù)器被壓棧。代碼然后跳轉(zhuǎn)到由中斷向量所提供的地址。當(dāng)ISR結(jié)束后,執(zhí)行RETI指令,將剛才壓棧的PC出棧,然后返回到剛才完成指令的下一條指令繼續(xù)執(zhí)行。中斷控制器結(jié)構(gòu)及功能
--PSoC3中斷控制器
如果給多個(gè)中斷分配了相同的優(yōu)先級(jí),那么先執(zhí)行較低優(yōu)先級(jí)的程序。每個(gè)中斷向量可以選擇三個(gè)中斷源:固定功能、DMA和UDB:固定功能中斷直接連接到普通的中斷源,并且提供了最低的資源連接消耗。DMA中斷源直接連接到每個(gè)DMA通道的兩個(gè)DMA中斷源。UDB中斷源來自UDB數(shù)字連線陣列。這樣允許UDB陣列中可用的任何數(shù)字信號(hào)作為中斷源。通過使用UDB中斷源連接,固定功能中斷和所有的中斷源能被布線到任何中斷向量。中斷控制器結(jié)構(gòu)及功能
--PSoC3中斷控制器#固定功能DMAUDB0LVDphub_termout0[0]udb_intr[0]1ECCphub_termout0[1]udb_intr[1]2Reservedphub_termout0[2]udb_intr[2]3Sleep(PwrMgr)phub_termout0[3]udb_intr[3]4PICU[0]phub_termout0[4]udb_intr[4]5PICU[1]phub_termout0[5]udb_intr[5]6PICU[2]phub_termout0[6]udb_intr[6]7PICU[3]phub_termout0[7]udb_intr[7]8PICU[4]phub_termout0[8]udb_intr[8]9PICU[5]phub_termout0[9]udb_intr[9]10PICU[6]phub_termout0[10]udb_intr[10]中斷控制器結(jié)構(gòu)及功能
--PSoC3中斷控制器#固定功能DMAUDB11PICU[12]phub_termout0[11]udb_intr[11]12PICU[15]phub_termout0[12]udb_intr[12]13ComparatorsCombinedphub_termout0[13]udb_intr[13]14Reserved/SwitchedCapsCombinedphub_termout0[14]udb_intr[14]15I2Cphub_termout0[15]udb_intr[15]16Reserved/CANphub_termout1[0]udb_intr[16]17Timer/Counter0phub_termout1[1]udb_intr[17]18Timer/Counter1phub_termout1[2]udb_intr[18]19Timer/Counter2phub_termout1[3]udb_intr[19]20Timer/Counter3phub_termout1[4]udb_intr[20]中斷控制器結(jié)構(gòu)及功能
--PSoC3中斷控制器#固定功能DMAUDB21USBSOFIntphub_termout1[5]udb_intr[21]22USBArbIntphub_termout1[6]udb_intr[22]23USBBusIntphub_termout1[7]udb_intr[23]24USBEndpoint[0]phub_termout1[8]udb_intr[24]25USBEndpointDataphub_termout1[9]udb_intr[25]26Reservedphub_termout1[10]udb_intr[26]27Reservedphub_termout1[11]udb_intr[27]28Reserved/DFBINTphub_termout1[12]udb_intr[28]29DecimatorIntphub_termout1[13]udb_intr[29]30PHUBErrorIntphub_termout1[14]udb_intr[30]31EEPROMFaultIntphub_termout0[15]udb_intr[31]中斷控制器結(jié)構(gòu)及功能
--PSoC5中斷控制器Cortex-M3NVIC支持16個(gè)系統(tǒng)異常和來自外設(shè)的32個(gè)中斷。異常號(hào)碼異常類型優(yōu)先級(jí)異常表地址偏移量功能0x00開始R13/MSP值1Reset-3(最高)0x04復(fù)位2NMI-20x08非屏蔽中斷3硬件故障-10x0C所有故障類,當(dāng)相對(duì)應(yīng)的故障句柄由于目前被禁止或屏蔽,而不能被激活。4存儲(chǔ)器管理故障可編程0x10存儲(chǔ)器管理故障,比如,從非執(zhí)行區(qū)加載指令。中斷控制器結(jié)構(gòu)及功能
--PSoC5中斷控制器5總線故障可編程0x14來自總線系統(tǒng)的錯(cuò)誤相應(yīng),由于放棄預(yù)取指令或者數(shù)據(jù)訪問錯(cuò)誤。6使用故障可編程0x18由于非法指令或者試圖切換到ARM模式時(shí),引起該故障。7-10-0x1C-0x28保留11系統(tǒng)服務(wù)調(diào)用SVC可編程0x2C通過SVC指令的系統(tǒng)服務(wù)調(diào)用。12調(diào)試監(jiān)控器可編程0x30調(diào)試監(jiān)控器中斷控制器結(jié)構(gòu)及功能
--PSoC5中斷控制器13-0x34保留14系統(tǒng)服務(wù)請(qǐng)求推遲可編程0x38系統(tǒng)服務(wù)請(qǐng)求推遲15系統(tǒng)滴答定時(shí)器可編程0x3C系統(tǒng)滴答定時(shí)器16-47外設(shè)中斷請(qǐng)求0-31可編程0x40-0x3FC外設(shè)中斷請(qǐng)求中斷控制器結(jié)構(gòu)及功能
--PSoC5中斷控制器
系統(tǒng)的NMI中斷輸入能通過DSI連接到任意引腳,或者不連接。NVIC處理來自外設(shè)的中斷,并將中斷向量發(fā)送給CPU。
NVIC和CPU緊密集成在一起,這樣是為了低延遲的中斷處理。其特征主要包含以下幾個(gè)方面:32個(gè)中斷,每個(gè)中斷有多個(gè)中斷源;可配置的中斷優(yōu)先級(jí):3-8;動(dòng)態(tài)重新安排中斷的優(yōu)先級(jí);優(yōu)先級(jí)分組。這可以選擇搶先或非搶先優(yōu)先級(jí);支持中斷尾鏈和遲到。這樣允許背對(duì)背的中斷處理,而沒有中斷狀態(tài)保存和恢復(fù)的額外開銷;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度第二章國(guó)際貨物買賣合同標(biāo)的檢驗(yàn)與認(rèn)證3篇
- 二零二五年度雕塑項(xiàng)目投標(biāo)采購合同范本3篇
- 2025年度旅游景區(qū)導(dǎo)游旅游紀(jì)念品銷售合作合同4篇
- 二零二五版駕校教練員績(jī)效考核及激勵(lì)合同3篇
- 2025年度餐廳總經(jīng)理數(shù)字化運(yùn)營(yíng)管理合同3篇
- 二零二五年度深部礦產(chǎn)資源勘查開采權(quán)轉(zhuǎn)讓合同2篇
- 二零二四事業(yè)單位借調(diào)人員臨時(shí)工作期間勞動(dòng)合同解除流程3篇
- 2024-2025學(xué)年高中政治第一單元文化與生活第一課第一框體味文化訓(xùn)練含解析新人教版必修3
- 二零二五版能源效率認(rèn)證EMC合同能源管理合作協(xié)議3篇
- 二零二四年度專業(yè)演出服務(wù)合同-舞臺(tái)劇制作合作協(xié)議3篇
- 帶狀皰疹護(hù)理查房課件整理
- 年月江西省南昌市某綜合樓工程造價(jià)指標(biāo)及
- 奧氏體型不銹鋼-敏化處理
- 作物栽培學(xué)課件棉花
- 交通信號(hào)控制系統(tǒng)檢驗(yàn)批質(zhì)量驗(yàn)收記錄表
- 弱電施工驗(yàn)收表模板
- 絕對(duì)成交課件
- 探究基坑PC工法組合鋼管樁關(guān)鍵施工技術(shù)
- 國(guó)名、語言、人民、首都英文-及各地區(qū)國(guó)家英文名
- API SPEC 5DP-2020鉆桿規(guī)范
- 組合式塔吊基礎(chǔ)施工專項(xiàng)方案(117頁)
評(píng)論
0/150
提交評(píng)論