一、課程設計題目
基於FPGA(或者Logisim 軟件仿真)實驗平台,完成16位單周期CPU設計。
二、課程設計的目的與意義
本課程設計綜合利用計算機組成原理課程所學的理論知識,並結合其單元實驗中所積累的計算機部件設計和調試方法,設計出一台具有自定義指令系統的簡單計算機系統。所設計的系統能在基於FPGA(或者Logisim)平台上運行一段用戶程序,通過檢查程序結果的正確性來判斷所設計的計算機系統的正確性。
三、課程設計的內容
設計模型機系統的指令系統、總體結構和時序信號。要求所設計的整機系統能支持自動和單步運行方式,能正確地執行存放在主存中的用戶程序,並且對主要的數據流和控制流通過適當方式顯示;驗證實驗結果。
① 該單周期CPU實現的指令如下:(從中至少選取10條指令,其余指令可以自己設計;至少要選擇1條R-型指令、1條立即數運算指令、Load指令(讀)、Store指令(寫)、1條分支指令和無條件轉移指令;)
表1選取指令及格式
指令 15~12 11~10 9~8 7~6 5~3 2~0 指令功能
1 or 0 rs rt rd 0 0 $rd = $rs | $rt
2 and 0 rs rt rd 0 1 $rd = $rs & $rt
3 add 0 rs rt rd 0 2 $rd = $rs + $rt
4 sub 0 rs rt rd 0 3 $rd = $rs - $rt
5 sllv 0 rs rt rd 0 4 $rd = $rs << $rt 邏輯左
6 srlv 0 rs rt rd 0 5 $rd = $rs >> $rt 邏輯右
7 srav 0 rs rt rd 0 6 $rd = $rs >> $rt 算術右
8 slt 0 rs rt rd 0 7 $rd = ($rs < $rt) ? 1 :0
10 lui 2 0 rt immediate-u $rt = imm << 8
11 ori 3 rs rt immediate-u $rt = $rs | imm
12 andi 4 rs rt immediate-u $rt = $rs & imm
13 addi 5 rs rt immediate-s $rt = $rs + imm
14 lw 6 rs rt immediate-s $rt = MEM[$rs + imm]
15 sw 7 rs rt immediate-s MEM[$rs+imm] = $rt
16 beq 8 rs rt offset-s beq =?
17 bne 9 rs rt offset-s bne != ?
18 bgt 10 rs rt offset-s bgt >?(有符號比較)
19 jump 11 jump address jump
20 halt 12 0 halt (時鍾暫停)
②編寫一段包含所有指令的測試程序,將測試程序的機器語言存入ROM,運行測試程序,並對運行結果與理論運算結果對比(用表格對比), 判斷每一步對錯。
四、課程設計步驟說明
-
指令系統的確定;
(按自己實際選擇的指令系統,用表格表示)
R形指令
立即數liu形指令
讀寫lw,sw形指令 -
子電路設計圖
譯碼器電路圖
寄存器圖
擴展器圖
主譯碼器圖
ALU圖
74ls181
下地址器圖
輔助譯碼器
主譯碼器2
OF電路
ZF電路
CF電路
3) 繪制主電路
(包括數據通路、控制單元、指令存儲器、數據存儲器等);(按自己實際完成的系統畫出主電路圖)
主電路
4) 用戶程序編寫,機器語言存入ROM;
用戶程序清單(包括每一條指令的功能說明)
- 功能測試——裝入原始數據,運行並記錄每一條指令的執行結果,形成驗證表格,判斷。
預先存入R中的數據:全為0
預先存入RAM中的數據:
0到3分別存入00H,05H,03H
指令運行和驗證(如下表,按自己實際情況設置)
六、實驗結果與分析
-
實驗結果和分析
-
錯誤或異常現象分析