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