




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第六章CPU設(shè)計6.16.26.36.46.5CPU的設(shè)計規(guī)范 一個非常簡單CPU的設(shè)計與實現(xiàn) 相對簡單CPU的設(shè)計和實現(xiàn) 簡單CPU的缺點 實例:8085微處理器的內(nèi)部結(jié)構(gòu)CPU設(shè)計的兩種方法: 硬布線邏輯控制(hardwiredcontrol) 微序列控制器(microsequencer)(微序列控制或微程序控制)6.1CPU的設(shè)計規(guī)范1. 設(shè)計CPU的步驟 確定它的用途關(guān)鍵:使CPU的處理能力和它所執(zhí)行的任務(wù)匹配。 設(shè)計指令集結(jié)構(gòu) 設(shè)計狀態(tài)圖(CPU就是一個復(fù)雜的有限狀態(tài)機) 列出在每個狀態(tài)中執(zhí)行的微操作 從一個狀態(tài)轉(zhuǎn)移到另外一個狀態(tài)的條件 設(shè)計必要的數(shù)據(jù)通路和控制邏輯,實現(xiàn)這個有限狀態(tài)
2、機,最終實現(xiàn)這個CPU。2. CPU執(zhí)行如下的操作序列 取指令周期:從存儲器中取出一條指令,然后轉(zhuǎn)到譯碼周期。 譯碼周期:對該指令進行譯碼,即確定取到的是哪一種指令,然后轉(zhuǎn)移到這種指令對應(yīng)的執(zhí)行周期。 執(zhí)行周期:執(zhí)行該指令,然后轉(zhuǎn)移到取指令周期去取下一條指令。3. 一般CPU狀態(tài)圖6.2一個非常簡單CPU的設(shè)計與實現(xiàn)6.2.1非常簡單CPU的設(shè)計規(guī)范164字節(jié)的存儲空間,每個字節(jié)是8位。6位寬的地址:A5.0存儲器的8位值:D7.02. 一個程序員可以訪問的寄存器AC(8位累加器)3. 指令集(4條指令)指令指令碼操作ADD00AAAAAAACACMAAAAAAAND01AAAAAAACACM
3、AAAAAAJMP10AAAAAAGOTO AAAAAAINC11XXXXXXACAC14寄存器一個6位的地址寄存器AR:它通過A5.0向存儲器提供地址。一個6位的程序計數(shù)器PC:它包含下一條將被執(zhí) 行指令的地址。一個8位的數(shù)據(jù)寄存器DR:它通過D5.0從存儲器接收指令和數(shù)據(jù)。一個2位的指令寄存器IR:它用來存放從存儲器中取回的指令的操作碼部分。一個CPU僅僅就是一個復(fù)雜的有限狀態(tài)機。設(shè)計CPU的途徑: 設(shè)計CPU的狀態(tài)圖。 設(shè)計必要的數(shù)據(jù)通路和控制邏輯,以便實現(xiàn)這個 有限狀態(tài)機,最終實現(xiàn)這個CPU。6.2.2從存儲器中取指令一、從存儲器中取出指令的操作序列1. 將地址放在地址引腳A5.0上,
4、把地址送給存儲器。2. 在給存儲器足夠的時間處理內(nèi)部譯碼并將需要的指令取出來之后,向存儲器發(fā)一個信號,使存 儲器將此指令輸出到它的輸出引腳,這些引腳與CPU的D7.0相連接。CPU從這些引腳讀入數(shù)據(jù)。二、取指令周期的狀態(tài)FETCH1:FETCH2: FETCH3:ARPCDRM,PCPC1 IRDR7.6,ARDR5.0 實現(xiàn)PC加1的兩種方案 在取指令周期(易與實現(xiàn)) 在執(zhí)行周期三、取指令周期的狀態(tài)圖6.2.3指令譯碼 當CPU把一條指令從存儲器中取出來之后,它必須判斷所取的是哪種指令,從而可以調(diào)用正確的 執(zhí)行周期。 在狀態(tài)圖中,此過程表示為一系列的從取指令周期結(jié)束到各個執(zhí)行周期之間的分支。
5、 對于本CPU,有四條指令,因此有四個不同的執(zhí)行周期。取指令和譯碼周期的狀態(tài)圖6.2.46.2.4.1指令執(zhí)行ADD指令CPU必須完成兩件事情: 從存儲器中取出一個操作數(shù)。 將這個操作數(shù)和累加器中的值相加,并把結(jié)果存 回到累加器中。ADD1:DRMADD2:ACACDR6.2.4.2AND指令A(yù)ND1:DRMAND2:ACACDR6.2.4.3JMP指令JMP1:PCDR5.0另外一種選擇 ;PCAR6.2.4.4INC指令I(lǐng)NC1:ACAC+1 本CPU的狀態(tài)圖包括了取指、譯碼和執(zhí)行周期。6.2.5建立所需的數(shù)據(jù)通路考察存在哪些數(shù)據(jù)傳送從而設(shè)計CPU的內(nèi)部數(shù)據(jù)通路。一、與CPU的每個狀態(tài)相關(guān)
6、聯(lián)的操作FETCH1:ARPCFETCH2: FETCH3: ADD1: ADD2: AND1: AND2: JMP1:INC1:DRM,PCPC1IRDR7.6,ARDR5.0 DRMACACDR DRM ACACDR PCDR5.0ACAC1二、設(shè)計數(shù)據(jù)通路的兩種不同方案1. 在所有需要傳送數(shù)據(jù)的部件之間創(chuàng)建一條直接通路。 使用多路選擇器或者緩沖器為那些有多個數(shù)據(jù)源的寄存器從多個可能的輸入中選擇一個。隨著CPU復(fù)雜度的增加,這種方案將變得不現(xiàn)實。2. 在CPU的內(nèi)部創(chuàng)建一條總線。在各個部件之間使用總 線傳遞數(shù)據(jù)。三、設(shè)計數(shù)據(jù)通路第一步:把每個部件都連接到系統(tǒng)總線上第二步:決定每個部件應(yīng)該完
7、成的功能 將操作重新分組分組的依據(jù):他們所修改的寄存器。AR:PC:DR:IR:AC:ARPC;ARDR5.0PCPC1;PCDR5.0 DRMIRDR7.6ACACDR;ACACDR;ACAC1 對每一個操作進行分析從而決定每個部件應(yīng)該完成的功能1. AR,DR以及IR總是從其它一些部件中裝入數(shù)據(jù)2. PC和AC能夠從其它一些部件中裝入數(shù)據(jù),但它們 還要能夠自增他們的當前值。 創(chuàng)建一個單獨的硬件用來使這兩個寄存器的當前值加1,并且使結(jié)果能夠重新裝入寄存器; 把每個寄存器設(shè)計為一個計數(shù)器而且能夠并行的裝載。第三步:修改設(shè)計注意如下幾點:1. AR僅僅向存儲器提供數(shù)據(jù),除此之外不跟任何部件傳送數(shù)
8、據(jù)。因此,沒有必要將它的輸出連接到內(nèi)部總線上。2. IR不通過內(nèi)部總線向任何其他部件提供數(shù)據(jù),所以IR 的輸出到內(nèi)部總線的連接可以刪除。3. AC不向其他任何單元提供數(shù)據(jù);因此與內(nèi)部總線的 連接也可以刪除。4. 總線是8位寬,但是并非所有被傳送的數(shù)據(jù)都是8位寬;有一些是6位寬,有一個是2位寬。必須確定哪些寄存器從總線的哪些位上接收和發(fā)送數(shù)據(jù)。5. AC必須能夠裝載AC和DR的和,以及AC和DR的邏輯與的結(jié)果。CPU必須包含一個能夠產(chǎn)生這些結(jié)果的ALU。第四步:修改后的CPU內(nèi)部組織結(jié)構(gòu)(圖中的控制信號將會由控制單元來產(chǎn)生)第五步:必須保證在同一個狀態(tài)將要發(fā)生的傳送能夠事實上同時發(fā)生。FETCH
9、2:DRM,PCPC1FETCH3:IRDR7.6,ARDR5.0ARPC ARDR5.0PCPC 1PCDR5.0 DRM IRDR7.6ACAC DR ACACDR ACAC16.2.6非常簡單ALU的設(shè)計1. ALU完成兩個功能 將兩個輸入相加 將兩個輸入相與2. 設(shè)計方法 創(chuàng)建兩個單獨的硬件來實現(xiàn)每個功能, 加法:用標準的8位并行加法器邏輯與:用8個2位與門 使用一個多路選擇器從兩個結(jié)果中選擇一個輸出3. 電路圖ALU6.2.7用硬布線邏輯設(shè)計控制單元控制單元:產(chǎn)生控制信號,從而使所有的操作能以正確的順序執(zhí)行。設(shè)計控制單元有兩種主要的方法: 硬布線控制:使用時序邏輯和組合邏輯產(chǎn)生控制信
10、號。 微程序控制(或微序列控制):使用存儲器查表方式來輸出控制信號。本章重點:硬布線控制方法 簡單的控制單元包括三個部分 一個計數(shù)器:保存當前狀態(tài); 一個譯碼器:接受當前狀態(tài)并為每個狀態(tài)生成單獨的信號; 一些組合邏輯:接受單獨的狀態(tài)信號為每一部件生成控制信號,以及計數(shù)器的控制信號。 一般硬布線控制單元 對于本CPU,總共有9個狀態(tài)。因此,需要一個4位的計數(shù)器和一個4-16位的譯碼器。譯碼器的輸出位 中有7個用不到。一、將狀態(tài)分配到譯碼器的各個輸出1.將FETCH1規(guī)定為計數(shù)器的0值,并使用計數(shù)器的CLR輸入來達到這個狀態(tài)。將順序的狀態(tài)指派為計數(shù)器的連續(xù)值,并且使用 計數(shù)器的INC輸入來遍歷所有
11、的這些狀態(tài)。FETCH2:計數(shù)器值1 FETCH3:計數(shù)器值2同樣:將ADD1和ADD2指派為連續(xù)的計數(shù)值對AND1和AND2也是一樣2.3.根據(jù)指令操作碼和執(zhí)行周期的最大狀態(tài)數(shù)量來指派執(zhí)行周期的第一個狀態(tài)。用操作碼產(chǎn)生計數(shù)器的數(shù) 據(jù)輸入,并用計數(shù)器的LD輸入使之達到合適的執(zhí)行周期。實質(zhì):實現(xiàn)從操作碼到執(zhí)行周期的一種映射。 為了裝入正確執(zhí)行周期的地址,控制單元必須完 成兩件事情。 必須能夠?qū)⒄_的執(zhí)行周期的第一個狀態(tài)的地址放到計數(shù)器的輸入上。 必須發(fā)出計數(shù)器的LD信號。 如何構(gòu)造映射函數(shù)?計數(shù)器的輸入是IR值的一個函數(shù)。目標:使這個函數(shù)越簡單越好。 一個可能的映射:10IR1.0 如果IR=0
12、0,那么計數(shù)器的輸入就是1000; 當IR=01,則輸入為1001, 以此類推。非常簡單CPU的指令,第一狀態(tài),以及操作碼指令第一狀態(tài)IRADDADD100ANDAND101JMPJMP110INCINC111文中給出的映射函數(shù)的計數(shù)值IR1.0計數(shù)值狀態(tài)001000(8)ADD1011001(9)AND1101010(10)JMP1111011(11)INC1 存在一些問題由于狀態(tài)ADD1的計數(shù)值是8,而AND1的計數(shù)值是9,那我們應(yīng)該給ADD2安排一個什么值?如何從ADD1去訪問ADD2呢?解決方法:使執(zhí)行周期的第一個狀態(tài)的計數(shù)值之間的間 隔至少為2。通過映射1IR1.00可以達到這個目的
13、。 使得ADD1,AND1,JMP1,INC1的計數(shù)值分別是8,10,12,14 將ADD2指派為計數(shù)值9 AND2的計數(shù)值指派為11二、為計數(shù)器產(chǎn)生控制信號對于計數(shù)器,我們必須產(chǎn)生INC,CLR和LD信號。 當控制單元遍歷順序狀態(tài),從FETCH1,F(xiàn)ETCH2,ADD1到AND1時,INC信號有效。 CLR則用來從每一個執(zhí)行周期的末尾返回到取指令周期,這可能發(fā)生在ADD2,AND2,JMP1和INC1 狀態(tài)。 LD信號在每個取指令周期的末尾FETCH3狀態(tài)中 發(fā)出。三、控制單元部分電路圖四、組合形成控制AR,PC,DR,IR,M,ALU以及緩沖器的控制信號。 首先考慮AR寄存器,它是在狀態(tài)F
14、ETCH1(ARPC)和FETCH3(ARDR5.0) 期間裝載的。通過將這兩個狀態(tài)信號進行邏輯OR操作,CPU 就為AR產(chǎn)生了LD信號。為PC,DR,AC以及IR創(chuàng)建如下的控制信號:PCLOAD = JMP1 PCINC = FETCH2FETCH1:FETCH2:ARPCDRM, PCPC1 IRDR7.6,A RDR5.0FETCH3:ADD1: ADD2: AND1: AND2: JMP1:INC1:DRM ACACDR DRM ACACDR PCDR5.0ACAC1DRLOAD = FETCH2 ADD1 AND1ACLOAD = ADD2 AND2 ACINC = INC1IRLO
15、AD = FETCH3 ALU的控制輸入ALUSEL 當ALUSEL=0時,ALU輸出的是兩個輸入的算術(shù)和; 當ALUSEL=1時,那么輸出就是輸入的邏輯與。把ALUSEL設(shè)置為AND2,就能保證當CPU執(zhí)行ADD或AND指令時,有正確的結(jié)果從ALU流向AC。 產(chǎn)生緩沖器的有效信號例如: DR寄存器在FETCH3(IRDR7.6,ARDR5.0), ADD2(ACAC+DR), AND2(ACACDR)以及JMP1(PCDR5.0)的時候,DR的內(nèi)容必須放到總線上。將這些狀態(tài)值進行邏輯或,就能夠得到DRBUS信號。這個過程也可以用于產(chǎn)生其它緩沖器的控制信號:MEMBUS = FETCH2 AD
16、D1 AND1 PCBUS = FETCH1 產(chǎn)生一個READ信號該信號從CPU輸出,并要求存儲器輸出它讀到的數(shù)據(jù)。READ = FETCH2 ADD1 AND1五、控制單元中用來產(chǎn)生這些控制信號的部分電路圖6.2.8設(shè)計驗證對每條指令的取指令、譯碼以及執(zhí)行周期進行跟蹤。1. 考慮如下這段代碼,它每條指令僅僅包含了一次。0: ADD 41: AND 52: INC3: JMP 04: 27H5: 39H2. CPU遵循狀態(tài)圖并以合適的狀態(tài)順序取出、譯碼和執(zhí)行每條指令:ADD4:FETCH1FETCH2FETCH3ADD1ADD2AND5:FETCH1FETCH2FETCH3AND1AND2IN
17、C:FETCH1FETCH2FETCH3INC1JMP 0:FETCH1FETCH2FETCH3JMP13. 對這段程序的一次循環(huán)的跟蹤情況(所有寄存器的初始值都是0)指令狀態(tài)有效信號所執(zhí)行的操作下 一 個 狀態(tài)ADD 4FETC H1PCBUS,ARL OADAR0FETCH2FETC H2READ,MEM BUS, DRLOAD,PC INCDR04H,PC1FETCH3FETC H3DRBUS,ARL OAD, IRLOADIR00,AR04HADD1ADD1READ,MEM BUS DRLOADDR27HADD2ADD2DRBUS,ACL OADAC0+27HFETCH1AND 5FE
18、T CH1PCBUS,ARL OADAR1FETCH2FET CH2READ,MEM BUS, DRLOAD,PC INCDR45H,PC2FETCH3FET CH3DRBUS,ARL OAD IRLOADIR01,AR05HAND1AND1READ,MEM BUS DRLOADDR39HAND2AND 2DRBUS,ALU SEL, ACLOADAC27H39H=21HFETCH1INCFETC H1PCBUS,ARL OADAR2FETCH2FETCH2READ,MEMB US, DRLOAD,PCINCDRC0H,PC3FETCH3FETC H3DRBUS,ARL OAD, IRLOAD
19、IR11,AR00HINC1INC1ACINCAC21H+1=22HFETCH1JMP 0FETC H1PCBUS,ARL OADAR3FETCH2FETC H2READ,MEMB US, DRLOAD,PCINCDR80H,PC4FETCH3FETC H3DRBUS,ARL OAD, IRLOADIR10,AR00HJMP1JMP1DRBUS,PCL OADPC0FETCH16.3相對簡單CPU的設(shè)計和實現(xiàn)6.3.1相對簡單CPU的描述164K字節(jié)的存儲器,每個存儲單元8位寬。地址引腳A15.0數(shù)據(jù)引腳D7.0 (雙向)2. CPU的三個內(nèi)部寄存器 8位累加器AC:接受任何算術(shù)或者邏輯運算的
20、結(jié)果,并為使用兩個操作數(shù)的算術(shù)或者邏輯操作指令提供一個操作數(shù)。 寄存器R:一個8位通用寄存器。它為所有的雙操作數(shù)算術(shù)和邏輯運算指令提供第二個操作數(shù)。它也可以用來暫時存放累加器馬上要用到的數(shù)據(jù)。(減少存儲器訪問次數(shù)提高CPU的性能) 零標志位Z:每次執(zhí)行算術(shù)運算或者邏輯運算的時候, 它都將被置位。3指令集結(jié)構(gòu) Instruction Instruction Code Operation NOP 0000 0000 No operation LDAC 0000 0001 ACM STAC 0000 0010 MAC MVAC 0000 0011 RAC MOVR 0000 0100 ACR JUM
21、P 0000 0101 GOTO JMPZ 0000 0110 IF(Z1)THEN GOTO JPNZ 0000 0111 IF(Z0)THEN GOTO ADD 0000 1000 ACACR,If(ACR0)Then Z1 Else Z0 SUB 0000 1001 ACACR,If(ACR0)Then Z1 Else Z0 INAC 0000 1010 ACAC1,If(AC10)Then Z1 Else Z0 CLAC 0000 1011 AC0,Z1 AND 0000 1101 ACACR,If(ACR0)Then Z1 Else Z0 OR 0000 1101 ACACR,If(
22、ACR0)Then Z1 Else Z0 XOR 0000 1110 ACACR,If(ACR0)Then Z1 Else Z0 NOT 0000 1111 ACAC,If(AC0)Then Z1 Else Z0 4一些寄存器16位的地址寄存器AR:通過引腳A15.0向存儲器提供地址。16位的程序計數(shù)器PC:存放的是將要執(zhí)行的下一條指令的地址,或者指令需要的下一個操作數(shù)的地 址。8位的數(shù)據(jù)寄存器DR:通過D7.0從存儲器中接收 指令和數(shù)據(jù)并且向存儲器傳送數(shù)據(jù)。8位的指令寄存器IR:存放的是從存儲器中取出來 的操作碼。8位的臨時寄存器TR:在指令執(zhí)行過程中,臨時存儲數(shù)據(jù)。(程序員不能訪問)6.3
23、.2取指令和譯碼FETCH1:FETCH2: FETCH3:ARPCDRM,PCPC1 IRDR,ARPC取指令和譯碼周期的狀態(tài)圖:(注意:兩條指令,JMPZ和JPNZ,具有兩個不同的 執(zhí)行周期。 )6.3.3執(zhí)行指令6.3.3.1NOP指令NOP1:LDAC指令(無操作)6.3.3.2LDAC是一條多字指令。它包含三個字:操作碼地址的低半部分地址的高半部分功能:從存儲器中獲得地址,然后從存儲器中獲得數(shù)據(jù),并把數(shù)據(jù)裝載到累加器中。第一個狀態(tài):LDAC1:DRM,PCPC1,ARAR1(減少執(zhí)行LDAC指令所需的狀態(tài)數(shù))第二個狀態(tài):LDAC2: LDAC3: LDAC4:LDAC5:TRDR,D
24、RM,PCPC1ARDR,TR DRMACDR6.3.3.3STAC指令STAC指令執(zhí)行的是與LDAC完全相反的操作。STAC1: STAC2: STAC3: STAC4:STAC5:DRM,PCPC1,ARAR1TRDR,DRM,PCPC1 ARDR,TRDRACMDR6.3.3.4MVAC和MOVR指令MVAC1: MOVR1:JUMP指令JUMP1: UMP2:JUMP3:RACACR6.3.3.5DRM,ARAR+1TRDR,DRM PCDR,TR6.3.3.6JMPZ和JPNZ指令JMPZ指令的狀態(tài):當Z=1時:MPZY1:JMPZY2: JMPZY3:DRM,ARAR1TRDR,D
25、RM PCDR,TR當Z=0時:JMPZN1:JMPZN2:PCPC1PCPC1JPNZ指令的狀態(tài):當Z=0時: JPNZY1:JPNZY2: JPNZY3:DRM,ARAR1TRDR,DRM PCDR,TR當Z=1時: JPNZN1:JPNZN2:PCPC1PCPC16.3.3.7其余的指令其余的指令都是在一個狀態(tài)內(nèi)完成的。ADD1:SUB1:ACACR,IF(ACR0)THEN Z1 ELSE Z0ACACR,IF(ACR0)THEN Z1 ELSE Z0INAC1: ACAC1,IF(AC10)THEN Z1 ELSE Z0CLAC1: AC0,Z1AND1:OR1:ACACR,IF(A
26、CR0)THEN Z1 ELSE Z0ACACR,IF(ACR0)THEN Z1 ELSE Z0XOR1: ACACR,IF(ACR0)THEN Z1 ELSE Z0NOT1:ACAC,IF(AC0)THEN Z1 ELSE Z0整個CPU的狀態(tài)圖6.3.4創(chuàng)建數(shù)據(jù)通路1. 使用內(nèi)部總線將部件連接起來2. 根據(jù)目的地將數(shù)據(jù)傳送進行分類AR:PC:DR:IR:R:TR:ARPC;ARAR1;ARDR,TRPCPC1;PCDR,TR DRM,DRACIRDR RACTRDRAC:ACDR;ACR;ACACR ;ACACR; ACAC1;AC0; ACACR ; ACACR ; ACACR ; AC
27、ACZ1;Z0(二者是有條件的)Z:3選擇每個部件的功能AR和PC必須能夠執(zhí)行并行的裝載和遞增的操作。兩個寄存器都從內(nèi)部總線上接受數(shù)據(jù)。 DR,IR,R,TR必須能夠并行裝載數(shù)據(jù)。 CPU用一個ALU來完成所有這些功能。ALU能夠接受AC的數(shù)據(jù)作為一個輸入,接受內(nèi) 部總線上的數(shù)據(jù)作為另外一個輸入。AC總是從ALU得到它的輸入。CPU同時也根據(jù)ALU的輸出來決定結(jié)果是否0, 從而設(shè)置Z。4. 對設(shè)計進行改進 AR和IR不向其他的部件提供數(shù)據(jù)。可以刪除它們到 內(nèi)部總線的連接。 引腳D7.0是雙向的。實現(xiàn)雙向引腳的標準方法:使用一對緩沖器,每個方向一個。(一個用來從引腳輸入數(shù)據(jù),另外一個用來將數(shù)據(jù)輸
28、出到引腳。) 16位寬的總線并沒有被所有的寄存器充分的利用。必須確定寄存器的哪些位連接到總線的哪些位上。 寄存器Z沒有跟任何部件相連。連接寄存器Z將ALU的輸出進行NOR操作。NOR門的輸出作為Z的輸入。5. 引起下面的問題 在FETCH3,CPU必須同時完成IRDR和ARPC兩個操作。(FETCH3:IRDR,ARPC )建立一條從DR輸出端到IR輸入端的直接通路,使得IRDR不使用內(nèi)部總線。斷開IR從內(nèi)部總線輸入的連接,因為它不再從總線 上接收數(shù)據(jù)。 在LDAC2和其他一些狀態(tài)中,TRDR和DRM需要同時用到總線。(LDAC2:TRDR,DRM,PCPC1)TR只從DR接受數(shù)據(jù),所以CPU
29、可以包含一條從DR的輸出到TR的輸入的直接通路, TR的輸入可以從內(nèi)部總線上斷開。 在LDAC3和其他一些狀態(tài)中,DR和TR必須被同時送到總線上,DR在位15.8,TR在位7.0。(LDAC3:ARDR,TR)將DR的輸出同時連接到總線15.8和7.0上,并使用兩個具有不同選擇信號的緩沖器。6經(jīng)過改進之后的內(nèi)部組織圖6.3.5相對簡單ALU的設(shè)計1列出所有會修改AC內(nèi)容的傳送。LDAC5: MOVR1: ADD1: SUB1: INAC1:CLAC1:ACDR ACR ACACR ACACR ACAC1AC0AND1: ACACROR1:XOR1: NOT1:ACACRACACR ACAC2.
30、 設(shè)計兩個運算單元 算術(shù)運算單元 邏輯運算單元使用一個多路選擇器從正確的輸出中選擇數(shù)據(jù)送入AC。(1) 設(shè)計算術(shù)單元 把算術(shù)指令進行改寫以便看出它們操作數(shù)的來源 把每個操作改寫成為兩個值與進位的和每一條指令用一個帶進位的并行加法器實現(xiàn)。 減法通過補碼的加法實現(xiàn)。LDAC5: MOVR1: ADD1: SUB1: INAC1:CLAC1:ACBUS ACBUS ACACBUS ACACBUS ACAC1AC0AC0BUS0AC0BUS0 ACACBUS0 ACACBUS1ACAC01AC000并行加法器的第一個輸入;AC的值或0。(ALU使用一個多路選擇器從這兩個值中選擇 一個并將它傳送給并行加
31、法器的一個輸入。)加法器的第二個輸入:ALU使用一個多路選擇器來傳送BUS,BUS或者0。 進位輸入:ALU還可以使用一個多路選擇器來提供進位輸入,但是這樣開銷太大了。我們僅僅用一個控制輸入來產(chǎn)生進位值。(2) 設(shè)計邏輯單元總共有4個邏輯運算。使用一個8位4選一的多路選擇器。MUX 的 輸 入 是 : ACBUS,ACBUS,ACBUS以及AC。3設(shè)計整個ALU最后,一個多路選擇器用來在并行加法器和邏輯多路選擇器的輸出之間選擇一個輸出送AC。6.3.6用硬布線邏輯設(shè)計控制單元總共有37個狀態(tài)。1使用兩個寄存器并且將他們的輸出組合起來產(chǎn)生狀態(tài)值。指令中的操作碼 一個計數(shù)器:用來記錄取指令或者執(zhí)行
32、過程中的哪個狀態(tài)應(yīng)該是有效的。2設(shè)計操作碼的值使用IR的輸出作為譯碼器的輸入。指令代碼的形式: 0000 XXXX對低四位進行譯碼。將高四位NOR在一起來控制譯碼器有效。3相對簡單CPU的硬布線控制單元4. 產(chǎn)生相對簡單CPU的狀態(tài) 取指令周期取指令周期是唯一不使用指令譯碼器值的周期。FETCH1 FETCH2FETCH3 T0 T1 T2 執(zhí)行周期取決于操作碼和時序計數(shù)器的值??刂茊卧凑者m當?shù)闹噶畎颜_的時鐘值和指令多路選擇器的輸出進行邏輯與運算。例如,LDAC執(zhí)行周期的狀態(tài)是:LDAC1 ILDAC T3 LDAC2 ILDAC T4 LDAC3 ILDAC T5 LDAC4 ILDAC
33、 T6 LDAC5 ILDAC T7 狀態(tài)的完全列表狀態(tài)功能狀態(tài)功能FETCH1T0JMPZY1IJMPZZT3FETCH2T1JMPZY2IJMPZZT4FETCH3T2JMPZY3IJMPZZT5NOP1INOPT3JMPZN1IJMPZZT3LDAC1ILDACT3JMPZN2IJMPZZT4LDAC2ILDACT4JPNZY1IJPNZZT3LDAC3ILDACT5JPNZY2IJPNZZT4LDAC4ILDACT6JPNZY3IJPNZZT5LDAC5ILDACT7JPNZN1IJPNZZT3STAC1ISTACT3JPNZN2IJPNZZT4STAC2ISTACT4ADD1IADD
34、T3STAC3ISTACT5SUB1ISUBT3STAC4ISTACT6INAC1IINACT3STAC5ISTACT7CLAC1ICLACT3MVAC1IMVACT3AND1IANDT3MOVR1IMOVRT3OR1IORT3JUMP1IJMPT3XOR1IXORT3JUMP2IJMPT4NOT1INOTT3JUMP3IJMPT55. 產(chǎn)生時序計數(shù)器需要的CLR信號和INC信號 CLR信號:把每個執(zhí)行周期的最后一個狀態(tài)進行邏輯與來產(chǎn)生CLR信號。 INC信號:在其他所有時候有效。兩種設(shè)計方案: 通過對所有剩下的狀態(tài)進行邏輯或操作來產(chǎn)生INC信號。 將CLR輸入的補碼作為INC輸入。6. 緩沖
35、器和AR的值信號值PCBUSFETCH1FETCH3DRHBUSLDAC3STAC3JUMP3JMPZY3JPNZY3DRLBUSLDAC5STAC5TRBUSLDAC3STAC3JUMP3JMPZY3JPNZY3RBUSMOVR1ADD1SUB1AND1OR1XOR1ACBUSSTAC4MVAC1MEMBUSFETCH2LDAC1LDAC2LDAC4STAC1STAC2JUMP1 JUMP2JMPZY1JMPZY2JPNZY1JPNZY2BUSMEMSTAC5ARLOADFETCH1FETCH3LDAC3STAC3ARINCLDAC1STAC1JUMP1JMPZY1JPNZY17產(chǎn)生ALU的控制信號例如:ALUS1ADD1SUB1INAC1以及ALUS4SUB1INAC16.
溫馨提示
- 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 挖掘機平整地面施工方案
- 錨固樁施工方案
- 惠州市潤根電器有限公司 AC 電源線及插頭的生產(chǎn)建設(shè)項目環(huán)評報告表
- 初中半期考答案數(shù)學(xué)試卷
- 仿玉石樓梯扶手施工方案
- 小學(xué)校園內(nèi)管網(wǎng)施工方案
- 房建地下連續(xù)梁施工方案
- 別墅的專項施工方案
- 農(nóng)田排水降水施工方案
- 黃桃高產(chǎn)栽培技術(shù)的高效應(yīng)用及科學(xué)推廣措施分析
- 人教版2025三下英語單詞表
- 職業(yè)病衛(wèi)生監(jiān)督培訓(xùn)課件
- 2024年張家界市市直事業(yè)單位選調(diào)工作人員考試真題
- 2025年四川省對口招生(旅游類)考試復(fù)習(xí)題(附答案)
- 私募股權(quán)投資基金基礎(chǔ)知識-《私募股權(quán)投資基金基礎(chǔ)知識》高分通關(guān)卷5
- 校園春季傳染病預(yù)防
- 婦產(chǎn)科學(xué)(甲)知到智慧樹章節(jié)測試課后答案2024年秋浙江大學(xué)
- 醫(yī)院危險化學(xué)品安全管理
- 2024年勞動合同(30篇)
- 燃氣公司安全生產(chǎn)實施方案
- 全國職業(yè)院校技能大賽高職組(生產(chǎn)事故應(yīng)急救援賽項)選拔賽考試題庫500題(含答案)
評論
0/150
提交評論