欢迎光临散文网 会员登陆 & 注册

多周期MIPS(微程序)8指令CPU

2022-06-20 15:18 作者:计算技术研究所  | 我要投稿

1、   数据通路设计

首先根据慕课中华科给出的数据通路连接自己的数据通路

华科慕课数据通路参考
数据通路

 这里的取地址很有讲究

地址译码

因为MIPS架构是按照字编址,且MIPS的字长为定长的32位即四字节,所以PC=PC+1是实际上的PC=PC+4,且RAM容量为,又因为,所以取指阶段Men[PC]->IR的时候需要把PC寄存器的2-11位送入RAM。

PC使能

还要注意Branch细分出来的Beq和Bne指令的连接,结合微程序控制器,可以看出来Beq和Bne只要有一个有效的时候PCSrc就为真,可以设计出如上的逻辑电路。

立即数扩展

容易得知Beq与Alu的equal信号对应,所以直接与equal做与运算,Bne对应Alu的不相等,所以equal要先取非再与Bne做与运算。两个与运算的结果只要有一个有效即可,所以经过或门形成PCsrc。

根据数据通路以及所学知识可得,需要将I型指令的imm立即数带符号扩展到32位才能正常做运算。

总周期的部分可以用微地址来和Syscall的微地址13来进行对比运算,只要没有停机,周期就一直在增加,因此可以设计一个下图所示的电路

总周期计算

2、    微程序控制器设计

1、指令译码逻辑

根据以上指令的OpCode字段和FUNCT字段结合logism自带的比较器,可以设计出指令译码逻辑部分。

2、ALU控制逻辑

根据下方提示,00的时候ALU做加法,01的时候ALU做减法,10的时候ALU的功能由FUNC字段决定,又因为FUNC字段跟R型指令关联,且Syscall不做运算,SLT做有带符号比较运算,ADD做加法运算,因此可以设计出以下简易的ALU控制逻辑部分

4、 实现微程序地址逻辑转移

根据慕课给出的Excel表格,结合之前设计的ALU控制逻辑,加上电路分析功能,设计出的微程序地址转移电路如下

微地址转移电路

5、根据状态图构建微程序

结合状态图、数据通路和控制信号说明


加上Excel表格

可以看出来,取指令的时候,PC=PC+4,所以ALUSrcB=01,Ir寄存器和PC寄存器要写入数据,对应的使能信号为1,还要读取存储器里面的指令,MenRead也为1。根据状态转换图,只有译码的时候发生了跳转,其他指令都是根据下址字段运行,所以译码指令的P=1。Beq和Bne的PCSrc字段,根据数据通路图或者状态转换图中的指令功能可以得出是1。


可以设计出控制存储器


3、测试:

测试结果


多周期MIPS(微程序)8指令CPU的评论 (共 条)

分享到微博请遵守国家法律