版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、計算機(jī)科學(xué)與技術(shù)學(xué)院2014計算機(jī)組成原理 課程設(shè)計報告題 目:支持流水線的簡單計算機(jī)系統(tǒng)設(shè)計與實現(xiàn)專 業(yè):計算機(jī)科學(xué)與技術(shù)班 級:學(xué) 號:姓 名:電 話:郵 件:實 驗 臺:完成日期:指導(dǎo)教師:目錄一、課程設(shè)計概述31 課設(shè)目的32 實驗環(huán)境33 設(shè)計任務(wù)與要求3二、設(shè)計原理31 MIPS概述32 MIPS指令簡介33 經(jīng)典5段RSIC流水線結(jié)構(gòu)4三、設(shè)計內(nèi)容51 指令選取52 非流水5段CPU模型63 流水5段CPU模型8四、實現(xiàn)內(nèi)容與測試結(jié)果121 各模塊功能122 控制信號123 指令操作流程134 指令執(zhí)行狀態(tài)轉(zhuǎn)換圖145 引腳綁定156 測試程序157 測試結(jié)果與仿真圖16五、課設(shè)
2、總結(jié)171 課設(shè)中遇到的問題172 課設(shè)經(jīng)歷173 課設(shè)感想184 小組分工18參考文獻(xiàn)18一、 課程設(shè)計概述1. 課設(shè)目的掌握硬件描述語言與開發(fā)環(huán)境,了解硬件開發(fā)地基本過程。掌握流水線CPU設(shè)計方法。鍛煉學(xué)生簡單計算機(jī)系統(tǒng)的設(shè)計能力,并通過進(jìn)行主機(jī)系統(tǒng)低層電路的實現(xiàn)、故障分析與定位、系統(tǒng)調(diào)試等環(huán)節(jié)的鍛煉,進(jìn)一步提高了學(xué)生分析和解決問題的能力。2. 實驗環(huán)境Xilinx ISE 14.2Spartan3E實驗板一塊3. 設(shè)計任務(wù)與要求課程設(shè)計的主要任務(wù)是設(shè)計一臺支持流水線的簡單計算機(jī)系統(tǒng)并調(diào)試通過。要求所設(shè)計的計算機(jī)系統(tǒng)能正確地執(zhí)行存放在指令cache中的程序的功能。本設(shè)計基于MIPS的32位
3、流水線架構(gòu),設(shè)計過程中力圖盡可能的遵循原有的MIPS的功能和指令集。基本做到與MIPS指令集的兼容。具體要求包括:支持算術(shù)運算,邏輯運算,存儲器讀寫,寄存器間數(shù)據(jù)傳送等幾類指令。支持立即數(shù)尋址,直接尋址,寄存器尋址等幾種基本的數(shù)據(jù)尋址方式和順序?qū)ぶ?、跳躍尋址兩種指令的尋址方式。 支持10條或以上的指令。 能運行由自己所設(shè)計的指令系統(tǒng)構(gòu)成的一段程序,程序執(zhí)行功能正確。 具有完整的五級流水線架構(gòu)。采用獨立的32位的數(shù)據(jù)總線和位置總線。 二、 設(shè)計原理1. MIPS概述MIPS是高效的RISC體系結(jié)構(gòu)中最優(yōu)雅的一種體系結(jié)構(gòu)。其中文意思為“無內(nèi)部互鎖流水級的微處理器”,其機(jī)制是盡量利用軟件辦法避免流水
4、線中的數(shù)據(jù)相關(guān)問題。它最早是在80年代初期由斯坦福大學(xué)Hennessy教授領(lǐng)導(dǎo)的研究小組研制出來的。MIPS公司的R系列就是在此基礎(chǔ)上開發(fā)的RISC工業(yè)產(chǎn)品的微處理器。這些系列產(chǎn)品為很多計算機(jī)公司采用構(gòu)成各種工作站和計算機(jī)系統(tǒng)。本設(shè)計將參考MIPS的CPU設(shè)計以實現(xiàn)自己的五段流水線CPU設(shè)計,并部分實現(xiàn)MIPS32指令集2. MIPS指令簡介2.1 MIPS指令集特點 MIPS指令集具有以下特點: 簡單的LOAD/STORE結(jié)構(gòu)。所有計算類型指令均從寄存器組中讀取數(shù)據(jù)并把結(jié)果寫入寄存器組中。只有LOAD和STORE指令訪問存儲器(數(shù)據(jù)cache)。 易于流水線CPU的設(shè)計。MIPS指令集的指令
5、格式非常規(guī)整,所有的指令均為32位,而且指令操作碼在固定的位置上。 易于編譯器的開發(fā)。一般情況下,編譯器在編譯高級語言程序時,很難用到復(fù)雜的指令。MIPS指令的尋址方式與操作非常簡單,便于編譯器的開發(fā)。2.2 MIPS指令格式在本次課程設(shè)計中,在數(shù)據(jù)類型上只支持整數(shù)類型,在指令格式上直接R、I和J型指令。以下是對三型指令的簡介1: R(register)類型的指令從寄存器組中讀取兩個源操作數(shù),計算結(jié)果寫回寄存器組。 I(immediate)類型的指令使用一個16位的立即數(shù)作為一個源操作數(shù)。 J(jump)類型的指令使用一個26位立即數(shù)作為跳轉(zhuǎn)的目標(biāo)位置。三型指令的格式如圖1所示,其中: op表
6、示指令操作碼。 rs為源操作數(shù)的寄存器號。 rd為目的寄存器號,RT既可為源寄存器號,也可為目的寄存器號。 funct可認(rèn)為是擴(kuò)展的操作碼。 shamte由移位指令使用,定義移位位數(shù)。 Immediate是16位立即數(shù),根據(jù)指令需求進(jìn)行無符號或有符號擴(kuò)展。 Address是26位立即數(shù),由J型指令使用,用于產(chǎn)生跳轉(zhuǎn)的目的位置。圖1. MIPS的指令格式3. 經(jīng)典5段RSIC流水線結(jié)構(gòu)經(jīng)典的5段RISC流水線如圖2。圖2. 經(jīng)典5段RISC流水線在該結(jié)構(gòu)中一條指令的執(zhí)行過程分為以下5個時鐘周期: 取指令周期(IF):以程序計數(shù)器PC中的內(nèi)容作為位置,從存儲器中取出指令并放入指令寄存器IR;同時P
7、C值加4(假設(shè)每條指令占4個字節(jié)),指向順序的下一條指令。 指令譯碼/讀寄存器周期(ID):對指令進(jìn)行譯碼,并用IR中的寄存器位置去訪問通用寄存器組,讀出所需的操作數(shù)。 執(zhí)行/有效位置計算周期(EX):在這個周期,ALU對在上一個周期準(zhǔn)備好的操作數(shù)進(jìn)行運算或處理。不同指令所進(jìn)行的操作不同。 存儲器訪問/分支完成周期(MEM):load指令用上一個周期計算出的有效位置從存儲器中讀出相應(yīng)的數(shù)據(jù);store指令把指定的數(shù)據(jù)寫入這個有效位置所指出的存儲器單元;分支指令若分支成功就把錢一個周期中計算好的轉(zhuǎn)移目標(biāo)位置送入PC,否則不進(jìn)行任何操作;其他類型的指令在該周期不做任何操作。 寫回周期(WB):把結(jié)
8、果寫入通用寄存器組。本設(shè)計基于該經(jīng)典5端流水線結(jié)構(gòu)完成了MIPS的一種簡單實現(xiàn),并在此基礎(chǔ)上加入了對流水線沖突(數(shù)據(jù)沖突,控制沖突)的處理,以及對中斷的處理。三、 設(shè)計內(nèi)容1. 指令選取本系統(tǒng)能執(zhí)行16條MIPS指令,指令基本情況如表1所示。MIPS指令助記符指令格式操作Bit #31.2625.2120.1615.1110.65.0R-typeoprsrtrdshamtfuncadd000000rsrtrd00000100000Rd = rs + rtSub100010Rd = rs - rtAnd100100Rd = rs & rtOr100101Rd = rs | rtXor10
9、0110Rd = rs rtSllv000100Rd = rs << rtsrlv000110Rd = rs >> rtslt101010If (rs < rt) rd=1 else rd=0;I-typeoprsrtimmdediateAddi001000rsrtimmRt = rs + immAndi001100Rt = rs & imm ori001101Rt = rs | immXori001110Rt = rs immBne000101If (rs!=rt) pc=pc+1-immLw100011Rt = memrs + immsw101011M
10、emrs + imm = rtJ-typeopaddressj000010addPc=add表1. 系統(tǒng)支持的MIPS指令集從指令類型來講,這16條指令覆蓋了算邏運算、訪存、無條件跳轉(zhuǎn)和有條件跳轉(zhuǎn),已基本覆蓋一個指令集所需的所有基本指令。從尋址方式來講,這16條指令覆蓋了寄存器尋址(R-TYPE指令),立即數(shù)尋址(I-TYPE指令),基址偏移量尋址(LW/SW),直接尋址(J)。16條MIPS指令并不是本設(shè)計的極限,只是受到實驗板資源的限制,我們僅僅完成了MIPS32指令集中的16條而已。本設(shè)計通過簡單的拓展可以輕松實現(xiàn)整個MIPS32指令集。2. 非流水5段CPU模型2.1 初始數(shù)據(jù)通路設(shè)計
11、往往都是從簡單到復(fù)雜,循序漸進(jìn)。好高騖遠(yuǎn)則往往求之而不得。因此我們并沒有從流水線模型直接下手,而是首先設(shè)計了一個類似經(jīng)典5段RISC流水線結(jié)構(gòu)的非流水5段CPU模型。由于不涉及流水,所以所有的指令周期均為單周期,數(shù)據(jù)通路見圖3。圖3. 非流水5段CPU初始數(shù)據(jù)通路2.2 5段具體操作在這個數(shù)據(jù)通路上每條指令需要花費5個時鐘周期,這5個時鐘周期相應(yīng)的操作如下:2.2.1 取指令周期(IF)IRMemPCNPCPC+1以PC中的值從指令cache中取出一條指令,放入指令寄存器IR;同時PC值加1,然后放入NPC,這時NPC中的值為順序的下調(diào)指令的位置。2.2.2 指令譯碼/讀寄存器周期(ID)AR
12、egsrsBRegsrtimm(IR16)16#IR16.31)對指令進(jìn)行譯碼,并以指令中的rs和rt字段作為位置訪問通用寄存器組,將讀出的數(shù)據(jù)讓如A和B寄存器中。同時IR的低16位進(jìn)行有符號或者無符號擴(kuò)展,然后存入Imm寄存器2.2.3 執(zhí)行/有效位置計算周期(EX) LW和SW指令A(yù)LUoA+ImmALU將操作數(shù)相加形成有效位置,并存入臨時寄存器ALUo R-TYPEALUoA funct BALU根據(jù)funct字段指出的操作類型對A和B中的數(shù)據(jù)進(jìn)行運算,并將結(jié)果存入ALUo I-TYPEALUoA op ImmALU根據(jù)操作碼op指出的操作類型對A和Imm中的數(shù)據(jù)進(jìn)行運算,并將結(jié)果存入A
13、LUo 分支指令A(yù)LUoNPC+ImmALU將臨時寄存器NPC和Imm中的值相加得到轉(zhuǎn)移目標(biāo)的位置,存入ALUo2.2.4 存儲器訪問/分支完成周期(MEM) LW和SW指令LW:LMDMemALUo即從存儲器中讀出相應(yīng)數(shù)據(jù),放入臨時寄存器LMD中SW:MemALUoB即把B中數(shù)據(jù)寫入存儲器 分支指令I(lǐng)f (cond) PCALUo else PCNPC若cond中的內(nèi)容為真,則將ALUo中的轉(zhuǎn)移目標(biāo)位置放入PC,否則PC+1。2.2.5 寫回周期(WB) R-TYPERegsrdALUo I-TYPERegsrtALUo LW指令RegsrtLMD2.3 模型優(yōu)化與最終數(shù)據(jù)通路在這部分設(shè)計的
14、時候我們的跳轉(zhuǎn)指令僅僅實現(xiàn)了JNZQ,因此我們對改分支指令進(jìn)行了單獨的優(yōu)化。在圖2的設(shè)計中若分支失敗,則由于新的PC在EX段產(chǎn)生,因此會產(chǎn)生2個時鐘周期的延遲。但實際上可以對這條指令進(jìn)行單獨的改進(jìn),將對PC的修改提前到IF段,以便PC值能夠快速變化。經(jīng)過這樣優(yōu)化后,分支失敗則只會產(chǎn)生1個時鐘周期的延遲。改進(jìn)后的數(shù)據(jù)通路如圖4所示。圖4. 非流水5段CPU最終數(shù)據(jù)通路3. 5段流水CPU模型3.1 初始數(shù)據(jù)通路在實現(xiàn)了非流水的5段CPU模型后,5段流水CPU模型也就水到渠成了。只需要在各段之間加入相應(yīng)的流水寄存器即可。數(shù)據(jù)通路如圖5。圖5. 5段流水CPU初始數(shù)據(jù)通路3.2 5段具體操作這部分與
15、非流水的具體操作大致相同,這里不加贅述。3.3 流水線沖突及解決方案3.3.1 數(shù)據(jù)沖突如果上一條指令的結(jié)果還沒有寫入到寄存器中,而下一條指令的原操作數(shù)又恰恰是此寄存器的數(shù)據(jù),那么它所獲得的將是原來的數(shù)據(jù),而不是更新后的數(shù)據(jù),這樣的相關(guān)問題稱為數(shù)據(jù)相關(guān)。根據(jù)在系統(tǒng)結(jié)構(gòu)中學(xué)習(xí)到的相關(guān)知識,在我們的設(shè)計中,采用定向(forwarding)技術(shù)來解決此類相關(guān)問題。其關(guān)鍵思路是:在發(fā)生寫后讀相關(guān)的情況下,在計算結(jié)果尚未出來之前,后面等待使用該結(jié)果的指令并不見得是馬上就要用該結(jié)果。如果能夠?qū)⒃撚嬎憬Y(jié)果從其產(chǎn)生的地方(ALU出口)直接送到其他指令需要它的地方(ALU的入口),那么就可以避免停頓,如圖6。圖
16、6. 定向技術(shù)3.3.2 控制沖突 在流水線中,控制沖突可能會使數(shù)據(jù)沖突造成更大的性能損失。執(zhí)行分支指令的結(jié)果有兩種,一種是“成功”,PC值改變?yōu)榉种мD(zhuǎn)移的目標(biāo)位置。另一種則是“失敗”,這是PC的值保持正常遞增。本設(shè)計中采用預(yù)測分支失敗的方法解決控制沖突,即允許分支指令后的指令繼續(xù)在流水線中流動。當(dāng)確定分支是失敗時,可以將分支指令看做一條普通指令,流水線正常流動,如表2;當(dāng)確定分支是成功時,流水線就把在分支指令之后取出的指令轉(zhuǎn)化為空操作,并按分支目標(biāo)位置重新取指令執(zhí)行,如表3。分支失敗分支指令iIFIDEXMEMWB指令i+1IFIDEXMEMWB指令i+2IFIDEXMEMWB指令i+3IF
17、IDEXMEMWB表2. 分支失敗的流水線時空圖分支成功分支指令iIFIDEXMEMWB指令i+1IFIdleIdleIdleidle分支目標(biāo)指令I(lǐng)FIDEXMEMWB分支目標(biāo)指令+1IFIDEXMEMWB表3. 分支成功的流水線時空圖3.4 模型中的問題與修正3.4.1 指令周期數(shù)問題若是指令周期和之前的設(shè)計一樣,使用單周期的設(shè)計,那么會出現(xiàn)對流水寄存器的讀寫沖突。例如對于通用寄存器組來說,在clk上升沿的時候需要從IF段的指令寄存器IR中取出指令,然后訪問相應(yīng)的寄存器并將數(shù)據(jù)寫入ID段的A,B寄存器。試想,若是從IR中取指令,和對ID段的A,B寄存器的寫入兩個操作都是在clk上升沿觸發(fā),那
18、么由于時延的存在,很有可能導(dǎo)致寫入的值不是預(yù)期值。因此我們將指令周期從單周期改為雙周期。在前一周期完成對流水寄存器的讀操作,并且完成各段的功能。后一周期,完成對流水寄存器的寫操作。具體實現(xiàn)上我們舍棄了分頻的方法而是采用前半周期為clk上升沿觸發(fā),后半周期為clk下降沿觸發(fā)。3.4.2 譯碼器問題通過3.3.1可知,各段功能需要在前一周期內(nèi)全部完成,但是ID段很特殊,因為有譯碼器的存在。通用寄存器組和擴(kuò)展部件都需要譯碼器提供控制信號,但是由于3.3.1的限制,譯碼器也會在clk上升沿觸發(fā)。由于時延的存在,這可能會導(dǎo)致控制信號產(chǎn)生在需求之后。也即在寄存器組和擴(kuò)展部件需要控制信號的時候,控制信號還未
19、真正產(chǎn)生,導(dǎo)致這兩部件使用了錯誤的控制信號。除了這個隱患,還有一個問題就是若采用單獨的譯碼器,那么會在ID段產(chǎn)生大量的控制信號,這些控制信號都需要通過流水線流向下一段,那么勢必需要大量的流水寄存器,大幅增加硬件成本。綜合考慮這兩個問題之后我們撤掉了譯碼器,而采用分段譯碼的方式。即給每個功能部件都提供完整的指令,由各個功能部件自己產(chǎn)生自己所需要的控制信號,這樣就可以完美的解決上述兩個問題。3.4.3 針對JNZQ指令的優(yōu)化問題在非流水的CPU模型中我們針對JNZQ指令進(jìn)行了專門的優(yōu)化,將對分支條件的判斷放在了ID段。但是這存在兩個問題,一是我們認(rèn)為這樣影響了整體設(shè)計的一致性;二是在流水線CPU的
20、設(shè)計中我們加入了新的跳轉(zhuǎn)指令,這使得判斷變得更加復(fù)雜,ID段分擔(dān)了太多EX段的功能,會影響整體流水的性能。因此在流水CPU設(shè)計中我們將分支的條件改回在EX段判斷。3.4.4 寄存器組的讀寫順序問題在最初的設(shè)計中,我們將寄存器的寫回操作放在后半周期,即和流水線寄存器的寫操作一同完成。但是在后面的實際測試中我們發(fā)現(xiàn)若這樣處理,我們在做重定向的時候必須做三次重定向。因此我們對此做了調(diào)整,將寫回操作提前到前半周期完成,即對寄存器組實現(xiàn)先寫后讀策略。3.4.5 寫回段的取舍在最初的設(shè)計中,由于我們將寄存器的寫回操作放在后半周期,因此我們一度舍棄了寫回段。因為寫回段僅僅是前半周期讀出寫回數(shù)據(jù),后半周期將數(shù)
21、據(jù)寫回寄存器組,這么簡單的功能占據(jù)一個流水段顯示實在是“奢侈”。因而在最初的設(shè)計中我們將其和MEM段合并。但是3.3.4中對寄存器讀寫順序做了調(diào)整,因此寫回段中的寫回操作和EX段的計算操作以及MEM的訪存操作在同半個周期內(nèi),由于時延的存在很有可能導(dǎo)致寫回數(shù)據(jù)錯誤。此時若舍棄了寫回段則可能在計算結(jié)果出來前就寫回了,這顯然不合理。因此我們重新加入了寫回段。在加入訪存段后,由于寫回的結(jié)果依賴于訪存結(jié)果,因此放在訪存段之后。3.4.6 特殊指令JNZ的問題JNZ這條指令在整個指令集中是非常特殊的存在,在之前的設(shè)計中我們完全沒有考慮到這個問題。 雖然JNZ是I-TYPE指令,但是RT卻是源寄存器,也即J
22、NZ不會修改RT的值。即它不符合I-TYPE指令在寫回段的數(shù)據(jù)通路RegsrtALUo。這在做定向的時候會產(chǎn)生嚴(yán)重的問題,若不做特殊判斷,那么很可能會產(chǎn)生錯誤的定向。 JNZ指令是整個指令集中唯一一個需要4個輸入(rega,regb,imm,pc)的指令,其他指令均最多只需要2個輸入。這使得EX段的兩個選擇器完全是多余的,可以去掉。在考慮到這兩點之后我們對重定向進(jìn)行了重新設(shè)計,并且去掉了EX段中的兩個選擇器。3.5 硬軟中斷的實現(xiàn)3.5.1 軟中斷的實現(xiàn)對于軟中斷,我們實際上通過擴(kuò)展指令集的方式來實現(xiàn)。即在指令集中加入兩條指令,PUSH和POP,來實現(xiàn)軟中斷。具體指令表4。R-typeoprs
23、rtrdshamtfuncPop1111110000000101000000000000000J-typeopaddressPush1111100000000000000000000001110表4. Push和Pop指令當(dāng)ID段檢測到PUSH指令時,將會把所有通用寄存器組的值以及當(dāng)前PC值壓入堆棧。當(dāng)EX段檢測到PUSH指令時,會無條件跳轉(zhuǎn)至指令對對應(yīng)的位置。當(dāng)ID段檢測到POP指令時,將會把所有的通用寄存器組的值彈出。當(dāng)EX段檢測到POP指令時,會無條件跳轉(zhuǎn)至堆棧中的PC值對應(yīng)的位置。3.5.2 硬中斷的實現(xiàn)對于硬中斷我們僅實現(xiàn)了了溢出中斷。當(dāng)EX段出現(xiàn)溢出時,EX段將會向IF段傳送相應(yīng)的
24、控制信號。此時IF段將會產(chǎn)生一條PUSH指令送到IR中,并且PC值維持一周期不變。這樣就相當(dāng)于向流水線中插入了一條軟中斷指令,從而實現(xiàn)了用硬件來自動產(chǎn)生中斷指令。3.6 最終數(shù)據(jù)通路在成功修改和完善3.4中的問題以及加入3.5中的內(nèi)容后,我們得到了最后的數(shù)據(jù)通路圖,如圖7。圖7. 5段流水CPU最終數(shù)據(jù)通路圖四、 實現(xiàn)內(nèi)容與測試結(jié)果1. 各模塊功能模塊例化名稱模塊實現(xiàn)功能U1實現(xiàn)PC的存儲與更新U2實現(xiàn)指令的存取U3實現(xiàn)對通用寄存器的讀寫U4實現(xiàn)對立即數(shù)的有符號與無符號擴(kuò)展U5實現(xiàn)ALUU6實現(xiàn)訪存功能表5. 各模塊功能表2. 控制信號流水段控制信號功能IFUpdate_Pc控制PC更新為PC
25、+1或ALUOIDReg_Sign控制通用寄存器組的壓棧與彈出Ex_Sign控制有符號擴(kuò)展和無符號擴(kuò)展EXAlu_Sign1控制MUX2的選擇Alu_Sign2控制MUX3的選擇Alu_Sign3控制ALU的計算功能Sel1控制ALUA端的定向Sel2控制ALUB端的定向MEMMem_Write控制MEM的讀寫WBMem_Read表明MEM的讀寫狀態(tài),控制MUX4的選擇Wb_Sign控制通用寄存器的寫回表6. 控制信號表3. 指令操作流程由于我組實現(xiàn)的指令較多,而很多指令具有較大的相似性,因此這里取ADD, BNE, J, SW四條指令,先做出其各周期的操作及控制信號表2。 指令階段操作流程控
26、制信號IFIR(MPC)Update_Pc = 0PC(PC)+1IDA(RIR25:21)Reg_Sign = 00, Ex_Sign = 1, Wb_Sign = 0B(RIR20:16)IR2IREXALUO(A)+(B)Alu_Sign1 = 0, Alu_Sign2 = 1, Alu_Sign3 = 0000, sel1 = 0, sel2 = 0IR3IR2MEMALUO2ALUOMem_Write = 0IR4IR3WBRIR415:11(ALUO2)Mem_Read = 0, Wb_Sign = 1表7. ADD指令操作流程及控制信號指令階段操作流程控制信號IFIR(MPC)U
27、pdate_Pc = 0NPC(PC)+1PC(PC)+1IDA(RIR25:21)Reg_Sign = 00, Ex_Sign = 1B(RIR20:16)IMM(Sign-extend(IR15-0)IR2IRNPC2NPCEXif (A!=B) PCNPC2-IMMAlu_Sign1 = 1, Alu_Sign2 = 0, Alu_Sign3 = 0111, sel1 = 0, sel2 = 0if (A!=B) Update_Pc = 1 else Update_Pc = 0表8. BNE指令操作流程及控制信號指令階段操作流程控制信號IFIR(MPC)Update_Pc = 0PC(P
28、C)+1IDIMM(Sign-extend(IR15-0)Reg_Sign = 00, Ex_Sign = 1IR2IREXPC(IMM)Alu_Sign1 = 0, Alu_Sign2 = 0, Alu_Sign3 = 1000, sel1 = 0, sel2 = 0, Update_Pc = 1表9. J指令操作流程及控制信號指令階段操作流程控制信號IFIR(MPC)Update_Pc = 0PC(PC)+1IDA(RIR25:21)Reg_Sign = 00, Ex_Sign = 1B(RIR20:16)IMM(Sign-extend(IR15-0)IR2IREXALUO(A)+(IMM
29、)Alu_Sign1 = 0, Alu_Sign2 = 0, Alu_Sign3 = 0000, sel1 = 0, sel2 = 0IR3IR2B2BMEMMemoryALUO (B2)Mem_Write = 1表10. SW指令操作流程及控制信號4. 指令執(zhí)行狀態(tài)轉(zhuǎn)換圖可畫出其對應(yīng)的狀態(tài)轉(zhuǎn)移圖,如圖9所示。圖9. 狀態(tài)轉(zhuǎn)移圖5. 引腳綁定表名稱綁定引腳功能clkBTN3-A7CPU時鐘resetSW7-N3復(fù)位信號sel_seg0SW4-G3sel_seg控制七段顯示的具體內(nèi)容。000:pc_now 001: id_rega 010:id_regb 011:ex_alua100:ex_al
30、ub 101:ex_aluo 110: if_ins 111:wb_datasel_seg1SW5-F3sel_seg2SW6-E2L1LD7(G1)clk對應(yīng)的LEDL2LD6(P4)reset對應(yīng)的LEDL3LD5(N4)of對應(yīng)的LEDL4LD4(N5)cf對應(yīng)的LEDL5LD3(P6)update_pc對應(yīng)的LEDL6LD2(P7)sel_seg0對應(yīng)的LEDL7LD1(M11)sel_seg1對應(yīng)的LEDL8LD0(M5)sel_seg2對應(yīng)的LEDa_to_g0CG(M12)控制七段碼顯示a_to_g1CF(L13)a_to_g2CE(P12)a_to_g3CD(N11)a_to_
31、g4CC(N14)a_to_g5CB(H12)a_to_g6CA(L14)an0AN0(K14)控制七段碼具體顯示位an1AN1(M13)an2AN2(J12)an3AN3(F12)clk1MCLK(B8)七段碼顯示的時鐘表11. 引腳綁定表6. 測試程序綜合考慮到我們選擇的指令集以及FPGA開發(fā)板的硬件資源情況,我們打算用下面三個程序來測試我們的設(shè)計方案。程序1主要用來測試算邏運算和訪存指令的正確性,程序如表12所示。主存位置指令結(jié)果描述機(jī)器指令的機(jī)器碼十六進(jìn)制二進(jìn)制00000000addi reg0, reg1, #2reg1 = reg0 + 2200100020010000000000
32、001000000000000001000000001andi reg1, reg2, #1reg2 = reg1 & 1302200010011000000100010000000000000000100000002ori reg1, reg2, #1reg2 = reg1 | 1342200010011010000100010000000000000000100000003sllv reg1, reg2, reg2reg2 = reg1 << reg2002210040000000000100010000100000000010000000004slt reg1, re
33、g2, reg2reg2 = (reg1 < reg2)0022102A0000000000100010000100000010101000000005sw reg0, reg1, #0memreg0 + 0 = reg1AC0100001010110000000001000000000000000000000006lw reg0, reg3, #0reg3 = memreg0 + 08C03000010001100000000110000000000000000表12. 測試程序1程序2主要用來測試軟中斷和硬中斷功能,程序如表13所示。主存位置指令結(jié)果描述機(jī)器指令的機(jī)器碼十六進(jìn)制二進(jìn)制
34、00000000addi reg0, reg1, #2reg1 = reg0 + 2200100020010000000000001000000000000001000000001andi reg1, reg1, #FFFFreg1 = reg1 + FFFF2021FFFF0010000000100001111111111111111100000002addi reg0, reg1, #1reg1 = reg0 + 1200100010010000000000001000000000000000100000003addi reg0, reg1, #2reg1 = reg0 + 2200100
35、020010000000000001000000000000001000000004addi reg0, reg1, #3reg1 = reg0 + 3200100030010000000000001000000000000001100000005addi reg0, reg1, #4reg1 = reg0 + 420010004001000000000000100000000000001000000000Apush壓PC、R6-1F800000E111110000000000000000000000011100000000EpopPC、R6-1出棧FC05000011111100000001010000000000000000表13. 測試程序2程序3主要用來測試跳轉(zhuǎn)指令的正確性,由于push和pop指令中已經(jīng)隱含了J指令,因此這里只對bne指令進(jìn)行測試,程序如表14所示。主存位置指令結(jié)果描述機(jī)器指令的機(jī)器碼十六進(jìn)制二進(jìn)制00000000addi reg0, re
溫馨提示
- 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年度小產(chǎn)權(quán)房屋買賣合同(含土地權(quán)屬變更手續(xù))
- 二零二五年度隱名股東投資股權(quán)代持合同糾紛解決協(xié)議
- 二零二五年度重慶健身俱樂部勞動合同附入口健康管理協(xié)議
- 2025年度個人商業(yè)地產(chǎn)抵押貸款合同書規(guī)范
- 2025年度個人商鋪租賃合同裝修工程監(jiān)督合同4篇
- 二零二五年度廚師個人廚房團(tuán)隊聘用合同集錦2篇
- 2025年度個人住宅地下室防水檢測合同范本
- 2025年度現(xiàn)代農(nóng)業(yè)設(shè)施建設(shè)及運維服務(wù)合同范本4篇
- 二零二五年度酒店窗簾定制安裝工程合同3篇
- 2025年度模具采購合同與模具制造過程質(zhì)量控制合同4篇
- 2025-2030年中國草莓市場競爭格局及發(fā)展趨勢分析報告
- 華為智慧園區(qū)解決方案介紹
- 奕成玻璃基板先進(jìn)封裝中試線項目環(huán)評報告表
- 廣西壯族自治區(qū)房屋建筑和市政基礎(chǔ)設(shè)施全過程工程咨詢服務(wù)招標(biāo)文件范本(2020年版)修訂版
- 人教版八年級英語上冊期末專項復(fù)習(xí)-完形填空和閱讀理解(含答案)
- 2024新版有限空間作業(yè)安全大培訓(xùn)
- GB/T 44304-2024精細(xì)陶瓷室溫斷裂阻力試驗方法壓痕(IF)法
- 年度董事會工作計劃
- 《退休不褪色余熱亦生輝》學(xué)校退休教師歡送會
- 02R112拱頂油罐圖集
- 2021年新教材重慶生物高考真題(含答案解析)
評論
0/150
提交評論