Logism MIPS單周期8指令CPU設計
【實驗任務】
1、??? 單周期MIPS(硬布線)
2、??? 單周期硬布線控制器
【實驗進度表格】
一、單周期MIPS(硬布線)
MIPS指令格式有R型、I型和J型三種
? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
利用分線器,可以將不同類型的指令的不同段分離出來

根據MOOC課程所給出的數據通路

1、PCsrc信號的設計
結合硬布線控制器,可知Beq和Bne對應數據通路中的Branch信號,Beq和Bne只要有一個有效時PCsrc為真,因此可設計出如下的邏輯電路:

2、輸出儲存器的地址碼的設計:


三十二位的輸入信號經過分線器的選擇,均選取2-11位,即低二位不用,高二十位也不用。MIPS指令的字長位定長的32位即4字節(jié),所以指令計數器形式上的PC=PC+1實際上是PC=PC+4,而,所以低兩位不會變化故不取。而儲存器的容量為1024=,所以只取2-11位,高20位也不取。
3、??? ALU輸入端的設計

根據數據通路以及所學知識可得,需要將I型指令的imm立即數帶符號擴展到32位才能做運算。

總的數據通路為:

二、單周期硬布線控制器的設計
1、指令譯碼邏輯
根據以上指令的OpCode字段和FUNCT字段結合logism自帶的比較器,可以設計出指令譯碼邏輯部分。


下方提示:SysCall輸入特殊的R型指令,所以R_TYPE指令形成的信號中SysCall要取反再與其他R型指令取或的結果做與。而不是直接三個均取或。
2、ALU控制邏輯
由指令控制邏輯,可得只有SLT需要用到ALU的比較運算,其他均為加法運算,所以可以直接復制一個SLT的隧道加上數據選擇器,直接設計ALU的控制邏輯,不需要用到給定的OP和FUNC字段的隧道。


3、機器輸出信號的控制
根據所給出控制信號的產生條件,結合所學數字邏輯知識,可以設計輸出控制信號的邏輯


總的電路圖如下:

實驗結果:


Mars4.5調試結果:

【設計過程、實驗心得、意見建議】
本次實驗設計了單周期MIPS CPU(硬布線),借助MOOC給定的數據通路,可以很快的連接好大致框架,其中PCsrc和輸入儲存器的地址段的選擇我認為是本實驗的一個難點。
PCsrc要根據數據通路中所給的信息,結合實驗所給出的硬布線控制器的基本框架,對慕課所給數據通路進行適當的擴展,才能正確輸出PCsrc信號。
輸入儲存器的地址對我的實驗進度造成了較大影響,開始一直想不通32位的信號要怎么切分為十位,取最低十位一直不對,后來結合之前所做的RAM實驗以及上課老師所講的PC指令計數器在MIPS中是PC=PC+4,順利的選出了正確的十位地址碼。
在設計機器輸出信號的時候要注意下面所給的提示,比如SysCall不在正常的R型指令中,所以設計R型指令信號的時候要對其進行取反處理。ALU控制器的設計中,本來還以為需要設計多種運算方式,結果查看指令概述發(fā)現只需要設計能選擇兩種運算方式的控制器即可,故不用所給的OP和FUNC隧道,直接選擇SLT隧道加上數據選擇器設計一個簡潔的SLT控制器。