微處理器系統(tǒng)設(shè)計(jì)_第1頁
微處理器系統(tǒng)設(shè)計(jì)_第2頁
微處理器系統(tǒng)設(shè)計(jì)_第3頁
微處理器系統(tǒng)設(shè)計(jì)_第4頁
微處理器系統(tǒng)設(shè)計(jì)_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、功能描述:設(shè)計(jì)一個(gè)帶簡單I/O接口電路的多周期RISC處理器設(shè)計(jì)方案,并在FPGA上進(jìn)行驗(yàn)證。驗(yàn)證題目為設(shè)計(jì)流水燈的樣式為:00000000->00000001->00000011->00000111->00001111->0011111->01111111->11111111->00000000,切換間隔為1秒。 RISC處理器簡介中央處理器(CPU,Central Processing Unit)是計(jì)算機(jī)的核心部件。計(jì)算機(jī)進(jìn)行信息處理可分為兩個(gè)步驟:(1)將數(shù)據(jù)和程序(即指令序列)輸入到計(jì)算機(jī)的存儲器中;(2)從第一條指令的地址起開始執(zhí)行該程

2、序,得到所需結(jié)果,結(jié)束運(yùn)行。CPU的作用是協(xié)調(diào)并控制計(jì)算機(jī)的各個(gè)部件并執(zhí)行程序的指令序列,使其有條不紊地進(jìn)行。因此它必須具有以下基本功能: 取指令當(dāng)程序已在存儲器中時(shí),首先根據(jù)程序入口地址取出一條程序,為此要發(fā)出指令地址和控制信號。 分析指令即指令譯碼,這是對當(dāng)前取得的指令進(jìn)行分析,指出它要求什么操作,并產(chǎn)生相應(yīng)的操作控制命令。 執(zhí)行指令根據(jù)分析指令時(shí)產(chǎn)生的“操作命令”形成相應(yīng)的操作控制信號序列,通過運(yùn)算器、存儲器及輸入/輸出設(shè)備的執(zhí)行,實(shí)現(xiàn)每條指令的功能,其中包括對運(yùn)算結(jié)果的處理及下條指令地址的形成。將CPU的功能進(jìn)一步細(xì)化,可概括如下:(1)能對指令進(jìn)行譯碼并執(zhí)行規(guī)定的動作;(2)可以進(jìn)行

3、算術(shù)和邏輯運(yùn)算;(3)能與存儲器和外設(shè)交換數(shù)據(jù);(4)提供整個(gè)系統(tǒng)所需要的控制。盡管各種CPU的性能指標(biāo)和結(jié)構(gòu)細(xì)節(jié)各不相同,但它們所能完成的基本功能相同。由功能分析可知,任何一種CPU內(nèi)部結(jié)構(gòu)至少應(yīng)包含下面這些部件:(1)算術(shù)邏輯運(yùn)算部件(ALU);(2)累加器或寄存器;(3)程序計(jì)數(shù)器;(4)指令寄存器和譯碼器;(5)時(shí)序和控制部件。從實(shí)現(xiàn)的途徑看,RISC處理器與一般的CPU的不同之處在于:它的時(shí)序控制信號形成部件是用硬布線邏輯實(shí)現(xiàn)的而不是采用微程序控制的方式。所謂硬布線邏輯也就是用觸發(fā)器和邏輯門直接連線所構(gòu)成的狀態(tài)機(jī)和相應(yīng)的組合邏輯,故產(chǎn)生控制序列的速度比用微程序控制方式快得多,因?yàn)檫@樣

4、做省去了讀取微程序指令的時(shí)間。RISC處理器結(jié)構(gòu)介紹一、處理器結(jié)構(gòu) RISC處理器內(nèi)核結(jié)構(gòu)從圖中可以看出, RISC處理器內(nèi)核包括以下功能單元:控制器、程序計(jì)數(shù)器、通用寄存器、算術(shù)邏輯單元(ALU)和總線接口單元(BIU)。以下的內(nèi)容將依次討論這些模塊。二、處理器內(nèi)部子模塊1、控制器控制器用于進(jìn)行指令譯碼、產(chǎn)生ALU運(yùn)算控制信號、產(chǎn)生通用寄存器讀寫控制信號以及協(xié)調(diào)處理器工作時(shí)序工作。2、程序計(jì)數(shù)器程序計(jì)數(shù)器用于指向下一條將要執(zhí)行的指令的地址,它可以自動增值或是通過分支指令來設(shè)置其內(nèi)容。3、寄存器堆處理器內(nèi)部有32個(gè)32 位寄存器,ALU運(yùn)算的源操作數(shù)、目的操作數(shù)大都來自這個(gè)寄存器堆。4、算術(shù)邏

5、輯單元算術(shù)邏輯單元用于進(jìn)行算術(shù)運(yùn)算、移位操作、比較設(shè)置操作以及邏輯運(yùn)算。對于其他未能實(shí)現(xiàn)的運(yùn)算,例如乘法、浮點(diǎn)運(yùn)算等,可以使用軟件來實(shí)現(xiàn)。5、總線接口單元總線接口單元用于SimpleRISC處理器與外部存儲器和I/O口的連接,為了簡單起見,SimpleRISC系統(tǒng)的存儲器和I/O采用統(tǒng)一編址的方式進(jìn)行組織,并且采用程序存儲器和數(shù)據(jù)存儲器分開的哈佛結(jié)構(gòu)。 多周期CPU設(shè)計(jì)原理在單周期CPU中,每條指令的運(yùn)行周期都是相同的。然而,不同的指令,其實(shí)際的運(yùn)行時(shí)間各不相同,有的甚至相差很大。單周期處理器時(shí)鐘周期遠(yuǎn)遠(yuǎn)大于許多指令實(shí)際所需執(zhí)行時(shí)間,例如,R-型指令和立即數(shù)運(yùn)算指令都不需要讀內(nèi)存;Store指

6、令不需要寫寄存器;分支指令不需要訪問內(nèi)存和寫寄存器;Jump指令不需要ALU運(yùn)算,不需要讀內(nèi)存,也不需要讀寫寄存器。受時(shí)鐘周期寬度的影響,單周期處理器的效率地下、性能極差,這樣就造成了運(yùn)行時(shí)間的浪費(fèi),降低了運(yùn)行的速度。為了解決這個(gè)問題,引入多時(shí)鐘周期CPU的設(shè)計(jì)方式。如下圖所示,在多時(shí)鐘周期CPU中,每條CPU指令并不是在一個(gè)時(shí)鐘周期內(nèi)運(yùn)行,而是需要占用多個(gè)時(shí)鐘周期,每一個(gè)執(zhí)行步驟占用一個(gè)時(shí)鐘周期。不同的指令,占用的時(shí)鐘周期的個(gè)數(shù)也不相同。指令可以根據(jù)自身特點(diǎn)來決定使用幾個(gè)時(shí)鐘周期。這樣,既保證了指令的正確運(yùn)行,又使得指令根據(jù)自身的特點(diǎn)來占用運(yùn)行時(shí)間,避免了運(yùn)行時(shí)間的浪費(fèi)。 多周期處理器的基本

7、思想為:把每條指令的執(zhí)行分為多個(gè)大致相等的階段,每個(gè)階段在一個(gè)時(shí)鐘周期內(nèi)完成;各個(gè)階段最多完成一次訪存或一次寄存器讀/寫或一次ALU操作;各個(gè)階段的執(zhí)行結(jié)果在下個(gè)時(shí)鐘到來時(shí)保存到相應(yīng)的存儲單元或穩(wěn)定的保持在組合電路中;時(shí)鐘周期的寬度以最復(fù)雜的階段所花的時(shí)間為準(zhǔn),通常取一次存儲器讀或?qū)懙臅r(shí)間。第一步自然是分析指令執(zhí)行的狀態(tài)。在多周期處理器中,每條指令分多個(gè)階段執(zhí)行,每個(gè)階段占一個(gè)時(shí)鐘周期,稱為一個(gè)狀態(tài)。指令在被取出、譯碼之前,每條指令的操作是一樣的,指令譯碼之后不同的指令有不同的執(zhí)行過程。子模塊設(shè)計(jì)控制器模塊方案設(shè)計(jì) 控制器需要根據(jù)不同的指令,產(chǎn)生不同的控制信號,以控制數(shù)據(jù)通路中的部件能同步工作

8、,并且使得數(shù)據(jù)通路中相應(yīng)的數(shù)據(jù)選擇器作出正確的選擇。這里的控制器比較復(fù)雜,使用一個(gè)有限狀態(tài)機(jī)來實(shí)現(xiàn),下圖給出了控制器的狀態(tài)轉(zhuǎn)移圖??刂破鳡顟B(tài)轉(zhuǎn)移圖從圖中可以看出, RISC處理器的控制器具有5個(gè)狀態(tài)。起始狀態(tài)是取指狀態(tài)Fetch, Fetch狀態(tài)使得指令存儲器的讀控制信號有效,從而取到要執(zhí)行的指令。取到指令之后,要對其進(jìn)行譯碼,所以進(jìn)入了第二個(gè)指令譯碼狀態(tài)Decode,Decode根據(jù)前一狀態(tài)取到的指令進(jìn)行譯碼操作,產(chǎn)生相應(yīng)的數(shù)據(jù)選擇器選擇信號等控制信號。指令譯碼之后,進(jìn)入指令執(zhí)行狀態(tài)Execute,這一步大多數(shù)指令使用ALU進(jìn)行運(yùn)算,然后根據(jù)指令類型選擇是進(jìn)行存儲器操作還是直接將運(yùn)算結(jié)果寫回

9、寄存器堆。對于存儲器訪問指令,執(zhí)行狀態(tài)之后計(jì)算出進(jìn)行存儲器訪問的地址,之后進(jìn)入存儲器訪問狀態(tài)Memory進(jìn)行相應(yīng)的存儲器操作。對于其他不需要進(jìn)行存儲器訪問的指令,直接進(jìn)入寄存器回寫狀態(tài)Write,將計(jì)算結(jié)果寫回寄存器。接口定義信號名稱方向含義opIN操作碼regdstOUT寫寄存器地址regwrOUT寫寄存器控制信號alusrcOUT立即數(shù)和寄存器數(shù)據(jù)讀選擇信號extopOUT立即數(shù)擴(kuò)展信號memwrOUT存儲器寫信號memtoregOUT存儲器寫寄存器信號 寄存器堆模塊設(shè)計(jì)模塊方案設(shè)計(jì) MIPS指令格式中的寄存器號是5bits,指令可以訪問25=32個(gè)32位的寄存器。這樣的一堆寄存器“堆在一

10、起”構(gòu)成一個(gè)寄存器堆。每一個(gè)寄存器都是32位,寄存器用來存放指令執(zhí)行所需的數(shù)據(jù)。根據(jù)指令執(zhí)行需要,該寄存器堆需要一個(gè)寫數(shù)據(jù)端口和兩個(gè)讀數(shù)據(jù)端口,即同時(shí)要求有兩個(gè)讀地址和一個(gè)寫地址。每次當(dāng)寫信號有效和時(shí)鐘上升沿來臨時(shí),會將要寫入的數(shù)據(jù)寫入到寄存器給定的地址中,寄存器讀端口會在持續(xù)的讀出寄存器中相應(yīng)地址中的數(shù)據(jù)。電路結(jié)構(gòu) 接口定義及時(shí)序圖 寄存器共有9個(gè)端口,具體見下表序號接口信號名稱方向說明1.clkI處理器工作時(shí)鐘,頻率為2.rst_nI復(fù)位信號,低有效3.raddr1I讀寄存器堆時(shí)的第1個(gè)寄存器地址4.raddr2I讀寄存器堆時(shí)的第2個(gè)寄存器地址5.waddrI寫寄存器堆時(shí)的寄存器地址6.w

11、eI寄存器堆寫使能7.wdataI待寫入寄存器堆的數(shù)據(jù)8.rdata1O讀寄存器堆時(shí)第1個(gè)寄存器的輸出9.rdata2O讀寄存器堆時(shí)第2個(gè)寄存器的輸出ALU模塊方案設(shè)計(jì)算術(shù)邏輯運(yùn)算器(ALU)是數(shù)字計(jì)算機(jī)中執(zhí)行加、減等算術(shù)運(yùn)算,執(zhí)行與、或等邏輯運(yùn)算,以及執(zhí)行比較、移位、傳送等操作的功能部件,本模塊實(shí)現(xiàn)32位的ALU。本文描述MIPS單周期處理器的ALU模塊的功能、接口、時(shí)序及其實(shí)現(xiàn)。aluclt運(yùn)算類型SUBctrSIGctrOPctrOP含義0000Addu0000加法器0001Add0100加法器0011Or0101與或器0010And0001與或器0100Subu1000加法器0101S

12、ub1100加法器0110Situ1011置位器0111Sit1111置位器1000Sll0010移位器1001Srl0110移位器1100sra1010移位器SUBctr = ALUctr2(作為加減控制信號)ANDctr = ALUctr0 (作為與或控制信號)OVctr = ALUctr1&ALUctr0(溢出控制信號)SIGctr = ALUctr0 (置位控制信號)Opctr1 = Aluctr2&ALUctr1| ALUctr3OPctr0 = ALUctr1(輸出選擇信號)電路結(jié)構(gòu)接口定義及時(shí)序圖 信號名稱方向含義alu_da31:0INALU第一個(gè)輸入數(shù)據(jù)端口,

13、32位寬度alu_db31:0INALU第二個(gè)輸入數(shù)據(jù)端口,32位寬度alu_clt3:0IN ALU運(yùn)算功能編碼,12種指令需要4位編碼alu_shift4:0IN ALU移位次數(shù)alu_zeroOUT運(yùn)算結(jié)果全零標(biāo)志alu_overflowOUT有符號運(yùn)算溢出標(biāo)志alu_dc31:0OUTALU運(yùn)算結(jié)果算術(shù)邏輯單元控制模塊模塊方案設(shè)計(jì) 算數(shù)邏輯單元控制模塊用來控制ALU的運(yùn)算類型,當(dāng)進(jìn)行R型指令操作時(shí),ALU的運(yùn)算類型受控于指令中的func_seg字段,當(dāng)進(jìn)行I型指令時(shí),ALU的運(yùn)算類型受控于指令中的op_seg字段。因此,要設(shè)計(jì)算術(shù)邏輯單元控制模塊,需要根據(jù)不同的指令類型對func_se

14、g和op_seg字段進(jìn)行譯碼操作,從而實(shí)現(xiàn)指令對ALU運(yùn)算類型的控制。電路結(jié)構(gòu)接口定義信號名稱方向含義opIN操作碼func_segINR型指令操作類型alu_ctrOUTalu運(yùn)算類型程序計(jì)數(shù)器輸入端口說明:Clk,rst_n,bus2與上面的說明一致。Inc_pc:有效時(shí),程序計(jì)數(shù)器自動加一,用于取出下條指令進(jìn)行相應(yīng)的動作。Load_pc:有效時(shí),可以將bus2上的數(shù)據(jù)加載到程序計(jì)數(shù)器上輸出端口說明:Pc_out:用于輸出相應(yīng)的地址以便在存儲器中取出指令??偩€接口單元總線接口單元只是一些三態(tài)緩沖器,所以直接在RISC處理器的頂層設(shè)計(jì)中實(shí)現(xiàn),而這里就不專門進(jìn)行設(shè)計(jì)。邏輯原理圖:多時(shí)鐘周期CP

15、U設(shè)計(jì)邏輯原理如下圖1:多時(shí)鐘周期CPU設(shè)計(jì)邏輯原理圖第二步,就是進(jìn)行CPU控制器的設(shè)計(jì)了。 由于多周期數(shù)據(jù)通路每個(gè)指令的執(zhí)行有多個(gè)周期,每個(gè)周期的控制信號取之不同,所以,不能用簡單的真值表描述的設(shè)計(jì)方式。多周期控制器通常采用基于有限狀態(tài)機(jī)和微程序描述兩種方式實(shí)現(xiàn)。 在本設(shè)計(jì)中,采用有限狀態(tài)機(jī)的描述方式實(shí)現(xiàn)。其基本思想為:用一個(gè)有限狀態(tài)機(jī)描述指令執(zhí)行過程,由當(dāng)前狀態(tài)和操作碼確定下一狀態(tài),每來一個(gè)時(shí)鐘發(fā)生一次狀態(tài)改變,不同的狀態(tài)輸出不同的控制信號值。 有限狀態(tài)機(jī)圖已在圖二中給出,通過第一步中對六類指令的分析,確定使用12個(gè)狀態(tài)對指令的執(zhí)行過程進(jìn)行描述和控制。R型指令取指令狀態(tài)譯碼/取數(shù)狀態(tài)送數(shù)據(jù)

16、運(yùn)算狀態(tài)運(yùn)算結(jié)果寫回狀態(tài)I型指令取指令狀態(tài)譯碼/取數(shù)狀態(tài)送數(shù)據(jù)運(yùn)算狀態(tài)運(yùn)算結(jié)果寫回狀態(tài)lw型指令取指令狀態(tài)譯碼/取數(shù)狀態(tài)訪存地址計(jì)算狀態(tài)存儲器取數(shù)狀態(tài)結(jié)果寫回寄存器狀態(tài)sw型指令取指令狀態(tài)譯碼/取數(shù)狀態(tài)訪存地址計(jì)算狀態(tài)存儲器寫回狀態(tài)分支指令取指令狀態(tài)譯碼/取數(shù)狀態(tài)分支結(jié)束狀態(tài)無條件跳轉(zhuǎn)指令取指令狀態(tài)譯碼/取數(shù)狀態(tài)跳轉(zhuǎn)結(jié)束狀態(tài)多時(shí)鐘周期CPU設(shè)計(jì)指令狀態(tài)表指令編碼1、加法這里實(shí)現(xiàn)的是有符號數(shù)的加法,不考慮溢出。(1)寄存器操作數(shù)相加匯編語言表示形式:add rt, rs1, rs2操作說明:rt = rs1 + rs2編碼:(2)寄存器操作數(shù)與立即數(shù)相加匯編語言表示形式:addi rt, rs,

17、 imm16操作說明:rt = rs + imm16,對imm16進(jìn)行符號擴(kuò)展編碼:2、減法這里實(shí)現(xiàn)的是有符號數(shù)的減法,不考慮溢出。(1)寄存器操作數(shù)相減匯編語言表示形式:sub rt, rs1, rs2操作說明:rt = rs1 - rs2編碼:(2)寄存器操作數(shù)與立即數(shù)相減匯編語言表示形式:subi rt, rs, imm16操作說明:rt = rs imm16,對imm16進(jìn)行符號擴(kuò)展編碼:3、小于則置一這里實(shí)現(xiàn)的是無符號數(shù)的比較。(1)寄存器操作數(shù)比較匯編語言表示形式:slt rt, rs1, rs2操作說明:rt = (rs1 < rs2)編碼:(2)寄存器操作數(shù)與立即數(shù)比較匯

18、編語言表示形式:slti rt, rs, imm16操作說明:rt = (rs < imm16),對imm16進(jìn)行零擴(kuò)展編碼:4、左移匯編語言表示形式:sl rt, rs, imm5操作說明:rt = rs << imm5編碼:5、右移匯編語言表示形式:rl rt, rs, imm5操作說明:rt = rs >> imm5編碼:6、邏輯與這里實(shí)現(xiàn)的是無符號數(shù)的邏輯與。(1)寄存器操作數(shù)的邏輯與匯編語言表示形式:andl rt, rs1, rs2操作說明:rt = rs1 & rs2編碼:(2)寄存器操作數(shù)與立即數(shù)的邏輯與匯編語言表示形式:andli rt, rs, imm16操作說明:rt = rs & imm16,對imm16進(jìn)行零擴(kuò)展編碼:7、邏輯或這里實(shí)現(xiàn)的是無符號數(shù)的邏輯或。(1)寄存器操作數(shù)的邏輯或匯編語言表示形式:orl rt, rs1, rs2操作說明:rt = rs1 | rs2編碼:(2)寄存器操作數(shù)與立即數(shù)的邏輯或匯編語言表示形式:orli rt, rs, imm16操作說明:rt = rs | imm16,對imm16進(jìn)行零擴(kuò)展編碼:8、邏輯非這里只實(shí)現(xiàn)了寄存器操作數(shù)的邏輯非。匯編語言表示形式:notl rt, rs操作說明:rt = rs編碼:9、從存儲器取數(shù)據(jù)匯編語言表示形式:load rt, rs, imm

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論