ARM原理與c程序設(shè)計(jì) 第二章_第1頁(yè)
ARM原理與c程序設(shè)計(jì) 第二章_第2頁(yè)
ARM原理與c程序設(shè)計(jì) 第二章_第3頁(yè)
ARM原理與c程序設(shè)計(jì) 第二章_第4頁(yè)
ARM原理與c程序設(shè)計(jì) 第二章_第5頁(yè)
已閱讀5頁(yè),還剩136頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第二章ARM體系結(jié)構(gòu)與接口電路2.1 ARM微處理器工作模式2.2 ARM存放器2.3 ARM異常2.4 S3C2410存儲(chǔ)器配置及接口電路設(shè)計(jì)2.5 S3C2410外設(shè)接口電路設(shè)計(jì)本章小結(jié) 2.1 ARM微處理器工作模式ARM微處理器支持三種數(shù)據(jù)類型,即32位的字、16位的半字和8位的字節(jié)。對(duì)于無(wú)符號(hào)數(shù),取值范圍為02N1,為普通二進(jìn)制碼存儲(chǔ)格式;對(duì)于有符號(hào)數(shù),取值范圍為2N1+2N11,為二進(jìn)制補(bǔ)碼存儲(chǔ)格式,其中,N取8、16或32,為數(shù)據(jù)字長(zhǎng)。ARM指令嚴(yán)格占一個(gè)字或四個(gè)連續(xù)字節(jié)(且首字節(jié)地址最后兩位為00比特)的存儲(chǔ)空間。目前,ARM體系結(jié)構(gòu)支持七種處理器模式,如表2-1所示。表2-1

2、中的模式碼是指存放器CPSR(當(dāng)前程序狀態(tài)存放器)中的低5位,即CPSR4:0。 需要說(shuō)明的是,對(duì)于ARM920T核心的S3C2410A處理器,上電復(fù)位后工作于管理模式。工作模式之間可以通過(guò)MSR指令、軟中斷、外部中斷或異常等切換。上電復(fù)位后,可執(zhí)行指令“MSR CPSR_c,#0 x10由管理模式切換到用戶模式,大多數(shù)應(yīng)用程序工作在用戶模式下。進(jìn)入用戶模式后,只能通過(guò)異常才能切換到其他工作模式,應(yīng)用程序不能訪問(wèn)一些受保護(hù)的系統(tǒng)資源。用戶模式和系統(tǒng)模式之外的五種工作模式統(tǒng)稱為特權(quán)模式,特權(quán)模式下,可以訪問(wèn)所有系統(tǒng)資源,工作模式可以借助MSR指令隨意切換,每種特權(quán)模式都有一些專用存放器,用于保存

3、其工作狀態(tài)。系統(tǒng)模式與用戶模式共用相同的存放器,但是,系統(tǒng)模式屬于特權(quán)模式,它能訪問(wèn)所有系統(tǒng)資源,可隨意切換工作模式,主要供需要訪問(wèn)所有系統(tǒng)資源的操作系統(tǒng)任務(wù)使用。 2.2 ARM存放器 ARM存放器都是32位的,其組織如圖2-1所示。從圖2-1中可以看出,每種模式下最多可訪問(wèn)的存放器個(gè)數(shù)為18個(gè),其中,用戶模式和系統(tǒng)模式下只能訪問(wèn)17個(gè)存放器。圖2-1中同名的存放器具有相同的物理存放器,而帶有沙粒三角形的存放器那么具有獨(dú)立的物理存放器,例如,R0在七種工作模式下都映射到同一個(gè)物理存放器,而R13、R13_svc、R13_abt等表示在不同工作模式下映射到不同的物理存放器。圖2-1 ARM存放

4、器組織 這樣,ARM共有37個(gè)物理存放器,即未分組的存放器R0R7映射的8個(gè)物理存放器+分組的存放器R8R14映射的22個(gè)物理存放器+程序計(jì)數(shù)器PC和當(dāng)前程序狀態(tài)存放器CPSR映射的2個(gè)物理存放器+異常模式下備份程序狀態(tài)的存放器SPSR映射的5個(gè)物理存放器=37(圖2-1上名稱完全相同的存放器只能計(jì)數(shù)一次,那么數(shù)遍圖上所有的存放器,剛好得到37)。一般地,如果某條指令可以使用R0,那么它也可以使用R1R13的其他存放器。在所有工作模式下,R0R7都對(duì)應(yīng)于相同的物理存放器,因此,在工作模式切換時(shí),這些存放器的數(shù)據(jù)可以直接使用,同時(shí),原來(lái)的數(shù)據(jù)就有可能被破壞。因此,R0R7稱為未分組的存放器,用于

5、存放數(shù)據(jù)。 R8R12在快速中斷模式時(shí)映射到獨(dú)立的物理存放器,這些存放器均加了后綴_fiq,而在其他工作模式下均映射到相同的物理存放器,這樣R8R12共占有了10個(gè)物理存放器,一般用于存放數(shù)據(jù)。R13通常用于堆棧指針(SP),保存當(dāng)前工作模式下的堆棧棧頂;R14被稱為鏈接存放器(LR),保存子程序調(diào)用或跳轉(zhuǎn)時(shí)的返回地址。R13和R14在五種異常模式下都有其獨(dú)立的物理存放器,因此,R13和R14共占有12個(gè)物理存放器。PC即R15,為程序計(jì)數(shù)器,存放的是處理器要取的下一條指令的地址(具體地址與流水線個(gè)數(shù)有關(guān)),在七種工作模式下占有同一個(gè)物理存放器。R8R14被稱為分組存放器,這些存放器在工作模式

6、切換時(shí),原有工作模式下的存放器不能被訪問(wèn),而使用新工作模式下的同名存放器替代,這樣,原來(lái)的存放器的數(shù)據(jù)得到了保護(hù)。 上述R0R15通稱為通用存放器,即這些存放器可以保存數(shù)據(jù)(或指令數(shù)據(jù)),也可以用于保存指令地址。此外,還有兩個(gè)專用存放器,用于保存當(dāng)前程序的工作狀態(tài),即CPSR和異常模式下保存CPSR值的存放器SPSR,這兩個(gè)存放器占有6個(gè)物理存放器。需要重點(diǎn)指出的是,ARM微處理器工作模式雖然可以切換,但是,其工作模式確定后,ARM微處理器僅能訪問(wèn)圖2-1上該模式下的存放器。2.2.1 通用存放器通用存放器包括未分組存放器R0R7、分組存放器R8R14和R15(即PC)。如圖2-1所示,分組存

7、放器在某些異常模式下映射為獨(dú)立的物理地址,此時(shí)的存放器名稱被描述為_(kāi),例如,圖2-1中的R8_fiq和R13_und等,其中,mode分別取為svc、abt、und、irq或fiq等,用戶模式和系統(tǒng)模式的存放器名可以添加后綴_usr和_sys。需要指出的是,在RVDS程序設(shè)計(jì)時(shí),只需使用存放器名。 以存放器R13為例,仿照第小節(jié)的1.和2.的內(nèi)容調(diào)試如下的程序(注意圖1-16的設(shè)置),可以看到不同工作模式下R13的值是不同的。1 AREA INIT, CODE, READONLY2 ENTRY; Enter SVC Mode3 MOVR13, #0 xAA4 MSRCPSR_c, #0 x11

8、 ; Enter FIQ Mode5 MOVR13, #0 xBB6 MSRCPSR_c, #0 x12 ; Enter IRQ Mode7 MOVR13, #0 xCC8 MSRCPSR_c, #0 x1F; Enter SYS Mode9 MOVR13, #0 xDD10 MSRCPSR_c, #0 x13; Enter SVC Mode11 MOV R0, #0 x5512 MSRCPSR_c, #0 x11; Enter FIQ Mode13 MOVR0, #0 x5514 MSRCPSR_c, #0 x12 ; Enter IRQ Mode15 MOVR0, #0 x5516 MSR

9、CPSR_c, #0 x1F; Enter SYS Mode17 MOVR0, #0 x5518 MSRCPSR_c, #0 x13 ; Enter SVC Mode19 MOVR0, #0 x5520 stop21 BLstop22 END程序的解釋如下(R13在RVDEBUG中的存放器視圖中為SP):第1行:定義只讀代碼段INIT;第2行:標(biāo)識(shí)程序入口,程序復(fù)位后進(jìn)入SVC模式;第3行:在SVC模式下,R13置成0 xAA;第4行:進(jìn)入FIQ模式;第5行:在FIQ模式下,R13置成0 xBB;第6行:進(jìn)入IRQ模式;第7行:在IRQ模式下,R13置成0 xCC;第8行:進(jìn)入SYS模式;第9

10、行:在SYS模式下,R13置成0 xDD;第10行:再次進(jìn)入SVC模式;第11行:在SVC模式下,R0置成0 x55,此時(shí),可以看到R13的值為0 xAA;第12行:再次進(jìn)入FIQ模式;第13行:在FIQ模式下,R0置成0 x55,此時(shí),可以看到R13的值為0 xBB;第14行:再次進(jìn)入IRQ模式;第15行:在IRQ模式下,R0置成0 x55,此時(shí),可以看到R13的值為0 xCC;第16行:再次進(jìn)入SYS模式;第17行:在SYS模式下,R0置成0 x55,此時(shí),可以看到R13的值為0 xDD;第18行:再次進(jìn)入SVC模式;第19行:在SVC模式下,R0置成0 x55,此時(shí),可以看到R13的值為

11、0 xAA;第20、21行:死循環(huán)跳轉(zhuǎn);第22行:程序段結(jié)束標(biāo)志。從程序的運(yùn)行情況可以看出,R13在不同的工作模式下雖然具有相同的標(biāo)識(shí)名,但對(duì)應(yīng)于不同的物理存放器,它們的賦值互不影響(注意:R13一般用作SP指針,上面的賦值意義不大,僅用于說(shuō)明分組存放器在不同的工作模式下對(duì)應(yīng)不同的物理存放器這一特點(diǎn))。2.2.2 程序狀態(tài)存放器32位的當(dāng)前程序狀態(tài)存放器(CPSR)分為4個(gè)8位區(qū)域,從高位至低位依次為標(biāo)志位域(CPSR_f)、狀態(tài)位域(CPSR_s)、擴(kuò)展位域(CPSR_x)和控制位域(CPSR_c)。每種異常模式下都各有一個(gè)備份CPSR值用的存放器,稱為備份的程序狀態(tài)存放器(SPSR),用于

12、異常發(fā)生時(shí)保存CPSR的值(用戶模式和系統(tǒng)模式下沒(méi)有SPSR)。CPSR(或SPSR)存放器位如圖2-2所示。圖2-2 CPSR存放器位的含義圖2-2中各位分為四類:其一,保存位,為后續(xù)ARM版本擴(kuò)展功能保存的位,圖中使用Res、RESERVED標(biāo)記這些位;其二,用戶模式下可寫(xiě)的位,這些位為N、Z、C、V、Q、E和GE3:0,其中,Q出現(xiàn)在ARMv5E以上版本中,E和GE3:0在ARMv6以上版本中,所有這些位特權(quán)模式下也均可寫(xiě);其三,特權(quán)模式下可寫(xiě)的位,這些位為A、I、F和M4:0,用戶模式下無(wú)法向這些位寫(xiě)入,其中,A用于ARMv6以上版本;其四,執(zhí)行狀態(tài)位,這些位為J和T,在ARM狀態(tài)下必

13、須為0。注意:所有CPSR的各位,在用戶模式下都是可以讀出的。對(duì)CPSR的訪問(wèn)操作一般是這樣的:如果想設(shè)置某位或某幾位,先執(zhí)行指令MRS讀出CPSR的值;然后,借助于與、或、異或等位操作僅把需要設(shè)置的位賦值,不需要設(shè)置的位的值保持不變;最后,執(zhí)行MSR指令把設(shè)置好的值寫(xiě)回CPSR。1條件碼標(biāo)識(shí)位圖2-2的第31位至28位依次為N、Z、C和V,被定義為條件碼標(biāo)識(shí)位,取自Negative、Zero、Carry和oVerflow中的大寫(xiě)字母。一般地,算術(shù)、邏輯和賦值指令后添加S(目的存放器不是R15)或比較指令(如CMN、CMP、TEQ和TST)等的執(zhí)行會(huì)影響CPSR中的條件碼標(biāo)識(shí)位。此外,MSR、

14、MRC(目的存放器為R15)、LDM指令的某些變種、特權(quán)模式下使用REF指令從存儲(chǔ)器向CPSR裝入數(shù)據(jù)、目的存放器為R15的少數(shù)算術(shù)和邏輯指令變種等的執(zhí)行也會(huì)影響條件碼標(biāo)識(shí)位。對(duì)于二進(jìn)制補(bǔ)碼表示的有符號(hào)數(shù)運(yùn)算,N=1表示運(yùn)算結(jié)果為負(fù),N=0表示結(jié)果大于或等于0。Z=1表示運(yùn)算結(jié)果為0,Z=0表示運(yùn)算結(jié)果非0。C有兩種情況:對(duì)于加法指令(包括CMN),當(dāng)C=1時(shí)表示有進(jìn)位,當(dāng)C=0時(shí)表示無(wú)進(jìn)位;對(duì)于減法指令(包括CMP),當(dāng)C=0時(shí)有借位,C=1時(shí)無(wú)借位。無(wú)論操作數(shù)是否為二進(jìn)制補(bǔ)碼表示的有符號(hào)數(shù),只要V=1,那么表示最高位發(fā)生溢出,否那么,V=0表示無(wú)溢出。 2中斷狀態(tài)位 圖2-2中CPSR的第

15、7位和第6位依次為I和F,用于表示中斷狀態(tài)。如果I=1,那么IRQ中斷被屏蔽;如果I=0,那么IRQ中斷使能。如果F=1,那么FIQ中斷被屏蔽;如果F=0,那么FIQ中斷被使能。3工作模式位 第節(jié)中指出ARM有七種工作模式,工作于哪種模式受CPSR中的工作模式位M4:0控制,這些位處于CPSR存放器的低五位,即圖2-2中的第40位。工作模式位的含義如表 2-2所示。2.2.3 PC與指令流水線流水線是RISC處理器執(zhí)行指令的方式,ARM7支持三級(jí)流水線,ARM9支持五級(jí)流水線,ARM10支持六級(jí)流水線。ARM9與ARM7相比,指令吞吐量增加了約13%。ARM7和ARM9的流水線如圖2-3所示。

16、圖2-3 ARM7和ARM9的流水線對(duì)于五級(jí)流水線來(lái)說(shuō),每個(gè)機(jī)器周期內(nèi)可以有五個(gè)指令的不同階段同時(shí)處理,但只有一條指令處于執(zhí)行階段,其他四條指令處于取指、譯碼、存儲(chǔ)和寫(xiě)階段。 當(dāng)某條指令正處于執(zhí)行階段時(shí),PC存放器指向此時(shí)要取指的指令,對(duì)于ARM7和ARM9來(lái)說(shuō),如圖2-3所示,PC指向該正在執(zhí)行的指令的地址加上2條指令的地址。對(duì)于所有流水線來(lái)說(shuō),執(zhí)行階段與取指階段間的管道數(shù)乘以每條指令所占的字節(jié)數(shù),再加上當(dāng)前正處于執(zhí)行階段的指令地址,即為PC指向的下一條指令的地址。對(duì)于ARM7和ARM9來(lái)說(shuō),雖然流水線級(jí)數(shù)不同,但是執(zhí)行階段與取指階段間的管道數(shù)均為2,所以,PC指向的下一條指令的地址均為當(dāng)前

17、處于執(zhí)行階段的指令地址+8字節(jié)(每條32位的ARM指令占有4個(gè)字節(jié))。對(duì)于ARM10和ARM11等,按相同的方法推理PC的值。2.3 ARM異常異常是由內(nèi)部或外部的觸發(fā)源引起的,異常發(fā)生后,ARM處理器將中斷當(dāng)前的操作,而跳轉(zhuǎn)到異常向量地址處執(zhí)行異常效勞程序(或稱中斷效勞程序)。除了上電復(fù)位異常之外,其他的異常效勞程序跳轉(zhuǎn)執(zhí)行前,處理器將自動(dòng)保存當(dāng)前的程序狀態(tài),異常效勞程序執(zhí)行完畢后,將返回到被中斷的程序處繼續(xù)執(zhí)行。異常向量表如表2-3所示。異常發(fā)生后,R14和SPSR用于保存處理器狀態(tài),具體如下:R14_=返回地址SPSR_=CPSRCPSR4:0=異常模式標(biāo)識(shí)碼如果=復(fù)位或FIQ,那么CP

18、SR6=1,屏蔽快速中斷否那么,CPSR6不變CPSR7=1,屏蔽常規(guī)中斷PC=異常向量地址對(duì)于上述偽語(yǔ)言表示,當(dāng)某種異常發(fā)生后,程序的返回地址保存在該異常模式下的R14(即LR)中,程序狀態(tài)CPSR保存在該異常模式的SPSR中;然后,CPSR的M4:0被置位成該異常模式位,如果發(fā)生的異常為復(fù)位或FIQ異常,那么要屏蔽快速中斷;最后,屏蔽常規(guī)中斷,PC指向異常向量表中該異常向量的地址處。異常效勞程序處理完后,SPSR復(fù)制到CPSR,R14(LR)復(fù)制至PC(此時(shí)的PC為程序被異常中斷前的執(zhí)行地址),程序?qū)腜C處繼續(xù)執(zhí)行。異常返回有兩種方式:其一,借助帶S的數(shù)據(jù)處理指令,且PC為目的存放器;其

19、二,借助多存放器加載指令賦值CPSR,例如:希望異常返回到特定的地址處,那么進(jìn)入異常前將該地址保存在堆棧內(nèi),即SUB R14,R14,#4 ;獲得R14(即LR)STMFD SP!,R14 ;R14壓入堆棧中異常返回時(shí),執(zhí)行LDMFD SP!,PC ;R14出棧,賦給PC上述三行代碼的含義依次為:R14減去4賦給R14;將其他需要保存內(nèi)容的存放器和R14壓入堆棧中,SP(即R13,為堆棧指針)指向棧頂,“!表示SP減少后的值賦給SP;將SP指向的堆棧數(shù)據(jù)依次出棧,賦給存放器列表中的存放器和PC,“!表示SP增加后的值賦給SP,“表示將SPSR的值傳回CPSR中。對(duì)這些語(yǔ)句更深入的理解請(qǐng)參考第三

20、章。下面具體介紹一下每個(gè)異常。2.3.1 復(fù)位異常外部輸入復(fù)位信號(hào)有效后,ARM微處理器將執(zhí)行以下操作:R14_svc = 不確定值SPSR_svc = 不確定值CPSR4:0 = 0b10011 / 上電復(fù)位后進(jìn)入管理模式CPSR5 = 0 / 工作在ARM狀態(tài)CPSR6 = 1 / 屏蔽快速中斷CPSR7 = 1 / 屏蔽普通中斷如果高端異常向量地址配置了,那么PC = 0 xFFFF0000否那么,PC = 0 x00000000由此可見(jiàn),上電復(fù)位后的ARM微處理器處于管理工作模式下,且為執(zhí)行ARM指令的ARM狀態(tài),從地址0 x0開(kāi)始執(zhí)行指令,普通中斷和快速中斷均處于被屏蔽狀態(tài),連接存放

21、器LR(即R14)和備份的程序狀態(tài)存放器SPSR的值不確定。復(fù)位異常一般發(fā)生于ARM硬件系統(tǒng)上電工作瞬時(shí),或者由于手工復(fù)位按鍵復(fù)位以及看門(mén)狗電路引起的復(fù)位等。復(fù)位異常效勞程序需要完成系統(tǒng)初始化工作,包括配置時(shí)鐘、存儲(chǔ)器、高速緩存、堆棧、片上外設(shè)存放器等。復(fù)位異常程序執(zhí)行初始化過(guò)程時(shí)應(yīng)防止SWI軟件中斷、未定義指令中斷及存儲(chǔ)器訪問(wèn)導(dǎo)致的中止等異常,系統(tǒng)初始化成功后ARM處理器進(jìn)入工作狀態(tài)。2.3.2 中斷請(qǐng)求異常 ARM微處理器外部IRQ中斷引腳有效,且CPSR的第I位(即CPSR7)為0時(shí),可產(chǎn)生IRQ普通中斷,ARM微處理器將繼續(xù)執(zhí)行處于流水線“執(zhí)行階段的指令,然后跳轉(zhuǎn)到IRQ中斷效勞程序。

22、如果IRQ中斷產(chǎn)生了,ARM微處理器自動(dòng)執(zhí)行如下操作:R14_irq = 下一條將被執(zhí)行的指令地址 + 4SPSR_irq = CPSRCPSR4:0 = 0b10010 / 進(jìn)入IRQ模式CPSR5 = 0 / 工作在ARM狀態(tài)CPSR6保持不變CPSR7 = 1 / 屏蔽再次產(chǎn)生的IRQ中斷如果高端異常向量地址配置了,那么PC = 0 xFFFF0018否那么,PC = 0 x00000018IRQ中斷效勞程序執(zhí)行完畢后,借助如下指令返回:SUBS PC, R14, #4上述SUBS指令中,由于PC為目的操作數(shù),因此,將執(zhí)行兩個(gè)操作:即R14_irq的值賦給PC,SPSR_irq的值賦給C

23、PSR。典型的IRQ中斷效勞程序結(jié)構(gòu)為:ISR_irq: / IRQ中斷效勞程序開(kāi)始標(biāo)號(hào)SUBS PC, R14, #4 / IRQ中斷效勞程序返回指令另一種IRQ中斷效勞程序結(jié)構(gòu)為:ISR_irq: / IRQ中斷效勞程序開(kāi)始標(biāo)號(hào)SUB R14, R14, #4 / IRQ中斷效勞程序第一條語(yǔ)句MOVS PC, R14 / IRQ中斷效勞程序返回指令在MOVS中,PC為目的操作數(shù),因此,“MOVS PC, R14將R14的值寫(xiě)入PC中,同時(shí)自動(dòng)實(shí)現(xiàn)從SPSR_irq中恢復(fù)CPSR的值。 以上兩種IRQ中斷效勞程序結(jié)構(gòu)具有一個(gè)共同的特點(diǎn),即在中斷處理代碼中不能更改R14的值,否那么將導(dǎo)致中斷返

24、回的地址錯(cuò)誤。所以,常用的方法為借助堆棧實(shí)現(xiàn)中斷效勞程序,其結(jié)構(gòu)如下:ISR_irq: / IRQ中斷效勞程序開(kāi)始標(biāo)號(hào)SUB R14, R14, #4 / R14 = R14 4STMFD R13!, R0 R3, R14 / R13為堆棧指針,將R0至R3和R14保存在堆棧中 LDMFD R13!, R0 R3, PC / IRQ中斷效勞程序返回語(yǔ)句,從堆棧中恢復(fù)PC的值,并強(qiáng)制CPSR從SPSR存放器恢復(fù)2.3.3 快速中斷請(qǐng)求異常當(dāng)ARM微處理器外部FIQ引腳有效,且CPSR的F位為0時(shí),可產(chǎn)生FIQ快速中斷請(qǐng)求,其優(yōu)先級(jí)高于IRQ,主要用于對(duì)實(shí)時(shí)數(shù)據(jù)流的快速傳輸和處理。ARM微處理器檢

25、測(cè)到FIQ異常時(shí),當(dāng)前處于流水線“執(zhí)行階段的指令執(zhí)行完成后,跳轉(zhuǎn)到FIQ快速中斷效勞程序,ARM微處理器自動(dòng)實(shí)現(xiàn)如下操作:R14_fiq = 下一條要執(zhí)行的指令地址 + 4SPSR_fiq = CPSRCPSR4:0 = 0b10001 / 進(jìn)入FIQ工作模式CPSR5 = 0 / 工作在ARM狀態(tài)CPSR6 = 1 / 屏蔽再次產(chǎn)生的快速中斷CPSR7 = 1 / 屏蔽IRQ中斷如果高端異常向量地址配置了,那么PC = 0 xFFFF001C否那么,PC = 0 x0000001C從快速中斷返回的方法與從IRQ中斷返回的方法相同,典型的語(yǔ)句為SUBS PC, R14, #42.3.4 軟件中

26、斷異常ARM微處理器通過(guò)執(zhí)行SWI(軟件中斷)指令進(jìn)入管理模式,這是用戶模式轉(zhuǎn)換到特權(quán)模式的常用方法。SWI指令執(zhí)行時(shí),ARM微處理器自動(dòng)實(shí)現(xiàn)如下操作:R14_svc = SWI指令的下一條指令地址SPSR_svc = CPSRCPSR4:0 = 0b10011 / 進(jìn)入管理模式CPSR5 = 0 / 工作在ARM狀態(tài)CPSR6保持不變 CPSR7 = 1 / 屏蔽IRQ中斷如果高端異常向量地址配置了,那么PC = 0 xFFFF0008否那么,PC = 0 x00000008從軟件中斷異常返回的典型語(yǔ)句為MOVS PC, R142.3.5 數(shù)據(jù)中止異常數(shù)據(jù)中止異常是由存儲(chǔ)系統(tǒng)引發(fā)的。當(dāng)要訪問(wèn)

27、的存儲(chǔ)空間數(shù)據(jù)無(wú)效時(shí),將產(chǎn)生數(shù)據(jù)中止異常。ARM微處理器自動(dòng)實(shí)現(xiàn)以下操作:R14_abt = 被中止的指令地址 + 8SPSR_abt = CPSRCPSR4:0 = 0b10111 / 進(jìn)入中止工作模式CPSR5 = 0 / 處于ARM狀態(tài)CPSR6保持不變CPSR7 = 1 / 屏蔽IRQ中斷如果高端異常向量地址配置了,那么PC = 0 xFFFF0010否那么,PC = 0 x00000010從數(shù)據(jù)中止異常效勞程序返回的典型語(yǔ)句為SUBS PC, R14, #82.3.6 預(yù)取指令異常預(yù)取指令異常由存儲(chǔ)系統(tǒng)引發(fā),當(dāng)取指的指令無(wú)效,且ARM微處理器試圖執(zhí)行該無(wú)效指令時(shí),將產(chǎn)生預(yù)取指令異常,

28、ARM微處理器將自動(dòng)實(shí)現(xiàn)以下操作:R14_abt = 被中止的指令地址 + 4SPSR_abt = CPSRCPSR4:0 = 0b10111 / 進(jìn)入中止模式CPSR5 = 0 / 處于ARM狀態(tài)CPSR6保持不變CPSR7 = 1 / 屏蔽IRQ中斷如果高端異常向量地址配置了,那么PC = 0 xFFFF000C否那么,PC = 0 x0000000C從預(yù)取指令異常效勞程序返回的典型語(yǔ)句為SUBS PC, R14, #42.3.7 未定義指令異常 如果ARM微處理器要執(zhí)行一條協(xié)處理器指令,將等待外部協(xié)處理器確認(rèn)該指令可以被執(zhí)行。如果沒(méi)有外部協(xié)處理器應(yīng)答,將產(chǎn)生未定義指令異常。未定義指令異常

29、主要用于沒(méi)有硬件協(xié)處理器系統(tǒng)的協(xié)處理器軟件仿真或者通用目的指令集軟件仿真擴(kuò)展。當(dāng)未定義指令異常發(fā)生后,ARM微處理器自動(dòng)執(zhí)行以下操作:R14_und = 未定義指令后的下一條指令的地址SPSR_und = CPSRCPSR4:0 = 0b11011 / 進(jìn)入未定義指令模式CPSR5 = 0 / 處于ARM狀態(tài)CPSR6保持不變CPSR7 = 1 / 屏蔽IRQ中斷如果高端異常向量地址配置了,那么PC = 0 xFFFF0004否那么,PC = 0 x00000004從未定義指令異常返回的典型語(yǔ)句為MOVS PC, R142.3.8 異常返回地址異常處理是ARM微處理器控制軟件設(shè)計(jì)的核心內(nèi)容,主

30、要包括異常優(yōu)先級(jí)、異常嵌套、異常入口和異常返回等。其中,異常優(yōu)先級(jí)防止了多個(gè)異常同時(shí)發(fā)生時(shí)的資源競(jìng)爭(zhēng),多個(gè)異常同時(shí)發(fā)生時(shí),優(yōu)先級(jí)較高的異常優(yōu)先得到處理,例如,F(xiàn)IQ和IRQ中斷同時(shí)發(fā)生,那么FIQ中斷得到處理;異常嵌套使得某個(gè)異常效勞程序處理過(guò)程中可以響應(yīng)其他的異常,例如,數(shù)據(jù)中止異常效勞程序執(zhí)行過(guò)程中,由于沒(méi)有屏蔽FIQ中斷,當(dāng)外部FIQ中斷產(chǎn)生后,將執(zhí)行FIQ中斷效勞程序,F(xiàn)IQ中斷效勞程序執(zhí)行完后,再繼續(xù)處理數(shù)據(jù)中止異常;異常入口點(diǎn)為異常發(fā)生后PC存放器裝入的值,是ARM微處理器自動(dòng)強(qiáng)制PC跳轉(zhuǎn)的地址值。異常返回地址是相對(duì)于異常發(fā)生前的程序而言的。異常發(fā)生后,PC將跳轉(zhuǎn)到異常入口點(diǎn),對(duì)應(yīng)

31、異常模式的LR存放器設(shè)置為基于跳轉(zhuǎn)前的PC值的一個(gè)特定地址,異常效勞程序執(zhí)行過(guò)程中,不能修改LR的值(如果異常效勞程序中要使用LR存放器,必須在異常效勞程序開(kāi)始處將LR的值壓棧)。異常效勞程序執(zhí)行完畢后,PC的值需要恢復(fù)為跳轉(zhuǎn)前執(zhí)行的最后一條指令的下一條指令,這條指令的地址即為異常返回地址。不同的異常處理,其返回地址不完全相同,如表2-4所示。從表2-4可以看出,對(duì)于SWI、IRQ、FIQ和未定義指令異常,異常返回地址為異常跳轉(zhuǎn)前的程序最后執(zhí)行完的指令的下一條指令地址;而數(shù)據(jù)中止和預(yù)取指中止異常的返回地址那么為異常跳轉(zhuǎn)前的程序未得到執(zhí)行的那條指令地址。需要指出的是異常發(fā)生后的LR值是ARM微處

32、理器自動(dòng)設(shè)置的,無(wú)法修改;而返回地址是程序配置的,可以人為修改。例如,對(duì)于數(shù)據(jù)中止異常,不希望異常返回后重復(fù)執(zhí)行跳轉(zhuǎn)時(shí)沒(méi)有執(zhí)行的指令,可以使用以下語(yǔ)句SUBS PC, R14, #4跳轉(zhuǎn)到其下一條指令地址(PC_b + 4)處。2.4 S3C2410存儲(chǔ)器配置及接口電路設(shè)計(jì) ARM微處理器存儲(chǔ)器配置涉及協(xié)處理器存放器CP15、存儲(chǔ)管理單元(MMU)和高速緩存(Cache)等,將在第四章中展開(kāi)論述,本節(jié)具體討論基于ARM920T核的S3C2410芯片的存儲(chǔ)器配置。S3C2410是SAMSUNG公司代工的高性價(jià)比ARM9系列微處理器芯片,支持外擴(kuò)SDRAM、NAND FLASH,尋址空間為128M

33、B/區(qū)塊(共有8區(qū)塊,即1GB空間),片內(nèi)具有4KB SRAM,集成MMU和豐富的片上外設(shè),集成獨(dú)立的16KB指令Cache和16KB數(shù)據(jù)Cache,支持C/OS-、Windows CE和嵌入式Linux等嵌入式操作系統(tǒng),適用于移動(dòng)設(shè)備和小型通用嵌入式應(yīng)用場(chǎng)合。2.4.1 存儲(chǔ)格式ARM920T將存儲(chǔ)空間按字節(jié)進(jìn)行物理編址,第0個(gè)字節(jié)的地址為0 x00000000,第1個(gè)字節(jié)的地址為0 x00000001,地址0 x00000000至0 x00000003(即第0個(gè)字節(jié)至第3個(gè)字節(jié))存放第一個(gè)字,地址0 x00000004至0 x00000007(即第4個(gè)字節(jié)至第7個(gè)字節(jié))存放第二個(gè)字,依次類

34、推。每個(gè)字存放的32位首地址的最后兩位,即第1和0位為0b00時(shí),稱為字對(duì)齊存儲(chǔ)。字的對(duì)齊存儲(chǔ)格式有兩種,即小端(Little Endian)格式和大端(Big Endian)格式。其中,小端存儲(chǔ)格式中,存儲(chǔ)字的四個(gè)字節(jié)的最低地址字節(jié)存儲(chǔ)字的最低字節(jié),而最高地址字節(jié)存儲(chǔ)字的最高字節(jié),如圖2-4所示。圖2-4 小端存儲(chǔ)格式圖2-4中存儲(chǔ)字的位地址是指32位的字?jǐn)?shù)據(jù)各位的相對(duì)位置;字存儲(chǔ)空間的位地址是指存儲(chǔ)字?jǐn)?shù)據(jù)的連續(xù)四個(gè)字節(jié)按高地址向低地址的位排序位置;方格中的數(shù)字表示存儲(chǔ)的字?jǐn)?shù)據(jù)的字節(jié)序號(hào)。大端存儲(chǔ)格式與小端存儲(chǔ)格式相反,存儲(chǔ)字的四個(gè)字節(jié)的最低地址字節(jié)存儲(chǔ)字的最高字節(jié),而最高地址字節(jié)存儲(chǔ)字的最

35、低字節(jié),如圖2-5所示。小端和大端格式也稱為小E和大E存儲(chǔ)模式,在S3C2410芯片中,可通過(guò)軟件設(shè)定。 圖2-5 大端存儲(chǔ)格式2.4.2 映射存儲(chǔ)空間 S3C2410復(fù)位后的存儲(chǔ)器映射空間配置模式受器件管腳OM1和OM0的電平影響而分為兩種方式,如圖2-6所示??稍L問(wèn)映射地址空間共分成8個(gè)區(qū)塊(Bank),每區(qū)塊為128MB,其中,第6和7區(qū)塊大小可以配置,各個(gè)區(qū)塊的地址是連續(xù)編址的,區(qū)塊0至5的編址是固定的,當(dāng)區(qū)塊6小于128MB時(shí),區(qū)塊7的首地址仍然為區(qū)塊6的末地址加1,如表2-5所示。區(qū)塊0的訪問(wèn)字長(zhǎng)為16位或32位,其余7個(gè)區(qū)塊的訪問(wèn)字長(zhǎng)可為8位、16位或32位,且各區(qū)塊的程序訪問(wèn)周

36、期可以編程,因此,各區(qū)塊實(shí)際訪問(wèn)的存儲(chǔ)大小和時(shí)序是可編程的。各個(gè)區(qū)塊均可以外擴(kuò)SROM(SROM指SRAM和ROM型存儲(chǔ)器);只有區(qū)塊6和7才能外擴(kuò)SDRAM,且支持自刷新和掉電工作模式。圖2-6 復(fù)位后S3C2410映射存儲(chǔ)空間從表2-5可以看出,區(qū)塊6和7的大小必須相等,且編址是連續(xù)的。1區(qū)塊0的總線寬度由于區(qū)塊0作為啟動(dòng)ROM區(qū)塊,在訪問(wèn)區(qū)塊0前,必需設(shè)定該區(qū)塊的總線寬度??梢栽O(shè)定為16位或32位寬度,由上電復(fù)位時(shí)S3C2410的管腳OM0和OM1(合記為OM1:0)的電壓決定,如表2-6所示。這里OM為Operating Mode(操作模式)的縮寫(xiě)。由表2-6可以看出,如果使用NAND

37、型FLASH作為啟動(dòng)ROM,那么OM1:0需配置為0b00;如果使用NOR型FLASH,需要根據(jù)FLASH的數(shù)據(jù)總線寬度為16位還是32位,配置OM1:0的值為0b01或0b11。2區(qū)塊地址連接樣式S3C2410中,所有區(qū)塊均可外接SROM,但只有區(qū)塊6和7可以外接SDRAM。各區(qū)塊根據(jù)外接存儲(chǔ)器芯片的數(shù)據(jù)總線位寬,用到的S3C2410地址管腳總線不同。如果外接8位數(shù)據(jù)總線的存儲(chǔ)器芯片,那么S3C2410地址管腳總線A0接外擴(kuò)存儲(chǔ)器的地址線ADDR0,A1接ADDR1,依次類推,直到把外擴(kuò)存儲(chǔ)器芯片所有的地址線都連接好,即地址總線是同名相連接的,這時(shí)S3C2410訪問(wèn)外部存儲(chǔ)器芯片是按字節(jié)訪問(wèn)

38、的。如果外接16位數(shù)據(jù)總線的存儲(chǔ)器芯片,那么S3C2410地址管腳線A1接外擴(kuò)存儲(chǔ)器的地址線ADDR0,A2接ADDR1,依次類推,即S3C2410的地址線A0不與外接存儲(chǔ)器芯片的地址線相連,而是接地,這時(shí),S3C2410訪問(wèn)外部存儲(chǔ)器芯片是按16位的半字訪問(wèn)的,每次訪問(wèn)時(shí),需要一次從數(shù)據(jù)線上讀出兩個(gè)字節(jié)的內(nèi)容。由于A0為0,故這種讀寫(xiě)方式下一定是半字對(duì)齊的。與16位的ROM及SROM連接的典型接口如圖2-7和圖2-8所示。圖2-7和圖2-8中,方框內(nèi)部的管腳標(biāo)號(hào)為ROM或SRAM的,方框代表ROM或SRAM芯片,方框外部的標(biāo)號(hào)屬于S3C2410的管腳標(biāo)號(hào)。圖2-7 與16位ROM的典型接口

39、圖2-8 與16位SRAM的典型接口 如果外接32位數(shù)據(jù)總線的存儲(chǔ)器芯片,那么S3C2410地址管腳線A2接外擴(kuò)存儲(chǔ)器的地址線ADDR0,A3接ADDR1,依次類推,即S3C2410的地址線A1和A0不與外接存儲(chǔ)器芯片的地址線相連,而是接地,這時(shí),S3C2410訪問(wèn)外部存儲(chǔ)器芯片是按32位的字訪問(wèn)的,每次訪問(wèn)時(shí),需要一次從數(shù)據(jù)線上讀出四個(gè)字節(jié)的內(nèi)容。由于A1:0 = 0b00,這種讀寫(xiě)方式下一定是字對(duì)齊的。外接32位數(shù)據(jù)總線的存儲(chǔ)芯片可等效于連接兩片16位數(shù)據(jù)總線的存儲(chǔ)芯片,如圖2-9所示,讀寫(xiě)時(shí),其中一片存儲(chǔ)器芯片存放每個(gè)字的低16位,另一片存儲(chǔ)器芯片存放同一個(gè)字的高16位。圖2-9中,方框

40、內(nèi)部標(biāo)號(hào)屬于SRAM,外部標(biāo)號(hào)為S3C2410的管腳標(biāo)號(hào)。圖2-9 32位典型接口(2片16位SRAM)3SDRAM區(qū)塊地址配置樣式 可外擴(kuò)SDRAM的區(qū)塊6和7可以配置大小,如表2-5所示,其大小可設(shè)為2MB、4MB、8MB、16MB、32MB、64MB、128MB等。這里列出8MB、16MB、32MB、64MB和128MB情況下外擴(kuò)SDRAM器件時(shí)地址線的配置樣式,如表2-7所示。表2-7中第一列區(qū)塊大小是指圖2-6中S3C2410映射存儲(chǔ)空間的區(qū)塊6或7的大??;第二列SDRAM總線寬度是指SDRAM的數(shù)據(jù)總線寬度,可取8位、16位或32位;第三列SDRAM芯片容量大小是指每片SDRAM芯

41、片的存儲(chǔ)容量大?。坏谒牧写鎯?chǔ)器配置表示SDRAM的存儲(chǔ)結(jié)構(gòu)和使用的片數(shù),例如64Mb大小、16位數(shù)據(jù)總線以及內(nèi)部具有4個(gè)存儲(chǔ)段的SDRAM使用了2片,那么存儲(chǔ)器配置表示為:(1Mb164段)2片,注意,這里的SDRAM芯片的數(shù)據(jù)總線寬度可以為4位、8位、16位或32位;第五列SDRAM區(qū)段選址是指SDRAM芯片內(nèi)局部為多個(gè)存儲(chǔ)段時(shí),用于選取特定存儲(chǔ)段的S3C2410管腳地址線。 第五列中的地址線根據(jù)區(qū)塊6或7的容量大小和外接SDRAM的存儲(chǔ)段數(shù)設(shè)置,例如,區(qū)塊6的大小為8MB,那么尋址地址線為A22:0,即最大尋址地址線為A22,當(dāng)SDRAM芯片有4個(gè)存儲(chǔ)段時(shí),需要2根地址線,于是,SDRAM

42、芯片區(qū)段選址地址線為A22:21。圖2-10和圖2-11分別為(1Mb164段)1片和(1Mb164段)2片的存儲(chǔ)器接口情況。4存儲(chǔ)器映射存放器從圖2-6可以看出,映射存儲(chǔ)空間的地址0 x48000000至0 x60000000區(qū)段為特殊功能存放器區(qū),S3C2410有豐富的特殊功能存放器(SFR),詳見(jiàn)附錄一,各個(gè)SFR的描述參見(jiàn)附錄二。圖2-10 外接8MB SDRAM 圖2-11 外接16MB SDRAM2.4.3 NOR型FLASH接口電路設(shè)計(jì) 由于S3C2410支持NAND型FLASH作為啟動(dòng)FLASH,啟動(dòng)后,NAND型FLASH仍可以用作外部存儲(chǔ)器,此外,NAND型FLASH的容量

43、比NOR型FLASH大得多,并且NAND型FLASH價(jià)格廉價(jià)。所以,S3C2410一般只需外接NAND型FLASH即可。NOR型FLASH的優(yōu)點(diǎn)在于其接口類似于SRAM,具有地址總線和數(shù)據(jù)總線管腳,可以直接訪問(wèn)存儲(chǔ)器內(nèi)部每一個(gè)字節(jié),讀取速度很快。博創(chuàng)UP-NETARM2410實(shí)驗(yàn)箱支持對(duì)NOR型FLASH芯片AM29LV160D的存儲(chǔ)擴(kuò)展(技創(chuàng)SBC2440實(shí)驗(yàn)板上為AM29LV800B),由于板上還載有NAND型FLASH芯片K9F1208U0M,所以,AM29LV160D芯片可以不用焊到板子上(這是博創(chuàng)實(shí)驗(yàn)箱核心板上有一個(gè)空焊盤(pán)沒(méi)裝芯片的原因)。1AM29LV160D特性AM29LV160

44、D是AMD公司的NOR型FLASH型片,存儲(chǔ)容量為2MB,應(yīng)用十分廣泛。其顯著特性有:3.3V工作電壓;0.23m生產(chǎn)工藝;訪問(wèn)速度最快達(dá)70ns;功耗極低,待機(jī)模式典型電流為200nA,讀典型電流為9mA5MHz,擦寫(xiě)典型電流為20mA5MHz;扇區(qū)結(jié)構(gòu)靈活,具有扇區(qū)保護(hù)特性,支持8位和16位讀寫(xiě)模式;壽命在100萬(wàn)次擦寫(xiě)以上;內(nèi)部數(shù)據(jù)掉電可保存20年;芯片讀寫(xiě)方便;具有硬件復(fù)位管腳。AM29LV160D有三種封裝型式,其中48腳TSOP外型如圖2-12所示,各管腳含義如表2-8所示。圖2-12 AM29LV160D芯片封裝2AM29LV160D接口電路AM29LV160D與S3C2410的

45、接口電路如圖2-13和圖2-14所示。圖2-13 AM29LV160D接口電路圖2-14 S3C2410局部接口電路說(shuō)明:圖2-13和圖2-14使用Protel DXP(Altium DXP)繪制,采用網(wǎng)標(biāo)表示不同芯片管腳的連通性。圖2-13中AM29LV160D的D0至D15即為圖2-12中的DQ0至DQ15,通過(guò)網(wǎng)標(biāo)LDATA0至LDATA15與S3C2410的數(shù)據(jù)總線DATA0至DATA15連接;AM29LV160D的A0至A19通過(guò)網(wǎng)標(biāo)LA1至LA20與S3C2410的地址總線ADDR1至ADDR20連接;其他管腳連接方法相同。圖2-13和圖2-14中的VDD33表示3.3 V電源;網(wǎng)

46、標(biāo)nRESET對(duì)于AM29LV160D和S3C2410來(lái)說(shuō)均為輸入信號(hào),nRESET來(lái)源于電源芯片或復(fù)位芯片的復(fù)位輸出腳。AM29LV160D的操作主要有擦片、寫(xiě)片、讀片、保護(hù)等,介紹這方面操作的參考書(shū)很多,筆者在西安電子科技大學(xué)出版社出版的?C/C+語(yǔ)言硬件程序設(shè)計(jì)基于TMS320C5000系列DSP?一書(shū)的第六章中也詳細(xì)地介紹了該類FLASH芯片的操作,本書(shū)不再重復(fù)。關(guān)于管腳標(biāo)注的一點(diǎn)補(bǔ)充:一般地,如果數(shù)字化芯片的管腳為低有效輸入時(shí),常在管腳名稱后面添加“#,或在管腳名稱上面添加一個(gè)橫線(DXP中在每個(gè)字母后加“即可),或在管腳名稱前添加字母“n。2.4.4 NAND型FLASH接口電路設(shè)

47、計(jì) NOR型FLASH芯片在很多基于DSP的系統(tǒng)中十分常用,在基于ARM型芯片的系統(tǒng)中,NAND型FLASH芯片用得更多一些,主要因素為NAND型FLASH芯片容量大、價(jià)格低,且ARM芯片支持NAND型FLASH作為啟動(dòng)ROM。博創(chuàng)UP-NETARM2410實(shí)驗(yàn)箱上集成了K9F1208U0C芯片(完全兼容K9F1208U0M)。1K9F1208U0M芯片特性K9F1208U0M為SAMSUNG公司的64MB大小NAND型FLASH存儲(chǔ)器芯片,其主要特性有:工作電壓為3.3 V;存儲(chǔ)單元陣列為(64M+2048K)8bit,分為4個(gè)可同時(shí)擦寫(xiě)大小為128Mb的存儲(chǔ)面,每個(gè)存儲(chǔ)面包括1024個(gè)存儲(chǔ)

48、塊和528B的頁(yè)存放器;片上寫(xiě)控制器自動(dòng)管理寫(xiě)入和擦除操作,典型的16KB存儲(chǔ)塊整塊擦除時(shí)間為2ms,528B大小的存儲(chǔ)頁(yè)寫(xiě)入的典型時(shí)間為200s,連續(xù)頁(yè)讀取時(shí)間最小可達(dá)50ns;I/O管腳用作數(shù)據(jù)、地址的輸入/輸出以及控制命令的輸入;數(shù)據(jù)保存時(shí)間長(zhǎng)達(dá)10年;具有硬件數(shù)據(jù)保護(hù)功能。K9F1208U0M芯片的封裝如圖2-15所示,其管腳含義如表2-9所示。圖2-15 K9F1208U0M封裝結(jié)構(gòu)2K9F1208U0M接口電路K9F1208U0M與S3C2410的接口電路如圖2-16所示。注意:需要結(jié)合圖2-14理解圖2-16中的網(wǎng)標(biāo)。在第七章中介紹了對(duì)K9F1208U0M訪問(wèn)的程序設(shè)計(jì)方法。圖2

49、-16的接法比較典型,8根I/O口線連接到S3C2410的數(shù)據(jù)總線DATA0DATA7,K9F1208U0M的控制信號(hào)線通過(guò)網(wǎng)標(biāo)FCLE、FALE、nFRE、nFWE、nFCE和FRB連接到圖2-14中的S3C2410的NAND FLASH控制總線上。由圖2-16和圖2-14可知,S3C2410接NAND型FLASH芯片時(shí),不使用地址總線。圖2-16 F9F1208U0M接口電路2.4.5 SDRAM接口電路設(shè)計(jì) SDRAM是Synchronous Dynamic Random Access Memory的縮寫(xiě),直譯為同步動(dòng)態(tài)隨機(jī)訪問(wèn)存儲(chǔ)器。SDRAM芯片的數(shù)據(jù)傳輸速率與同步時(shí)鐘相同,速率很高

50、。桌面電腦的DDR SDRAM和DDR SDRAM也是SDRAM型內(nèi)存,DDR為Double Date Rate的縮寫(xiě),表示數(shù)據(jù)傳輸速率是同步時(shí)鐘的兩倍,即時(shí)鐘信號(hào)的上升沿和下降沿均可被用來(lái)傳送同步數(shù)據(jù)。博創(chuàng)UP-NETARM2410實(shí)驗(yàn)箱使用了兩片HYNIX公司的SDRAM型HY57V561620芯片,本節(jié)給出HY57V561620芯片與S3C2410的接口電路。1HY57V561620芯片特性 HY57V561620芯片為32MB大小的SDRAM存儲(chǔ)器,主要特性為:工作電壓為3.3V;管腳兼容LVTTL邏輯電平;輸入和輸出均參考同步時(shí)鐘上升沿(或稱為上升沿觸發(fā)和上升沿有效);具有自動(dòng)刷新功

51、能;內(nèi)部具有4個(gè)存儲(chǔ)塊,每個(gè)存儲(chǔ)塊的大小為4M16bit;支持猝發(fā)式(Burst)連續(xù)讀寫(xiě)方式;輸入時(shí)鐘頻率可達(dá)166MHz。HY57V561620芯片管腳封裝如圖2-17所示,各管腳含義如表2-10所示。圖2-17 HY57V561620管腳封裝結(jié)構(gòu)HY57V561620內(nèi)部有4個(gè)存儲(chǔ)塊(Bank),通過(guò)塊地址線BA0和BA1取0b00、0b01、0b10或0b11選擇其中的一個(gè)塊,當(dāng)RAS有效時(shí),A0A12選中某個(gè)存儲(chǔ)塊的行地址(RA0RA12);然后,當(dāng)CAS有效且WE為高電平時(shí),A0A8用作這個(gè)存儲(chǔ)塊的列地址(CA0CA8),此時(shí)的操作為從相應(yīng)的地址陣列中讀取數(shù)據(jù);如果A10為高電平,

52、讀操作伴隨有自動(dòng)預(yù)充電功能。同理,操作過(guò)程中,如果WE為低電平,那么表示向地址陣列中寫(xiě)入數(shù)據(jù),A10為高電平時(shí),寫(xiě)操作伴隨有自動(dòng)預(yù)充電功能。讀寫(xiě)HY57V561620的控制真值表如表2-11所示。表2-11中“L表示低電平,“H表示高電平,RA為行地址,CA為列地址。13根行地址線和9根列地址線組合成22根地址線,HY57V561620每個(gè)存儲(chǔ)塊的尋址能力為222=4M,4個(gè)塊的尋址能力為16M,數(shù)據(jù)總線為16 bit,因此,每片HY57V561620的容量為16M16 bit=32MB。2HY57V561620接口電路 UP-NETARM2410實(shí)驗(yàn)箱中S3C2410外擴(kuò)了2片HY57V56

53、1620,共64MB大小的SDRAM空間,參考表2-7中S3C2410區(qū)塊6配置大小為64MB以及外接數(shù)據(jù)總線寬度為32位且有4段空間的SDRAM時(shí)的存儲(chǔ)器配置方案為(4Mb164段)2片,SDRAM內(nèi)部區(qū)段選址信號(hào)接S3C2410的地址線A25:24。由此,可得兩片HY57V561620芯片與S3C2410的接口電路圖如圖2-18和圖2-19所示。圖2-18和圖2-19說(shuō)明S3C2410映射存儲(chǔ)區(qū)塊6外擴(kuò)了64MB大小的SDRAM。圖2-18 兩片HY57V561620接口電路圖2-19 S3C2410局部接口電路 2.5 S3C2410外設(shè)接口電路設(shè)計(jì) S3C2410為基于ARM920T的

54、16/32位RISC微處理器芯片,片內(nèi)集成了豐富的系統(tǒng)外設(shè),消除了為系統(tǒng)配置額外接口器件的需要,大大降低了整個(gè)系統(tǒng)的本錢(qián)。S3C2410片上集成的外設(shè)功能有:1.8V或2.0V核電壓,3.3V存儲(chǔ)器電壓,3.3V外部I/O接口(亦稱IO接口)電壓;集成16KB指令高速緩存和16KB數(shù)據(jù)高速緩存;內(nèi)嵌MMU;外部存儲(chǔ)器控制器(SDRAM控制和片選邏輯);LCD控制器(支持4K色STN和256K色TFT),帶有1通道LCD專用DMA。具有外部請(qǐng)求引腳的4通道DMA;3通道,16字節(jié)Tx FIFO和16字節(jié)Rx FIFO)/2通道SPI;1通道多主IIC總線/1通道IIS總線控制器;支持SD主接口版

55、本,兼容MMC協(xié)議版本;2個(gè)USB主機(jī)接口/1個(gè)USB設(shè)備接口版);4個(gè)PWM定時(shí)器和1個(gè)內(nèi)部定時(shí)器;具有看門(mén)狗定時(shí)器;117個(gè)通用目的I/O口/24個(gè)外部中斷源;8通道10位ADC和觸摸屏接口;具有日歷功能的RTC;帶PLL的片內(nèi)時(shí)鐘發(fā)生器;具有正常、低速、空閑、掉電工作模式。2.5.1 片上外設(shè)及其映射存放器 S3C2410芯片管腳結(jié)構(gòu)及含義參見(jiàn)附錄三。S3C2410功能結(jié)構(gòu)框圖如圖2-20所示。圖2-20 S3C2410功能結(jié)構(gòu)框圖由圖2-20可見(jiàn),S3C2410核心為支持JTAG功能內(nèi)嵌ICE單元的ARM9TDMI微處理器核,ARM920TDMI通過(guò)系統(tǒng)控制協(xié)處理器CP15存放器C13

56、借助指令MMU(存儲(chǔ)器管理單元)和數(shù)據(jù)MMU以及AMBA總線到外部存儲(chǔ)器尋址指令和數(shù)據(jù),或通過(guò)C13到16KB指令Cache和16KB數(shù)據(jù)Cache快速尋址指令和數(shù)據(jù),指令地址和數(shù)據(jù)地址通過(guò)總線IVA31:0和DVA31:0傳送。選址后,使用總線ID31:0和總線DD31:0借助指令MMU和數(shù)據(jù)MMU以及AMBA總線訪問(wèn)外部存儲(chǔ)器的指令或數(shù)據(jù),或直接在16KB指令Cache和16KB數(shù)據(jù)Cache中讀寫(xiě)或存取指令和數(shù)據(jù)。MMU指向AMBA總線的連接總線IPA31:0或DPA31:0是指指令或數(shù)據(jù)的物理地址,而C13單元連接MMU單元的IVA31:0或DVA31:0是指指令或數(shù)據(jù)的映射(或稱虛擬

57、)地址。 MMU的作用是把ARM920T核產(chǎn)生的地址(稱為虛擬地址)轉(zhuǎn)化為物理地址去訪問(wèn)外部的存儲(chǔ)器。CP15用于配置MMU,寫(xiě)緩沖器(Write Buffer)可用于保存16個(gè)字和4個(gè)地址,寫(xiě)回物理地址伴隨緩存器(WriteBack PA Tag RAM)可把數(shù)據(jù)Cache更新的數(shù)據(jù)快速刷回外部存儲(chǔ)器。16KB的高速Cache存儲(chǔ)陣列為512行32B,帶寬為64位,訪問(wèn)Cache的地址總線為ARM920T核的虛擬地址通過(guò)C13翻譯后的地址總線,Cache處于ARM920T核和外部存儲(chǔ)器(稱為主存)之間,用于緩沖將要讀/寫(xiě)的主存數(shù)據(jù),有效地提高ARM920T核的數(shù)據(jù)處理速度。 AMBA總線包括

58、AHB總線和APB總線。由圖2-20可知,AHB總線主要用于擴(kuò)展LCD DMA、LCD控制器(圖中的CONT.為Controller的縮寫(xiě)),USB主機(jī)控制器,NAND FLASH控制器及啟動(dòng)控制,中斷控制器;電源管理,SRAM/NOR FLASH/SDRAM存儲(chǔ)器控制器等。APB總線主要用于擴(kuò)展UART、USB設(shè)備、SDI/MMC、看門(mén)狗定時(shí)器、SPI、IIC、IIS、GPIO、RTC、ADC、定時(shí)器/PWM等。AHB和APB都具有總線控制器,能實(shí)現(xiàn)總線仲裁和譯碼功能。所有片上外設(shè)通過(guò)外設(shè)存放器管理。片上外設(shè)相關(guān)的存儲(chǔ)器映射存放器及其含義參見(jiàn)附錄一和附錄二。2.5.2 LED接口電路設(shè)計(jì)UP

59、-NETARM2410實(shí)驗(yàn)箱上有3個(gè)貼片的LED燈、2個(gè)7段數(shù)碼管和1個(gè)88點(diǎn)陣的LED陣列,其連接電路圖如圖2-21至圖2-28所示。圖2-21 總線隔離驅(qū)動(dòng)圖2-22 CPLD控制電路圖2-23 EPM240的JTAG口 圖2-24 七段LED數(shù)碼管圖圖2-25 88LED陣列圖2-26 LED燈 圖2-27 與門(mén)電路 圖2-28 與LED顯示相關(guān)的S3C2410局部電路上述圖中,圖2-23為圖2-22中CPLD的JTAG下載口電路。從圖2-26和圖2-28可以看出,LED燈的控制直接由S3C2410的通用目的IO口GPC5GPC7控制,當(dāng)這些管腳置為低電平時(shí),對(duì)應(yīng)的LED燈會(huì)亮。結(jié)合圖2

60、-21、圖2-22、圖2-24、圖2-27和圖2-28以及圖2-6,理解2個(gè)7段數(shù)碼電路的工作原理。圖2-24中2個(gè)7段數(shù)碼管的控制輸入LED1ALED1G和LED1DP以及LED2ALED2G和LED2DP,來(lái)自圖2-22中CPLD的IO口,這些IO口被配置為輸出。圖2-22中DATA0DATA7和A1A4通過(guò)簡(jiǎn)單的組合邏輯與LED1ALED1G和LED1DP以及LED2ALED2G和LED2DP在CPLD內(nèi)部相連通(需要編制VHDL語(yǔ)言程序)。 這個(gè)控制邏輯為當(dāng)A8=1且A4:1=0b1000時(shí),DATA7:0連通LED2A:G和LED2DP;當(dāng)A8=1且A4:1=0b1001時(shí),DATA

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論