《單周期CPU設計》實驗報告_第1頁
《單周期CPU設計》實驗報告_第2頁
《單周期CPU設計》實驗報告_第3頁
《單周期CPU設計》實驗報告_第4頁
《單周期CPU設計》實驗報告_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、計算機組成原理與接口技術實驗 計算機組成原理與接口技術實驗實驗報告學院名稱:學生姓名:學號:專業(yè)(班級):合作者:時間:2016年4月25日成績:實驗二: 一. 實驗目的1. 掌握單周期CPU數據通路圖的構成、原理及其設計方法;2. 掌握單周期CPU的實現方法,代碼實現方法;3. 認識和掌握指令與CPU的關系;4. 掌握測試單周期CPU的方法。二. 實驗內容設計一個單周期CPU,該CPU至少能實現以下指令功能操作。需設計的指令與格式如下:=> 算術運算指令(1)add rd , rs, rt (說明:以助記符表示,是匯編指令;以代碼表示,是機器指令)000000rs(5位)rt(5位)r

2、d(5位)reserved功能:rdrs + rt。reserved為預留部分,即未用,一般填“0”。(2)addi rt , rs ,immediate 000001rs(5位)rt(5位)immediate(16位)功能:rtrs + (sign-extend)immediate;immediate符號擴展再參加“加”運算。 (3)sub rd , rs , rt000010rs(5位)rt(5位)rd(5位)reserved完成功能:rdrs - rt => 邏輯運算指令(4)ori rt , rs ,immediate 010000rs(5位)rt(5位)immediate(16

3、位)功能:rtrs | (zero-extend)immediate;immediate做“0”擴展再參加“或”運算。(5)and rd , rs , rt010001rs(5位)rt(5位)rd(5位)reserved功能:rdrs & rt;邏輯與運算。 (6)or rd , rs , rt010010rs(5位)rt(5位)rd(5位)reserved功能:rdrs | rt;邏輯或運算。 => 傳送指令 (7)move rd , rs 100000rs(5位)00000rd(5位)reserved功能:rdrs + $0 ;$0=$zero=0。=> 存儲器讀/寫指

4、令(8)sw rt ,immediate(rs) 寫存儲器100110rs(5位)rt(5位)immediate(16位) 功能:memoryrs+ (sign-extend)immediatert;immediate符號擴展再相加。(9) lw rt , immediate(rs) 讀存儲器100111rs(5位)rt(5位)immediate(16位)功能:rt memoryrs + (sign-extend)immediate;immediate符號擴展再相加。 => 分支指令 (10)beq rs,rt,immediate 110000rs(5位)rt(5位)immediate(

5、位移量,16位)功能:if(rs=rt) pcpc + 4 + (sign-extend)immediate <<2;特別說明:immediate是從PC+4地址開始和轉移到的指令之間指令條數。immediate符號擴展之后左移2位再相加。為什么要左移2位?由于跳轉到的指令地址肯定是4的倍數(每條指令占4個字節(jié)),最低兩位是“00”,因此將immediate放進指令碼中的時候,是右移了2位的,也就是以上說的“指令之間指令條數”。=> 停機指令(11)halt 11111100000000000000000000000000(26位)功能:停機;不改變PC的值,PC保持不變。三

6、. 實驗原理 單周期CPU指的是一條指令的執(zhí)行在一個時鐘周期內完成,然后開始下一條指令的執(zhí)行,即一條指令用一個時鐘周期完成。電平從低到高變化的瞬間稱為時鐘上升沿,兩個相鄰時鐘上升沿之間的時間間隔稱為一個時鐘周期。時鐘周期一般也稱振蕩周期(如果晶振的輸出沒有經過分頻就直接作為CPU的工作時鐘,則時鐘周期就等于振蕩周期。若振蕩周期經二分頻后形成時鐘脈沖信號作為CPU的工作時鐘,這樣,時鐘周期就是振蕩周期的兩倍。) CPU在處理指令時,一般需要經過以下幾個步驟: (1) 取指令(IF):根據程序計數器PC中的指令地址,從存儲器中取出一條指令,同時,PC根據指令字長度自動遞增產生下一條指令所需要的指令

7、地址,但遇到“地址轉移”指令時,則控制器把“轉移地址”送入PC,當然得到的“地址”需要做些變換才送入PC。 (2) 指令譯碼(ID):對取指令操作中得到的指令進行分析并譯碼,確定這條指令需要完成的操作,從而產生相應的操作控制信號,用于驅動執(zhí)行狀態(tài)中的各種操作。 (3) 指令執(zhí)行(EXE):根據指令譯碼得到的操作控制信號,具體地執(zhí)行指令動作,然后轉移到結果寫回狀態(tài)。 (4) 存儲器訪問(MEM):所有需要訪問存儲器的操作都將在這個步驟中執(zhí)行,該步驟給出存儲器的數據地址,把數據寫入到存儲器中數據地址所指定的存儲單元或者從存儲器中得到數據地址單元中的數據。 (5) 結果寫回(WB):指令執(zhí)行的結果或

8、者訪問存儲器中得到的數據寫回相應的目的寄存器中。 單周期CPU,是在一個時鐘周期內完成這五個階段的處理。取指令IF指令譯碼ID指令執(zhí)行EXE存儲器訪問MEM結果寫回WB圖1 單周期CPU指令處理過程MIPS32的指令的三種格式:R類型:31 26 25 21 20 16 15 11 10 6 5 0oprsrtrdsafunc 6位 5位 5位 5位 5位 6位I類型:31 26 25 21 20 16 15 0oprsrtimmediate6位 5位 5位 16位J類型:31 26 25 0opaddress6位 26位其中,op:為操作碼;rs:為第1個源操作數寄存器,寄存器地址(編號)是

9、0000011111,001F;rt:為第2個源操作數寄存器,或目的操作數寄存器,寄存器地址(同上);rd:為目的操作數寄存器,寄存器地址(同上);sa:為位移量(shift amt),移位指令用于指定移多少位;func:為功能碼,在寄存器類型指令中(R類型)用來指定指令的功能;immediate:為16位立即數,用作無符號的邏輯操作數、有符號的算術操作數、數據加載(Laod)/數據保存(Store)指令的數據地址字節(jié)偏移量和分支指令中相對程序計數器(PC)的有符號偏移量; address:為地址。圖2 單周期CPU數據通路和控制線路圖圖2是一個簡單的基本上能夠在單周期上完成所要求設計的指令功

10、能的數據通路和必要的控制線路圖。其中指令和數據各存儲在不同存儲器中,即有指令存儲器和數據存儲器。訪問存儲器時,先給出地址,然后由讀/寫信號控制(1-寫,0-讀。當然,也可以由時鐘信號控制,但必須在圖上標出)。對于寄存器組,讀操作時,先給出地址,輸出端就直接輸出相應數據;而在寫操作時,在 WE使能信號為1時,在時鐘邊沿觸發(fā)寫入。圖中控制信號作用如表1所示,表2是ALU運算功能表。表1 控制信號的作用控制信號名狀態(tài)“0”狀態(tài)“1”PCWrePC不更改,相關指令:haltPC更改,相關指令:除指令halt外ALUSrcB來自寄存器堆data2輸出,相關指令:add、sub、or、and、move、b

11、eq來自sign或zero擴展的立即數,相關指令:ori、sw、lwALUM2Reg來自ALU運算結果的輸出,相關指令:add、sub、ori、or、and、move來自數據存儲器(Data MEM)的輸出,相關指令:lwRegWre無寫寄存器組寄存器,相關指令:sw、halt寄存器組寫使能,相關指令:add、sub、ori、or、and、move、lwInsMemRW讀指令存儲器(Ins. Data),初始化為0寫指令存儲器DataMemRW讀數據存儲器,相關指令:lw寫數據存儲器,相關指令:swExtSel相關指令:ori,(zero-extend)immediate(0擴展)相關指令:s

12、w、lw、beq,(sign-extend)immediate(符號擴展)PCSrcPCPC+4,相關指令:add、sub、ori、or、and、move、sw、lw、beq(zero=0)PCPC+4+(sign-extend)immediate,同時zero=1,相關指令:beqRegOut寫寄存器組寄存器的地址,來自rt字段,相關指令:ori、lw寫寄存器組寄存器的地址,來自rd字段,相關指令:add、sub、and、or、moveALUOp2.0ALU 8種運算功能選擇(000-111),看功能表相關部件及引腳說明:Instruction Memory:指令存儲器, Iaddr,指令存

13、儲器地址輸入端口 IDataIn,指令存儲器數據輸入端口(指令代碼輸入端口) IDataOut,指令存儲器數據輸出端口(指令代碼輸出端口) RW,指令存儲器讀寫控制信號,為1寫,為0讀Data Memory:數據存儲器, Daddr,數據存儲器地址輸入端口 DataIn,數據存儲器數據輸入端口 DataOut,數據存儲器數據輸出端口 RW,數據存儲器讀寫控制信號,為1寫,為0讀Register File:(寄存器組) Read Reg1,rs寄存器地址輸入端口 Read Reg2,rt寄存器地址輸入端口 Write Reg,將數據寫入的寄存器端口,其地址來源rt或rd字段 Write Data

14、,寫入寄存器的數據輸入端口 Read Data1,rs寄存器數據輸出端口 Read Data2,rt寄存器數據輸出端口 WE,寫使能信號,為1時,在時鐘上升沿寫入ALU: result,ALU運算結果 zero,運算結果標志,結果為0輸出1,否則輸出0表2 ALU運算功能表 ALUOp2.0功能描述000A + B加001A B減010B A減011A B或100A B與101/A BA非與B110A Å B異或111A B同或需要說明的是根據要實現的指令功能要求畫出以上數據通路圖,和確定ALU的運算功能(當然,以上指令沒有完全用到提供的ALU所有功能,但至少必須能實現以上指令功能操

15、作)。從數據通路圖上可以看出控制單元部分需要產生各種控制信號,當然,也有些信號必須要傳送給控制單元。從指令功能要求和數據通路圖的關系得出以上表1,這樣,從表1可以看出各控制信號與相應指令之間的相互關系,根據這種關系就可以得出控制信號與指令之間的關系表(留給學生完成),再根據關系表可以寫出各控制信號的邏輯表達式,這樣控制單元部分就可實現了。指令執(zhí)行的結果總是在下個時鐘到來前開始保存到寄存器、或存儲器中,PC的改變也是在這個時候進行。另外,值得注意的問題,設計時,用模塊化的思想方法設計,關于ALU設計、存儲器設計、寄存器組設計等等,也是必須認真考慮的問題??梢詤⒖计渌Y料文檔,里面有相應的設計方法

16、介紹.四. 實驗器材電腦一臺、Xilinx ISE 軟件一套。五. 實驗分析與設計模塊分析:根據單周期CPU數據通路和控制線路圖,大致可以將CPU分為右圖七個模塊,每個模塊負責一個部分的功能:(代碼存于code文件夾)(圖的下方為各個模塊的變量,在后圖會出現,故省略)CPU:負責各模塊之間的數據的傳輸,如同C語言中的頭文件,將其他的子模塊連接在一起,其中clk信號在此聲明。CU:CU負責指令的解析,即將由ROM讀取的指令轉化為操作發(fā)送給其他子模塊進行操作。PC:負責指令的計數,已經指令的向前或向后跳動,每個時鐘周期計數加一。ROM:即存儲器,發(fā)送信息,CPU的指令文件即由ROM讀取,只讀,在電

17、腦中表現為BIOS的數據文件。RAM:內存,可讀可寫,用來保存臨時數據,匯編語言中的$s的儲存地點。RF:寄存器,可讀可寫,數據由寄存器發(fā)送向ALU計算,匯編語言中的$t的儲存地點。SE:產生立即數,將發(fā)送過來的半數零拓展或符號拓展。ALU:算術單元,加減乘除邏輯運算等等,都在這里計算。測試數據輸入00000000000000000000000000000000(不操作)可得到如上圖,CPU正確運行實驗測試:(根據實驗內容指令表格)0,1,2,3 算術運算指令 4,5,6 邏輯運算指令7 傳送指令 8,9 存儲器讀/寫指令10,11 分支指令 14 停機指令指令序號oprsrtrdreserv

18、ed00000000000100010000110000 0000 000add$1$2$3$3 = $1 + $2 =0100000100011001000000 0000 0000 0011addi$3$4$4 = $3 + 3 = 3200000100100000100000 0000 0000 1000addi$4$2$2 = $4 + 8 = 1130000100001000100000010000 0000 000sub$2$4$1$1 = $2 - $4 = 8401000000010001010000 0000 0000 1000ori$2$5$5 = $2 | (上式)= 1

19、150100010000100010001100000 0000 000and$1$2$6$6 = $1 & $2 = 860100100000100010001110000 0000 000or$1$2$7$7 = $1 | $2 = 1171000000011100000010000000 0000 000move$7$zero$8$8 = $7810011001000000010000 0000 0000 0100sw$8$1RAM$8 + 4 = $1910011100001010000000 0000 0000 0100lw$1$8$8 = 01011000000001000100000 0000 0000 0000beq$1$2$1 != $2, pc = pc + 11111000000010001010000 0000 0000 0001beq$2$5$2 = $5, pc = pc + 21200000100001000100000 0000 0000 0001addi$1$2此指令被跳過13

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論