一、课程设计题目
基于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
指令运行和验证(如下表,按自己实际情况设置)
六、实验结果与分析
-
实验结果和分析
-
错误或异常现象分析