数字电路设计之五级流水线设计(CPU)

本文介绍了作者在大二时设计的五级流水线CPU,包括实验步骤和原理。内容涉及取指令、指令译码、执行、存储器访问和寄存器回写阶段,并详细讨论了加减电路、比较电路和算术右移运算的设计考虑。
摘要由CSDN通过智能技术生成

这个流水线应该是我大二上的时候的最高水平了,现在看起来确实很简单,代码风格也不是很好,没有模块化,而且这些指令也不是严格的mips的所有指令,是自己定义的一些。但是放在博客里也算是对自己过去的一个总结吧!

现在再看这个代码,我觉得写得太恶心了,没有注释,没有说清楚关键的地方。我自己都忘了为什么这么写~~

后来发现有非常坑爹的Bug!!!!祝好!!!我没有改过来了~~~

• 实验步骤

1.先写好CPU的指令集。

 

    

          

2.根据指令集先把一些基本的指令实现,比如LOAD,STORE等,把大概的流水线先画出框图。画出框图后,把基本指令实现。调试,仿真。

     

3.在2的基础上加入别的指令,考虑好hazard的问题


4.优化代码代码,调试,simulation。

 

• 实验原理

流水线是数字系统中一种提高系统稳定性和工作速度的方法,广泛应用于高档CPU的架构中。根据MIPS处理器的特点,将整体的处理过程分为取指令(IF)、指令译码(ID)、执行(EX)、存储器访问(MEM)和寄存器会写(WB)五级,对应多周期的五个处理阶段。一个指令的执行需要5个时钟周期,每个时钟周期的上升沿来临时,此指令所代表的一系列数据和控制信息将转移到下一级处理。

流水线寄存器负责将流水线的各部分分开,共有IF/ID、ID/EX、EX/MEM、MEM/WB四组。根据前面的介绍可知,四组流水线寄存器要求不完全相同,因此设计也有不同考虑。

(1)EX/MEM、MEM/WB两组流水线寄存器只是普通寄存器。

(2)当流水线发生数据跳转时,需清空ID/EX流水线寄存器而插入一个气泡,因此ID/EX流水线寄存器是一个带同步清零功能的寄存器。

需要注意的是,由于仿真对初始值的要求,上述寄存器都应考虑有reset信号的接入,以提供仿真时各寄存器的初值。

 

流水线:

 

             取址:处理器从指令存储器中读取指令

 

             译码:处理器从寄存器文件中读取源操作数并对指令译码产生控制信号

 

              执行:处理器使用ALU执行计算   

 

              存储器访问:处理器从数据存储器中读取或者写入数据

 

              写回:若是LOAD指令,将结果写回寄存器文件。

 

     >>加、减电路的设计考虑

减法、比较及部分分支指令(BN、BNE等)均可用加法器和必要的辅助电路来实现。对ALU来说,它的两个操作数输入时都已经是补码形式,当要完成两个操作数的减法时,即A-B补,可将减法转换为加法,利用加法器来实现:

›A-B= A+(-B)= A+(B)= A+B补)反+1

加法器完成的功能为:

sum=A+~B+1即可完成加减运算。

由于32位加法器的运算速度影响着CPU频率的高低,因此设计一个高速加法器尤为重要,本实验采用的是超前进位加法器,不过弄出来的速度比不过描述级语言写出的加法,所以后来加法就改成直接加了。

比较电路的设计考虑

对于比较运算,如果最高为不同,即A[31]B[31],则根据A[31]B[31]决定比较结果,但应注意有符号数和无符号数比较运算的区别。

①在有符号数比较SLT运算中,判断A<B的方法为:

A为负数、B0或正数:A[15]&&(~B[15])

AB符号相同,A-B为负:(A[15]~^B[15]) && sum[15]

SLTResult=(A[15]&&(~B[15])) ||( (A[15]~^B[15]) && sum[15])

②在无符号数比较SLT运算中,判断A<B的方法为:

A最高位为0B最高位为1(~A[15] )&&B[15]

AB最高位相同,A-B为负:(A[15]~^B[15]) && sum[15]

SLTResult=((~A[15] )&&B[15]) ||( (A[15]~^B[15]) && sum[15])

算术右移运算电路的设计考虑:

Verilog HDL的算术右移的运算符为“<<<”。要实现算术右移应注意,被移位的对象必须定义为reg类型,但是在SRA指令,被移位的对象操作数B

  • 24
    点赞
  • 176
    收藏
    觉得还不错? 一键收藏
  • 25
    评论
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值