DSP程序控制和中斷管理課件_第1頁
DSP程序控制和中斷管理課件_第2頁
DSP程序控制和中斷管理課件_第3頁
DSP程序控制和中斷管理課件_第4頁
DSP程序控制和中斷管理課件_第5頁
已閱讀5頁,還剩43頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第3章 程序控制和中斷管理在執行當前指令的同時,程序流要求處理器生成下一條指令的程序地址,預定程序的路線。程序地址的產生見下圖:3.1程序地址的產生程序地址產生框圖 程序地址產生邏輯使用的硬件器件功能程序計數器(PC)對內部和外部程序存儲器尋址程序地址寄存器(PAR)驅動程序地址總線,提供程序的讀、寫地址堆棧保存返回地址微堆棧(MATACK)保存返回地址重復計數器(RPTC)與重復指令(RPT)一起,用來確定RPT后的一條指令重復執行的次數。程序地址產生源操作程序地址來源順序操作程序計數器PC(程序地址+1)空周期程序地址寄存器PAR(程序地址+1)從子程序返回堆棧棧頂(TOS)從表傳送或塊傳

2、送返回微堆棧(MSTACK)轉移到或調用指令中指定的地址轉移到或調用累加器低半部分指定的地址轉移到中斷服務程序轉移或調用指令,即利用程序讀總線(PRDB)的方式獲取程序地址。累加器的低半部分,即利用數據讀總線(DRDB)的方式獲取程序地址中斷矢量單元,即利用程序讀總線(PRDB)的方式獲取程序地址。3.1.1程序計數器程序地址產生邏輯使用16位程序計數器(PC)對內部和外部程序存儲器尋址,PC中存放將被執行的下一條指令的地址。通過程序地址總線(PAB),從程序存儲器該地址處取出指令并裝入指令寄存器,當裝載入指令寄存器時,PC中保存下一個地址。裝入PC中的地址將累加器低16位加載到PC。利用BA

3、CC(轉移到累加器中的地址)或CALA(調用累加器指令單元的子程序)指令可實現計算轉移操作加載到PC的地址順序執行若當前指令字是一個字,則將PC+1加載到PC若當前指令字是兩個字,則將PC+2加載到PC轉移轉移指令后的長立即數直接加載到PC子程序調用和返回調用指令:將PC中的下一條指令的地址壓入堆棧, 然后將調用的指令后的長立即數加載到PC返回指令:將返回地址從堆棧中彈回PC軟件或硬件中斷將相應的中斷矢量地址裝入PC。在該矢量單元,通常有一條轉移指令,又將相應的中斷服務程序的地址加載到PC計算轉移代碼操作3.1.2堆棧 16位寬、8級深的硬件堆棧。當調用子程序或發生中斷時,程序地址產生邏輯用其

4、保存返回地址。當CPU進入子程序或中斷服務程序時,返回地址自動裝入該堆棧的棧頂,這一操作不需附加周期。當子程序或中斷服務程序完成時,返回指令將返回地址從棧頂傳送到程序計數器。當不需要用8級返回地址時,該堆棧也可用來保存子程序或中斷服務程序的有關數據或用于其他目的。訪問堆棧的指令:PUSH(壓入)和POP(彈出) PUSH:把累加器的低16位拷貝到棧頂 POP: 把棧頂值拷貝到累加器低16位PSHD和POPD 當子程序或中斷嵌套超過8級時,利用此指令在數據存儲區中建立一個堆棧。PSHD把數據存儲器中的值壓入棧頂,POPD將棧頂值彈出到數據存儲器。3.1.3微堆棧微堆棧只有1級深、16位寬,沒有可

5、以使用微堆棧保存信息的指令,只有程序地址產生邏輯才能夠使用微堆棧。 程序地址產生邏輯在執行BLDD、BLPD、MAC、TBLR及TBLW指令時,用微堆棧保存返回地址。執行這些指令時,首先把PC+1的地址送到微堆棧保存,然后用PC存放第一個操作數的地址,用輔助寄存器算術單元ARAU產生第二個操作數的地址,當這些指令重復執行時,PC可使第一個操作數的地址自動增量,ARAU使第二個操作數的地址改變,到所重復的指令完成時再將微堆棧彈回到程序地址產生邏輯。3.1.4流水線操作 指令流水線包括執行時發生的一系列總線操作。LF240 x的流水線有4個獨立的階段:取指令、指令譯碼、取操作數和執行指令。4個操作

6、階段是獨立的,在任意的指定周期內,14個不同的指令都被激活,每一條被激活的指令都處于不同的完成階段。4級流水線的操作 流水線操作一般是不可見的,但下列情況例外: (1)緊跟在修改全局存儲器分配寄存器(GREG)后的單字、單周期指令使用先前的全局映射。 (2)在流水線操作的執行階段,NORM指令修改ARP,并使用當前輔助寄存器,如果隨后的兩個指令要改變當前輔助寄存器的內容或ARP,則它們將在流水線的譯碼階段進行,這將導致NORM指令使用錯誤的輔助寄存器值,并導致隨后的指令使用錯誤的ARP值。所以在NORM后不要安排改變當前輔助寄存器和ARP內容的指令。轉移、調用和返回改變指令流的順序,轉到新的地

7、址單元去執行指令。轉移僅使控制轉換到新的地址單元;調用要將返回地址保存到硬件堆棧的棧頂;返回指令將堆棧中的返回地址彈到程序計數器。3.2 轉移、調用和返回3.2.1 無條件指令無條件轉移 執行無條件轉移時,將指定的程序存儲器的地址加載到PC上,并從該地址開始執行程序。加載到PC的地址可以來自轉移指令的第二個操作數,也可能是累加器的低16位。無條件轉移指令有B(轉移)和BACC(轉移到累加器指定的地址)。無條件調用 執行無條件調用時,將指定的程序存儲器的地址加載到PC上,并從該地址開始執行程序。加載到PC的地址可以來自轉移指令的第二個操作數,也可能是累加器的低16位。加載PC 之前將返回地址保存

8、到堆棧。子程序或函數執行之后,返回指令將返回地址從堆棧加載到PC,從調用指令后的那條指令開始執行。無條件轉移指令有CALL 、CALA(調用累加器指定單元處的子程序)。無條件返回 執行無條件返回指令(RET)時,將棧頂的值加載到PC,并從該地址繼續執行程序。3.2.2 有條件指令操作符號條件描述EQNEQLTLEQGTGEQCNCOVNOVBIOTCNTCACC=0ACC0ACC0ACC0C=1C=0OV=1OV=0BIO低TC=1TC=0累加器的值等于0累加器的值不等于0累加器的值小于0累加器的值不小于0累加器的值大于0累加器的值不大于0進位位置1進位位清0檢測到累加器溢出檢測到累加器不溢出

9、BIO引腳為低電平測試/控制位置1測試/控制位清0使用多個條件組1組2A類B類B類A類C類EQNEQLTLEQGTGEQOVNOVNTCTCCNCBIO 在條件指令的操作數中可以列出多個條件,必須所有條件都滿足才是條件滿足。 對于每一種組合,必須按如下規則從組1組2中選擇條件。組1:最多可選兩個條件。每個條件來自不同的類。組2:最多可選3個條件。每個條件來自不同的類,不能有兩個條件來自同一類。條件指令必須能測試到狀態位的最新值。直到流水線的執行階段,即前一條指令執行后一個周期才能認為條件穩定。流水線控制器在條件穩定之前停止對條件指令后的任何指令譯碼。條件的穩定性條件轉移(BCND、BANZ):

10、該指令使程序轉移到程序存儲器的任何地址,只有滿足一個或多個由用戶指定的條件時,才能實現轉移。此時,PC裝載轉移指令的第2個字,并從該地址開始繼續執行此指令。無條件轉移指令有BCND(條件轉移)和BAND(若當前輔助寄存器不為0,則轉移)。條件指令的執行 條件調用(CC): 該指令可使程序根據處理數據的不同在多個子程序間進行選擇,只有當用戶指定的一個或多個特定條件滿足時才能調用。此時,PC裝載調用指令的第2個字,并將返回地址保存在堆棧中,然后執行子程序。 條件返回 返回指令(RET):與調用或中斷配合使用。調用或中斷把返回指令保存到堆棧里,被調用的子程序或中斷服務程序以返回指令結束,該指令將返回

11、地址從堆棧彈到PC。 條件返回指令(RETC): 當用戶指定的一個或多個條件滿足時才執行。利用該指令可使子程序或中斷服務程序有多種返回路徑。3.3重復指令重復指令(RPT):將單條指令重復執行N+1次。N為指令的操作數。執行RPT時,N裝入重復計數器RPTC,每執行一次,RPTC減1,直至RPTC為0。如果N是從一個數據存儲單元讀取,RPTC為16位計數器;如果N為一操作常數,RPTC為8位計數器。3.4中斷 中斷是計算機的一種特殊的運行方式。在正常情況下,CPU按照程序預定的路線進行,當外圍設備有事件產生需要CUP來處理,即發出中斷請求信號,CPU暫停工作,保存好現場,然后轉到該中斷請求對應

12、的服務子程序的入口處,待服務子程序運行完畢,CPU自動恢復現場,從原停頓點繼續往下運行。 計算機采用中斷方式,可以節省CPU資源,CPU可以不花時間去輪尋外圍設備是否需要服務。每一種計算機都有多個中斷源,CPU對中斷的響應需要按序進行,需要一個中斷管理系統模塊對中斷源進行管理控制。3.4.1 中斷的分類軟件中斷由指令INTR、NMI和TRAP產生。硬件中斷由來自物理設備的信號產生,包括復位 、非屏蔽中斷NMI和可屏蔽中斷INT1、 INT2、 INT3、 INT4、 INT5、 INT6。 可屏蔽中斷 可以通過軟件將它們禁止或允許的中斷。均為硬件中斷。當硬件設備或外部引腳成功地請求了可屏蔽中斷

13、時,與其對應的一個或幾個標志被激活,無論是否響應此中斷,這些標志均被設置為1。 不可屏蔽中斷不能通過軟件將其禁止或允許的中斷。包括所有軟件中斷和兩種外部硬件中斷 和 。 外設事件要引起中斷,必須保證:外設事件的中斷使能位被使能,CPU內核級的6個可屏蔽中斷中,能控制該外設事件高級中斷至少有一個被使能。在外設事件發生時,首先將其在外設中斷控制器中的標志位置1,然后會在中斷標志寄存器IFR中的INTx位由硬件置1,表明正在等待CPU響應,從而引起CPU內核的INT1INT6中的一個產生中斷。中斷響應的延時 從發出中斷請求到得到服務之間的延遲時間,與很多因素有關:(1)軟件中斷最少要延時4個CPU時

14、鐘周期。(2)外部可屏蔽中斷最少要延時8個CPU時鐘周期。(3)若在使用RPT重復時發生中斷,為了保證指令流水線的完整,需等到該重復循環完才響應中斷。但復位中斷例外。(4)為使CPU能完成返回,在RET指令后中斷被禁止,直至在返回指令上至少執行一條指令。(5)讀寫速度慢的外部存儲器需要等待延時,如果中斷向量存放在外部存儲器,等待狀態會影響中斷的響應時間。 當CPU接受中斷請求時,并不知道是哪一個外設事件引起的中斷請求。為了讓CPU能夠區別這些引起中斷的外設事件,DSP控制器給每個中斷分配了一個特定的入口地址,稱為中斷向量。 在每個外設中斷請求有效時都會產生一個唯一的外設中斷向量,這個外設中斷向

15、量被裝載到外設中斷向量寄存器(PIVR)中。CPU應答外設中斷時,從PIVR中讀取相應中斷的向量,并產生一個轉到該中斷服務程序入口的向量。當某個中斷發出請求,而且允許中斷,則CPU先將當前的PC加1壓入堆棧,即保護返回地址;然后,CPU自動地將該請求中斷的向量地址送入PC,CPU便轉入該請求中斷的服務子程序運行;當碰到服務子程序的返回指令RET時,CPU自動將堆棧中的返回地址彈出到PC中,恢復中斷前的程序繼續進行。3.4.2 中斷向量 為了更好地管理中斷復用情況,DSP控制器為事件管理模塊的每一個中斷分配了一個偏移向量地址,并且當某個事件管理模塊發出了請求信號,會自動地將該中斷的偏移向量地址寫

16、入到對應的事件中斷向量寄存器中。當進入DSP內核中斷的服務子程序GISR后,將事件中斷向量寄存器的內容送到累加器,然后經分支指令便可轉入到專為某個事件管理模塊中斷所寫的中斷服務子程序SISR的入口。在程序存儲器的0000h003FH單元。每個中斷有兩個地址單元。存放一條兩個字的分支指令(如B指令)。這樣,可以在較大的程序存儲空間中開辟出一塊存放中斷服務子程序的空間,通過中斷向量處的分支指令轉入到真正的中斷服務子程序空間的入口處。中斷優先級和中斷矢量表 TMS320LF240 xCPU提供了6個可屏蔽中斷:INT1INT6,INT1優先級最高, INT1最低。利用6個中斷級,采用中斷擴展設計可以

17、使芯片能夠管理46個可屏蔽中斷請求。3.4.3 TMS320LF240 x的可屏蔽中斷(1)中斷標志寄存器(IFR): 位于數據存儲器的0060H,用于識別和清除掛起的中斷。當中斷源INT1INT6中某一級向CPU發出可屏蔽中斷請求 時,控制寄存器中響應的標志位被置1。如果該中斷未被屏蔽, 則中斷請求被送到CPU,表明該中斷正被掛起或等待響應。讀取IFR可以識別掛起的中斷,向IFR相應的位寫1則清除已 掛起的中斷。把IFR中當前的內容寫回IFR則可清除所有掛起的 中斷CPU響應中斷或器件復位則將IFR標志清除。3.4.3.1 CPU中斷管理寄存器IFRINT1 flagINT2 flagINT

18、3 flagINT4 flagINT5 flagINT6 flagReservedD15D6D0D1D2D3D4D5D15D6 Reserved -保留位。D5 INT6 flag -中斷6標志位。作為連至INT6的所有外部中斷的標志。D4 INT5 flag -中斷5標志位。作為連至INT5的所有外部中斷的標志。D3 INT4 flag -中斷4標志位。作為連至INT4的所有外部中斷的標志。D2 INT3 flag -中斷3標志位。作為連至INT3的所有外部中斷的標志。D1 INT2 flag -中斷2標志位。作為連至INT2的所有外部中斷的標志。D0 INT1 flag -中斷1標志位。作

19、為連至INT1的所有外部中斷的標志。(2)中斷屏蔽寄存器(IMR):位于數據存儲器的0004H,包含所有中斷級(INT1INT6)的屏蔽位。讀IMR可以識別以被屏蔽或被使能的中斷,向IMR中某位寫0則屏蔽相應的中斷級;寫1則使能該中斷級。IMRINT1 maskINT2 maskINT3 maskINT4 maskINT5 maskINT6 maskReservedD15D6D0D1D2D3D4D5D15D6 Reserved -保留位。D5 INT6 mask -中斷6屏蔽位。D4 INT5 mask -中斷5屏蔽位。D3 INT4 mask -中斷4屏蔽位。D2 INT3 mask -中斷

20、3屏蔽位。D1 INT2 mask -中斷2屏蔽位。D0 INT1 mask -中斷1屏蔽位。3.4.3.2 外設中斷寄存器外設中斷寄存器包括:1個外設中斷矢量寄存器(PIVR,地址701Eh);3個外設中斷請求寄存器0/1/2(PIRQR0/1/2,地址7010h/ 7011h/ 7012h );3個外設中斷應答寄存器0/1/2(PIACK0/1/2,地址7014h/ 7015h/ 7016h )。外設中斷請求寄存器0/1/2和外設中斷應答寄存器0/1/2是外設中斷擴展模塊用來向CPU產生INT1INT6中斷請求的內部寄存器。只能對其測試(可讀),不能對其編程(不可寫)。外設中斷請求寄存器0

21、/1/2的某位為1,表明相應的中斷請求被掛起;為0,未被掛起。向某位寫1將發出一個中斷請求到CPU,寫入0沒影響。向外設中斷應答寄存器的某位為1,將引起相應的外設中斷應答被插入,從而將相應的外設中斷請求位清0,但不改變外設中斷矢量寄存器的內容。3.4.3.3 外設中斷控制寄存器(1)外設中斷1控制寄存器(XINT1CR)XINT1 flagReservedXINT1 polarityXINT1 priorityXINT1 enableD14D3D0D1D2D15D15 XINT1 flag - XINT1標志位。指示在XINT1引腳上是否檢測到一個跳變,無論外部中斷1是否使能,XINT1引腳中

22、跳變時該位總被置位。當相應的中斷被應答時,該位被自動清0,通過軟件向該位寫1或復位是該位被清0。0-未檢測到跳變;1-檢測到跳變。D14 D3 Reserved -保留位。D2 XINT1 polarity -XINT1極性。 0-在下降沿產生中斷;1-在上升沿產生中斷D1 XINT1 polarity - XINT1優先級。0-高優先級;1-低優先級D0 XINT1 enable - XINT1使能位。 0-屏蔽中斷; 1-使能中斷(2)外設中斷2控制寄存器(XINT2CR)XINT2 flagReservedXINT2 polarityXINT2 priorityXINT2 enableD

23、14D3D0D1D2D15D15 XINT2 flag - XINT2標志位。指示在XINT1引腳上是否檢測到一個跳變,無論外部中斷1是否使能,XINT2引腳中跳變時該位總被置位。當相應的中斷被應答時,該位被自動清0,通過軟件向該位寫1或復位是該位被清0。0-未檢測到跳變;1-檢測到跳變。D14 D3 Reserved -保留位。D2 XINT2 polarity -XINT2極性。 0-在下降沿產生中斷;1-在上 升沿產生中斷D1 XINT2 polarity - XINT2優先級。0-高優先級;1-低優先級D0 XINT2 enable - XINT2使能位。 0-屏蔽中斷; 1-使能中斷

24、3.4.4 不可屏蔽中斷(1)硬件非屏蔽中斷 :TMS320LF240 x有兩個復位源:一個外部復位引腳復位和一個程序監視定時器(看門狗)復位。 復位引腳為一個I/O腳,如果有內部復位事件(程序監視定時器復位)發生,則該引腳被設置為輸出方式,并且為低電平,向外部電路表明器件正在自己復位。 外部復位引腳信號和程序監視定時器復位信號相或后一起驅動CPU的復位信號。 當復位信號有效后,CPU將終止一切工作,把系統復位到缺省狀態上,同時,自動轉到復位中斷向量0000h處開始程序的運行,因此在程序存儲器的首地址0000h必須安排一個分支到主程序入口的指令。 :TMS320LF240 x無該引腳,當器件訪

25、問一個無效地址時,將產生非屏蔽中斷請求 ,程序則轉移到非屏蔽中斷矢量地址0024h處,從中取出一條轉移指令,然后轉向非屏蔽中斷的入口,執行相應的中斷服務程序。 無效地址檢測:系統和外設模塊控制寄存器地址映射中包含不可實現單元,譯碼邏輯能夠檢測任何對于這些無效地址的訪問。一旦檢測到對無效地址的訪問,就將系統控制和狀態寄存器(SCSR1)中的無效地址標志位(ILLADR)置1,從而產生一個不可屏蔽中斷NMI。無論何時檢測到訪問無效地址都會產生插入一個無效地址條件,無效地址標志位在無效地址條件發生之后被置1,并保持直到軟件將其清除。(2)軟件非屏蔽中斷 INTR K 該指令允許啟動任何中斷,指令操作

26、數K表示CPU將轉移到哪個中斷矢量單元,當響應INTR中斷時,ST0中的INTM位置1,禁止可屏蔽中斷。 NMI該指令允許轉移到中斷矢量地址24h,與不可屏蔽中斷 使用同一單元。即 引腳為低或執行NMI均可啟動 中斷。當執行NMI指令時,INTM置1以禁止可屏蔽中斷。 TRAP該指令使CPU轉移到中斷矢量地址22h,TRAP不禁止任何不可屏蔽中斷。當CPU轉移到中斷服務程序時,該中斷服務程序可以被可屏蔽硬件中斷所中斷。3.4.5 中斷服務程序(ISR) CPU得到中斷請求并響應之后,根據中斷矢量轉移到相應的中斷服務程序ISR中,ISR在為中斷所要求的任務前需要保存和恢復寄存器的值,并且還要管理中斷嵌套。 2 中斷服務程序嵌套的管理 考慮中斷嵌套時,需注意:(1)若希望一個可屏蔽中斷能夠中斷ISR,那么,該ISR必須不屏蔽該中斷, 可在中斷服務程序中,對IMR中的相應位設置和執行允許中斷指令(CLRC INTM)來解除該中斷屏蔽。(2)8級硬件堆棧。如果軟件需要的堆棧超過8級,可以使用POPD和PSHD指令將堆棧有效地擴展到數據存儲空間。(3)防止意外嵌套功能。在返回指令RET前至少兩條指令的位置上插入CLRC INTM指令。1保存和恢復寄存器值 CPU進入中斷服務程序(ISR)之前,硬件只將增量后的程序計數器的值自動保存起來,所

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論