自制CPU(一)单周期

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/stanary/article/details/80938887

离开博客许久了,今天回来写一篇这个学期一直在做的CPU的文章。

设计是基于MIPS指令集的单周期,多周期,流水线CPU。最终实现也是在FPGA板上跑了一个小程序,开发版使用的是basys3.基础指令集等在此就不在为大家细说了,他人的博客已经讲述的很清晰了。代码和数据通路均已上传至下载频道,大家可以自行下载。我们这里先讲CPU究竟是如何进行操作的。

CPU再进行一次操作的时候实际上就是在指令存储器中读出一条指令,在取出这条指令之后,将他的前6为拆分出来,进行判别他是哪种指令。根据前六位操作码的分类来控制数据通路中的不同部件的使能来控制数据的流向。

R型指令就是选择将Rs和Rt作为地址访问寄存器堆,读出其中数据输入至ALU的数据读口,由func来确定ALU的运算的类型,计算结束之后再将输出的数据写会到寄存器堆的Rw地址对应的存储单元。

I型指令的基础指令和R型的基本形似,只不过将数据busB改换为立即数进行零扩展后的数据操作,写回至Rt中。I型指令的非常重要的三条指令为load(加载),store(存储),beq(分支跳转)。load,store指令将Rs和立即数符号扩展后相加作为内存单元地址,load指令是将内存单元内容送至Rt,store是将Rt中的值送至内存单元。beq指令是将rshert之中的数据进行比较,相等则跳转到立即数和当前指令所处位置和1三者相加的位置。

三种指令如何操作了解了,下面设计就会很简单,根据不同的指令的不同数据通路,让主控单元输出不同控制数据正常流入下一级。

讲的比较简略,如有不理解的欢迎提问或者留言。

展开阅读全文

没有更多推荐了,返回首页