




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、計算機(jī)組成原理課程設(shè)計報告專業(yè)名稱: 網(wǎng)絡(luò)工程班級學(xué)號: 3080610032學(xué)生姓名: 黃秋月指導(dǎo)教師:丁偉設(shè)計時間: 2010年7月8日2010年7月15 日第一天 取操作數(shù)微程序的設(shè)計和調(diào)試一、設(shè)計目標(biāo) 設(shè)計并調(diào)試取操作數(shù)的微程序二、取操作數(shù)微流程200800cc025025三、測試程序、數(shù)據(jù)及運行結(jié)果格式如下:1、測試內(nèi)容:立即數(shù)尋址、直接尋址測試指令(或程序):mov #5678h,0010h指令功能:將立即數(shù)5678h送到內(nèi)存地址為0010單元,機(jī)器碼如下 機(jī)器碼: 內(nèi)存地址(h)機(jī)器碼(h)匯編指令0000077a 5678 0010mov #5678h , 0010h 在調(diào)試軟
2、件unidebugger中,根據(jù)表將機(jī)器碼輸入ram,輸入后如下圖。擴(kuò)展單步執(zhí)行的結(jié)果如圖1.2,分析過程如下:對照圖1.2,首先看微指令的執(zhí)行次序:00100200300400b00f01600601b01f024025026007004047072000,參照取指令,取操作數(shù)和mov執(zhí)行微流程分析,所執(zhí)行的微指令順序是正確的 其次分析執(zhí)行的過程,在003的微指令執(zhí)行后,下一步ir=077a,說明取指令是正確的;在016的微指令執(zhí)行后,下一步tr=5678,說明取原操作數(shù)是正確的;在在026的微指令執(zhí)行后,下一步a=ffff(此時0010單元的內(nèi)容為ffff,見圖1.2),說明取目的操作數(shù)是
3、正確的。最后分析指令執(zhí)行的結(jié)果,指令執(zhí)行前0010單元的內(nèi)容為ffff(見圖1.1)指令執(zhí)行后內(nèi)容變?yōu)?678(在指令的最后一條微指令,微地址為072的下一步,見圖1.5),說明結(jié)果是正確的。 圖1.1指令執(zhí)行前的ram的內(nèi)容 圖1.2運行結(jié)果及分析: 圖1.3指令執(zhí)行后ram的內(nèi)容2、測試內(nèi)容:相對尋址、間接尋址測試指令(或程序):mov +0004h,(0010h)指令功能:將有效地址(pc+0004h)的內(nèi)容送到0010h地址的地址中去 機(jī)器碼: 內(nèi)存地址(h)機(jī)器碼(h)匯編指令00000719 0004 0010mov +0004, (0010h) 在調(diào)試軟件unidebugger中
4、,根據(jù)表將機(jī)器碼輸入ram,輸入后如下圖。擴(kuò)展單步執(zhí)行的結(jié)果如圖2.2,分析過程如下:對照圖2.2,首先看微指令的執(zhí)行次序:00100200300400b00f01001101701501600601b01f022023024025026007044047072000,參照取指令,取操作數(shù)和mov執(zhí)行微流程分析,所執(zhí)行的微指令順序是正確的其次分析執(zhí)行的過程,在003的微指令執(zhí)行后,下一步ir=0719,說明取指令是正確的;在016的微指令執(zhí)行后,下一步tr=0000,說明取原操作數(shù)是正確的;在在026的微指令執(zhí)行后,下一步a=0004(此時0010單元的內(nèi)容為ffff,見圖2.2),說明取目的
5、操作數(shù)是正確的。最后分析指令執(zhí)行的結(jié)果,指令執(zhí)行前0010單元的內(nèi)容為ffff,以ffff為地址ffff內(nèi)容原為0004,最終指令執(zhí)行后內(nèi)容變?yōu)?000(在指令的最后一條微指令,微地址為072的下一步,見圖2.2),說明結(jié)果是正確的。圖2.1圖2.23、測試內(nèi)容:寄存器尋址、寄存器間接尋址測試指令(或程序):mov r1,(r2)機(jī)器碼: 內(nèi)存地址(h)機(jī)器碼(h)匯編指令0000042a mov r1,(r2)在調(diào)試軟件unidebugger中,根據(jù)表將機(jī)器碼輸入ram,輸入后如下圖。擴(kuò)展單步執(zhí)行的結(jié)果如圖3.2,分析過程如下:對照圖3.2,首先看微指令的執(zhí)行次序:0010020030040
6、08006019025026007044047072000,參照取指令,取操作數(shù)和mov執(zhí)行微流程分析,所執(zhí)行的微指令順序是正確的其次分析執(zhí)行的過程,在003的微指令執(zhí)行后,下一步ir=042a,說明取指令是正確的;在008的微指令執(zhí)行后,下一步tr=0000,說明取原操作數(shù)是正確的;在在026的微指令執(zhí)行后,a=0000說明取目的操作數(shù)是正確的。最后分析指令執(zhí)行的結(jié)果,指令執(zhí)行前r1單元的內(nèi)容為0000(見圖3.2),指令執(zhí)行后以r2內(nèi)容0000為地址,即將0000轉(zhuǎn)移到0000地址(在指令的最后一條微指令,微地址為072的下一步,見圖3.2)說明結(jié)果是正確的4、測試內(nèi)容:寄存器尋址、寄存器
7、變址尋址測試指令(或程序):mov r1,2(r2)機(jī)器碼: 內(nèi)存地址(h)機(jī)器碼(h)匯編指令00000432 0002 mov r1,2(r2)在調(diào)試軟件unidebugger中,根據(jù)表將機(jī)器碼輸入ram,輸入后如下圖。擴(kuò)展單步執(zhí)行的結(jié)果如圖2.2,分析過程如下:對照圖,首先看微指令的執(zhí)行次序:00100200300400800601a01c01d01e027025026007044047072000,參照取指令,取操作數(shù)和mov執(zhí)行微流程分析,所執(zhí)行的微指令順序是正確的其次分析執(zhí)行的過程,在003的微指令執(zhí)行后,下一步ir=0719,說明取指令是正確的;在008的微指令執(zhí)行后,下一步tr
8、=0000,說明取原操作數(shù)是正確的;在在026的微指令執(zhí)行后,下一步a=0002,說明取目的操作數(shù)是正確的。最后分析指令執(zhí)行的結(jié)果,指令執(zhí)行前r1單元的內(nèi)容為0000(見圖1.2),將其轉(zhuǎn)移到0002+r2,開始0002+r2內(nèi)容為0002指令執(zhí)行后內(nèi)容變?yōu)?000(在指令的最后一條微指令,微地址為072的下一步,見圖1.5),說明結(jié)果是正確的。四、設(shè)計中遇到的問題及解決辦法第一天主要是對各個尋址方式的了解,起初對各個尋址方式的尋址過程不熟悉,不能看懂調(diào)試微流程的各步驟,經(jīng)過請教同學(xué)和查看課本,有了進(jìn)一步的了解。第二天 運算指令的微程序設(shè)計與調(diào)試一、設(shè)計目標(biāo) 設(shè)計并調(diào)試運算指令的微流程二、運算
9、指令微程序入口地址指令助記符指 令 編 碼入口地址(h)fedcba9876543210movsrc, dst000001源地址碼目的地址碼044addsrc, dst000010源地址碼目的地址碼048addcsrc, dst000011源地址碼目的地址碼 04csub src, dst000100源地址碼目的地址碼 050subbsrc, dst000101源地址碼目的地址碼 054cmpsrc, dst000110源地址碼目的地址碼 058andsrc, dst000111源地址碼目的地址碼 05cor src, dst001000源地址碼目的地址碼 060xor src, dst001
10、001源地址碼目的地址碼 064testsrc, dst001010源地址碼目的地址碼 068inc dst00000010001目的地址碼0a4dec dst00000010010目的地址碼 0a8not dst00000010011目的地址碼 0ac三、運算類指令微程序(參照指導(dǎo)書圖26的形式)四、測試程序、數(shù)據(jù)及運行結(jié)果1、測試內(nèi)容:addc 0010h, (r2)機(jī)器碼:內(nèi)存地址(h)機(jī)器碼(h)匯編指令00000f4a 0010 addc 0010h,(r2)在調(diào)試軟件unidebugger中,根據(jù)表將機(jī)器碼輸入ram,輸入后如下圖。擴(kuò)展單步執(zhí)行的結(jié)果如圖,分析過程如下:對照圖1.4
11、,首先看微指令的執(zhí)行次序:00100200300400b00f01401501600601902502600704c06f071072000,參照取指令,取操作數(shù)和addc執(zhí)行微流程分析,所執(zhí)行的微指令順序是正確的其次分析執(zhí)行的過程,在003的微指令執(zhí)行后,下一步ir=0f4a,說明取指令是正確的;在016的微指令執(zhí)行后,下一步tr=fffc,說明取原操作數(shù)是正確的;在在026的微指令執(zhí)行后,下一步a=0f4a,說明取目的操作數(shù)是正確的。最后分析指令執(zhí)行的結(jié)果:即fffc+0f4a結(jié)果,由072下一條指令可以看出其結(jié)果為0f47,說明結(jié)果是正確的。運行結(jié)果:2.測試內(nèi)容:dec 0010h機(jī)器
12、碼:內(nèi)存地址(h)機(jī)器碼(h)匯編指令0000025a 0010 addc 0010h,(r2)在調(diào)試軟件unidebugger中,根據(jù)表將機(jī)器碼輸入ram,輸入后如下圖。擴(kuò)展單步執(zhí)行的結(jié)果如圖,分析過程如下:對照圖,首先看微指令的執(zhí)行次序:00100200300601b01f0240250260070ab06f071072000,參照取指令,取操作數(shù)和dec執(zhí)行微流程分析,所執(zhí)行的微指令順序是正確的其次分析執(zhí)行的過程,dec為單操作數(shù)指令,在003的微指令執(zhí)行后,下一步執(zhí)行取目的操作數(shù),在026的微指令執(zhí)行后,下一步a=fffd,說明取目的操作數(shù)是正確的。最后分析指令執(zhí)行的結(jié)果:即fffd-
13、1結(jié)果,由072下一條指令可以看出其結(jié)果為fffc,說明結(jié)果是正確的。運行結(jié)果3. 測試內(nèi)容:cmp #0010, +0001h機(jī)器碼:內(nèi)存地址(h)機(jī)器碼(h)匯編指令00001b78 0010 0001 cmp #0010,+0001h在調(diào)試軟件unidebugger中,根據(jù)表將機(jī)器碼輸入ram,輸入后如下圖。擴(kuò)展單步執(zhí)行的結(jié)果如圖,分析過程如下:對照圖,首先看微指令的執(zhí)行次序:00100200300400b00f01600601b01f020021027025026007058000,參照取指令,取操作數(shù)和addc執(zhí)行微流程分析,所執(zhí)行的微指令順序是正確的 其次分析執(zhí)行的過程,在003的
14、微指令執(zhí)行后,下一步ir=0f4a,說明取指令是正確的;在016的微指令執(zhí)行后,下一步tr=fffc,說明取原操作數(shù)是正確的;在在026的微指令執(zhí)行后,下一步a=0f4a,說明取目的操作數(shù)是正確的。最后分析指令執(zhí)行的結(jié)果:cmp指令不保存結(jié)果,只有psw記錄,szoc結(jié)果為1運行結(jié)果4.測試內(nèi)容:.and r1,0010h機(jī)器碼:內(nèi)存地址(h)機(jī)器碼(h)匯編指令00001c3a 0010 and r1,0010h在調(diào)試軟件unidebugger中,根據(jù)表將機(jī)器碼輸入ram,輸入后如下圖。擴(kuò)展單步執(zhí)行的結(jié)果如圖,分析過程如下:對照圖,首先看微指令的執(zhí)行次序:001002003004008006
15、01b01f02402502600705c06f071072000,參照取指令,取操作數(shù)和and執(zhí)行微流程分析,所執(zhí)行的微指令順序是正確的其次分析執(zhí)行的過程,在003的微指令執(zhí)行后,下一步ir=0f4a,說明取指令是正確的;在008的微指令執(zhí)行后,下一步tr=0000,說明取原操作數(shù)是正確的;在在026的微指令執(zhí)行后,下一步a=fffc,說明取目的操作數(shù)是正確的。最后分析指令執(zhí)行的結(jié)果:即0000 and fffc結(jié)果,由072下一條指令可以看出其結(jié)果為fffb,說明結(jié)果是正確的。運行結(jié)果五、設(shè)計中遇到的問題及解決辦法第二天的實驗主要目的是了解執(zhí)行階段的操作方式,本實驗只要求簡單的運算指令執(zhí)行
16、階段,根據(jù)不同指令操作碼op轉(zhuǎn)向不同分支,該控制由微轉(zhuǎn)移方式字段產(chǎn)生,預(yù)習(xí)時入口地址的形成根據(jù)指導(dǎo)書了解得到,不懂得地方就請教同學(xué)。第三天 cpu硬件的初級設(shè)計與驗證一、設(shè)計目標(biāo) 在運算器實驗的基礎(chǔ)上對硬件進(jìn)行擴(kuò)充,建立初級cpu的數(shù)據(jù)通路,構(gòu)造一個只支持運算指令的初級cpu 二、硬件設(shè)計1、pc模塊設(shè)計程序計數(shù)器pc與r模塊一樣采用異步復(fù)位,pc通過三態(tài)門與ib相連。timescale 1ns / 1psmodule pc(d,q,n_reset,clk,ce,pcinc);input 15:0 d;input n_reset,clk,ce;input pcinc;output 15:0 q
17、;reg 15:0 data;always (posedge clk or negedge n_reset)beginif(!n_reset) 當(dāng)n_reset有效時,pc清0 data=0; else if(ce) 在時鐘信號clk的上升沿如果數(shù)據(jù)裝入使能ce有效則dq, data=d; else if(pcinc) 自加信號pcinc有效則q+1q data=data+1;endassign q = data;endmodule2、dr模塊設(shè)計dr采用異步復(fù)位timescale 1ns / 1psmodule dr #( / dr連接內(nèi)部總線ib和系統(tǒng)總線的dbparameter data
18、width=16)(input wire datawidth-1:0 data_ib, / dr有兩路數(shù)據(jù)輸入data_ib、data_db,分別來自ib、dbinput wire datawidth-1:0 data_db,input wire clk,input wire drce_ib, /相應(yīng)的有兩個裝入使能信號drce_ib、drce_dbinput wire drce_db,input n_reset,output reg datawidth-1:0 q); /輸出端q分別通過兩個三態(tài)門連到ib、db。always(posedge clk or negedge n_reset) /
19、在時鐘信號的上升沿begin if(!n_reset) /復(fù)位時dr清0 q=0; else if(drce_ib) /當(dāng)drce_ib有效時則data_ibq q=data_ib;else if(drce_db) /當(dāng)drce_db有效時則data_dbqq=data_db; endendmodule 3、頂層模塊設(shè)計(自己增加的設(shè)計部分)/tr寄存器的實例化r #(datawidth) tr(.q(tr_out),.d(ib),clk(clock),.ce(trce),.tr_reset(tr_reset);/ar寄存器的實例化r#(addrwidth)ar(.q(ar_out),.d(a
20、b),.clk(clock),.ce(arce),.ar_reset(ar_reset);/ir寄存器的實例化r #(datawidth) ir(.q(ir_out),.d(ib),.clk(clock),.ce(irce),.ir_reset(ir_reset);三、驗證測試指令:(1) addc 0010h, (r2)執(zhí)行結(jié)果:(2) dec 0010h執(zhí)行結(jié)果:(3) cmp #0010執(zhí)行結(jié)果:(4) +0001hand r1,0010h執(zhí)行結(jié)果:經(jīng)過與day2實驗結(jié)果的比較,結(jié)果與其相同,證明硬件設(shè)計是正確的四、設(shè)計中遇到的問題及解決辦法day3的實驗是自己設(shè)計初級的cpu及簡單的運
21、算功能,設(shè)計硬件的的大部分verilog語言都已經(jīng)給出,只需根據(jù)要求補(bǔ)全dr,pc的代碼,及在cou中實例化ar,ir,tr,dr,pc的代碼根據(jù)其功能要求補(bǔ)全第四天 為cpu擴(kuò)充轉(zhuǎn)移指令一、設(shè)計要求 在初級cpu的基礎(chǔ)上進(jìn)行功能擴(kuò)充,使其支持轉(zhuǎn)移類型指令二、硬件uag模塊設(shè)計(自己修改的設(shè)計部分,加上適當(dāng)注釋)always * begin case (bm)3d0:uagout = na; /0,固定轉(zhuǎn)移3d1:uagout = na8,intr&if,na6:0; /1,根據(jù)是否中斷產(chǎn)生兩分支 3d2:uagout = na8:2, bm2_uar1, bm2_uar0; /2,取指令后的
22、三分支轉(zhuǎn)移,雙單無操作數(shù),即取源, 3d3: uagout=na8:1,bm3_uar0;3d4:uagout = bm4_ua; /4,按op多路轉(zhuǎn)移3d5:uagout = na8:2, bm5_uar10; /5,按尋址方式m多路轉(zhuǎn)移3d6:uagout = na8:3, bm6_uar21, 1b0; /6,按尋址方式m多路轉(zhuǎn)3d7:uagout = na8:1, bm7_uar0; /7,結(jié)果回送時,按寄存器、存儲器轉(zhuǎn)移 default:uagout = 9b000000000;endcase end /uar1,uar0雙操作數(shù)=00,01;單操作數(shù)=10;無操作數(shù)11assign
23、 bm2_uar1 = !(|ir15:10); assign bm2_uar0 = !(|ir9:5);always(szoc, ir) begin case(ir7:6)/ 條件轉(zhuǎn)移類指令 2b00:flag_mux=szoc0 /選00時表示滿足條件cf=12b01:flag_mux=szoc 1 /選01時表示滿足條件of=1 2b10:flag_mux=szoc2 /選10時表示滿足條件zf=12b11:flag_mux=szoc3 /選11時表示滿足條件sf=1default:flag_mux00200300601b01f0200210270250260070a0000,參照取指令
24、,取操作數(shù)和dec執(zhí)行微流程分析,所執(zhí)行的微指令順序是正確的其次分析執(zhí)行的過程,jmp為單操作數(shù)指令,在003的微指令執(zhí)行后,下一步執(zhí)行取目的操作數(shù)。將pc無條件轉(zhuǎn)移到0012地址2.測試內(nèi)容: add#1000,0010h jc0014h /0010h-f000運行數(shù)據(jù):0b7a 1000 0010 011a 0014運行結(jié)果及分析:在調(diào)試軟件unidebugger中,根據(jù)表將機(jī)器碼輸入ram,輸入后如下圖。擴(kuò)展單步執(zhí)行的結(jié)果如圖,分析過程如下:對照圖,首先看微指令的執(zhí)行次序:00100200300400b00f01600601b01f02402502600704806f0710720000
25、0100200300601b01f024025026007075077000,參照取指令,取操作數(shù)和add執(zhí)行微流程,及jc操作指令執(zhí)行微流程分析,所執(zhí)行的微指令順序是正確的其次分析執(zhí)行的過程,add為雙操作數(shù)指令,在003的微指令執(zhí)行后,下一步ir=0b7a,說明取指令是正確的,執(zhí)行取源操作數(shù),在016的微指令執(zhí)行后下一步tr=1000,說明取源操作數(shù)是正確的;執(zhí)行取目的操作數(shù),在026的微指令執(zhí)行后,下一步a=f000,即取地址0010的內(nèi)容,說明取目的操作數(shù)是正確的。由結(jié)果可知szoc=5,滿足有進(jìn)位條件,由第二條指令執(zhí)行003的微指令執(zhí)行后,下一步ir=011a,說明取指令是正確的,即
26、將pc轉(zhuǎn)移到0014,由運行結(jié)果證明是正確的運行結(jié)果及分析:3.測試內(nèi)容: add #8010,0010h jo 0014h /0010h-8023運行數(shù)據(jù):0b7a 8010 0010 015a 0014 運行結(jié)果及分析:在調(diào)試軟件unidebugger中,根據(jù)表將機(jī)器碼輸入ram,輸入后如下圖。擴(kuò)展單步執(zhí)行的結(jié)果如圖,分析過程如下:對照圖,首先看微指令的執(zhí)行次序:00100200300400b00f01600601b01f02402502600704806f07107200000100200300601b01f024025026007075077000,參照取指令,取操作數(shù)和add執(zhí)行微流
27、程,及jc操作指令執(zhí)行微流程分析,所執(zhí)行的微指令順序是正確的其次分析執(zhí)行的過程,add為雙操作數(shù)指令,在003的微指令執(zhí)行后,下一步ir=0b7a,說明取指令是正確的,執(zhí)行取源操作數(shù),在016的微指令執(zhí)行后下一步tr=8010,說明取源操作數(shù)是正確的;執(zhí)行取目的操作數(shù),在026的微指令執(zhí)行后,下一步a=8023,即取地址0010的內(nèi)容,說明取目的操作數(shù)是正確的。由結(jié)果可知szoc=3,滿足有溢出條件,由第二條指令執(zhí)行003的微指令執(zhí)行后,下一步ir=015a,說明取指令是正確的,執(zhí)行取目的操作數(shù),執(zhí)行階段,最終pc轉(zhuǎn)移到0014地址上,由運行結(jié)果證明是正確的運行結(jié)果:4.測試內(nèi)容: and #
28、5555,0010h jz (0014h) /0010h-aaaa運行數(shù)據(jù):1f7a 5555 0010 0199 0014 運行結(jié)果及分析:在調(diào)試軟件unidebugger中,根據(jù)表將機(jī)器碼輸入ram,輸入后如下圖。擴(kuò)展單步執(zhí)行的結(jié)果如圖,分析過程如下:對照圖,首先看微指令的執(zhí)行次序:00100200300400b00f01600601b01f02402502600705c06f07107200000100200300601b01f022023024025026007075077000,參照取指令,取操作數(shù)和and執(zhí)行微流程,及jz操作指令執(zhí)行微流程分析,所執(zhí)行的微指令順序是正確的其次分析執(zhí)
29、行的過程,and為雙操作數(shù)指令,在003的微指令執(zhí)行后,下一步ir=1f7a,說明取指令是正確的,執(zhí)行取源操作數(shù),在016的微指令執(zhí)行后下一步tr=5555,說明取源操作數(shù)是正確的;執(zhí)行取目的操作數(shù),在026的微指令執(zhí)行后,下一步a=aaaa,即取地址0010的內(nèi)容,說明取目的操作數(shù)是正確的。由結(jié)果可知szoc=5,滿足全為零條件,由第二條指令執(zhí)行003的微指令執(zhí)行后,下一步ir=0199,說明取指令是正確的,執(zhí)行取目的操作數(shù)。執(zhí)行階段,即將pc轉(zhuǎn)移到0014地址內(nèi)容0012h上,由運行結(jié)果證明是正確的5.測試內(nèi)容: subb #0002 ,0010h 0010h-0001js +0014h運
30、行數(shù)據(jù): 177a 0002 0010 01d8 0014運行結(jié)果及分析:在調(diào)試軟件unidebugger中,根據(jù)表將機(jī)器碼輸入ram,輸入后如下圖。擴(kuò)展單步執(zhí)行的結(jié)果如圖,分析過程如下:對照圖,首先看微指令的執(zhí)行次序:00100200300400b00f01600601b01f02402502600705406f07107200000100200300601b01f020021027025026007075077000,參照取指令,取操作數(shù)和subb執(zhí)行微流程,及js操作指令執(zhí)行微流程分析,所執(zhí)行的微指令順序是正確的其次分析執(zhí)行的過程,subb為雙操作數(shù)指令,在003的微指令執(zhí)行后,下一步i
31、r=177a,說明取指令是正確的,執(zhí)行取源操作數(shù),在016的微指令執(zhí)行后下一步tr=0002,說明取源操作數(shù)是正確的;執(zhí)行取目的操作數(shù),在026的微指令執(zhí)行后,下一步a=ffff,即取地址0010的內(nèi)容,說明取目的操作數(shù)是正確的。由結(jié)果可知szoc=9,滿足符號位為負(fù)條件,由第二條指令執(zhí)行003的微指令執(zhí)行后,下一步ir=01d8,說明取指令是正確的,執(zhí)行取目的操作數(shù)。執(zhí)行階段,將轉(zhuǎn)移到0019地址上,由運行結(jié)果證明是正確的五、設(shè)計中遇到的問題及解決辦法預(yù)習(xí)時不太理解轉(zhuǎn)移指令的作用,后來知道了轉(zhuǎn)移指令也是一個執(zhí)行指令,轉(zhuǎn)移指令分條件轉(zhuǎn)移和無條件轉(zhuǎn)移,所以在設(shè)計調(diào)試程序時先設(shè)計一條指令,使其滿足
32、轉(zhuǎn)移指令的條件,滿足條件的的選擇是由ir76來判斷的,在cpu中編寫程序,當(dāng)ir76=00時,即cf滿足條件,當(dāng)ir76=01時,即of滿足條件,當(dāng)ir76=10時,即zf滿足條件,當(dāng)ir76=11時,即sf滿足條件通過實驗,弄清了轉(zhuǎn)移指令的作用,即在滿足轉(zhuǎn)移指令條件下pc指向另一條地址。第五天 為cpu擴(kuò)充移位指令一、設(shè)計目標(biāo) 在前面cpu的基礎(chǔ)上擴(kuò)充硬件,使其支持轉(zhuǎn)移指令二、硬件設(shè)計1、shifter模塊設(shè)計module shifter(q,d,clk,sv,sl,sr,n_reset,ir76,cf); parameter datawidth = 16; output datawidth
33、-1:0 q; input datawidth-1:0 d;input 1:0ir76; input clk,n_reset,cf; input sv, sl, sr;reg datawidth-1:0 data;wire data_lsb;wire data_hsb; /實例化兩個四選一多路選擇器mux lsb_mux(.q(data_lsb),.d1(1b0),.d2(1b0),.d3(d15),.d4(cf),.addr(ir76);/低位多路選擇器的實例化mux hsb_mux(.q(data_hsb),.d1(d15),.d2(1b0),.d3(d0),.d4(cf),.addr(i
34、r76); /高位多路選擇器的實例化always (posedge clk or negedge n_reset) begin if (!n_reset) data = 0;else if(sv) data = d; else if (sl) data = ddatawidth-2:0, data_lsb; else if(sr) data = data_hsb, ddatawidth-1:1; endassign q = data;endmodule;2、cf模塊設(shè)計module cf_mux(d15, d0, cout, q, sl, sr);input d15, d0, cout;inp
35、ut sl, sr;output q;reg q;always (*)begincase (sl, sr)3b01: q = d0;3b10: q = d15;default:q = cout;endcaseendendmodule; 3、ir_decode模塊設(shè)計(自己增加修改的設(shè)計部分) 2b00: bm4_ua0014-2513運行數(shù)據(jù):0039 0010運行結(jié)果及分析:在調(diào)試軟件unidebugger中,根據(jù)表將機(jī)器碼輸入ram,輸入后如下圖。擴(kuò)展單步執(zhí)行的結(jié)果如圖,分析過程如下:對照圖,首先看微指令的執(zhí)行次序:00100200300601b01f0200210270250260070
36、9e06f071072000,參照取指令,取操作數(shù)和sar執(zhí)行微流程,所執(zhí)行的微指令順序是正確的其次分析執(zhí)行的過程,sar為單操作數(shù)指令,在003的微指令執(zhí)行后,下一步ir=0039,說明取指令是正確的,執(zhí)行取目的操作數(shù),在026的微指令執(zhí)行后,下一步a=2513,即以0010的內(nèi)容0014h為地址,其中0014的內(nèi)容為2513,說明取目的操作數(shù)是正確的。算術(shù)右移后變?yōu)?289,由運行結(jié)果證明是正確的2.測試內(nèi)容:shl 0010 /0010-2513運行數(shù)據(jù):005a0010運行結(jié)果及分析:在調(diào)試軟件unidebugger中,根據(jù)表將機(jī)器碼輸入ram,輸入后如下圖。擴(kuò)展單步執(zhí)行的結(jié)果如圖,分
37、析過程如下:對照圖,首先看微指令的執(zhí)行次序:00100200300601b01f02402502600709406f071072000,參照取指令,取操作數(shù)和shl執(zhí)行微流程,所執(zhí)行的微指令順序是正確的其次分析執(zhí)行的過程,shl為單操作數(shù)指令,在003的微指令執(zhí)行后,下一步ir=005a,說明取指令是正確的,執(zhí)行取目的操作數(shù),在026的微指令執(zhí)行后,下一步a=2513,即0010的內(nèi)容為2513,說明取目的操作數(shù)是正確的。邏輯左移后變?yōu)?a26,由運行結(jié)果證明是正確的3.測試內(nèi)容:shr0010h /0010-2513運行數(shù)據(jù):007a 0010 運行結(jié)果及分析:在調(diào)試軟件unidebugge
38、r中,根據(jù)表將機(jī)器碼輸入ram,輸入后如下圖。擴(kuò)展單步執(zhí)行的結(jié)果如圖,分析過程如下:對照圖,首先看微指令的執(zhí)行次序:00100200300601b01f02402502600709606f071072000,參照取指令,取操作數(shù)和shl執(zhí)行微流程,所執(zhí)行的微指令順序是正確的其次分析執(zhí)行的過程,shr為單操作數(shù)指令,在003的微指令執(zhí)行后,下一步ir=007a,說明取指令是正確的,執(zhí)行取目的操作數(shù),在026的微指令執(zhí)行后,下一步a=2513,即0010的內(nèi)容為2513,說明取目的操作數(shù)是正確的。邏輯右移后變?yōu)?289,由運行結(jié)果證明是正確的4測試內(nèi)容:rol(0010h) /0010-0014-
39、2513運行數(shù)據(jù):0099 0010運行結(jié)果及分析:在調(diào)試軟件unidebugger中,根據(jù)表將機(jī)器碼輸入ram,輸入后如下圖。擴(kuò)展單步執(zhí)行的結(jié)果如圖,分析過程如下:對照圖,首先看微指令的執(zhí)行次序:00100200300601b01f02402502600709806f071072000,參照取指令,取操作數(shù)和shl執(zhí)行微流程,所執(zhí)行的微指令順序是正確的其次分析執(zhí)行的過程,shl為單操作數(shù)指令,在003的微指令執(zhí)行后,下一步ir=005a,說明取指令是正確的,執(zhí)行取目的操作數(shù),在026的微指令執(zhí)行后,下一步a=2513,即以0010的內(nèi)容0014為地址,0014的內(nèi)容為2513,說明取目的操作
40、數(shù)是正確的。循環(huán)左移后變?yōu)?a26,由運行結(jié)果證明是正確的5.測試內(nèi)容:ror(0010h) /0010-0014-2513運行數(shù)據(jù):00b9 0010運行結(jié)果及分析:在調(diào)試軟件unidebugger中,根據(jù)表將機(jī)器碼輸入ram,輸入后如下圖。擴(kuò)展單步執(zhí)行的結(jié)果如圖,分析過程如下:對照圖,首先看微指令的執(zhí)行次序:00100200300601b01f02402502600709a06f071072000,參照取指令,取操作數(shù)和shl執(zhí)行微流程,所執(zhí)行的微指令順序是正確的其次分析執(zhí)行的過程,shl為單操作數(shù)指令,在003的微指令執(zhí)行后,下一步ir=00b9,說明取指令是正確的,執(zhí)行取目的操作數(shù),在
41、026的微指令執(zhí)行后,下一步a=2513,即以0010的內(nèi)容0014為地址,0014的內(nèi)容為2513,說明取目的操作數(shù)是正確的。循環(huán)右移后變?yōu)?a26,由運行結(jié)果證明是正確的6.測試內(nèi)容:rcl+0010h /0010-0012-2513運行數(shù)據(jù):00d8 0010運行結(jié)果及分析:在調(diào)試軟件unidebugger中,根據(jù)表將機(jī)器碼輸入ram,輸入后如下圖。擴(kuò)展單步執(zhí)行的結(jié)果如圖,分析過程如下:對照圖,首先看微指令的執(zhí)行次序:00100200300601b01f02402502600709c06f071072000,參照取指令,取操作數(shù)和shl執(zhí)行微流程,所執(zhí)行的微指令順序是正確的其次分析執(zhí)行的
42、過程,rcl為單操作數(shù)指令,在003的微指令執(zhí)行后,下一步ir=00d8,說明取指令是正確的,執(zhí)行取目的操作數(shù),在026的微指令執(zhí)行后,下一步a=2513,即以pc+0010即0012的內(nèi)容,為2513,說明取目的操作數(shù)是正確的。循環(huán)右移后變?yōu)?a26,由運行結(jié)果證明是正確的7.測試內(nèi)容:rcr+0010h) /0010-0012-2513運行數(shù)據(jù):00f8 0010運行結(jié)果及分析:在調(diào)試軟件unidebugger中,根據(jù)表將機(jī)器碼輸入ram,輸入后如下圖。擴(kuò)展單步執(zhí)行的結(jié)果如圖,分析過程如下:對照圖,首先看微指令的執(zhí)行次序:00100200300601b01f02402502600709e0
43、6f071072000,參照取指令,取操作數(shù)和shl執(zhí)行微流程,所執(zhí)行的微指令順序是正確的其次分析執(zhí)行的過程,rcl為單操作數(shù)指令,在003的微指令執(zhí)行后,下一步ir=00f8,說明取指令是正確的,執(zhí)行取目的操作數(shù),在026的微指令執(zhí)行后,下一步a=2513,即以pc+0010即0012的內(nèi)容,為2513,說明取目的操作數(shù)是正確的。循環(huán)右移后變?yōu)?289,由運行結(jié)果證明是正確的四、設(shè)計中遇到的問題及解決辦法預(yù)習(xí)時對器件的實例化不太清楚,例如在shifter中對mux的實例化,實例化的兩個mux,一個是用來產(chǎn)生最低有效位,一個用來產(chǎn)生最高有效位。產(chǎn)生低位的輸入端口分別是0,0,d15,cf,輸出
44、為lsb;產(chǎn)生高位的輸入端口為d15,0,d0,cf,輸出為hsb。根據(jù)地址ir76,判斷輸入。在最低有效位lsb產(chǎn)生邏輯中,當(dāng)ir76=00時將0送給lsb,即算術(shù)左移,當(dāng)ir76=01時將0送給lsb,即邏輯左移,當(dāng)ir76=10時將d15送給lsb,即循環(huán)左移,當(dāng)ir76=11時將cf送給lsb,即帶進(jìn)位的循環(huán)左移在最高有效位hsb產(chǎn)生邏輯中,當(dāng)ir76=00時將d15送給hsb,即算術(shù)右移,當(dāng)ir76=01時將0送給hsb,即邏輯右移,當(dāng)ir76=10時將d0送給hsb,即循環(huán)右移,當(dāng)ir76=11時將cf送給hsb,即帶進(jìn)位的循環(huán)右移第六天 為cpu擴(kuò)充堆棧類指令一、設(shè)計目標(biāo) 在前面cpu的基礎(chǔ)上增加堆棧,使其支持與堆棧有關(guān)的push,pop,call,ret指令 二、硬件設(shè)計1、sp模塊設(shè)計(加上適當(dāng)注釋)module sp(q,d,clk,ce,n_reset); par
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年安徽水利水電職業(yè)技術(shù)學(xué)院單招職業(yè)技能考試題庫必考題
- 2025年安陽學(xué)院單招職業(yè)傾向性考試題庫及參考答案一套
- 2025年臺式機(jī)訂購合同模板
- 2025年防火隔離材料購買合同
- 2025年企業(yè)與員工合同協(xié)議
- 2025年醫(yī)療器械保修服務(wù)與故障處理合同
- 2025年公有住房租賃合同樣本備案
- 2025年合作基礎(chǔ)設(shè)施建設(shè)合同范本
- 2025年二手房交易意向金合同文本
- 2025年標(biāo)準(zhǔn)循環(huán)融資合同范本
- 第22課《陳涉世家》課件(共71張)
- 新能源汽車產(chǎn)業(yè)專利分析綜述
- 2010年4月自考00371公安決策學(xué)試題及答案含解析
- 實驗室儀器借用登記表
- 單肺通氣與肺保護(hù)通氣策略護(hù)理課件
- 規(guī)培出科小結(jié)呼吸內(nèi)科
- 《鋼鐵是怎樣煉成的》選擇題100題(含答案)
- 《房地產(chǎn)行政管理》課件
- 北京垃圾分類管理制度
- 人力資源招聘與企業(yè)培訓(xùn)培訓(xùn)資料
- 電工學(xué)(第8版)(上冊 電工技術(shù)) 課件全套 秦曾煌 第1-14章 電路的基本概念與基本定律- 傳感器
評論
0/150
提交評論