計算機系統(tǒng)結(jié)構(gòu)實驗34嵌套中斷CPU賴曉錚_第1頁
計算機系統(tǒng)結(jié)構(gòu)實驗34嵌套中斷CPU賴曉錚_第2頁
計算機系統(tǒng)結(jié)構(gòu)實驗34嵌套中斷CPU賴曉錚_第3頁
計算機系統(tǒng)結(jié)構(gòu)實驗34嵌套中斷CPU賴曉錚_第4頁
計算機系統(tǒng)結(jié)構(gòu)實驗34嵌套中斷CPU賴曉錚_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

計算機系統(tǒng)結(jié)構(gòu)實驗系列一、微程序版CPU二、硬布線版CPU三、流水線版CPU四、嵌套中斷CPU賴曉錚博士華南理工大學(xué)laixz@QQ:68046508(四)嵌套中斷CPU實驗實驗內(nèi)容:●設(shè)計一個嵌套中斷的多中斷源CPU,在功能和結(jié)構(gòu)上完全兼容前述的微程序版本CPU:數(shù)據(jù)通路相同,指令體系相同,不同之處在于用硬布線邏輯電路構(gòu)建的堆棧代替“斷點”寄存器,可以“先入后出”的保存指令地址PC和運算器標志位PSW,實現(xiàn)多級中斷嵌套。實驗?zāi)康模骸窭斫舛褩5挠膊季€邏輯實現(xiàn)方法?!裾莆栈诙褩5那短字袛郈PU設(shè)計原理。硬布線邏輯的堆棧電路入棧時序:信號push=1且pop=0,移位寄存器74LS194狀態(tài){S0,S1}={1,0},進入右移模式T上升沿時刻,SR(DIN)

Q0且Qi

Qi+1(i=0,1,2)

出棧時序:信號push=0且pop=1,移位寄存器74LS194狀態(tài){S0,S1}={0,1},進入左移模式,Q0(DOUT)輸出T上升沿時刻,Qi

Qi-1(i=1,2,3)

位堆棧電路初始化時序:啟動仿真,SP狀態(tài){S0,S1}={1,1},第一個T上升沿時刻,SP輸出端為{Q0,Q1,Q2,Q3}={0,0,0,1}入棧時序(pop=0):push上升沿,SP狀態(tài){S0,S1}={1,0}T上升沿,SP+1(Qi

Qi+1)

,右移;push下降沿,SP輸出鎖存,刷新BPx出棧時序(push=0):pop上升沿,SP狀態(tài){S0,S1}={0,1},

同時,SP輸出鎖存,刷新#OExT上升沿,SP-1(Qi

Qi+1),左移;字節(jié)堆棧指針入棧時序(pop=0)push上升沿,撥碼開關(guān)數(shù)據(jù)鎖存SIN總線;push下降沿,刷新BPx產(chǎn)生的上升沿把SIN總線數(shù)據(jù)打入新BPx所對應(yīng)的寄存器STACK_x;出棧時序(push=0)pop上升沿,刷新的#OEx所對應(yīng)的寄存器STACK_x輸出數(shù)據(jù)到SOUT總線;同時,pop=1令SOUT總線導(dǎo)通到BUS總線(數(shù)碼管顯示)字節(jié)堆棧通路嵌套中斷CPU電路圖多路中斷源

電路

(無優(yōu)先級)程序計數(shù)器PC

中斷矢量地址電路

(中斷源對應(yīng))思考題:若在中斷ISR3程序里繼續(xù)觸發(fā)中斷,會出現(xiàn)什么情況?四級嵌套中斷的時序圖PC“斷點”堆棧

(INTR=push,IRET=pop)PSW“斷點”堆棧(INTR=push,IRET=pop)初始化過程時鐘信號CLK接手動開關(guān)MANUAL,啟動仿真,使能復(fù)位信號#RESET=0;手動按鈕MANUAL開關(guān)“0

10”,然后令信號#RESET=1.注:初始化完成后,若時鐘信號CLK繼續(xù)接開關(guān)MANUAL,則CPU進入手動模式,手動MANUAL開關(guān),生成時鐘信號CLK,程序單步執(zhí)行;若時鐘信號CLK接信號源AUTO-CLK(主頻10Hz),則CPU進入自動模式,程序自動運行,直到HLT指令的“斷點”處暫停。重啟過程(跳出“斷點”)時鐘信號CLK接開關(guān)MANUAL,手動令復(fù)位信號端#RESET的狀態(tài)“1

0

1”變化,即重啟完成,跳出“斷點”繼續(xù)執(zhí)行

。注:跳出“斷點”后,CPU進入HLT指令的后續(xù)下一條指令的取指周期。實驗步驟1)編譯、燒寫、運行后頁所示的nested_ISR源程序,隨機觸發(fā)中斷源0或1,觀察PC、IR、通用寄存器Rx及總線BUS的數(shù)據(jù)變化(編譯和燒寫asm文件方法參見“2.6存儲器實驗”)。2)在nested_ISR程序自動運行過程中,設(shè)置HLT指令“斷點”,手動單步嵌套觸發(fā)同一中斷源或不同中斷源。觀察和記錄進入各級中斷時,程序計數(shù)器PC、標志位寄存器PSW、總線BUS以及BP_PC堆棧和BP_PSW堆棧的狀態(tài)。3)中斷源1子程序會對主程序的R0數(shù)值有影響么?中斷源0子程序會對主程序或中斷源1子程序的R0或R1數(shù)值有影響么?因為中斷的出現(xiàn)是隨機的,所以一般情況下,中斷子程序禁止改變主程序的寄存器數(shù)值。請問采取什么軟件方法能避免中斷子程序影響主程序?

匯編助記符(M地址:機器指令)JMP13H00H:0001000001H:0001001104H;vector002H:000001000CH;vector103H:00001100OUTR1,PORT0;sub004H:01010100SETR1,80H05H:0011010006H:10000000HLT07H:00000001OUTR0,PORT008H:01010000SETR0,80H09H:001100000AH:10000000IRET0BH:01110000nested_ISR匯編助記符(M地址:機器指令)SETR1,90H;sub10CH:001101000DH:10010000SUBIR1,01H0EH:110001000FH:00000001JS0EH10H:0001110011H:00001110IRET12H:01110000SETR0,90H;main13H:0011000014H:10010000SUBIR0,01H15H:1100000016H:00000001JS15H17H:0001110018H:00010101HLT19H:00000001思考題:●請把本實驗的微程序版嵌套中斷CPU電路改成相應(yīng)的硬布線版本和流水線版本,并執(zhí)行上述實驗步驟的程序。請問程序是否需要修改?如果需要,修改的地方及原因?●嵌套中斷CPU的兩個中斷源INT0和INT1可以彼此嵌套,沒有優(yōu)先級概念。請修改硬件,增添中斷優(yōu)先級判別電路,令中斷源INT0的優(yōu)先級比INT1高,即INT0中斷可以在INT1中斷子程序中觸發(fā),但是INT1中斷不能在INT0中斷子程序中觸發(fā)。(提示:請參考“2.3比較器(仲裁器)實驗”,采用“菊花鏈”結(jié)構(gòu)設(shè)計中斷優(yōu)先級判別電路。注意:某一級中斷即使當(dāng)前不能執(zhí)行,中斷響應(yīng)也不能撤銷,必須掛起,等待優(yōu)先級高的中斷子程序結(jié)束后,繼續(xù)執(zhí)行。)(四)嵌套中斷CPU實驗思考題:●

上述優(yōu)先級電路的設(shè)計是固定不變的,但是我們可能需要調(diào)整中斷源的優(yōu)先級設(shè)計,假設(shè)要把上述中斷電路改成可變優(yōu)先級判別的的中斷電路,該怎么設(shè)計?

(提示:在嵌套中斷的CPU中,設(shè)置中斷屏蔽寄存器IMR(INT_MASK_REG),寄存器IMR的每個位(bit)對應(yīng)固定的中斷源,該位置1表示屏蔽相應(yīng)的中斷源,置0表示中斷源允許中斷。在每個中斷源的中斷子程序入口處,采用特定的指令SETI配置IMR寄存器,中斷返回前則把IMR寄存器清零,取消所有中斷屏蔽。SETI指令不但可以配置中斷的優(yōu)先級,還可以在主程序中實現(xiàn)軟件禁止和重啟中斷的功能。值得注意的是,微程序版本CPU的微地址已經(jīng)用完,要改造電路,精簡尋址周期微指令,騰出微地址給SETI指令的微指令。)(四)嵌套中斷CPU實驗附錄:CPU指令集OP碼表OP碼(I7I6I5I4)指令助記符OP碼(I7I6I5I4)指令助記符0111IRET1111OR/ORI0110MOV1110AND/ANDI0101OUT/OUTA1101ADD/ADDI0100IN1100SUB/SUBI0011SET1011XOR/XORI0010SOP(INC/DEC/NOT/THR)1010SHT(RLC/LLC/RRC/LRC)0001JMP/JMPR/Jx/JxR1001STO/PUSH0000NOP/HLT1000LAD/POP一、系統(tǒng)指令:匯編語言功能I7I6I5I4I3I2I1I0NOP;無操作(延時4個T)00000/0x/0HLT;停機(斷點)00000/0x/1IRET;中斷返回BP_PC

PC;BP_PSW

PSW01110/0x/x匯編語言注釋I7I6I5I4I3I2I1I0MOVRA,RB;(RB)

RA0110RARBSETRA,IMM;IMM

RA0011RAx/xIMM二、寄存器及I/O操作指令:匯編語言功能I7I6I5I4I3I2I1I0INRA,PORTx;(PORTx)

RA0100RAPORTxOUTRA,PORTx;(RA)

PORTx0101RA0/PORTxOUTARA,PORTx;(RA)

PORTx0101RA1/PORTx匯編語言功能I7I6I5I4I3I2I1I0LADRA,[ADDR];[ADDR]

RA1000RA0/0ADDRPOPRA,[RB];[RB]

RA1000RARBSTORA,[ADDR];(RA)

[ADDR]1001RA0/0ADDRPUSHRA,[RB];(RA)

[RB]1001RARB三、存儲器及堆棧操作指令:匯編語言功能I7I6I5I4I3I2I1I0JMPADDR;ADDR

PC00010/00/0ADDRJMPRRB;(RB)

PC00010/0RBJCADDR;IFCF=1,ADDR

PC00010/10/0ADDRJCRRB;IFCF=1,(RB)

PC00010/1RBJZADDR;IFZF=1,ADDR

PC00011/00/0ADDRJZRRB;IFZF=1,(RB)

PC00011/0RBJSADDR;IFSF=1,ADDR

PC00011/10/0ADDRJSRRB;IFSF=1,(RB)

PC00011/1RB四、跳轉(zhuǎn)系列指令:五、算術(shù)邏輯運算指令:匯編語言功能I7I6I5I4I3I2

I1I0RLCRA;(RA)右邏輯移位1010RA0/0LLCRA;(RA)左邏輯移位1010RA1/0RRCRA;(RA)右循環(huán)移位1010RA0/1LRCRA;(RA)左循環(huán)移位1010RA1/1匯編語言功能I7I6I5I4I3I2I1I0INCRA;(RA)+1

RA0010RA0/0DECRA;(RA)-1

RA0010RA0/1NOTRA;#(RA)

RA0010RA1/0THRRA;(RA)

RA0010RA1/1五、算術(shù)邏輯運算指令:匯編語言格式功能I7I6I5I4I3I2I1I0ADDRA,RB;(RA)+(RB)

RA1101RARBADDIRA,IMM;(RA)+IMM

RA1101RA0/0IMMSUBRA,RB;(RA)-(RB)

RA1100RARBSUBIRA,IMM;(R

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論