ssh計(jì)算機(jī)組成原理課程設(shè)計(jì)模型機(jī)設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
ssh計(jì)算機(jī)組成原理課程設(shè)計(jì)模型機(jī)設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
ssh計(jì)算機(jī)組成原理課程設(shè)計(jì)模型機(jī)設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
ssh計(jì)算機(jī)組成原理課程設(shè)計(jì)模型機(jī)設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
ssh計(jì)算機(jī)組成原理課程設(shè)計(jì)模型機(jī)設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

中國(guó)計(jì)量學(xué)院現(xiàn)代科技學(xué)院計(jì)算機(jī)組成原理課程設(shè)計(jì)報(bào)告題目:模型機(jī)設(shè)計(jì)與實(shí)現(xiàn)專業(yè)計(jì)算機(jī)科學(xué)與技術(shù)班級(jí)_計(jì)算機(jī)08班_姓名史蘇豪,江耀學(xué)號(hào)0830332120,0830332114指導(dǎo)教師徐展翼____2010年12月30日一、實(shí)驗(yàn)?zāi)康?.在實(shí)驗(yàn)機(jī)上設(shè)計(jì)實(shí)現(xiàn)機(jī)器指令及對(duì)應(yīng)的微指令(微程序)并驗(yàn)證,從而進(jìn)一步掌握微程序設(shè)計(jì)控制器的基本方法并了解指令系統(tǒng)與硬件結(jié)構(gòu)的對(duì)應(yīng)關(guān)系;2.通過控制器的微程序設(shè)計(jì),綜合理解計(jì)算機(jī)組成原理課程的核心知識(shí)并進(jìn)一步建立整機(jī)系統(tǒng)的概念;3.培養(yǎng)綜合實(shí)踐及獨(dú)立分析、解決問題的能力。二、實(shí)驗(yàn)設(shè)備1.硬件CPTH計(jì)算機(jī)組成原理試驗(yàn)儀計(jì)算機(jī)2.軟件CPTH計(jì)算機(jī)組成原理實(shí)驗(yàn)軟件三.實(shí)驗(yàn)內(nèi)容用CPTH計(jì)算機(jī)組成原理實(shí)驗(yàn)軟件設(shè)計(jì)一套指令\微指令系統(tǒng),實(shí)現(xiàn)乘法運(yùn)算。模型機(jī)總體結(jié)構(gòu)CPTH模型機(jī)包括了一個(gè)標(biāo)準(zhǔn)CPU所具備所有部件,這些部件包括:運(yùn)算器ALU、累加器A、工作寄存器W、左移門L、直通門D、右移門R、寄存器組R0-R3、程序計(jì)數(shù)器PC、地址寄存器MAR、堆棧寄存器ST、中斷向量寄存器IA、輸入端口IN、輸出端口寄存器OUT、程序存儲(chǔ)器EM、指令寄存器IR、微程序計(jì)數(shù)器uPC、微程序存儲(chǔ)器uM,以及中斷控制電路、跳轉(zhuǎn)控制電路。其中運(yùn)算器跳轉(zhuǎn)控制電路用CPLD來(lái)實(shí)現(xiàn),其它都是用離散的數(shù)字微程序控制部分也可以用組合邏輯控制來(lái)代替。為8位機(jī),數(shù)據(jù)總線、地址總線都為8位,但其工作原理與16位機(jī)相同。相比而言8位機(jī)實(shí)驗(yàn)減少了煩瑣的連線,但其原理卻更容易被學(xué)生理解、吸收。模型機(jī)的指令碼為8位,根據(jù)指令碼的最低兩位用來(lái)選擇R0-R3寄存器,在微程序控制方和中斷控制模型機(jī)類型的不同,可以有0到2個(gè)操作數(shù)。指令式中,用指令碼做為微地址來(lái)尋址微程序存儲(chǔ)器,找到執(zhí)行該指令的微程序。而在組合邏輯控制方式中,按時(shí)序用指令碼產(chǎn)生相應(yīng)的控制位。在本模型機(jī)中,一條指令最多分四個(gè)狀態(tài)周期,一個(gè)狀態(tài)周期為一個(gè)時(shí)鐘脈沖,每個(gè)狀態(tài)周期產(chǎn)生不同的控制邏輯,實(shí)現(xiàn)模型機(jī)的各種功能。24位控制位:XRD:外部設(shè)備讀信號(hào),當(dāng)給出了外設(shè)的地址后,輸出此信號(hào),從指定外設(shè)讀數(shù)據(jù)。1

EMWR:程序存儲(chǔ)器EM寫信號(hào)。EMRD:程序存儲(chǔ)器EM讀信號(hào)。PCOE:將程序計(jì)數(shù)器PC的值送到地址總線ABUS上。EMEN:將程序存儲(chǔ)器EM與數(shù)據(jù)總線DBUS接通,由EMWR和EMRD決定是將DBUS數(shù)據(jù)寫到EM中,還是從EM讀出數(shù)據(jù)送到DBUS。IREN:將程序存儲(chǔ)器EM讀出的數(shù)據(jù)打入指令寄存器IR和微指令計(jì)數(shù)器uPC。EINT:中斷返回時(shí)清除中斷響應(yīng)和中斷請(qǐng)求標(biāo)志,便于下次中斷。ELP:PC打入允許,與指令寄存器的IR3、IR2位結(jié)合,控制程序跳轉(zhuǎn)。MAREN:將數(shù)據(jù)總線DBUS上數(shù)據(jù)打入地址寄存器MAR。MAROE:將地址寄存器MAR的值送到地址總線ABUS上。OUTEN:將數(shù)據(jù)總線DBUS上數(shù)據(jù)送到輸出端口寄存器OUT里。STEN:將數(shù)據(jù)總線DBUS上數(shù)據(jù)存入堆棧寄存器ST中。RRD:讀寄存器組R0-R3,寄存器R?的選擇由指令的最低兩位決定。RWR:寫寄存器組R0-R3,寄存器R?的選擇由指令的最低兩位決定。CN:決定運(yùn)算器是否帶進(jìn)位移位,CN=1帶進(jìn)位,CN=0不帶進(jìn)位。FEN:將標(biāo)志位存入ALU內(nèi)部的標(biāo)志寄存器。X2:X2、X1、X0三位組合來(lái)譯碼選擇將數(shù)據(jù)送到DBUS上的寄存器。WEN:將數(shù)據(jù)總線DBUS的值打入工作寄存器W中。AEN:將數(shù)據(jù)總線DBUS的值打入累加器A中。S2:S2、S1、S0三位組合決定ALU做何種運(yùn)算。模型機(jī)尋址方式模型機(jī)的尋址方式分五種:累加器尋址:操作數(shù)為累加器A,例如“CPL”是A將累加器A值取反,還有些指令是隱含尋址累加器A,例如“OUT”是將累加器A的值輸出到輸出端口寄存器OUT。寄存器尋址:參與運(yùn)算的數(shù)據(jù)在R0-R3的寄存器中,例如“ADD,RA0”指令是將寄存器R0的值加上累加器A的值,再存入累加器A中。寄存器間接尋址:參與運(yùn)算的數(shù)據(jù)在存儲(chǔ)器EM中,數(shù)據(jù)的地址在寄存器R0-R3中,如“MOVA,@R1”指令是將寄存器R1的值做為地址,把存儲(chǔ)器EM中該地址的內(nèi)容送入累加器A中。存儲(chǔ)器直接尋址:參與運(yùn)算的數(shù)據(jù)在存儲(chǔ)器EM中,數(shù)據(jù)的地址為指令的操作數(shù)。例如“AND,4A0H”指令是將存儲(chǔ)器EM中40H單元的數(shù)據(jù)與累加器A的值做邏輯與運(yùn)算,結(jié)果存入累加器A。立即數(shù)尋址:參與運(yùn)算的數(shù)據(jù)為指令的操作數(shù)。例如“SUB,#A10H”是從累加器A中減去立即數(shù)10H,結(jié)果存入累加器A。2

CPTH中的運(yùn)算器由一片CPLD實(shí)現(xiàn),有8種運(yùn)算,通過S2,S1,S0來(lái)選擇,運(yùn)算數(shù)據(jù)由寄存器A及寄存器W給出,運(yùn)算結(jié)果輸出到直通門D。CPTH中有7個(gè)寄存器可以向數(shù)據(jù)總線輸出數(shù)據(jù),但在某一特定時(shí)刻只能有一個(gè)寄存器輸出數(shù)據(jù),由X2,X1,X0決定那一個(gè)寄存器輸出數(shù)據(jù)。計(jì)算機(jī)無(wú)符號(hào)乘法原理:1、實(shí)例演示:被乘數(shù)為1001(二進(jìn)制),即為十進(jìn)制的9;乘數(shù)為0110(二進(jìn)制),即為十進(jìn)制的6。那么,可以通過筆算得到:1001×0110=00110110即十進(jìn)制運(yùn)算結(jié)果為:9×6=54無(wú)符號(hào)乘法的實(shí)例演示如圖1所示:1001;被乘數(shù)×0110;乘數(shù)30000;初始值(零)+0000(0);乘數(shù)最低位為0,部分積加0,被乘數(shù)左移一;位,乘數(shù)右移一位。0000;部分積+1001;移一位,乘數(shù)右移一位。(1);乘數(shù)最低位為1,部分積加被乘數(shù),被乘數(shù)左10010;部分積+1001(1);乘數(shù)最低位為1,部分積加被乘數(shù),被乘數(shù)左;移一位,乘數(shù)右移一位。110110;部分積+0000(0);乘數(shù)最低位為0,部分積加0,被乘數(shù)左移一;位,乘數(shù)右移一位。(0)0110110;計(jì)算完畢,結(jié)果為00110110即:1001×0110=001101102、硬件原理框圖:LDR被乘數(shù)左移R0(部分積和結(jié)果)判斷乘數(shù)末位乘數(shù)ALU右移AWR1R2被乘數(shù)乘數(shù)43、硬件分配情況寄存器R0計(jì)算時(shí)用來(lái)存放部分積和最后的積①初始化時(shí),用來(lái)存放被乘數(shù);寄存器R1寄存器R2累加器A寄存器W左移門L②在程序執(zhí)行的過程中,用來(lái)存放向左移位后的被乘數(shù)。①初始化時(shí),用來(lái)存放乘數(shù);②在程序執(zhí)行的過程中,用來(lái)存放向右移位后的乘數(shù)。執(zhí)行ADDA,R?(加法)、RLR?(左移一位)、RLR?(右移一位)等命令時(shí)所必須使用的寄存器。執(zhí)行ADDA,R?(加法)、ANDR?,#II(測(cè)試R2的末位)等雙操作數(shù)命令時(shí)所必須使用的寄存器。用來(lái)實(shí)現(xiàn)相應(yīng)數(shù)據(jù)左移一位的運(yùn)算,并能夠控制該運(yùn)算后的結(jié)果是否輸出到數(shù)據(jù)總線。直通門D用來(lái)控制ALU的執(zhí)行結(jié)果是否輸出到數(shù)據(jù)總線。用來(lái)實(shí)現(xiàn)相應(yīng)數(shù)據(jù)右移一位的運(yùn)算,并能夠控制該運(yùn)算后的右移門R結(jié)果是否輸出到數(shù)據(jù)總線。①控制程序按順序正常執(zhí)行;②當(dāng)執(zhí)行轉(zhuǎn)移指令時(shí),從數(shù)據(jù)線接收要跳轉(zhuǎn)的地址,使程程序計(jì)數(shù)器PC序能夠按需要自動(dòng)執(zhí)行。③當(dāng)要從EM中讀取數(shù)據(jù)時(shí),由PC提供地址。存儲(chǔ)器EM存儲(chǔ)指令和數(shù)據(jù)。微程序計(jì)數(shù)器μPC向微程序存儲(chǔ)器μM提供相應(yīng)微指令的地址。微程序存儲(chǔ)器μM存儲(chǔ)相應(yīng)指令的微指令。輸出寄存器OUT可以將運(yùn)算結(jié)果輸出到輸出寄存器OUT。4、指令集助記符尋址方式機(jī)器碼1指令說明_FATCH_000000xx實(shí)驗(yàn)機(jī)用占,不可修改。復(fù)位后,所有寄存器清0,00-03首先執(zhí)行_FATCH_指令取指。JZ*儲(chǔ)存器直接尋000001xx若零標(biāo)志位置1,跳轉(zhuǎn)到*地址。址04-07JC*儲(chǔ)存器直接尋000010xx若進(jìn)位標(biāo)志位置1,跳轉(zhuǎn)到*地址。址08-0BMOV立即數(shù)尋址000011xx將立即數(shù)#*存放到寄存器R?中。R?,#*0C-0FMOVA,R?寄存器尋址000100xx將寄存器R?中的數(shù)放入累加器A中。10-13ADDR?,A寄存器尋址000101xx將累加器A中的數(shù)加入到寄存器R?中,并影響標(biāo)志14-17位。TEST立即數(shù)尋址000110xx寄存器R?“與”立即數(shù)#*,只改變標(biāo)志位,并不R?,#*18-1B改變R?中的數(shù)值。5儲(chǔ)存器直接尋000111xxJMP*跳轉(zhuǎn)到*地址。址1C-1FRLR?寄存器尋址001000xx寄存器R?中的數(shù)不帶進(jìn)位向左移一位,并不影響標(biāo)20-23志位。RRR?寄存器尋址001001xx寄存器R?中的數(shù)不帶進(jìn)位向右移一位,并不影響標(biāo)24-27志位。OVER001010xx程序結(jié)束。28-2BOUT累加器尋址001011xx將累加器A的數(shù)送入寄存器OUT,輸出2C-2F5、微指令集PCPC助記符狀態(tài)微地微程序數(shù)據(jù)輸出數(shù)據(jù)打入地址輸出運(yùn)算器移位控制址_FATCH_T000CBFFFF指令寄存PC輸出A輸出寫入+1器IR01FFFFFF02FFFFFF03FFFFFFA輸出+1A輸出+1A輸出+1JC*T104C6FFFF寄存器值寄存器PCPC輸出A輸出+1寫入EMT005CBFFFF指令寄存PC輸出A輸出寫入+1器IR06FFFFFF07FFFFFFA輸出+1A輸出+1JC*T108C6FFFF寄存器值寄存器PCPC輸出A輸出+1寫入EMT009CBFFFF指令寄存PC輸出A輸出寫入+1器IR0AFFFFFF0BFFFFFFA輸出+106A輸出+107MOVT10CC7FBFF存貯器值寄存器R?PC輸出A輸出+1+1R?,#*EMT00DCBFFFF指令寄存PC輸出A輸出寫入+1器IR0EFFFFFF0FFFFFFFA輸出+1A輸出+1A輸出+1MOVA,R?T110FFF7F7寄存器值寄存器AR?T011CBFFFF指令寄存PC輸出A輸出寫入+1器IR12FFFFFFA輸出613FFFFFFADDR?,AT214FFF7EF寄存器值寄存器WR?A輸出A輸出+1T115FFFA98ALU直通寄存器R?加運(yùn)算+1標(biāo)志位C,ZT016CBFFFF指令寄存PC輸出A輸出寫入+1器IR17FFFFFFA輸出+1TESTT218C7FFEF存貯器值寄存器WPC輸出A輸出+1+1R?,#*EMT119FFF7F7寄存器值寄存器AR?A輸出+1T01BCBFFFF指令寄存PC輸出A輸出寫入+1器IR1EFFFFFFA輸出+1JMP*T11CC6FFFF存貯器值寄存器PCPC輸出A輸出+1寫入EMT01DCBFFFF指令寄存PC輸出A輸出寫入+1器IR1EFFFFFF1FFFFFFFA輸出+1A輸出+1A輸出+1RLR?T220FFF7F7寄存器值寄存器AR?T121FFF9DFALU左移寄存器R?A輸出左移+1T022CBFFFF指令寄存PC輸出A輸出寫入+1器IR23FFFFFFRRR?T224FFF7F7寄存器值寄存器AR?A輸出+1A輸出+1T125FFF9BFALU右移寄存器R?A輸出右移+1T026CBFFFF指令寄存PC輸出A輸出寫入+1器IR27FFFFFFA輸出+1OVERT028CBFFFF指令寄存PC輸出A輸出寫入+1器IR29FFFFFF2AFFFFFF2BFFFFFFA輸出+1A輸出+1A輸出+1OUTAT12CFFDF9FALU直通用戶OUTA輸出+1T02DCBFFFF指令寄存PC輸出A輸出寫入+1器IR2EFFFFFF2FFFFFFFA輸出+1A輸出+17指令的微程序設(shè)計(jì)過程:1、每個(gè)程序開始要執(zhí)行的第一條微指令應(yīng)是取指操作,因?yàn)槌绦驈?fù)位后,PC和uPC的值都為0,所以微程序的0地址處就是程序執(zhí)行的第一條取指的微指令。取指操作要做的工作是從程序存儲(chǔ)器EM中讀出下條將要執(zhí)行的指令,并將指令的機(jī)器碼存入指令寄存器IR和微程序計(jì)數(shù)器uPC中,讀出下條操作的微指令。根據(jù)此功能,觀察窗口下方的各控制信號(hào),有“勾”表示信號(hào)為高,處于無(wú)效狀態(tài),去掉“勾”信號(hào)為低,為有效狀態(tài)。要從EM中讀數(shù),EMRD必需有效,去掉信號(hào)下面的“勾”使其有效;讀EM的地址要從PC輸出,所以PCOE要有效,允許PC輸出,去掉PCOE下面的“勾”,PCOE有效同時(shí)還會(huì)使PC加1,準(zhǔn)備讀EM的下一地址;IREN是將EM讀出的指令碼存入uPC和好了,取指操作的微指令的值為CBFFFFH。然后狀態(tài)"T0",微地址"00",微程序"CBFFFFH"..(其余為注釋可略),按照上表格式填入,其余類同.2、JZ*:由上條取指讀出的指令碼為04H,存入IR寄存器后,進(jìn)制),表示判零跳轉(zhuǎn)功能,指令碼存入uPC后,從uM讀出的微指令值為0C6FFFFH,表示以PC為地址從EM中讀出數(shù)據(jù)02H并送到DBUS,ELP為低成有效狀態(tài),與IR3、IR2組成零跳轉(zhuǎn)控制,與上條指令相比,盡管微指令相同,由于指令碼不同,這個(gè)為判零跳轉(zhuǎn)。此若零標(biāo)志位為1,即A=0時(shí),就會(huì)產(chǎn)生一個(gè)控制信號(hào),將總線DBUS上的值*打入PC,下條會(huì)從EM新的地址*中讀指令碼;此時(shí)若零標(biāo)志位為0,DBUS上的值被忽略,PC加1,下條取指操作按新PC取出指令碼執(zhí)行。3.、JC*:此條是進(jìn)位跳轉(zhuǎn)指令,本程序沒有用到,類同JC*。暫不解釋。4、MOVR?,#*:MOVA,#*:本指令為兩個(gè)狀態(tài)周期。在T1狀態(tài)時(shí),對(duì)應(yīng)到各個(gè)控制位就是EMRDPCO、EMEN及AEN為低,處于有效狀態(tài),其它控制位為無(wú)效狀態(tài)。由于上條微指令(取指操作)已將PC加1,此時(shí)PCOE是將加1后的PC輸出到ABUS做為程序存儲(chǔ)器EM的地址,EMRD就是從程序存儲(chǔ)EM中讀出數(shù)據(jù),本指令中讀出的數(shù)據(jù)應(yīng)為#*,EMEN將讀出的數(shù)據(jù)送到DBUS總線上,AEN是將DBUS總線上的值存入寄存器R?中。同時(shí)uPC加1為執(zhí)行下條微指令做準(zhǔn)備,PC加1為讀取下一條指令做準(zhǔn)備。每條指令的最后一條微指令一定是取指令操作,微指令的值為C7FBFFH本指令的T0狀態(tài)周期即為取指令,執(zhí)行上一條微指令時(shí)uPC已經(jīng)加1,按照此uPC為地址從微程序存儲(chǔ)器uM讀出的微指令的值為CBFFFFH,5、MOVA,R?:本指令有二個(gè)周期,T1周期RRD,WEN有效。微指令:FFF7F7,TO狀態(tài)IR,所以要去掉IREN的“勾”使其有效。這樣,取指操作的微指令就設(shè)計(jì)把助記符"_FATCH_",IR3、IR2的值為01(二時(shí)微指令取指時(shí),就周期即為取指令,執(zhí)行上一條微指令時(shí)uPC已經(jīng)加1,按照此uPC為地址從微程序存儲(chǔ)器uM讀出的微指令的值為CBFFFFH。6、ADDR?,A:本指令為由IREN存入指令寄存器IR,最低兩位為(二進(jìn)制),選擇寄存器R?,指令碼入uPC時(shí),有效位為RRD及WEN,就是將A內(nèi)容送到工作寄存器W,微指令值為FFF7EFH。uPC加1取出下條微指令在T1狀態(tài),讀出的微指令值為FFFA98H,有效位為FEN和RRD,F(xiàn)EN完成的操作是將標(biāo)志位存入標(biāo)志寄存器F(ALU內(nèi)部),X2X1X0選擇“ALU直通”到數(shù)據(jù)總線DBU,S2S1S0選擇的運(yùn)算操作為“加法運(yùn)算”,AEN將DBUS上的數(shù)據(jù)存入累加器A。在T0三個(gè)狀態(tài)周期。在T2狀態(tài),由上次取指操作取出的指令碼,由于IREN打狀態(tài),取出下條將要執(zhí)行的指令。7、TESTR?,#*:PC做為地址,從EM中讀出數(shù)據(jù)送到DBUS,F(xiàn)FF7F7H,RRD,AEN有效,表示把R里面的數(shù)據(jù)送到A寄存器。T1狀態(tài),微指令為FFFE93,表示A和W做“邏輯與”運(yùn)算,結(jié)果直通到DBUS,,保存標(biāo)志位。本指令為四個(gè)狀態(tài)周期。在T3狀態(tài),微指令值為C7FFEFH,表示以再將DBUS數(shù)據(jù)存W中。在T2狀態(tài),微指令為8

8、JMP*:為無(wú)條件跳轉(zhuǎn),所要執(zhí)行的操作為從PC中,實(shí)現(xiàn)程序跳轉(zhuǎn)。從EM中讀數(shù),EMRD要有效,讀EM的地址由PCPC中,由兩位決定,ELP有0CH,存入IR后,IR3為1。EM中讀出目標(biāo)地址,送到數(shù)據(jù)總線DBUS上,并存入輸出,PCOE有效,數(shù)據(jù)送到DBUS,EMEN要有效,將數(shù)據(jù)打入效,指令寄存器IR的第三位IR3應(yīng)為1,由于本指令機(jī)器碼為將EMRD、PCO、EMEN、ELP設(shè)成低,使其成為有效狀態(tài),結(jié)合指令的第三位,實(shí)現(xiàn)程序跳轉(zhuǎn),這條微指令的值為C6FFFFH。下條微指令應(yīng)為取指操作,將EMRD、PCOE、IREN設(shè)成有效,微指令的值為CBFFFFH。9、RLR?:本指令為三個(gè)狀態(tài)周期。在T2狀態(tài),讀出微指令值為0FFF7E7H,有效位是RRD,AEN,表示把R?中的數(shù)據(jù)送入累加器A中。T1狀態(tài),有效位為CN、FEN及AEN,表示不帶進(jìn)位移位,運(yùn)算器控制S2S1S0=111(二進(jìn)制)表示運(yùn)算不運(yùn)算,輸出結(jié)果就為A的值,X2X1X0=110(二進(jìn)制)表示,運(yùn)算器“左移”輸出到總線,F(xiàn)EN將標(biāo)志位保存,AEN將DBUS內(nèi)容存入A中,uPC加1取出下條微令,微指令:FFF9DFH。在T0狀態(tài),取出下條將要執(zhí)行的指令。10、RRR?:本指令為三個(gè)狀態(tài)周期。在T2狀態(tài),讀出微指令值為0FFF7E7H,有效位是RRD,AEN,表示把R?中的數(shù)據(jù)送入累加器A中。T1狀態(tài),有效位為CN、FEN及AEN,表示不帶進(jìn)位移位,運(yùn)算器控制S2S1S0=111(二進(jìn)制)表示運(yùn)算不運(yùn)算,輸出結(jié)果就為A的值,X2X1X0=101(二進(jìn)制)表示,運(yùn)算器“右移”輸出到總線,F(xiàn)EN將標(biāo)志位保存,AEN將DBUS內(nèi)容存入A中,uPC加1取出下條微令,微指令:FFF9BFH。在T0狀態(tài),取出下條將要執(zhí)行的指令。11、OUT:將累加器的內(nèi)容輸出到輸出端口。其操作為累加器A不做運(yùn)算,直通輸出,ALU結(jié)果不移位輸出到DBUS,DBUS上的數(shù)據(jù)存入輸出端口OUT。累加器A直通輸出結(jié)果,S2S1S0值要為111(二進(jìn)制),ALU結(jié)果不移位輸出到數(shù)據(jù)總線DBUS,X2X1X0的值要等于100(二進(jìn)制),DBUS數(shù)據(jù)要打入OUT,那么OUTEN應(yīng)有效。與此同時(shí),ABUS和IBUS空閑,取指操作可以并行執(zhí)行,也就是以PC為地址,從EM中讀出下條將要執(zhí)行指令的機(jī)器碼,并打入IR和uPC中,據(jù)根取指操作的說明,EMRD、PCOE、IREN要有效,綜上所述,將EMRD、PCOE、IREN、OUTEN、X2X1X0、S2S1S0置成有效狀態(tài)和相應(yīng)的工作方式,微指令的值為CBDF9FH。6、匯編語(yǔ)言程序MOVR0,#00H;初始化部分積MOVR1,#09H;初始化被乘數(shù);初始化乘數(shù);測(cè)試乘數(shù)是否為0;是0跳轉(zhuǎn),程序結(jié)ANDR2,#01H;測(cè)試乘數(shù)末位時(shí)候?yàn)?;是0跳轉(zhuǎn),不用加被乘數(shù)MOVR2,#06HS:ANDR2,#0FHJZE束JZS09

MOVA,R1;被乘數(shù)送累加器ADDR0,A;被乘數(shù)加到部分積S0:RLR1;被乘數(shù)左移一位RRR2;乘數(shù)右移一位JMPS;跳轉(zhuǎn)到下一次測(cè)試;將積送入累加器A;將累加器A的數(shù)送入寄存器OUT,輸出E:MOVA,ROOUTAOVER;程序結(jié)束四.實(shí)驗(yàn)結(jié)果運(yùn)行情況(跟蹤結(jié)果)匯編指令程序機(jī)器指令說明地址碼微程序_FATCH_0000實(shí)驗(yàn)機(jī)占用,不可修改。復(fù)CBFFFF位后,所有寄存器清0,首先執(zhí)行_FATCH_指令取指。MOVR0,#00002400將立即數(shù)00H存放到寄存器C7FBFFR0中。CBFFFFMOVR1,#09022509將立即數(shù)09H存放到寄存器C7FBFFR1中。CBFFFFMOVR2,#06042606將立即數(shù)06H存放到寄存器C7FBFFR2中。CBFFFFANDR2,#0F06160F寄存器R2與立即數(shù)0FH,C7FFEF只改變標(biāo)志位,并不改變R2FFF7F7中的數(shù)值。FFFE93CBFFFFJZ14083414若零標(biāo)志位置1,跳轉(zhuǎn)到14HC6FFFF地址。CBFFFFANDR2,#010A1601寄存器R2與立即數(shù)01H,只C7FFEF改變標(biāo)志位,并不改變R2中FFF7F7的數(shù)值。FFFE93CBFFFFJZ100C3410若零標(biāo)志位置1,跳轉(zhuǎn)到14HC6FFFF地址。CBFFFF10RLR11029寄存器R1中的數(shù)不帶進(jìn)位FFF7F7向左移一位,并不影響標(biāo)志FFF9DF位。CBFFFFRRR2112E寄存器R2中的數(shù)不帶進(jìn)位FFF7F7向右移一位,并不影響標(biāo)志FFF9BF位。CBFFFFJMP06123806跳轉(zhuǎn)到06H地址。C6FFFFCBFFFFANDR2,#0F06160F寄存器R2與立即數(shù)0FH,C7FFEF只改變標(biāo)志位,并不改變R2FFF7F7中的數(shù)值。FFFE93CBFFFFJZ14083414若零標(biāo)志位置1,跳轉(zhuǎn)到14HC6FFFF地址。CBFFFFANDR2,#010A1601寄存器R2與立即數(shù)01H,只C7FFEF改變標(biāo)志位,并不改變R2中FFF7F7的數(shù)值。FFFE93CBFFFFJZ100C3410若零標(biāo)志位置1,跳轉(zhuǎn)到14HC6FFFF地址。CBFFFFFFF7F7CBFFFFMOVA,R10E21將寄存器R1中的數(shù)放入累加器A中。ADDR0,A0F04將累加器A中的數(shù)加入到寄FFF7EF存器R0中,并影響標(biāo)志位。FFFA98CBFFFFRLR11029寄存器R1中的數(shù)不帶進(jìn)位FFF7F7向左移一位,并不影響標(biāo)志FFF9DF位。CBFFFFRRR2112E寄存器R2中的數(shù)不帶進(jìn)位FFF7F7向右移一位,并不影響標(biāo)志FFF9BF位。CBFFFFJMP06123806跳轉(zhuǎn)到06H地址。C6FFFFCBFFFFANDR2,#0F06160F寄存器R2與立即數(shù)0FH,C7FFEF只改變標(biāo)志位,并不改變R2FFF7F7中的數(shù)值。FFFE93CBFFFFJZ14083414若零標(biāo)志位置1,跳轉(zhuǎn)到14HC6FFFF地址。CBFFFFANDR2,#010A1601寄存器R2與立即數(shù)01H,只C7FFEF改變標(biāo)志位,并不改變R2中FFF7F7的數(shù)值。FFFE93CBFFFF11JZ100C3410若零標(biāo)志位置1,跳轉(zhuǎn)到14HC6FFFF地址。CBFFFFMOVA,R10E21將寄存器R1中的數(shù)放入累FFF7F7加器A中。CBFFFFADDR0,A0F04將累加器A中的數(shù)加入到寄FFF7EF存器R0中,并影響標(biāo)志位。FFFA98CBFFFFRLR11029寄存器R1中的數(shù)不帶進(jìn)位FFF7F7向左移一位,并不影響標(biāo)志FFF9DF位。CBFFFFRRR2112E寄存器R2中的數(shù)不帶進(jìn)位FFF7F7向右移一位,并不影響標(biāo)志FFF9BF位。CBFFFFJMP06123806跳轉(zhuǎn)到06H地址。C6FFFFCBFFFFANDR2,#0F06160F寄存器R2與立即數(shù)0FH,C7FFEF只改變標(biāo)志位,并不改變R2FFF7F7中的數(shù)值。FFFE93CBFFFFJZ14083414若零標(biāo)志位置1,跳轉(zhuǎn)到14HC6FFFF地址。CBFFFFMOVA,R01421將累加器A中的數(shù)加入到寄FFF7F7存器R0中,并影響標(biāo)志位。CBFFFFOUTA1510將累加器A中的數(shù)加入到寄FFDF9F存器OUT中,輸出。CBFFFFOVER4040程序結(jié)束CBFFFF五.實(shí)驗(yàn)總結(jié)設(shè)計(jì)結(jié)果說明在課程設(shè)計(jì)的過程中,我重新調(diào)整了指令/微指令系統(tǒng)的設(shè)計(jì),但是,因?yàn)槲以谠O(shè)計(jì)的過程中,忽視了該模型機(jī)的一些局限性,以及對(duì)一些指令/微指令的理解,導(dǎo)致產(chǎn)生了一些問題。但是,這些問題不是很大,我很快就能找出這些錯(cuò)誤,并改正之。我原先設(shè)計(jì)了一條“ADDR0,R1”這樣的指令。在匯編程序設(shè)計(jì)完后,仔細(xì)檢查了幾遍也沒有發(fā)現(xiàn)這個(gè)問題。但是當(dāng)我在寫指令對(duì)應(yīng)的微指令時(shí),發(fā)現(xiàn)這條指令在這個(gè)模型機(jī)里根本不可能實(shí)現(xiàn)。因?yàn)橹噶顚?duì)應(yīng)機(jī)器碼的最后兩位來(lái)指定使用寄存器組的相應(yīng)寄存器,所以,在指令中不可能同時(shí)出現(xiàn)兩個(gè)操作數(shù)都是寄存器R?。最終,我將寄存器R1的值送到12累加器A中,然后設(shè)計(jì)“ADDR0,A”指令解決了這個(gè)問題。在課程設(shè)計(jì)的開始我更多的只是考慮了程序功能的實(shí)現(xiàn),沒有考慮程序的時(shí)間空間效率,在后來(lái)的優(yōu)化過程中我發(fā)現(xiàn)了程序的缺點(diǎn)和不足。在設(shè)計(jì)開始時(shí)乘法的算法設(shè)計(jì)為一個(gè)初始值為4的計(jì)數(shù)器,每次加法操作后減1直至計(jì)數(shù)器為零結(jié)束,后來(lái)考慮到當(dāng)乘數(shù)的操作位為零時(shí),沒有必要進(jìn)行加零操作,于是設(shè)計(jì)了跳轉(zhuǎn)指令及程序,由此想到乘數(shù)開始可能是零,所以又添加了在開始判斷乘數(shù)是否為零的操作。關(guān)于這個(gè)操作,我設(shè)計(jì)了一個(gè)“TESTR?,#II”指令,用來(lái)測(cè)試乘數(shù)。我設(shè)計(jì)的程序不只可以實(shí)現(xiàn)4位乘以4位的乘法,只要是結(jié)果為八位的乘法都可以計(jì)算。但是本程序都可以計(jì)算,但是本程序還是有一部分缺陷本程序沒有判斷被乘數(shù)時(shí)候?yàn)?,如果被乘數(shù)還是0的話也要計(jì)算,做了很多無(wú)謂的運(yùn)算。而且本程序是根據(jù)乘數(shù)的位數(shù)執(zhí)行循環(huán),要是可以做個(gè)函數(shù)找出被乘數(shù)和乘數(shù)位數(shù)減少的做乘數(shù),這樣就會(huì)縮短程序運(yùn)行的時(shí)間。提高程序運(yùn)行的效率??偨Y(jié)體會(huì)在此次的課程設(shè)計(jì)過程中,我參閱了一些書籍以及參考資料,通過自己的努力和老師的幫助,終于獨(dú)立地完成了這個(gè)設(shè)計(jì)任務(wù)。在設(shè)計(jì)的過程中,鞏固了所學(xué)的《計(jì)算機(jī)組成原理》中有關(guān)指令系統(tǒng)、總線系統(tǒng)等等方面的知識(shí),同時(shí),也增長(zhǎng)了新的知識(shí)。而且

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論