




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、第三章第三章 TMS320C2XX中央處理單元中央處理單元與程序控制與程序控制上一章內(nèi)容回顧上一章內(nèi)容回顧(1明確為什么要學(xué)習(xí)DSP的硬件組成與體系結(jié)構(gòu),掌握C2xxDSP的硬件組成與體系結(jié)構(gòu)及其特點。(2解決在編程序時不知道哪些資源是可用的,怎么用?(3解決硬件設(shè)計時,對引腳信號不知道怎么用?怎樣發(fā)掘芯片的潛能,也就是說器件的優(yōu)化設(shè)計問題和效能最大化的問題。(打下基礎(chǔ))上一章的主要內(nèi)容:本章教學(xué)目的本章教學(xué)目的要求同學(xué)理解掌握DSP的中央處理單元的組成和程序控制的原理 理解各狀態(tài)寄存器的狀態(tài)位及其作用理解流水線的原理以及轉(zhuǎn)移、調(diào)用、返回指令的執(zhí)行過程理解DSP的中斷和復(fù)位操作3.1 概述3.
2、2 輸入定標(biāo)部分3.3 乘法部分3.4 中央算術(shù)邏輯部分3.5 輔助寄存器與狀態(tài)寄存器3.6 程序地址生成與流水線3.7 轉(zhuǎn)移、調(diào)用和返回3.8 重復(fù)指令3.9 中斷與中斷管理3.10復(fù)位操作3.11節(jié)能方式 本章主要內(nèi)容3.1 概述本章講述中央處理單元CPU的主要組成C P U 的 三 個 基 本 部 分3.2節(jié)3.4節(jié))輔 助 寄 存 器 算 術(shù) 單 元ARAU)(3.5節(jié))狀態(tài)寄存器ST0和ST1(3.5節(jié))節(jié) 能 方 式 (3.11節(jié))C2XX器件程序控制的特點及其處理過程 (3.6節(jié)3.10節(jié))涉及到對一個或多個指令塊執(zhí)行順序的控制,通常,程序流是順序的,C2XX在連續(xù)的程序存儲器地
3、址執(zhí)行指令操作。然而,有時一個程序必須轉(zhuǎn)移到一個非順序的地址,最后在該新的地址單元順序地執(zhí)行指令。為此,C2XX支持轉(zhuǎn)移、調(diào)用、前往、重復(fù)和中斷等操作。 該方式暫停內(nèi)部程序流并暫時地降低C2XX的功能 C2xx的總體框圖中央算術(shù)邏輯單元:CALU 數(shù)據(jù)地址產(chǎn)生邏輯(ARAU以及8個AR)累加器:ACC 程序地址產(chǎn)生邏輯 用于CALU的輸入輸出數(shù)據(jù)比例移位器 16-bit16-bit乘法器乘積比例移位器CPU的輸入比例、中央算術(shù)邏輯和乘法部分框圖 一個32-bit輸入數(shù)據(jù)定標(biāo)移位器(輸入移位器)使一個存儲器的16-bit值與32-bit的CALU對齊。 對于數(shù)據(jù)的算術(shù)運算和邏輯運算來說,數(shù)據(jù)的校
4、準(zhǔn)很有必要。 作為程序(或數(shù)據(jù))和CALU之間的數(shù)據(jù)通道,輸入移位器操作不需要額外開銷。下面介紹輸入移位器的輸入、輸出和移位位數(shù)。輸入輸入 程序讀總線程序讀總線(PRDB)該輸入為一個指令操作時給定的常數(shù)。該輸入為一個指令操作時給定的常數(shù)。輸入移位器的15位到0位接收程序存儲器(PRDB)或數(shù)據(jù)存儲器(DRDB)的一個16-bit輸入。輸出輸出 在左移期間,移位器中未使用的LSB被零填充,而移位器中的MSB則被零或擴展符填充。數(shù)據(jù)讀總線數(shù)據(jù)讀總線(DRDB)該輸入為一個來自數(shù)據(jù)存儲器的數(shù)據(jù)。該輸入為一個來自數(shù)據(jù)存儲器的數(shù)據(jù)。接收了一個16-bit數(shù)據(jù)之后,輸入移位器就將該16-bit數(shù)據(jù)與CA
5、LU的32-bit總線對齊: 輸入移位器將該16位數(shù)據(jù)左移016位,然后向CALU送入32位的結(jié)果。移位位數(shù)移位位數(shù)輸入移位器可以將一個16-bit數(shù)據(jù)左移016位。移位大小(或移位位數(shù))可從以下方式獲得:暫存寄存器暫存寄存器(TREG)的的4個個LSB位位基于基于TREG的移位操作允許動態(tài)地確定數(shù)據(jù)的移位操作允許動態(tài)地確定數(shù)據(jù)定標(biāo)因子,以便它能更好地適應(yīng)系統(tǒng)性能。定標(biāo)因子,以便它能更好地適應(yīng)系統(tǒng)性能。在指令字中嵌入一個常數(shù)在指令字中嵌入一個常數(shù)在指令字中設(shè)置移位位數(shù),允許執(zhí)行特定在指令字中設(shè)置移位位數(shù),允許執(zhí)行特定的數(shù)據(jù)定標(biāo)或校準(zhǔn)操作。的數(shù)據(jù)定標(biāo)或校準(zhǔn)操作。 對許多(并非所有的)指令而言,符
6、號擴展方式位(SXM),即狀態(tài)寄存器ST1的第l0位,決定著在CALU計算中是否采用符號擴展: SXM=0 不采用符號擴展; SXM=l 輸入移位器的輸出具有符號擴展。符號擴展方式位符號擴展方式位(SXM)圖2-3為當(dāng)SXM=0時,輸入數(shù)據(jù)被左移8位的情況。送入CALU的數(shù)據(jù)的MSB位被零填充圖2-4為當(dāng)SXM=l時,同樣的移位情況。在移位期間,數(shù)據(jù)具有符號擴展。3.3 乘法部分乘法部分 C2XX 使用一個16-bit*l6-bit的硬件乘法器。 它在一個機器周期內(nèi)可產(chǎn)生一個帶符號或不帶符號的32bit乘積。乘法部分包括:16bit暫存寄存器(TREG)乘法器32bit乘積寄存器(PREG)乘
7、積移位器寄存其中一個被乘數(shù)把TREG中的值與數(shù)據(jù)存儲器(或程序存儲器)的值相乘接收乘法器的乘積在將PREG的值送入CALU之前,乘積移位器將對PREG值進行定標(biāo)操作3.3.1 乘法器乘法器 在一個機器周期內(nèi),16-bit * l6-bit硬件乘法器可以產(chǎn)生一個帶符號或不帶符號的32-bit乘積。 除在無符號乘法(MPYU指令)周期外,被乘的兩個數(shù)作二進制補碼處理。以下是對乘法器的輸入和輸出的描述。 PREG的輸出與32-bit乘積定標(biāo)移位器相連。經(jīng)過移位器處理,乘積可以從PREG進入CALU(或數(shù)據(jù)存儲器通過SPH和SPL指令)。輸入輸入來自數(shù)據(jù)讀總線(DRDB)的數(shù)據(jù)存儲器的值。輸出輸出乘法
8、器接收兩個16-bit的輸入:總是來自16-bit的暫存寄存器(TREG) 另一個輸入為下列數(shù)值之一:其中一個輸入:來自程序讀總線(PRDB)的程序存儲器的值。3.3.2 乘積定標(biāo)移位器乘積定標(biāo)移位器 乘積定標(biāo)移位器(乘積移位器)用于乘積寄存器(PREG)值的定標(biāo)。輸入輸入 PREG的輸出的輸出輸出輸出 CALU的輸入的輸入移位器有一個32-bit的輸入,它與PREG的輸出相連移位器完成移位操作,所有32位的數(shù)據(jù)被送入CALU,而16位的數(shù)據(jù)則被存儲在數(shù)據(jù)存儲器中。移位方式移位方式乘積定標(biāo)移位器采用4種乘積移位方式中的一種(參見下表)。PM移位描述00不移位乘積進入CALU或數(shù)據(jù)寫總線(DME
9、B)之前不作移位處理01左移1位移出以二進制補碼方式產(chǎn)生的額外符號位以便產(chǎn)生一個Q3110左移4位當(dāng)與一個13-bit的常數(shù)相乘時,移動以一個16-bitXl3-bit的二進制補碼相乘方式產(chǎn)生的4個額外符號位以便產(chǎn)生一個Q31+乘積11右移6位對乘積進行定標(biāo)以便進行多達(dá)128次的乘積累加定標(biāo),而又使累加器不致溢出。無論狀態(tài)寄存器ST2的符號擴展方式位(SXM)的值如何,右移方式總是符號擴展的。乘積定標(biāo)移位器的乘積移位方式 移位方式的采用取決于狀態(tài)寄存器ST1的乘積移位方式(PM)值。第一種移位方式(PM=00)第二、三種方式(PM=01、10)最后一種方式可引起左移位(1位或4位)。 這兩種方
10、式有利于進行分?jǐn)?shù)運算或調(diào)整乘積。在將乘積送入CALU或數(shù)據(jù)存儲器之前,移位器不對乘積進行移位處理??墒钩朔e右移6位。 它允許連續(xù)進行多達(dá)128次的乘/加運算,而不至于引起累加器的溢出。3.4 中央算術(shù)邏輯部分中央算術(shù)邏輯部分主要組成執(zhí)行一系列的算術(shù)和邏輯運算。接收CALU輸出,并且可以借助于進位位(C)執(zhí)行累加器中數(shù)值的移位。在將累加器的高位字或低位字的一個拷貝送入數(shù)據(jù)存儲器之前,對該拷貝進行移位處置。圖中給出了累加器的高位(ACCH)和低位字(ACCL)。 中央算術(shù)邏輯單元 3.4.1 中央算術(shù)邏輯單元中央算術(shù)邏輯單元(CALU) 中央算術(shù)邏輯單元(CALU)執(zhí)行一系列的算術(shù)和邏輯運算,數(shù)字
11、運算是在一個時鐘周期內(nèi)進行。 這些算術(shù)和邏輯運算分為四類:位測試、移位和循環(huán)它具有獨立的算術(shù)單元和輔助寄存器算術(shù)單元。16-bit加法16-bit減法布爾邏輯運算鑒于CALU可執(zhí)行布爾運算,因此可以進行位處理。CALU使用累加器進行移位和循環(huán)。 輸入輸入CALU有兩個輸入一個輸入總是由32-bit累加器提供另一個輸入由以下兩個移位器中的一個提供輸出輸出CALU輸出數(shù)據(jù)輸出數(shù)據(jù)定標(biāo)移位器定標(biāo)移位器32-bit數(shù)據(jù)存儲器數(shù)據(jù)存儲器16-bit累加器累加器32-bit對該運算結(jié)果進行移位處置執(zhí)行一次運算累加器的高16位字和低16位字被分別移位輸出輸出符號擴展方式位符號擴展方式位 對許多(并非所有的)
12、指令而言,符號擴展方式位(SXM),即狀態(tài)寄存器ST1的第10位,決定著CALU在運算周期內(nèi)是否采用符號擴展。如果SXM=0,則禁止符號擴展。如果SXM=l,則允許符號擴展。3.4.2 累加器累加器下面討論與累加器相關(guān)的狀態(tài)位和轉(zhuǎn)移指令。狀狀態(tài)態(tài)位位 許多轉(zhuǎn)移指令可根據(jù)C、OV和TC等狀態(tài)位以及累加器中的數(shù)值來完成。當(dāng)累加器加產(chǎn)生一個進位時。當(dāng)累加器減不產(chǎn)生一個借位時。(例外情況:當(dāng)SUB指令使用16-bit移位且不產(chǎn)生借位時,則不影響C)。以下情況將影響C(狀態(tài)寄存器ST1的第9位):與累加器加或減:累加器的單位移位和循環(huán):C=0當(dāng)累加器減產(chǎn)生一個借位時。當(dāng)累加器加不產(chǎn)生一個進位時 (例外:
13、當(dāng)ADD指令使用16-bit移位且不產(chǎn)生進位時,則不影響C)。C=l 在一次左移位或循環(huán)期間,累加器的最高有效位被送入C; 在一次右移位或循環(huán)期,累加器的最低有效位送入C。OVM(狀態(tài)寄存器ST0的第11位)決定著累加器算術(shù)溢出的情況。當(dāng)OVM=0,累加器以正常方式溢出。 當(dāng)累加器處于溢出方式(OVM=1)并且發(fā)生一次溢出時,產(chǎn)生下面兩種情況:如果溢出方向為正, 則累加器被最大正數(shù)值填充(7FFF FFFFh)。如果溢出方向為負(fù), 則累加器被最大負(fù)數(shù)值填充(8000 0000h)。 根據(jù)一個測試位的值,TC被置為0或l。 對于NORM指令,如果累加器的兩位MSB的異或為真,則TC被置為l。OV
14、是狀態(tài)寄存器ST0的第12位。如果未檢測到累加器溢出,則OV為0當(dāng)溢出(正方向或負(fù)方向)發(fā)生時,OV為l并被鎖存。TC是狀態(tài)寄存器ST1的第11位。3.4.3 輸出數(shù)據(jù)定標(biāo)位移器輸出數(shù)據(jù)定標(biāo)位移器 輸出數(shù)據(jù)定標(biāo)移位器(輸出移位器)有一個32-bit的輸入和一個16-bit的輸出。它們分別是累加器的32-bit輸出和16位的數(shù)據(jù)總線輸入。 輸出移位器拷貝累加器的32位數(shù)據(jù),并對移位器中的數(shù)據(jù)執(zhí)行一次左移根據(jù)相應(yīng)的存儲指令可左移0至7位)。 然后移位器中的高位字(SACH指令)或低位字(SACL指令)被送入數(shù)據(jù)存儲器,累加器內(nèi)容保持不變。 當(dāng)輸出移位器執(zhí)行移位時,MSB丟失并且LSB被零填充。 圖
15、2顯示了與圖1同樣的累加器值被左移6位以及移位后的低位字被存儲的情況。 圖1顯示了累加器值被左移4位以及移位后的高位字被送入數(shù)據(jù)存儲器的情況。圖1圖23.5 輔助寄存器與狀態(tài)寄存器輔助寄存器與狀態(tài)寄存器 輔助寄存器算術(shù)單元ARAU獨立于中央算術(shù)邏輯單元(CALU)。 它的主要功能是對8個輔助寄存器(從AR7到AR0)執(zhí)行算術(shù)操作。 該操作可與CALU中的操作并行進行。ARAU及有關(guān)邏輯 8個輔助寄存器(AR7-AR0)提供了靈活多變以及功能強大的間接尋址。使用輔助寄存器中的一個16-bit地址就可訪問64K數(shù)據(jù)存儲空間的任意單元。 通過向狀態(tài)寄存器ST0的一個3-bit輔助寄存器指針(ARP)
16、設(shè)置一個從0到7的值,就可以選擇所需的輔助寄存器。設(shè)置數(shù)值的方法有它只修改輔助寄存器及ARP它可通過數(shù)據(jù)讀總線DRDB向狀態(tài)寄存器ST0置入一個數(shù)據(jù)存儲器的值 當(dāng)指令完成后,當(dāng)前輔助寄存器的內(nèi)容可通過ARAU執(zhí)行16位無符號算術(shù)運算,實現(xiàn)地址更新。 ARP所指示的寄存器稱為當(dāng)前輔助寄存器或當(dāng)前AR。在一個指令的處理期,當(dāng)前輔助寄存器的內(nèi)容被用作數(shù)據(jù)存儲器的訪問地址。 如果指令要求從數(shù)據(jù)存儲器讀,則ARAU就將地址送入數(shù)據(jù)讀地址總線 如果指令要求向數(shù)據(jù)存儲器寫,則ARAU就將地址送入數(shù)據(jù)寫地址總線3.5.1 ARAU和輔助寄存器功能和輔助寄存器功能ARAU執(zhí)行以下操作:使輔助寄存器的值增1或減1
17、或增減一個偏移量(通過支持間接尋址的任一指令)。將輔助寄存器值加上一個常量(通過ADRK指令)或使輔助寄存器值減去一個常量(通過SBRK指令)。比較AR0的內(nèi)容和當(dāng)前AR的內(nèi)容,并將比較結(jié)果送入狀態(tài)寄存器ST1的測試/控制狀態(tài)位(TC)(通過CMPR指令)。通過數(shù)據(jù)寫總線(DWEB)將結(jié)果送入TC。常量為一個8位數(shù)值,它來自指令字的8個LSB位。通常例外地址的產(chǎn)生發(fā)生在下一指令的譯碼之前 輔助寄存器除用于指示數(shù)據(jù)存儲器地址外,它還可用于其它目的。CMPR指令使用輔助寄存器可支持條件轉(zhuǎn)移、調(diào)用和返回。CMPR指令將AR0的內(nèi)容與當(dāng)前AR的內(nèi)容進行比較,然后將比較結(jié)果置于狀態(tài)寄存器ST1的測試/控
18、制狀態(tài)位(TC)。LAR指令向輔助寄存器裝載數(shù)據(jù)SAR指令將AR的值存入數(shù)據(jù)存儲器在必要時可對它們進行增或減操作。3.5.2 狀態(tài)寄存器狀態(tài)寄存器ST0和和ST1C2XX器件有兩個狀態(tài)寄存器ST0和ST1 這兩個寄存器包含狀態(tài)位和控制位。它們可通過數(shù)據(jù)存儲器存儲和裝載數(shù)據(jù),這樣,就可以存儲和恢復(fù)機器狀態(tài)。向ST0和ST1寫從ST0和ST1讀INTM位例外,因為它不受LST指令的影響可以設(shè)置和清除兩個寄存器的許多獨立位例如符號擴展方式可用SETC SXM置1,可用CLRC SMX清除狀態(tài)寄存器中有幾個位被保留;它們通常為邏輯1。 留意:R=讀訪問;W=寫訪問;”一符號后面的值為復(fù)位后的值(X為不
19、受復(fù)位影響的值)。+為保留位,總是為1。它不受寫影響。命名命名描述描述ARB 除在LST(裝載狀態(tài)寄存器)指令期外,每當(dāng)輔助寄存器指針(AR)被裝載,先前的ARP值就被復(fù)制到ARB 當(dāng)ARB通過LST指令被裝載時,同樣的值也被復(fù)制到ARP。ARP它是一個3-bit字段。可以決定在間接尋址方式中使用哪種輔助寄存器。當(dāng)ARP被裝載時,先前的ARP值被復(fù)制到ARB寄存器(除在一個LST指令期外)。通過存儲器訪問指令(使用間接尋址方式)以及通過MAR(修改輔助寄存器)和LST指令可以修改ARP。當(dāng)ARB通過LST指令被裝載時,同樣的值被復(fù)制到ARP。關(guān)于ARP在間接尋址中的使用詳情,請參考第4.3章節(jié)
20、間接尋址方式。狀態(tài)寄存器ST0和ST1的位(字段)C如果一次加操作產(chǎn)生了一個進位,則C被設(shè)為1;如果一次減操作產(chǎn)生了一個借位,則C被清零。相反地,如果一次加操作不產(chǎn)生一個進位,則C被清零如果一次減操作不產(chǎn)生一個借位,則C被置為1(ADD指令或具有二個16位移位的SUB指令除外)。CNF 該CNF位決定了可重配置的雙存取RAM塊是映射到數(shù)據(jù)空間,還是映射到程序空間。通過SETC CNF,CLRC CNF和LST指令可修改CNF位。復(fù)位時,CNF位清零。有關(guān)CNF和雙存取RAM塊的詳情,請參考第3章“存儲器和I/O空間”。CNF=O可重配置的雙存取RAM塊被映射到數(shù)據(jù)空間CNF=l可重配置的雙存取
21、RAM塊被映射到程序空間DP當(dāng)一個指令采用直接尋址方式時,9-bit的DP字段就與指令字的7個LSB位鏈接,從而構(gòu)成一個全16-bit數(shù)據(jù)存儲器地址。有關(guān)詳情,請參閱第4.2章節(jié)直接尋址方式。LST和LDP(裝載DP)指令可以修 改DP字段。INTM該方式位允許或禁止所有可屏蔽的中斷。INT分別通過SETC、INTM和CLRC、INTM指令設(shè)置和清除。INTM不影響不可屏中斷RS(非)和NMI(非),它也不影響被軟件啟動的中斷。LST(裝載狀態(tài)寄存器)指令不影響INTM(非)。當(dāng)中斷發(fā)生時(TRAP指令情況除外),INTM被置1并處于復(fù)位狀態(tài)。INTM=O允許所有非屏蔽的中斷被允許。INTM=
22、l禁止所有可屏蔽的中斷。OV 它保留一個鎖存值,該鎖存值可指明在CALU中是否己發(fā)生溢出。如果CALU中發(fā)生溢出,則OV為l。一旦發(fā)生溢出,OV位就保留置位狀態(tài)直到它被復(fù)位條件轉(zhuǎn)移指令或LST指令清除。OVW OVM決定CALU如何處理溢出情況。SETC和CLRC指令可分別設(shè)置和清除OVM。LST指令可修改OVM。OVM=0累加器值正常溢出OVM=l在發(fā)生溢出時,累加器值被設(shè)為最大正值或最大負(fù)值PM PM決定著在PREG植被送入CALU或數(shù)據(jù)存儲器時PREG值的移位量。注意:PREA的內(nèi)容保持不變;PREG值被復(fù)制到乘積移位器,并在移位器中進行移位處理:可通過SPM和LST指令裝載PM。通過復(fù)
23、位清除PM。PM=00,乘法器的32-bit乘積被送入CALU或數(shù)據(jù)存儲器,進行移位處理。PM=01,TREG的輸出值左移1位(LSB被零填充),然后被送入CALU或數(shù)據(jù)存儲器。PM=10,TREG的輸出值左移4位(LSB被零填充)送入CALU或數(shù)據(jù)存儲器。SXMSXM不影響某些指令的基本操作。例如,無論SXM存在與否,ADDS指令均可抑制符號擴展。SXM通過SETC,SXM指令被設(shè)置位,通過CLRC SXM指令被清除,并可通過LST指令裝載。復(fù)位可設(shè)置SXM為l。SXM=O該方式位抑制符號擴展,SXM=l在數(shù)據(jù)從輸入移位進入累加器時,該方式位使數(shù)據(jù)產(chǎn)生符號擴展。TCTC位可在以下情況下置1:
24、被CMPR測試的比較條件為真,如果使用NORM指令測試時,累加器的2個MSB位的異或為真。根據(jù)TC的狀態(tài)可執(zhí)行條件轉(zhuǎn)移、調(diào)用和返回指令。BIT、BITT、CMPR、LST和NORM指令均可影響TC值。XF它決定XF引腳的狀態(tài)。XF引腳是一個通用輸出引腳。XF通過SETC指令置1,通過CLRC XF,XF指令清除。XF可被LST指令修改復(fù)位時,XF被設(shè)為1。上一次課主要內(nèi)容回顧上一次課主要內(nèi)容回顧3.1 概述3.2 輸入定標(biāo)部分3.3 乘法部分3.4 中央算術(shù)邏輯部分3.5 輔助寄存器與狀態(tài)寄存器1. C2xx CPU有哪些基本組成,說出個部分的主要功能?有哪些基本組成,說出個部分的主要功能?2
25、 . C2xx輔助寄存器有幾個?主要用作什么功能?輔助寄存器有幾個?主要用作什么功能?3. C2xx幾個狀態(tài)寄存器?主要狀態(tài)信息有哪些?幾個狀態(tài)寄存器?主要狀態(tài)信息有哪些?問題?問題?本次課教學(xué)目的本次課教學(xué)目的要求同學(xué)理解掌握DSP的中央處理單元的組成和程序控制的原理 理解各狀態(tài)寄存器的狀態(tài)位及其作用理解流水線的原理以及轉(zhuǎn)移、調(diào)用、返回指令的執(zhí)行過程理解DSP的中斷和復(fù)位操作前半部分是前半部分是CPUCPU的組成和狀態(tài)信息的組成和狀態(tài)信息后半部分是程序控制后半部分是程序控制3.6 程序地址生成與流水線3.7 轉(zhuǎn)移、調(diào)用和返回3.8 重復(fù)指令3.9 中斷與中斷管理3.10復(fù)位操作3.11節(jié)能方
26、式 本次課的主要內(nèi)容3.6 程序地址生成與流水線程序地址生成與流水線 在執(zhí)行當(dāng)前指令的同時,程序流要求處理器生成下一個程序地址(順序的或非順序的)。程序地址生成示意圖 操作程序地址源順序操作PC(包含程序地址+1)空周期PAR(包含程序地址)從子程序返回棧頂(TOS)從表移動或塊移動返回微堆棧(MSTACK)轉(zhuǎn)移到或調(diào)用指令設(shè)定的地址利用程序讀總線(PRDB)方式的轉(zhuǎn)移或調(diào)用指令轉(zhuǎn)移到或調(diào)用累加器低字所設(shè)定的地址利用數(shù)據(jù)讀總線(DRDB)方式的累加低字轉(zhuǎn)移到中斷服務(wù)程序利用程序讀總線(PRDB)方式的中斷矢量單元。程序地址生成描述程序地址生成描述C2XX程序地址生成邏輯使用以下硬件:C2XX含
27、有一個16-bit的程序計數(shù)器(PC)。在提取指令時,PC對內(nèi)部和外部程序存儲器尋址。PAR驅(qū)動程序地址總線(PAB)。PAB是一個16-bit總線,它提供程序的讀、寫地址。程序地址生成邏輯包括一個16-bit的8級硬件堆棧,用于存儲多達(dá)8個的返回地址。另外,也可將堆棧用作暫存存儲器。有時,程序地址生成邏輯采用16-bit的1級MSTACK來存儲一個返回地址。l6-bit的RPTC可用來確定重復(fù)(RPD)指令的重復(fù)次數(shù)。 PC保留將被執(zhí)行的下一個指令的地址。通過程序地址總線(PAB),可以從該地址(位于程序存儲器中)提取一個指令,然后將指令裝入指令寄存器。 當(dāng)指令寄存器被裝載時,PC保持下一個
28、地址。3.6.1 程序計數(shù)器程序計數(shù)器(PC) 程序地址生成邏輯采用16-bit的程序計數(shù)器(PC)來對內(nèi)部和外部程序存儲器尋址。操作裝入PC的地址順序執(zhí)行如果當(dāng)前指令占1個字,則PC裝載PC+1;如果當(dāng)前指令占2個字則PC裝載PC+2。轉(zhuǎn)移在執(zhí)行轉(zhuǎn)移指令后,PC裝載操作數(shù)(長立即數(shù))子程序調(diào)用和返回,PC將下一個指令地址存入堆棧,并將操作數(shù)裝入PC,返回指令將返回地址從堆棧彈回到PC以便繼續(xù)執(zhí)行程序。軟件或硬件中斷將適當(dāng)?shù)闹袛嗍噶康刂费b入PC。在該地址單元,轉(zhuǎn)移指令將相應(yīng)的中斷服務(wù)程序地址裝入PC。計算GOTO累加器低16位的內(nèi)容被裝入PC。使用BACC(轉(zhuǎn)移到累加器中的地址)或CALA(調(diào)
29、用累加器指定單元的子程序)指令可以執(zhí)行計算GOTO操作。裝入程序計數(shù)器的地址 當(dāng)發(fā)生子程序調(diào)用或中斷時,程序地址生成邏輯使用堆棧存儲返回地址。 當(dāng)一個指令強迫CPU進入子程序或一個中斷操作強迫CPU進入中斷服務(wù)程序時,返回地址被自動裝入棧頂;這項工作不需要額外的時間開銷。 執(zhí)行完子程序或中斷服務(wù)程序后,返回指令將返回地址從棧頂彈回程序計數(shù)器。3.6.2 堆棧堆棧STACK) 當(dāng)返回地址不需要8級堆棧時返,堆棧可用來存儲子程序或中斷服務(wù)程序中的有關(guān)數(shù)據(jù),或用作其它用途的存儲器。C2XX具有一個16位的8級硬件堆棧??梢杂孟旅鎯山M指令訪問堆棧:PUSH指令將累加器的低16位復(fù)制到棧頂。POP指令將
30、棧頂?shù)闹邓突乩奂悠鞯牡?6位。 這兩條指令允許你在數(shù)據(jù)存儲器中建立一個堆棧,以便處理超過8級的子程序或中斷程序嵌套。PSHD指令向棧頂壓入一個數(shù)據(jù)存儲器的值。POPD指令則將棧頂?shù)闹祻椈氐綌?shù)據(jù)存儲器。 每當(dāng)一個值被壓入棧頂,通過一條指令或通過地址生成邏輯時,各級堆棧內(nèi)容被相應(yīng)地下壓一級,而棧底的內(nèi)容丟失。因此,如果在POP指令之前發(fā)生8次以上的連續(xù)壓入,則數(shù)據(jù)將會丟失(發(fā)生堆棧溢出)。 POP操作與PUSH操作相反。POP操作將每級堆棧的內(nèi)容送入上一級的堆棧。經(jīng)過連續(xù)7次POP操作之后的POP操作將得到棧底的值,因此,棧底的值將被逐級復(fù)制直到送入累加器或相應(yīng)的存儲單元。 程序地址生成邏輯在執(zhí)行
31、某些指令之前使用16-bit的一級MSTACK來存儲一個返回地址。這些指令使用程序地址生成邏輯為一條兩操作數(shù)指令提供第二地址。3.6.3 微堆棧微堆棧(MSTACK)BLDD BLPD MAC MACD TBLR TBLW這些指令是: 在重復(fù)操作時,這些指令使用PC將第一操作數(shù)地址加1,并且可以利用輔助寄存器算術(shù)單元(ARAU)產(chǎn)生第二操作數(shù)地址。 在使用這些指令時,返回地址(提取下一指令地址)被壓入MSTACK。完成這些指令操作后,MSTACK值被彈回到程序地址生成邏輯。 MSTACK操作是不可見的。 與堆棧不同的是,微堆棧只能被程序地址生成邏輯所用,MSTACK不能用作存儲器。指令流水線由
32、一系列總線操作組成。C2XX流水線具有4個獨立的操作階段: 由于4個操作階段是獨立的(因為內(nèi)部有6套總線),因此,這些操作可以交疊地進行。在任意的指定周期內(nèi),1到4個不同的指令均可有效,各條指令均處于一個不同的完成階段。在典型情況下,完成一條指令需要3個步驟,即:取指令、指令譯碼和執(zhí)行指令。從指令流的定時關(guān)系也可看出馮.諾曼結(jié)構(gòu)與哈佛結(jié)構(gòu)處理方式的差別。舉一個最簡單的對存儲器進行讀寫操作的指令,如下圖所示,指令1至指令3均為存、取數(shù)指令,對馮.諾曼結(jié)構(gòu)處理器,由于取指令和存取數(shù)據(jù)要從同一個存儲空間存取,經(jīng)由同一總線傳輸,因而它們無法重疊執(zhí)行,只有一個完成后再進行下一個。 如果采用哈佛結(jié)構(gòu)處理以
33、上同樣的3條存取數(shù)指令,如下圖所示,由于取指令和存取數(shù)據(jù)分別經(jīng)由不同的存儲空間和不同的總線,使得各條指令可以重疊執(zhí)行,這樣,也就克服了數(shù)據(jù)流傳輸?shù)钠款i,提高了運算速度。 流水線操作一般是不可見的,但下列情況例外流水線操作一般是不可見的,但下列情況例外: 在修改全局存儲器分配寄存器(GREG)之后,一條單字、單周期指令立即使用先前的全局映射方向。 在流水線操作的執(zhí)行階段,NORM指令修改輔助寄存器指針(ARP),并使用當(dāng)前輔助寄存器(被ARP指明的)。如果隨后的兩個指令字要改變當(dāng)前輔助寄存器的內(nèi)容或ARP,則它們將在流水線操作的譯碼階段進行(在執(zhí)NORM指令之前)。這將導(dǎo)致NORM指令使用錯誤的
34、輔助寄存器值,并導(dǎo)致隨后的指令使用錯誤的ARP值 C2XX CPU的兩相操作由正相和負(fù)相組成。正相里執(zhí)行所有的交換邏輯;負(fù)相里鎖存結(jié)果。盡管順序操作需要多級流水線來完成,但兩相操作為計算邏輯的執(zhí)行提供了更多的時間。這使得C2XX能以更快的時鐘頻率運行。CPU是采用正、負(fù)兩相靜態(tài)邏輯的。3.7 轉(zhuǎn)移、調(diào)用和返回轉(zhuǎn)移、調(diào)用和返回 通過向程序存儲器的另一地址單元傳送、轉(zhuǎn)移、調(diào)用和返回指令,破壞了指令流的順序。只能向新的地址單元傳送指令。將返回地址(調(diào)用操作之后的指令地址)壓入棧頂。每個被調(diào)用的子程序或中斷服務(wù)程序包含一條返回指令,它便返回地址退出堆棧并返回程序計數(shù)器(PC)。C2XX具有兩種類型的轉(zhuǎn)
35、移、調(diào)用和返回:無條件轉(zhuǎn)移、調(diào)用或返回?zé)o需滿足某個特定條件。只有當(dāng)某個特定條件被滿足時,才能執(zhí)行條件轉(zhuǎn)移、調(diào)用或返回。3.7.1 無條件轉(zhuǎn)移、調(diào)用及返回?zé)o條件轉(zhuǎn)移、調(diào)用及返回 當(dāng)碰到無條件轉(zhuǎn)移指令時,它總是被無條件執(zhí)行。 在執(zhí)行期,將向PC裝載指定的程序存儲器地址,并在該地址處執(zhí)行程序。 在轉(zhuǎn)移指令進入流水線的執(zhí)行階段前,其后的兩條指令已被提取,這兩條指令將從流水線操作中退出以便它們不被執(zhí)行,而是從轉(zhuǎn)移地址繼續(xù)執(zhí)行無條件轉(zhuǎn)移指令。無條件轉(zhuǎn)移指令轉(zhuǎn)移轉(zhuǎn)移到累加器所指定的地址當(dāng)碰到無條件調(diào)用指令時,它總是被無條件執(zhí)行。 在調(diào)用指令執(zhí)行期,將向PC裝載指定的程序存儲器地址并從這個地址開始執(zhí)行程序。
36、PC被裝載之前,返回地址被保存在堆棧中。 執(zhí)行子程序或函數(shù)操作之后,返回指令將堆棧中的返回地址裝入PC,并繼續(xù)執(zhí)行調(diào)用之后的指令操作。 在無條件調(diào)用指令進入流水線操作的執(zhí)行階段之前,隨后的兩條指令己被提取。這兩條指令將退出流水線操作以使它們不被執(zhí)行。可以將返回地址存儲在堆棧中,并從被調(diào)用函數(shù)的第一條指令開始繼續(xù)執(zhí)行指令操作。無條件調(diào)用指令調(diào)用累加器指定地址單元的子程序 在無條件返回指令進入流水線的執(zhí)行階段前,隨后的兩個指令字已被提取。這兩條指令將從流水線操作中退出以使它們不被執(zhí)行。 返回地址將從堆棧中提取,并從該地址開始繼續(xù)執(zhí)行程序。3. 無條件返回?zé)o條件返回當(dāng)碰到一個無條件返回(RET)指令
37、時,它總是被無條件執(zhí)行。 在執(zhí)行返回指令時,將向PC裝載棧頂?shù)闹?,并從該棧頂值所指定的地址開始繼續(xù)執(zhí)行程序。 可以將需滿足的條件設(shè)定為條件指令的操作數(shù)。 3.7.2 有條件轉(zhuǎn)移、調(diào)用和返回有條件轉(zhuǎn)移、調(diào)用和返回 只有當(dāng)滿足一個或多個條件時,才能執(zhí)行C2XX的條件轉(zhuǎn)移、調(diào)用和返回指令。操作數(shù)符號條件條件說明EQACC=0累加器為0NEQACC0累加器不為0LTACC0累加器大于0GEQACC0累加器大于或等于0CC=1進位位為1NCC=0進位位為0OVOV=1累加器溢出NOVOV=0累加器不溢出BIOBIO(非)低引腳為低電平TCTC=1測試/控制標(biāo)志為1NTCTC=0測試/控制標(biāo)志為0條件調(diào)用
38、和返回的條件列表多重條件可被列為條件指令操作數(shù)。 如果多重條件被列出,則必須滿足所有條件才能執(zhí)行指令。留意只有某些條件組合才是可用的。條件分組對于每個條件組合,條件必須從以下的Group1和Group2選取:最多可以選擇兩個條件每個條件必須來自一個不同的目錄(A或B);不能從同一個目錄選擇兩個條件。例如可同時測試EQ和OV,但不能同時測試GT和NEQ最多可以選擇三個條件每個條件必須來自一個不同的目錄(A、B或C);不能從同一個目錄選擇兩個條件。例如可同時測試TC、C和BIO,但不能同時測試C和NC。2. 條件的穩(wěn)定性條件的穩(wěn)定性條件指條件指令必須令必須能夠測能夠測試狀態(tài)試狀態(tài)位的最位的最新值新
39、值在前一條指令在前一條指令被執(zhí)行后的一被執(zhí)行后的一個周期上,即個周期上,即在流水線操作在流水線操作的執(zhí)行階段以的執(zhí)行階段以前,條件是不前,條件是不穩(wěn)定的穩(wěn)定的流水線控制流水線控制器停止對條器停止對條件指令之后件指令之后任意指令進任意指令進行譯碼直至行譯碼直至到條件趨于到條件趨于穩(wěn)定穩(wěn)定這樣因此3. 條件轉(zhuǎn)移條件轉(zhuǎn)移 條件轉(zhuǎn)移指令將程序轉(zhuǎn)移到程序存儲器的任意單元。 只有當(dāng)滿足一個或多個由用戶設(shè)定的條件時,才能執(zhí)行條件轉(zhuǎn)移指令。 如果所有的條件被滿足,則PC裝載轉(zhuǎn)移指令的第二個字。 該轉(zhuǎn)移指令的第二個字包含了轉(zhuǎn)移地址;并且在該地址繼續(xù)執(zhí)行指令。 在條件被測試之前,條件轉(zhuǎn)移指令之后的兩條指令字己從流
40、水線中被提取。 如果所有的條件被滿足,則這兩條指令將退出流水線操作,以使它們不被執(zhí)行,而在轉(zhuǎn)移地址繼續(xù)執(zhí)行條件轉(zhuǎn)移指令。 如果條件不被滿足,則這兩條指令將被執(zhí)行,而不執(zhí)行轉(zhuǎn)移指令。 由于條件轉(zhuǎn)移使用的條件是由先前指令的執(zhí)行結(jié)果所確定的,因此,條件轉(zhuǎn)移比無條件轉(zhuǎn)移多用一個周期。條件轉(zhuǎn)移指令有條件轉(zhuǎn)移當(dāng)前所選擇的輔助寄存器值不等于0時的轉(zhuǎn)移4. 條件調(diào)用條件調(diào)用 只有當(dāng)滿足一個或多個特定條件時才能執(zhí)行條件調(diào)用。這就允許的程序能在多個子程序中進行選擇。 如果所有的條件被滿足,則向PC裝載調(diào)用指令的第2個字(它包含子程序的起始地址)。在轉(zhuǎn)移到子程序之前,處理器將把返回地址存儲在堆棧中。返回地址是指調(diào)用
41、指令的下一個指令地址。 子程序最后必須是一條返回地址。該返回指令將從堆棧中提取返回地址并迫使處理器繼續(xù)執(zhí)行調(diào)用程序。 鑒于需要一個等待周期才能使條件趨于穩(wěn)定,因此,條件調(diào)用比無條件調(diào)用多用一周期。 在條件調(diào)用指令的條件被測試時,調(diào)用指令之后的兩條指令字則從流水線中被提取。 如果所有的條件被滿足,則這兩個指令將從流水線中退出以使它們不被執(zhí)行,然后從被調(diào)用函數(shù)的第一條指令開始繼續(xù)執(zhí)行條件調(diào)用指令。 如果條件不被滿足,則這兩條指令將被執(zhí)行,而不是執(zhí)行調(diào)用指令。5. 條件返回條件返回 調(diào)用或中斷將一個返回地址存儲到堆棧,然后將程序控制傳送到程序存儲器中的一個新單元。返回被用于調(diào)用和中斷。條件返回指令
42、被調(diào)用的子程序或中斷服務(wù)程序包含一個返回指令。該返回指令使返回地址退出堆棧并進入程序計數(shù)器(PC)。 只有當(dāng)1個或多個條件被滿足時才能執(zhí)行條件返回指令(RETC)。 通過使用RETC指令,可以為一個子程序或一個中斷服務(wù)程序提供一個以上的返回渠道。 如果滿足RETC指令執(zhí)行的所有條件,則處理器將把堆棧中的返回地址裝入PC,并繼續(xù)執(zhí)行調(diào)用或被中斷的程序。 同RET一樣,RETC是一個單字指令。然而,由于PC的不連續(xù)性,RETC操作的有效執(zhí)行時間與條件轉(zhuǎn)移(BCND)和條件調(diào)用(CC)的有效執(zhí)行時間一樣。 在條件返回指令的條件被測試時,返回指令之后的兩個指令字己從流水線中被提取。 如果所有的條件被滿
43、足,則這兩條指令將退出流水線操作以使這兩條指令不被執(zhí)行而執(zhí)行調(diào)用程序。 如果條件不滿足,則執(zhí)行這兩條指令而不執(zhí)行返回指令。 由于需要一個等待周期才能使條件趨于穩(wěn)定,因此,條件返回比無條件返回多用一個周期。3.8 重復(fù)指令重復(fù)指令 C2XX重復(fù)(RPT)指令允許一條指令的接受次數(shù)為N+1次。 當(dāng)從一個數(shù)據(jù)存儲器單元讀取計數(shù)值時,RPTC可用作一個16-bit的計數(shù)器; 如果計數(shù)值被設(shè)定為一個操作常數(shù),RPTC為8-bit計數(shù)器。 每次執(zhí)行重復(fù)指令時,RPTC值減少1直到RPTC=0。 對諸如NORM、MAC和SUBC等指令來說,重復(fù)特性是非常有益的,當(dāng)這些指令被重復(fù)時,程序存儲器的地址總線和數(shù)據(jù)
44、總線可以與數(shù)據(jù)存儲器的地址總線,數(shù)據(jù)總線并行操作,因而可以節(jié)約第二操作數(shù)的提取時間。 這樣,當(dāng)MACD和BLPD這類指令被重復(fù)時就能夠在一個單周期內(nèi)有效地執(zhí)行。 被硬件或軟件驅(qū)動的中斷信號可使C2XX中止當(dāng)前程序并執(zhí)行另一個子程序。3.9 中斷與中斷管理中斷與中斷管理 中斷也可以用于發(fā)出信號,表明發(fā)出了一個特別事件。 通常,中斷是由那些需要向C2XX傳送或從C2XX提取數(shù)據(jù)的硬件設(shè)備產(chǎn)生。例如例如C2XX支持軟件和硬件中斷INTR,NMI或TRAP如可被來自物理器件的一個信號請求這里存在兩種類型: 外部硬件中斷被外部中斷引腳上的信號觸發(fā)。所有的中斷都是負(fù)邊沿觸發(fā)的。內(nèi)部硬件中斷來自片內(nèi)外圍的信
45、號觸發(fā)。可被一條指令請求 如果兩種類型的硬件中斷同時被觸發(fā),則C2XX根據(jù)所設(shè)置的優(yōu)先級進行處理。 無論是硬件中斷,還是軟件中斷,它們均置于以下兩種方式之一: 這類中斷不能被屏蔽。 C2XX器件將響應(yīng)這類中斷,并從主程序轉(zhuǎn)移到另一個子程序。 這類中斷是硬件中斷。通過軟件可屏蔽或啟動(解除屏蔽)該硬件中斷。C2XX非屏蔽中斷包括所有的軟件中斷和兩個外部硬件中斷:復(fù)位(RS)和NMI。1個中斷方式位INTM)1個中斷向量表與優(yōu)先級(INTV)2類中斷:非屏蔽和可屏蔽中斷(例如:/RS、/NMI、INT13)2種中斷源硬件中斷、軟件中斷)3個階段懇求、處置、呼應(yīng))3個中斷的三個寄存器IFR、IMR、
46、ICR)1個中斷服務(wù)程序(IRS)有關(guān)中斷的總結(jié)1個中斷方式位INTM)1個中斷向量表與優(yōu)先級(INTV)2類中斷:非屏蔽和可屏蔽中斷(例如:/RS、/NMI、INT13)2種中斷源硬件中斷、軟件中斷)3個階段懇求、處置、呼應(yīng))3個中斷的三個寄存器IFR、IMR、ICR)1個中斷服務(wù)程序(IRS)有關(guān)中斷的總結(jié)3.9.1 中斷操作的三個階段中斷操作的三個階段C2XX分三個主要的階段來管理中斷:來自程序代碼的一個軟件中斷或一個來自引腳或片內(nèi)器件的硬件中斷,請求中止主程序。C2XX必須確認(rèn)中斷請求。如果中斷是可屏蔽的,則必須滿足某種條件以便C2XX對它進行確認(rèn)。而對于非屏蔽硬件中斷和軟件中斷來說,
47、確認(rèn)是立即進行的。 一旦中斷被確認(rèn),C2XX就轉(zhuǎn)移到其相應(yīng)的子程序,即中斷服務(wù)程序(ISR)。C2XX將迫使CPU轉(zhuǎn)移到預(yù)先確定的地址單元(中斷矢量地址),并執(zhí)行ISR程序。 下表列出了C2XX(除C209外)的中斷及其中斷矢量地址。另外,該表還列出了每個硬件中斷的優(yōu)先級。 3.9.2 中斷表中斷表K+向量地址名稱優(yōu)先級功能00hRS(非)1 (最高)硬件復(fù)位(不可屏蔽)12hHOLD(非)/INT1(非)4用戶可屏蔽中斷#124hINT2(非)/ INT3(非)5用戶可屏蔽中斷#2 和 #336hTINT6用戶可屏蔽定時中斷48hRINT7用戶可屏蔽同步串行口接收中斷5AhXINT8用戶可屏
48、蔽同步串行口發(fā)送中斷C2XX中斷矢量和優(yōu)先級6ChTXRXINT9用戶可屏蔽異步串行口發(fā)送/接收中斷7Eh10保留810hINT8-用戶定義的軟件中斷912hINT9-用戶定義的軟件中斷1014hINT10-用戶定義的軟件中斷1116hINT11-用戶定義的軟件中斷1218hINT12-用戶定義的軟件中斷131AhINT13-用戶定義的軟件中斷141ChINT14-用戶定義的軟件中斷151EhINT15-用戶定義的軟件中斷1620hINT16-用戶定義的軟件中斷1722hTRAP-TRAP指令向量1824hNMI(非)3不可屏蔽中斷1926h2保留2028hINT20-用戶定義的軟件中斷212
49、AhINT21-用戶定義的軟件中斷222ChINT22-用戶定義的軟件中斷232EhINT23-用戶定義的軟件中斷2430hINT24-用戶定義的軟件中斷2532hINT25-用戶定義的軟件中斷2634hINT26-用戶定義的軟件中斷2736hINT27-用戶定義的軟件中斷2838hINT28-用戶定義的軟件中斷293AhINT29-用戶定義的軟件中斷303ChINT30-用戶定義的軟件中斷313EhINT31-用戶定義的軟件中斷3.9.3 可屏蔽中斷可屏蔽中斷 當(dāng)可屏蔽中斷被一個硬件設(shè)備或一個外部引腳成功地請求時,CPU將設(shè)置相應(yīng)的標(biāo)志。無論中斷是否將被處理器確認(rèn),這些標(biāo)志都將被設(shè)置。C2X
50、X器件上有兩個含有中斷標(biāo)志位的寄存器它是一個16-bit的存儲器映射寄存器(地址為數(shù)據(jù)存儲器空間的0006h單元)。它是一個16-bit的寄存器,地址為I/O空間的FFECh 。 對于除INT2(非)和INT3(非)以外的所有可屏蔽中斷,一旦引腳或片內(nèi)外圍發(fā)出中斷信號,中斷請求就被送入CPU。 對于INT2(非)/INT3(非),只有當(dāng)中斷信號不被ICR的屏蔽住所屏蔽時,中斷請求才被送入CPU。 IFR含有所有可屏蔽中斷的標(biāo)志位。ICR則包含用于中斷和附加的標(biāo)志位。請求INTT2(非)/INT3(非)中斷示意圖 在CPU接收了一個中斷請求后,CPU就必須決定是否確認(rèn)該請求。 可屏蔽硬件中斷只在
51、滿足某些條件后才被確認(rèn)。如果同時發(fā)生一個以上硬件中斷請求,則C2XX就根據(jù)所設(shè)置的優(yōu)先級對它們進行處理。其中 1代表最高優(yōu)先級。在中斷屏蔽寄存器(IMR)中,中斷必須是沒有被屏蔽的,IMR是一個16-bit的寄存器,地址為數(shù)據(jù)存儲器空間的0004h。IMR包含了所有可屏蔽中斷的屏蔽位。INT2和INT3中斷共同使用其中一位。中斷方式(INTM)位,即狀態(tài)寄存器ST0的第9位,允許或禁止所有可屏蔽中斷:這些條件包括: 當(dāng)CPU確認(rèn)一個中斷請求時,INTM自動設(shè)置為l。 通過一個硬件復(fù)位或執(zhí)行一個禁止中斷指令(SETC,INTM),INTM可被設(shè)置為l。 可以通過執(zhí)行允許中斷指令(CLRC INT
52、M)來清除INTM。 INTM不影響復(fù)位。NMI(非)或其它軟件中斷指令通過TRAP、NMI和INTR指令啟動的中斷)。 LST(裝載狀態(tài)寄存器)指令也不影響INTM。 INTM不能修改中斷標(biāo)志寄存器(IFR)、中斷屏蔽寄存器(IMR)或中斷控制寄存器(ICR)的內(nèi)容。當(dāng)CPU確認(rèn)一個可屏蔽硬件中斷時留意可屏蔽中斷操作示意圖3.9.4 中斷標(biāo)志寄存器中斷標(biāo)志寄存器(IFR) 16-bit的中斷標(biāo)志寄存器(IFR)被分配在數(shù)據(jù)存儲器空間的0006h地址單元。 IFR包含了所有可屏蔽中斷的標(biāo)志位。當(dāng)CPU接收到一個可屏蔽中斷請求時,IFR中相應(yīng)的標(biāo)志置1。這表明中斷請求已被掛起或者正等待CPU中斷
53、的確認(rèn)。留意:0總是讀作0;R=讀訪問;W1C=向該位寫入1將其清0;(一)符號后面的值為復(fù)位后的值。C2XX標(biāo)志寄存器(IFR)-數(shù)據(jù)存儲器地址0006hTXRXINT=0 TXRXINT=l第第615位位 Reserved第615位是保留位并總是為0。第第5位位 TXRXINT(傳送傳送/接收中斷標(biāo)志接收中斷標(biāo)志) 第5位為異步串行傳送接收中斷標(biāo)志位。為避免重復(fù)中斷,則在中斷服務(wù)程序中向該位寫入1。中斷中斷TXRXINT未被掛起未被掛起中斷中斷TXRXINT已被掛起。已被掛起。TINT=0TINT=1第第4位位 XINT(傳送中斷標(biāo)志傳送中斷標(biāo)志) 同步串行口的傳送中斷位。為避免重復(fù)中斷,
54、則在中斷服務(wù)程序中向該位寫入1。XINT中斷未被掛起中斷未被掛起XINT中斷己被掛起中斷己被掛起XINT=0XINT=1第第3位位 RINT(接收中斷標(biāo)志接收中斷標(biāo)志) 同步串行器的接收中斷位。避免重復(fù)中斷,則在中斷服務(wù)程序中向該位寫入1。RINT中斷未被掛起中斷未被掛起RINT中斷己被掛起。中斷己被掛起。RINT=0 RINT=l第第2位位 TINT (定時器中斷標(biāo)志位定時器中斷標(biāo)志位)第二位為定時器中斷位。TINT中斷未被掛起中斷未被掛起TINT中斷己被掛起。中斷己被掛起。第第1位位 INT2(非非)/INT3(非非) 中斷中斷2/中斷中斷3標(biāo)志位。標(biāo)志位。 INT2(非)引腳和INT3(
55、非)引腳影響第1位。如果INT2(非)有中斷請求,則INT2(非)/INT3(非)和(ICR的)FINT2均被自動設(shè)為1。如果INT3(非)有中斷請求,則INT2(非)/INT3(非)和(ICR的)FINT3均被自動設(shè)為1。INT2(非)/INT3(非)均未被掛起 至少有一個中斷己被掛起,要想確定是哪個中斷己被掛起,或者確定是否兩個中斷均被掛起,則檢測中斷控制寄存器(ICR)中的FIN2和FINT3標(biāo)志位。當(dāng)CPU確認(rèn)INT2(非)和INT3(非)時,F(xiàn)INT2和FINT3不被自動清除;它們必須通過中斷服務(wù)程序來清除。第第0位位 HOLD/INT1(堅持堅持/中斷中斷1標(biāo)志位標(biāo)志位)。 第0位
56、為HOLD(非)或INT1(非)的中斷標(biāo)志位。根據(jù)中斷控制寄存器中MODE值的不同,對HOLD/INT1引腳的操作也有所不同。當(dāng)MODE=1時,中斷只被引腳上的負(fù)沿觸發(fā)。當(dāng)MODE=O時,中斷可被正沿和負(fù)沿觸發(fā)。 HOLD/INT1=0 HOLD(非非)/INT1(非非)中斷未被掛起中斷未被掛起HOLD/INT1=lHOLD(非非)/INT1(非非)中斷己被掛起中斷己被掛起可以了解是否有已披掛起的中斷.可以清除己披掛起的中斷。 如果想清除一個中斷請求(并設(shè)置其IFR標(biāo)志位為0),則向其相應(yīng)的IFR位寫入1。 通過向IFR寫IFR的當(dāng)前內(nèi)容就可以清除所有己被掛起的中斷。確認(rèn)一個硬件請求也可以清除
57、相應(yīng)的IFR位。器件復(fù)位可清除所有的IFR值。留意 在INTR指令請求中斷時,如果相應(yīng)的IFR位被設(shè)置為1,則CPU不能自動清除IFR值。 如果一個應(yīng)用程序請求清除IFR位,則必須在中斷服務(wù)程序中清除該IFR位。 為了避免來自同步串行口和異步串行口的重復(fù)中斷,則應(yīng)在相應(yīng)的中斷服務(wù)程序中清除IFR位(從該中斷服務(wù)程序返回之前)。3.9.5 中斷屏蔽寄存器中斷屏蔽寄存器(IMR) 16-bit的中斷屏蔽寄存器(IMR)被分配在數(shù)據(jù)存儲器空間的00004h地址單元。 IMR用于屏蔽外部和內(nèi)部的硬件中斷。IMR中不含NMI(非)和RS(非),因此,IMR不影響這些中斷。C2XX(C209除外)的IMR
58、寄存器示意圖。 第第515位位 Reserved。第515位 為保留位并總是為0。 復(fù)位時,IMR位均設(shè)為0,這樣就屏蔽所有的可屏蔽中斷。 若不想屏蔽中斷,則設(shè)其相應(yīng)的IMR位為1; 若想屏蔽某個中斷,應(yīng)將它對應(yīng)的IMR位寫為0,3.9.6 中斷控制寄存器中斷控制寄存器(ICR) 16-bit的中斷控制寄存器(ICR) 地址為I/O空間的FFECh地址單元 中 斷 控 制 寄 存 器 控 制 著HOLD(非)/INT1(非)引腳上的操作,并單獨控制INT2(非)和INT3(非)中斷。 HOLD(非)/INT1(非)引腳用于觸發(fā)INT1(非)中斷,以及向CPU發(fā)送一個HOLD信號。 HOLD/I
59、NT1的中斷矢量地址單元為程序存儲器的0002h。ICR的MODE位為HOLD(非)/INT1(非)引腳提供兩種方式:不管MODE的值如何,該引腳均與同一個中斷邏輯相連,它啟動一個中斷服務(wù)程序。為區(qū)分該引腳上的兩種操作,中斷服務(wù)程序必須測試MODE位的值。引腳為負(fù)邊沿觸發(fā),這樣,該此引腳可被適當(dāng)設(shè)置以便啟動一個標(biāo)準(zhǔn)的中斷(INT1(非)。引腳為負(fù)邊沿和正邊沿觸發(fā),這一點對于執(zhí)行HOLD操作的邏輯運算有必要 一個中斷服務(wù)程序一個中斷服務(wù)程序 (INT2(非非)和和INT3(非非)中斷矢量地址均為程序中斷矢量地址均為程序存儲器的存儲器的0004h單元單元) 。2. 控制控制INT2(非非)和和IN
60、T3(非非) INT2(非)和INT3(非)中斷均有自己的引腳,然而它們共享: 中斷標(biāo)志專用寄存器中斷標(biāo)志專用寄存器(IFR)中中的同一個標(biāo)志位的同一個標(biāo)志位(INT2/INT3)。 中斷屏蔽寄存器的中斷屏蔽寄存器的(IMR)中的中的同一個屏蔽位。同一個屏蔽位。 為了可以單獨使用INT2(非)和INT3(非),ICR提供了2個屏蔽位(MINT2和MINT3)和兩個標(biāo)志位(FINT2和FINT3)。 當(dāng)向INT2(非)和INT3(非)引腳發(fā)出中斷請求時,MINT2和MINT3確定是否將標(biāo)志位FINT2、FINT3和INT2/INT3設(shè)為1。 如果想屏蔽INT2(非)(阻止標(biāo)志位FINT2和INT
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 智能制造的安全性與隱私保護的策略及實施路徑
- ?;髽I(yè)安全生產(chǎn)投入與保障方案
- 互動式教學(xué)在高中化學(xué)課堂中的應(yīng)用研究
- 中外教育史知到課后答案智慧樹章節(jié)測試答案2025年春泰山學(xué)院
- 中外園林漫賞知到課后答案智慧樹章節(jié)測試答案2025年春青島農(nóng)業(yè)大學(xué)
- 電廠閥門修理施工方案
- 三級人力資源管理師-《三級企業(yè)人力資源管理師專業(yè)》綜合??季?
- 2025年耐高溫濾料項目建議書
- 25學(xué)年教案語文(必修上冊)162《登泰山記》
- 2025屆新疆維吾爾自治區(qū)二模歷史試題(原卷版+解析版)
- 簡析建筑工程中綠色建筑材料的應(yīng)用
- 2024年度全國社會工作者《社會工作實務(wù)》考試題含答案
- 2025年上半年四川能投宜賓市敘州電力限公司招聘易考易錯模擬試題(共500題)試卷后附參考答案
- 心理戰(zhàn)、法律戰(zhàn)、輿論戰(zhàn)
- 三坐標(biāo)考試試題和答案
- 深圳市機電產(chǎn)品出口貿(mào)易現(xiàn)狀及發(fā)展對策研究
- 2025年中國郵政集團公司長春市分公司招聘22人高頻重點提升(共500題)附帶答案詳解
- 骨科手術(shù)術(shù)后切口護理技巧培訓(xùn)課程
- 2025年中國人保壽險招聘筆試參考題庫含答案解析
- DB37T 2640-2022 監(jiān)獄安全防范系統(tǒng)建設(shè)技術(shù)規(guī)范
- 2024上半年四川教師招聘《教育公共基礎(chǔ)》真題
評論
0/150
提交評論