設(shè)計是基于MIPS指令集的單周期,多周期,流水線CPU。最終實現(xiàn)也是在FPGA板上跑了一個小程序,開發(fā)版使用的是basys3.基礎(chǔ)指令集等在此就不在為大家細說了,他人的博客已經(jīng)講述的很清晰了。代碼和數(shù)據(jù)通路均已上傳至CSDN下載頻道,大家可以自行下載。我們這里先講CPU究竟是如何進行操作的。
CPU再進行一次操作的時候?qū)嶋H上就是在指令存儲器中讀出一條指令,在取出這條指令之后,將他的前6為拆分出來,進行判別他是哪種指令。根據(jù)前六位操作碼的分類來控制數(shù)據(jù)通路中的不同部件的使能來控制數(shù)據(jù)的流向。
R型指令就是選擇將Rs和Rt作為地址訪問寄存器堆,讀出其中數(shù)據(jù)輸入至ALU的數(shù)據(jù)讀口,由func來確定ALU的運算的類型,計算結(jié)束之后再將輸出的數(shù)據(jù)寫會到寄存器堆的Rw地址對應(yīng)的存儲單元。
I型指令的基礎(chǔ)指令和R型的基本形似,只不過將數(shù)據(jù)busB改換為立即數(shù)進行零擴展后的數(shù)據(jù)操作,寫回至Rt中。I型指令的非常重要的三條指令為load(加載),store(存儲),beq(分支跳轉(zhuǎn))。load,store指令將Rs和立即數(shù)符號擴展后相加作為內(nèi)存單元地址,load指令是將內(nèi)存單元內(nèi)容送至Rt,store是將Rt中的值送至內(nèi)存單元。beq指令是將rshert之中的數(shù)據(jù)進行比較,相等則跳轉(zhuǎn)到立即數(shù)和當前指令所處位置和1三者相加的位置。
三種指令如何操作了解了,下面設(shè)計就會很簡單,根據(jù)不同的指令的不同數(shù)據(jù)通路,讓主控單元輸出不同控制數(shù)據(jù)正常流入下一級。
講的比較簡略,如有不理解的歡迎提問或者留言。
-
FPGA
+關(guān)注
關(guān)注
1629文章
21750瀏覽量
604070
發(fā)布評論請先 登錄
相關(guān)推薦
評論