資源描述:
《一個(gè)非常簡單的cpu的設(shè)計(jì)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、一個(gè)非常簡單的CPU的設(shè)計(jì)1、組合邏輯控制器2、微程序控制器1.cpu定義我們按照應(yīng)用的需求來定義計(jì)算機(jī),本文介紹一個(gè)非常簡單的CPU的設(shè)計(jì),它僅僅用來教學(xué)使用的。我們規(guī)定它可以存取的存儲(chǔ)器為64byte,其中1byte=8bits。所以這個(gè)CPU就有6位的地址線A[5:0],和8位的數(shù)據(jù)線D[7:0]。我們僅定義一個(gè)通用寄存器AC(8bits寄存器),它僅僅執(zhí)行4條指令如下:InstructionInstructionCodeOperationADD00AAAAAAAC<—AC+M[AAAAAA]AND01AAAAAAAC<—AC^M[
2、AAAAAA]JMP10AAAAAAGOTOAAAAAAINC11XXXXXXAC<—AC+1除了寄存器AC外,我們還需要以下幾個(gè)寄存器:地址寄存器A[5:0],保存6位地址。程序計(jì)數(shù)器PC[5:0],保存下一條指令的地址。數(shù)據(jù)寄存器D[7:0],接受指令和存儲(chǔ)器來的數(shù)據(jù)。指令寄存器IR[1:0],存儲(chǔ)指令操作碼。2.取指設(shè)計(jì)在處理器執(zhí)行指令之前,必須從存儲(chǔ)器取出指令。其中取指執(zhí)行以下操作:通過地址端口A[5:0]從地址到存儲(chǔ)器等待存儲(chǔ)器準(zhǔn)備好數(shù)據(jù)后,讀入數(shù)據(jù)。由于地址端口數(shù)據(jù)A[5:0]是從地址寄存器中讀出的,所以取指第一個(gè)執(zhí)行的狀態(tài)是F
3、etch1:AR<—PC接下來cpu發(fā)出read信號(hào),并把數(shù)據(jù)從存儲(chǔ)器M中讀入數(shù)據(jù)寄存器DR中。同時(shí)pc加一。Fetch2:DR<—M,PC<—PC+1接下來把DR[7:6]送IR,把DR[5:0]送ARFetch3:IR<—DR[7:6],AR<—DR[5:0]3.指令譯碼Cpu在取指后進(jìn)行譯碼后才知道執(zhí)行什么指令,對(duì)于本文中的CPU來說只有4條指令也就是只有4個(gè)執(zhí)行例程,狀態(tài)圖如下:4.指令執(zhí)行對(duì)譯碼中調(diào)用的4個(gè)例程我們分別討論:4.1ADD指令A(yù)DD指令需要CPU做以下兩件事情:從存儲(chǔ)器取一個(gè)操作數(shù)把這個(gè)操作數(shù)加到AC上,并把結(jié)果存到
4、AC,所以需要以下操作:ADD1:DR<—MADD2:AC<—AC+DR4.2AND指令A(yù)ND指令執(zhí)行過程和ADD相似,需要以下操作:AND1:DR<—MAND2:AC<—AC^DR4.3JMP指令JMP指令把CPU要跳轉(zhuǎn)的指令地址送PC,執(zhí)行以下操作:JMP1:PC<—DR[5:0]4.4INC指令I(lǐng)NC指令執(zhí)行AC+1操作:INC1:AC<—AC+15.建立數(shù)據(jù)路徑這一步我們來實(shí)現(xiàn)狀態(tài)圖和相應(yīng)的寄存器傳輸。首先看下面的狀態(tài)及對(duì)應(yīng)的寄存器傳輸:Fetch1:AR<—PCFetch2:DR<—M,PC<—PC+1Fetch3:IR<—DR[
5、7:6],AR<—DR[5:0]ADD1:DR<—MADD2:AC<—AC+DRAND1:DR<—MAND2:AC<—AC^DRJMP1:PC<—DR[5:0]INC1:AC<—AC+1為了設(shè)計(jì)數(shù)據(jù)路徑,我們可以采用兩種辦法:創(chuàng)造直接的兩個(gè)要傳輸組件之間的直接路徑在CPU內(nèi)部創(chuàng)造總線來傳輸不同組件之間的數(shù)據(jù)首先我們回顧一下可能發(fā)生的數(shù)據(jù)傳輸,以便確定各個(gè)組件的功能。特別的我們要注意把數(shù)據(jù)載入組件的各個(gè)操作。首先我們按照他們改變了那個(gè)寄存器的數(shù)據(jù)來重組這些操作。得到如下的結(jié)果:AR:AR<—PC;AR<—DR[5:0]PC:PC<—PC+1;
6、PC<—DR[5:0]DR:DR<—MIR:IR<—DR[7:6]AC:AC<—AC+DR;AC<—AC^DR;AC<—AC+1現(xiàn)在我們來看每個(gè)操作來決定每個(gè)組件執(zhí)行什么樣的功能,AR,DR,IR三個(gè)組件經(jīng)常從其他的組件載入數(shù)據(jù)(從總線),所以只需要執(zhí)行一個(gè)并行輸入的操作。PC和AC能夠載入數(shù)據(jù)同時(shí)也能夠自動(dòng)加一操作。下一步我們把這些組件連接到總線上來,如圖所示:如上圖所示,各個(gè)組件與總線之間通過三態(tài)連接,防止出現(xiàn)總線競(jìng)爭。AR寄存器送出存儲(chǔ)器的地址,DR寄存器用于暫存存數(shù)起來的數(shù)據(jù)。到現(xiàn)在為止我們還沒有討論有關(guān)的控制信號(hào),我們現(xiàn)在只是保證
7、了所有的數(shù)據(jù)傳輸能夠產(chǎn)生,我們將在后面章節(jié)來使這些數(shù)據(jù)傳輸正確的產(chǎn)生---控制邏輯?,F(xiàn)在我們來看以下者寫數(shù)據(jù)傳輸中有沒有不必要的傳輸:AR僅僅提供數(shù)據(jù)給存儲(chǔ)器,所以他不需要連接到總線上。IR不通過總線提供數(shù)據(jù)給任何組件,所以他可以直接輸出到控制單元。AC不提供數(shù)據(jù)到任何的組件,可以不連接到總線上??偩€是8bit寬度的,但是有些傳輸是6bit或者2bit的,我們必須制定寄存器的那幾位送到總線的那幾位。AC要可以載入AC和DR的和或者邏輯與的值,數(shù)據(jù)路徑中還需要進(jìn)行運(yùn)算的ALU。由此我們做以下工作:去掉AR,IR,AC與總線的連接。我們約定寄存
8、器連接是從總線的低位開始的。AR,PC連接到Bus[5:0],由于IR是接受DR[7:6]的,所以可以連接到總線的Bus[7:6]。我們?cè)O(shè)定,AC作為ALU的一個(gè)輸入,另一個(gè)輸入