计算机原理与设计
实验报告
实验三多周期MIPS CPU的控制部件用有限状态机实现多周期CPU的控制部
件
一.实验目的
1、了解MIPS—CPU控制器的功能和工作原理;
2、掌握用有限状态机技术实现多周期控制器的方法;
3、熟练掌握用Verilog HDL语言设计多周期控制器的方法;
4、熟练掌握对多周期控制器的仿真实验验证和硬件测试两种调试方法;
5、掌握向MIPS-CPU顶层数据通路中增加控制单元的方法,并通过仿真验证和硬件测试两种方法对电路进行故障定位的调试技术。
二.实验内容
(1)MIPS—CPU控制器的有限状态机设计,根据MIPS—CPU 各种类型指令执行要求和有限状态机的设计原理,将多周期控制器的指令执行划分为多个状态,确定每一种指令的有限状态机,最后归纳为完整的多周期控制器有限状态机。
通过Verilog HDL语言实现多周期控制器有限状态机。
(2)根据MIPS—CPU控制器的接口要求,在有限状态机的
基础上,用Verilog HDL实现完整的MIPS—CPU控制器的设计,并根据仿真波形,验证设计的正确性,并对出现的故障进行定位,修改程序,重新编译;
(3)设计控制器的硬件下载测试方案。
将编译通过的电路下载到实验台中。
根据硬件调试结果验证设计的正确性,并对出现的故障进行定位,修改程序重新编译;最终完成控制器的硬件电路设计;
(4)在MIPS—CPU指令系统的数据通路基础上,增加控制单元电路,并进行编译,仿真波形和调试。
根据仿真波形,验证设计的正确性,并对出现的故障进行定位,修改程序,重新编译;
(5)对增加了控制单元的顶层数据通路设计硬件下载测试方案。
将编译通过的电路下载到实验台中。
根据硬件调试结果验证设计的正确性,并对出现的故障进行定位,修改程序,重新编译;最终完成增加了控制单元的顶层数据通路设计。
三.实验原理与步骤
1.把指令执行分成多个阶段,每个阶段在一个时钟周期内完成
(1).时钟周期以最复杂阶段所花时间为准
(2).尽量分成大致相等的若干阶段
(3).每个阶段内最多只能完成:1次访存或1次寄存器堆读/写或1次ALU
2.每步都设置相应的存储元件,执行结果都在下个时钟开始保存到相应单元
3.认真阅读书上的控制部件代码后,将其按照电路图进行拆分,拆分为三个部件,并在顶层模块中连接线路。
四.实验源代码
D触发器源代码:
下一状态部件源代码:
输出函数部件源代码:
五.EDA阶段的实验结果(“编译”、“仿真”等)
仿真结果如上图。
六.实验电路结构图
七.实验按键显示说明及引脚分配
1、本实验按键及显示说明
(1)按键说明
按键对应功能
键1 op
键2 op
键3 func
键4 func
键7 clk
键8 clrn (2)显示说明
引脚分配表:
pcsource[1] PIN_18
pcsource[0] PIN_17
m2reg PIN_15
regrt PIN_14
jal PIN_13 八.测试时的电路总体结构及其说明
多周期CPU控制部件的状态转移图
多周期CPU控制部件的电路结构图
实验电路图
九.测试计划(包括计划进行的系统测试、每一测试的测试过程、测试所需的测试数据、预期结果数据等)及其相关说明
下一状态函数的真值表
实验结果如下: 输入
输出
o p [5..0]
f u n c 5..0[]
状态
指令
Z w p c P c s o u r c e [1:
0] w i r
i o r d
w m e m
a l u c [3:0]
s e l p c s h i f t a l u s r c b [1:0]
s e x t
w r e g
m 2r e g
r e g r t
j a l
X X sif x X 1
00 0 0 0
X000 1 0
01 1 0 0 0 0
000011 X sid
i_j X 1 11 0 0 0 X000 1 0 00 1 0 0 0 0
000011
X
i_jal X 1 11 1 0 0 X000 1 0 01 1 1 0 0 1
000000 001000 i_jr X 1 10
0 0 0 X000
0 0 00
1 0 0 0 0 X
X
i-ot
X 0 00 0 0 X0 1 0 0
1 0 0 0 0
与预期实验结果相符。
十.关于实验电路设计的其他说明
q(state)值暂未进行输出。
十一.实验心得
这次实验将控制部件拆分花费了大量的时间,也使得我对于Verilog语言加深了理解和掌握。
对cpu的控制部件的结构和原理进行了深入的了解,对以后的学习起到了重要的作用。