版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
第2章PSoC3/5CPU子系統(tǒng)
Chapter2CPUSub-SystemofPSoC3/5第2章PSoC3/5CPU子系統(tǒng)
--前言
本章詳細介紹了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)容的學習,讀者將系統(tǒng)學習8051和Cortex-M3CPU核的結(jié)構(gòu)原理和簡單的接口功能,為基于PSoC3/5的設計和調(diào)試打下堅實基礎。8051CPU核
--8051內(nèi)部結(jié)構(gòu)
PSoC3使用單周期的8051核,與MCS-51指令集兼容,使用了一個流水的RISC結(jié)構(gòu),使用1-2個時鐘周期來執(zhí)行大多數(shù)的指令,峰值處理能力為24MIPS。單周期的8051核比標準的8051處理器快幾十倍。8051CPU核
--8051內(nèi)部結(jié)構(gòu)其特性主要包括:單周期的8051CPU;最大64kB的Flash,2kB的EEPROM,8kB的SRAM;可編程和嵌套向量中斷控制器;直接存儲器訪問(DirectMemoryAccess,DMA)控制器;外設HUB(PHUB);外部存儲器接口(ExternalMemoryInterface,EMIF);8051CPU核
--8051尋址模式8051CPU支持下面的尋址模式:
1.直接尋址:操作數(shù)由一個直接8位地址域指定。當使用這種模式時,只能訪問內(nèi)部RAM和特殊功能寄存器(SpecialFunctionRegister,SFR)。比如指令:MOVA,3AH,將片內(nèi)RAM中3AH單元中的數(shù)據(jù)送給累加器A。8051CPU核
--8051尋址模式2.間接尋址:指令指定一個寄存器,該寄存器包含操作數(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寄存器中的一個。由于這些指令不需要地址域,因此這些指令訪問效率更高。比如指令:INCR0,將寄存器R0的內(nèi)容加1,再送回R0。8051CPU核
--8051尋址模式4.寄存器指定指令尋址:一些指令指向某個寄存器。比如,一些指令總是在累加器上工作。在這種情況下就不需要操作數(shù)。比如:CLRA,將累加器A清除。
8051CPU核
--8051尋址模式5.索引尋址:這種類型的尋址只能用來訪問程序存儲器。這種模式使用數(shù)據(jù)指針作為基地址,累加器值作為偏移地址來讀取程序存儲器。比如指令:MOVA,@A+DTTR,將DPTR和A的內(nèi)容相加所得到的程序存儲器地址單元的內(nèi)容送A。8051CPU核
--8051尋址模式6.立即數(shù)尋址:一些指令直接加載常數(shù)的值,而不是地址。比如指令:MOVA,#3AH,將8位的立即數(shù)3A送給累加器。8051CPU核
--8051尋址模式7.位尋址:在這種模式下,操作數(shù)時256比特中的某一位。比如指令:MOVC,2BH,把位尋址區(qū)的2BH位狀態(tài)送累加位C。8051CPU核
--8051指令集
8051的指令集包括:算術(shù)運算指令;邏輯指令;數(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對BCD加法結(jié)果進行調(diào)整8051CPU核
--8051指令集(邏輯指令)
邏輯指令執(zhí)行布爾操作,比如AND,OR,XOR操作,對累加器內(nèi)容進行旋轉(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帶進位的循環(huán)左移,a7→CY,a6→a7,CY→a0RRA循環(huán)右移,a0→a7,a7→a6,…a0→a7,RRCA帶進位的循環(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ù)傳輸指令是在任何兩個內(nèi)部RAM或者SFR間實現(xiàn)數(shù)據(jù)傳輸;這些指令使用直接、間接、寄存器和立即數(shù)尋址。
2)外部數(shù)據(jù)傳輸指令-該類型傳輸指令是在累加器和外部地址空間實現(xiàn)數(shù)據(jù)傳輸數(shù)據(jù),這種傳輸只能使用MOVX指令。
3)查找表傳輸指令-只在累加器和程序存儲器之間實現(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與程序存儲器的傳送指令MOVCA,@A+PC((A+PC))→(A)MOVXA,@Ri((Ri))→A
A與片外數(shù)據(jù)存儲器的傳送指令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核有獨立的位可尋址的存儲位置。它有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當前值(PC+2)與第二字節(jié)中帶符號的相對地址rel之和的目標地址JNCrel(C)=0,程序轉(zhuǎn)向PC當前值(PC+2)與第二字節(jié)中帶符號的相對地址rel之和的目標地址JBbit,rel(bit)=1,程序轉(zhuǎn)向PC當前值(PC+2)與第二字節(jié)中帶符號的相對地址rel之和的目標地址JNBbit,rel(bit)=0,程序轉(zhuǎn)向PC當前值(PC+2)與第二字節(jié)中帶符號的相對地址rel之和的目標地址JBCbit,rel(bit)=1,0→(bit),程序轉(zhuǎn)向PC當前值(PC+2)與第二字節(jié)中帶符號的相對地址rel之和的目標地址8051CPU核
--8051指令集(分支指令)8051支持有條件和無條件的分支指令,這些分支指令用于修改程序的執(zhí)行順序。指令功能ACALLaddr11絕對調(diào)用指令,(PC)+2→(PC),(PC)→(SP),(SP)+2→(SP)LCALLaddr16長調(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長轉(zhuǎn)移指令,addr16→(PC)SJMPrel相對轉(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是一個低功耗的32位的三級流水核,其性能為1.25DMIPS/MHz。該CPU核應用于深層次的嵌入式應用,該應用要求更快的中斷處理能力。該CPU核子系統(tǒng)包含下面的特性:集成可嵌套向量中斷控制器(NestVectoredInterruptController,NVIC);集成全特性的調(diào)試和跟蹤模塊;最大256KB的Flash存儲器,2KB的EEPROM,64KB的SRAM;高速緩存Cache控制器;外設HUB(PHUB);DMA控制器;外部存儲器接口EMIF;Cortex-M3CPU核
--結(jié)構(gòu)圖Cortex-M3CPU核
--結(jié)構(gòu)特點Cortex-M3CPU的特性包括:1.4GB的尋址空間預定義的地址空間用于代碼,數(shù)據(jù)和外設。多個總線用于有效和同步的訪問代碼、數(shù)據(jù)和外設。2.Thumb-2指令集該指令集在Thumb級代碼密度上提供ARM級性能。其中包括16/32比特的指令。高級指令包括:位域控制;硬件乘法和除法;飽和;if-then;等待事件和中斷;專用的訪問和桶型;特殊寄存器訪問。Cortex-M3不支持ARM指令。Cortex-M3CPU核
--結(jié)構(gòu)特點3.位寬(Bit-band)支持原子的位級的寫和讀操作4.非對齊數(shù)據(jù)存儲和訪問支持不同字節(jié)長度數(shù)據(jù)的連續(xù)存儲5.兩種權(quán)限級和兩種模式兩種權(quán)限包括特權(quán)級和用戶級;兩種模式包括線程和句柄。一些指令只能在特權(quán)級上進行執(zhí)行。存在兩個堆棧指針:主堆棧指針MSP和進程堆棧指針PSP。這些特性支持運行在一個或多個用戶級處理的多任務的操作系統(tǒng)。Cortex-M3CPU核
--Cortex-M3操作模式
Cortex-M3工作在特權(quán)級或者用戶級上,線程或句柄模式下。由于在特權(quán)模式下才有句柄模式,實際上CPU只有三種操作模式。條件特權(quán)級用戶級運行一個異常句柄模式不使用運行主程序線程模式線程模式Cortex-M3CPU核
--Cortex-M3操作模式在用戶級上,訪問某些指令、特殊寄存器、配置寄存器和調(diào)試元件被阻塞。如果試圖這樣做,將引起嚴重的錯誤。在特權(quán)級上,允許訪問所有的指令和寄存器。當處理一個異常時,處理器運行在句柄模式(總是在特權(quán)級上),否則運行在線程模式。Cortex-M3CPU核
--Cortex-M3寄存器寄存器功能R0-R12通用寄存器R0-R12沒有特殊結(jié)構(gòu)定義的使用。大多數(shù)指令標明使用寄存器用R0-R12標識。低寄存器:所有標明通用寄存器的指令均可訪問寄存器R0-R7高寄存器:所有標明通用寄存器的32位指令均可訪問寄存器R8-R12;所有的16位指令均不能訪問高寄存器。R13R13為堆棧指針寄存器。它是一個分組(banked)的寄存器,它在兩個32位的堆棧指針MSP和PSP之間進行切換。當CPU在用戶級和線程模式下,使用PSP指針;在其它級和模式下,使用MSP。忽略SP的[0:1]位,被看作0,SP總是對其一個字(4個字節(jié))邊界。R14R14為連接寄存器(LinkRegister,LR),當調(diào)用一個子程序時,LR保存返回的地址。R15R15是程序寄存器。忽略PC的0位,被看作0,指令總是對齊半字(2個字節(jié))邊界。Cortex-M3CPU核
--Cortex-M3寄存器寄存器功能xPSR程序狀態(tài)寄存器被分成3個狀態(tài)寄存器,這些寄存器能一起訪問或單獨訪問。應用程序狀態(tài)寄存器APSR的[27:31]位包含程序的狀態(tài)位,比如零、進位、負;中斷程序狀態(tài)寄存器IPSR的[0:8]位包含現(xiàn)在異常號;執(zhí)行程序狀態(tài)寄存器EPSR的[10:15]包含可繼續(xù)中斷的控制位和[25:26]包含IF-THEN指令,第24位總是設置為1,用于指示在thumb模式下。試圖清除該位,將產(chǎn)生故障異常。PRIMASK
一位中斷屏蔽寄存器。當設置時,它只允許非屏蔽中斷NMI和硬件故障異常。所有其它異常和中斷都被屏蔽。FAULTMASK
一位中斷屏蔽寄存器。當設置時,只允許非屏蔽中斷NMI。所有其它異常和中斷都被屏蔽。Cortex-M3CPU核
--Cortex-M3寄存器寄存器功能BASEPRI
該寄存器最多9位,定義了屏蔽優(yōu)先級。當設置時,禁止所有相同或更高優(yōu)先級中斷。如果設置為0,禁止屏蔽功能。CONTROL
該寄存器有2位,用于控制操作模式。位0,=0表示在特權(quán)級的線程模式;=1表示用戶級線程模式。位1,=0默認使用MSP,1=使用可替換的堆棧。如果在線程模式下或者用戶級下,可替換的堆棧為PSP。對于句柄模式,沒有可替換的堆棧;當為句柄模式時,該位必須為0。PSoC3/5CPU子系統(tǒng)
--Cache控制器結(jié)構(gòu)及功能
PSoC5在CPU和Flash存儲器之間添加了一個指令高速緩存Cache。這樣可以保證有較快的指令執(zhí)行速度。Cache也減少了對Flash的頻繁,這樣也降低了系統(tǒng)的功耗。Cache控制器的主要特點有:指令高速緩存;全關(guān)連,即任意的Flash地址能保存在Cache的任意位置;每行8個字,每個字有8個字節(jié)(每行64個字節(jié));PSoC3總共8行共512個字節(jié)的高速緩存,PSoC5總共有16行共1k字節(jié)的高速緩存;數(shù)據(jù)存儲使用單端口RAM,表明不能同時進行讀寫操作;PSoC3為16位尋址;PSoC5為32位尋址;用于CPU和PHUBFlash讀接口的專用8個字節(jié)緩沖區(qū);PSoCCreator支持讀、寫、鎖定、無效,刷新和使能高速緩存。
PSoC3/5CPU子系統(tǒng)
--Cache控制器結(jié)構(gòu)及功能PSoC3/5CPU子系統(tǒng)
--Cache控制器結(jié)構(gòu)及功能
高速緩存的作用是用于緩存那些要訪問的指令,和從Flash中預取指令。高速緩存緩沖高速緩存存儲器的一部分,被稱為緩存行(CacheLine)。每個緩存行都有寄存器集(TAGs)描述現(xiàn)在緩存的內(nèi)容和映射的地址。處理器的請求存在或不在高速緩存中。如果CPU請求不在高速緩存中,則產(chǎn)生缺失(Miss)條件。
PSoC3/5CPU子系統(tǒng)
--Cache控制器結(jié)構(gòu)及功能
高速緩存控制器允許在CPU時鐘超過Flash訪問時間的時候,快速的訪問Flash存儲器。高速緩存塊只是用于緩存指令。它用于服務來自CPU的取指。將來自Flash的移行代碼保存到它的內(nèi)部緩沖區(qū),用于之后CPU快速的訪問。PSoC3/5CPU子系統(tǒng)
--Cache控制器結(jié)構(gòu)及功能
當高速緩存滿時,一個已經(jīng)存在于高速緩存的有效行必須從高速緩存中移出,這樣是為了給新的請求行留出空間。用于移出高速緩存行的是最久不用(LeastRecentlyUsed,LRU)算法。LRU保持訪問CacheLine的順序。取指產(chǎn)生命中(在緩存SRAM中找到數(shù)據(jù)),標記該行是最近最常使用的(MostRecentlyUsed,MRU)(不考慮該行是否被鎖定)。鎖定行是指不能被高速緩存覆蓋的行。取指產(chǎn)生缺失(在CacheSRAM中沒有找到數(shù)據(jù)),然后選擇非鎖定行來進行替換操作,將其標記為MRU。PSoC3/5CPU子系統(tǒng)
--Cache控制器結(jié)構(gòu)及功能
通過控制寄存器CACHE_CR_CACHEABLE來使能或者禁止高速緩存。該位指明完成TAG更新和代碼保護的擁有者(ownership)。如果使能取指高速緩存,硬件將更新TAG,而用戶軟件不能對TAG進行寫操作。當禁止高速緩存時,軟件才能訪問TAG和高速緩存SRAM。這樣可以允許軟件完全的訪問TAG和SRAM,而不會和硬件訪問產(chǎn)生競爭。如果禁止高速緩存,硬件不對TAG進行更新。PSoC3/5CPU子系統(tǒng)
--Cache控制器結(jié)構(gòu)及功能
軟件能直接加載指令到高速緩存中,并設置TAG以允許CPU從高速緩存加載指令(而不是從Flash)。每個緩存行能通過寫相應的TAG寄存器來鎖定。下面給出其步驟:清除CACHE_CR_CACHEABLE來阻止在更新時,引起寫CacheRAM的取指操作;清除CACHE_TAG[0..7],使一行或幾行無效;這將阻止在加載過程中。引起讀緩存行取指;用期望的指令寫高速緩存RAM的位置;更新相應的CACHE_TAG寄存器位來標記有效的和鎖定修改的行。設置CACHE_CR_CACHEABLE來重新激活由高速緩存缺失,而產(chǎn)生的寫高速緩存RAM。PSoC3/5CPU子系統(tǒng)
--DMA和PHUB結(jié)構(gòu)及功能
PHUB和DMA控制器用于在CPU和外設之間,以及外設之間進行數(shù)據(jù)傳輸。在啟動時,PHUB和DMA也控制設備的配置。PHUB由下面構(gòu)成:中心hub包含DMA控制器、仲裁器和路由器router;多個訪問通道(spoke)由hub連接到大多數(shù)的外設;PHUB由兩個主設備:CPU和DMA控制器。主設備可以初始化總線交易。DMA通道能在沒有CPU干預的情況下處理與外設的通訊。當有多重請求時,中心hub的仲裁器用于確定哪個DMA通道具有最高的優(yōu)先級。DMA和PHUB結(jié)構(gòu)及功能
--PHUB和DMA的功能
DMA和PHUB結(jié)構(gòu)及功能
--PHUB和DMA的功能
從圖中可以看到,PHUB外部有兩個本地存儲器空間:配置存儲器空間(ConfigurationMemory,CFGMEM),CFGMEM是通道配置存儲器用于保存每個記錄的信息。交易描述存儲器空間(TransactionDescriptionMemory,TDMEM),TDMEM保存用于通道的TD鏈,該通道用于向DMAC提供指令用于執(zhí)行該通道的DMA序列。DMA和PHUB結(jié)構(gòu)及功能
--PHUB和DMA的功能PHUB的特性主要包含以下幾個方面:CPU和DMA控制器都是PHUB的主設備;8個多層AHB總線并行訪問通道用于外設的訪問;同步CPU和DMA用于訪問在不同路徑spoke的外設;同步的DMA源和目的用于不同訪問路徑的猝發(fā)式交易;支持8,16,24和32位的尋址和數(shù)據(jù);DMA和PHUB結(jié)構(gòu)及功能
--PHUB和DMA的功能PHUBSpokes外設0SRAM1IO,PICU,EMIF2PHUB本地配置,電源管理器,時鐘,IC,SWV,EEPROM,Flash編程接口3模擬接口和裁減,抽取器4USB,CAN,I2C,定時器,計數(shù)器和PWM5保留/DFB6UDB組17UDB組2
PHUB的訪問路徑和外設的對應關(guān)系
DMA和PHUB結(jié)構(gòu)及功能
--PHUB和DMA的功能DMA特性主要包含以下幾個方面:24個DMA通道;每個通道有1個或多個交易描述符(TransactionDescriptors,TD)用于配置通道的行為。最大可以定義128個TD;TD能被動態(tài)的更新;每個通道有8個優(yōu)先級;任何一個可連接的數(shù)字信號,CPU和DMA通道能觸發(fā)一個交易;每個通道在每次傳輸時,最多可以產(chǎn)生兩個中斷;交易能被擱置或取消;支持無限或者1-64kB交易大??;TD能被嵌套和/或者鏈接用于復雜的交易;DMA和PHUB結(jié)構(gòu)及功能
--DMA優(yōu)先級及交易類型
當CPU和DMA控制器的訪問需要相同的總線資源時,CPU比DMA控制器的優(yōu)先級高但是由于系統(tǒng)結(jié)構(gòu),CPU不能“餓死”DMA控制器(即DMA控制器不會總是得不到響應)。高優(yōu)先級的DMA通過能打斷當前的DMA傳輸。在中斷的情況下,允許先完成當前的數(shù)據(jù)傳輸交易。為了保證當多個DMA同步訪問時的時延限制,一個公平算法用于保證優(yōu)先級為2-7的DMA交易有交織的最小的總線帶寬百分比。優(yōu)先級0-1的DMA交易不使用公平算法,可以使用100%的總線帶寬。當有相同優(yōu)先級的DMA訪問有沖突時,一個被使用的簡單循環(huán)算法用于最后共享總線帶寬。DMA和PHUB結(jié)構(gòu)及功能
--DMA優(yōu)先級及交易類型表給出了所保證的優(yōu)先級為0-7的總線帶寬。當不使用公平算法時,DMA訪問僅取決于優(yōu)先級,不保證總線帶寬。優(yōu)先級總線帶寬百分比%0100.01100.0250.0325.0412.556.263.171.5DMA和PHUB結(jié)構(gòu)及功能
--DMA優(yōu)先級及交易類型
每個DMA通道的靈活配置和多個通道的鏈接允許創(chuàng)建簡單和復雜的應用。下面給出了通常使用的DMA交易方式:1.簡單DMA
在簡單DMA模式下,一個單TD在源和“池”(外設或存儲器位置)進行數(shù)據(jù)傳輸。DMA和PHUB結(jié)構(gòu)及功能
--DMA優(yōu)先級及交易類型2.自動重復DMA
當重復的讀取系統(tǒng)存儲器和寫外設時,使用這種模式。將單個TD鏈接在一起時,可以實現(xiàn)這種模式。3.“乒乓”DMA
這種模式用于下面的這種情況,即一個客戶端填充緩沖區(qū),另一個客戶端讀取在另一個緩沖區(qū)接收到的數(shù)據(jù)。最簡單的一種形式是,將兩個TD鏈接在一起,當任務完成時,兩個TD可以互相進行調(diào)用。4.循環(huán)DMA
循環(huán)DMA和“兵乓”DMA類似,只不過是它的緩沖區(qū)多于兩個。這種模式有多個TD,當最后一個TD完成后,又返回第一個TD。DMA和PHUB結(jié)構(gòu)及功能
--DMA優(yōu)先級及交易類型5.分散聚集DMA
在這種模式下,存在多個不連續(xù)的源或目的,它們要求高效的執(zhí)行整個DMA交易。比如:向設備發(fā)送一個保存在不同存儲區(qū)域的數(shù)據(jù)包,數(shù)據(jù)包包含:頭部、數(shù)據(jù)和尾部。分散聚集DMA允許使用鏈上的多個TD將這些數(shù)據(jù)片斷集中在一起。比如:設備接收到數(shù)據(jù),這些數(shù)據(jù)需要放在不同的存儲空間上以方便軟件的處理。鏈上的每個TD用于說明每個離散部分的位置。DMA和PHUB結(jié)構(gòu)及功能
--DMA優(yōu)先級及交易類型6.分組排隊DMA
該模式和分散聚集DMA模式類似,但是專指分組協(xié)議。通過這些協(xié)議,將與發(fā)送和接收數(shù)據(jù)相關(guān)的配置、數(shù)據(jù)和狀態(tài)周期分割。比如:發(fā)送一個分組,在外設內(nèi)寫存儲器映射的配置寄存器,用于說明隨后數(shù)據(jù)周期的傳輸長度。然后CPU在系統(tǒng)存儲器的任意位置來設置這個配置信息,并將其和TD一起復制到外設中。在配置周期后,開始數(shù)據(jù)周期TD。當數(shù)據(jù)周期結(jié)束后,調(diào)用狀態(tài)周期TD用于從外設讀取一些存儲器映射的狀態(tài)信息。多個配置,數(shù)據(jù)和狀態(tài)周期集“子鏈”能被串在一起來建立一個更大的鏈,用于以這種方式發(fā)送多個分組。DMA和PHUB結(jié)構(gòu)及功能
--DMA優(yōu)先級及交易類型7.嵌套DMA
當存儲器映射的TD配置空間和其他外設相似時,一個TD可以修改另一個TD。比如,第一個TD加載第二個TD的配置信息,然后調(diào)用第二個TD。第二個TD根據(jù)應用程序的要求搬移數(shù)據(jù)。當?shù)诙€TD完成后,第二個TD調(diào)用第一個TD,然后重新更新第二個TD的配置信息。中斷控制器結(jié)構(gòu)及功能
--中斷控制器結(jié)構(gòu)原理
中斷源包含:固定功能模塊、DMA通道和UDB模塊。
中斷控制器的塊圖結(jié)構(gòu)中斷控制器結(jié)構(gòu)及功能
--中斷控制器結(jié)構(gòu)原理IDMUX的中斷處理過程中斷控制器結(jié)構(gòu)及功能
--中斷優(yōu)先級
中斷控制器提供了中斷優(yōu)先級處理的能力來幫助為每個中斷分配不同的優(yōu)先級。下面分析不同優(yōu)先級的處理:中斷控制器結(jié)構(gòu)及功能
--中斷優(yōu)先級
1.如果一個中斷INTB被確認,而另一個中斷INTA正在執(zhí)行,這里有三種可能性用于處理這種情況:
1)如果INTA的優(yōu)先級比INTB低,則:INTA在執(zhí)行點上停下來;INTA的現(xiàn)場入棧,開始執(zhí)行INTB;執(zhí)行完INTB后,INTA繼續(xù)從剛才中斷的點上繼續(xù)執(zhí)行;中斷控制器結(jié)構(gòu)及功能
--中斷優(yōu)先級2)如果INTA的優(yōu)先級比INTB高,則:INTB將等待INTA執(zhí)行完畢;當INTA執(zhí)行完后,INTB開始執(zhí)行;3)如果INTA和INTB有相同的優(yōu)先級,則:如果INTA正在執(zhí)行,則INTB等待INTA執(zhí)行完。當INTA執(zhí)行完后,INTB開始執(zhí)行;如果INTB正在執(zhí)行,則INTA等待INTB執(zhí)行完。當INTB執(zhí)行完后,INTA開始執(zhí)行。中斷控制器結(jié)構(gòu)及功能
--中斷優(yōu)先級2.同時產(chǎn)生中斷
1)如果INTA優(yōu)先級低于INTB,則INTB獲得仲裁權(quán),開始執(zhí)行;
2)如果INTA優(yōu)先級高于INTB,則INTA獲得仲裁權(quán),開始執(zhí)行;
3)如果INTA和INTB有相同的優(yōu)先級,則具有低索引值的中斷獲得仲裁權(quán),開始執(zhí)行。中斷控制器結(jié)構(gòu)及功能
--中斷的執(zhí)行
中斷控制器用于中斷信號的確認和處理。下面給出其具體步驟:1)確認中斷線;2)設置Pending位,表示中斷正在等待執(zhí)行;3)優(yōu)先級解碼單元確認,中斷執(zhí)行的時間;4)中斷控制器向CPU發(fā)送中斷請求信號和用于執(zhí)行中斷程序的中斷向量地址;5)CPU接收到請求;6)中斷入口-CPU響應中斷入口。中斷控制器清除pending位。7)當前的中斷號和優(yōu)先級通過中斷控制器,進入中斷控制器堆棧;8)中斷退出-當中斷執(zhí)行完成后,CPU空閑出來尋找下一個請求。CPU響應中斷退出,中斷上下文(比如:中斷號和優(yōu)先級)從堆棧彈出。中斷控制器結(jié)構(gòu)及功能
--PSoC3中斷控制器
中斷控制器提供了一種機制,使得在不需要考慮目前主程序所執(zhí)行的任務的情況下,就可以在新的地址執(zhí)行程序。中斷控制器提供了比傳統(tǒng)8051中斷控制器更多的性能,這些性能主要包括:32個中斷向量;使用動態(tài)的向量地址直接跳轉(zhuǎn)到代碼空間的中斷服務程序ISR;每個向量有多個源;靈活的中斷到向量的匹配;中斷控制器結(jié)構(gòu)及功能
--PSoC3中斷控制器每個中斷向量有獨立的使能和禁止;每個中斷能動態(tài)的分配8個優(yōu)先級中的一個;8級的嵌套中斷;多重I/O中斷向量;軟件能發(fā)送中斷;軟件能清除尚未相應的中斷中斷控制器結(jié)構(gòu)及功能
--PSoC3中斷控制器
當一個中斷還未響應時,執(zhí)行完當前的指令,程序計數(shù)器被壓棧。代碼然后跳轉(zhuǎn)到由中斷向量所提供的地址。當ISR結(jié)束后,執(zhí)行RETI指令,將剛才壓棧的PC出棧,然后返回到剛才完成指令的下一條指令繼續(xù)執(zhí)行。中斷控制器結(jié)構(gòu)及功能
--PSoC3中斷控制器
如果給多個中斷分配了相同的優(yōu)先級,那么先執(zhí)行較低優(yōu)先級的程序。每個中斷向量可以選擇三個中斷源:固定功能、DMA和UDB:固定功能中斷直接連接到普通的中斷源,并且提供了最低的資源連接消耗。DMA中斷源直接連接到每個DMA通道的兩個DMA中斷源。UDB中斷源來自UDB數(shù)字連線陣列。這樣允許UDB陣列中可用的任何數(shù)字信號作為中斷源。通過使用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個系統(tǒng)異常和來自外設的32個中斷。異常號碼異常類型優(yōu)先級異常表地址偏移量功能0x00開始R13/MSP值1Reset-3(最高)0x04復位2NMI-20x08非屏蔽中斷3硬件故障-10x0C所有故障類,當相對應的故障句柄由于目前被禁止或屏蔽,而不能被激活。4存儲器管理故障可編程0x10存儲器管理故障,比如,從非執(zhí)行區(qū)加載指令。中斷控制器結(jié)構(gòu)及功能
--PSoC5中斷控制器5總線故障可編程0x14來自總線系統(tǒng)的錯誤相應,由于放棄預取指令或者數(shù)據(jù)訪問錯誤。6使用故障可編程0x18由于非法指令或者試圖切換到ARM模式時,引起該故障。7-10-0x1C-0x28保留11系統(tǒng)服務調(diào)用SVC可編程0x2C通過SVC指令的系統(tǒng)服務調(diào)用。12調(diào)試監(jiān)控器可編程0x30調(diào)試監(jiān)控器中斷控制器結(jié)構(gòu)及功能
--PSoC5中斷控制器13-0x34保留14系統(tǒng)服務請求推遲可編程0x38系統(tǒng)服務請求推遲15系統(tǒng)滴答定時器可編程0x3C系統(tǒng)滴答定時器16-47外設中斷請求0-31可編程0x40-0x3FC外設中斷請求中斷控制器結(jié)構(gòu)及功能
--PSoC5中斷控制器
系統(tǒng)的NMI中斷輸入能通過DSI連接到任意引腳,或者不連接。NVIC處理來自外設的中斷,并將中斷向量發(fā)送給CPU。
NVIC和CPU緊密集成在一起,這樣是為了低延遲的中斷處理。其特征主要包含以下幾個方面:32個中斷,每個中斷有多個中斷源;可配置的中斷優(yōu)先級:3-8;動態(tài)重新安排中斷的優(yōu)先級;優(yōu)先級分組。這可以選擇搶先或非搶先優(yōu)先級;支持中斷尾鏈和遲到。這樣允許背對背的中斷處理,而沒有中斷狀態(tài)保存和恢復的額外開銷;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年廈門高新人才開發(fā)有限公司招聘備考題庫及答案詳解一套
- 2026年P(guān)MP-項目質(zhì)量管理試題及標準應用要點含答案
- 2026年醫(yī)?;鸨O(jiān)管法規(guī)題含答案
- 2026年美術(shù)史學習自測題庫分類練習含答案
- 骨科牽引患者的并發(fā)癥預防
- 骨折的愈合課件
- 2026年GJB9001C內(nèi)審常見知識模擬自測練習含答案
- 2026年社區(qū)常見安全隱患排查試題含答案
- 2026年北京市三力考試專項模塊突破訓練題及詳解
- 2026年電氣安全操作規(guī)程考核試題與解析
- (2025版)腹膜后腫瘤診治專家共識課件
- 基因編輯真菌鑒定
- 轉(zhuǎn)讓釣場合同協(xié)議書
- 溫泉洗浴行業(yè)分析報告
- 《數(shù)據(jù)管理能力成熟度模型》DCMM評估內(nèi)容及流程
- 一年級語文上冊測試題命制與批改標準
- 海外安保培訓核心科目
- 多胎肉羊養(yǎng)殖培訓課件
- 恒豐銀行招聘筆試題及答案
- 湖南省常德市石門一中2026屆高二上數(shù)學期末質(zhì)量跟蹤監(jiān)視試題含解析
- 雨課堂在線學堂《項目管理概論》作業(yè)單元考核答案
評論
0/150
提交評論