31条指令单周期cpu设计(Verilog)-(二)总体设计

  • Post author:
  • Post category:其他



  • 目录


31条指令单周期cpu设计(Verilog)-(一)相关软件


31条指令单周期cpu设计(Verilog)-(二)总体设计


31条指令单周期cpu设计(Verilog)-(三)指令分析



(重要)


31条指令单周期cpu设计(Verilog)-(四)数据输入输出关系表



(重要)


31条指令单周期cpu设计(Verilog)-(五)整体数据通路图设计



(重要)


31条指令单周期cpu设计(Verilog)-(六)指令操作时间表设计



(重要)


31条指令单周期cpu设计(Verilog)-(七)整体代码结构



(重要)


31条指令单周期cpu设计(Verilog)-(八)上代码→指令译码以及控制器



(不重要)


31条指令单周期cpu设计(Verilog)-(九)上代码→基本模块



(不重要)


31条指令单周期cpu设计(Verilog)-(十)上代码→顶层模块设计&总结


  • 说在前面

开发环境:Vivado

语言:Verilog

cpu框架:Mips

控制器:

组合逻辑

单周期处理器是指所有的指令在一个时钟周期内完成的处理器,尽管不同指令执行时间不同,但对单周期处理器而言,时钟周期必须设计成对所有指令都等长。在单周期处理器中,

一条指令执行过程中数据通路的任何资源都不能被重复使用

,因此,任何需要被多次使用的资源(如加法器)都需要设置多个,否则就会发生资源冲突。


  • 总体设计

常规套路是从简单的八条指令cpu讲起,然后自己去扩展,31条指令cpu按照八条的那个流程来,无非是工作量大了点,网上八条指令cpu的教程也挺多的。


指令介绍

cpu的理论知识就不再多讲了,首先来看看我们要实现的31条指令。

这些指令的详细介绍mips官方有给出:


mips指令集

在这部分(这个pdf带跳转功能的)

在实现过程中,这31条指令看起来挺多,但是实际上部分指令的数据通路几乎一样,比如add—nor这几个,一定程度上减少了工作量。


注意:这里面比较难的几条指令是lw,sw,jal


设计流程


  1. 确定各条指令所需要的部件

  2. 确定各条指令中各个部件的输入输出关系

  3. 确定数据通路总图

  4. 根据各条指令所需要的部件以及总通路图,确定指令操作时间表(真值表)

  5. 根据

    指令操作时间表,设计控制器


  6. 根据总通路图以及指令操作时间表,码代码去,编写Verilog代码


先放张总图压压




  1. PC

    存放

    指令地址

    (通过pc+4来读取下一条指令)
  2. (ram1)

    IMEM

    存放指令集
  3. 根据

    指令地址



    IMEM

    中取出对应指令
  4. 指令读取出来后送入

    指令译码器

    (具体是哪一条指令)
  5. 译码后将结果送入控制器,将该条指令相关部件的控制信号置为1(激活),使得cpu中该条指令的数据通路激活,进而执行此指令
  6. pc+4获取下一条指令,循环操作


以上就是cpu的具体执行过程了,看起来还是挺简单的嘛。


以上就是这节的内容了,下一节将具体介绍各条指令各个部件。



版权声明:本文为qq_33446100原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。