精华内容
下载资源
问答
  • MIPS单周期CPU设计(24条指令)

    万次阅读 多人点赞 2020-07-22 21:14:25
    MIPS单周期可执行24条指令CPU 实验要求 本实训项目帮助学生构建支持 24 条指令的 MIPS 单周期 CPU ,最终实现的处理器能运行 benchmark 测试程序。~~另外希望学有余力的同学能为自己的处理器增加中断处理机制,能...

    MIPS单周期可执行24条指令CPU

    实验要求

    本实训项目帮助学生构建支持 24 条指令的 MIPS 单周期 CPU ,最终实现的处理器能运行 benchmark 测试程序。另外希望学有余力的同学能为自己的处理器增加中断处理机制,能响应外部设备中断请求。

    CPU 基本逻辑框架

    指令格式指令格式

    24条指令

    24条指令

    *为特殊格式指令


    指令详解

    R型

    R

    I型

    I

    J型

    J

    其中:

    在这里插入图片描述

    JumpAddr = ((PC + 4) & 0xf0000000) | ((address << 2) & 0x0ffffffc);
    

    设计硬布线

    ALU结构及规格

    ALU结构及规格

    Equal = (X == Y)?(1:0);
    

    控制信号

    控制信号产生条件控制信号产生条件

    ALU_OP及控制信号的确定

    根据 ALU 规格及控制信号产生条件即可得到下表,其中 X 代表无操作
    ALU_OP及控制信号
    根据 Logisim 分析组合逻辑电路功能可以自动生成控制器内部逻辑
    控制器逻辑

    设计数据通路

    因为是单周期 CPU,所有指令均在一个时钟周期内完成操作,所以指令与数据分别采用 ROM 及 RAM 存储

    • 取指

    • 取指

    指令存储器 ROM 容量为 1K * 32 bit

    由于指令存储器存储字长为 4B,而 PC 为指令字节地址,非指令字地址,故舍弃最低两位,将 2 ~ 11 位送入存储器地址端

    指令 IR 分线后送入单周期硬布线控制器译码,同时下一指令的地址通过多路选择器送入程序计数器的数据端口,等待时钟上升沿锁存

    PC下地址可通过下图产生,其中 X 代表该选择端无效:

    PC 下地址

    JMP_IF 为条件分支跳转成功信号,只响应 Beq 或 Bne 指令:
    J M P _ I F = B e q E q u a l + B n e E q u a l ‾ JMP\_IF = Beq Equal + Bne\overline{Equal} JMP_IF=BeqEqual+BneEqual

    PC = PC + 4;													// PC + 4, 无任何跳转
    PC = PC + 4 + (SignExtImm << 2);								// PC + imm,当 Beq 或 Bne 指令条件有效
    PC = ((PC + 4) & 0xf0000000) | ((address << 2) & 0x0ffffffc);	// PC_J_JAL, J 或者 Jal 指令
    PC = Reg[rs];													// PC_JR, JR指令
    
    • 执行

    执行

    Syscall 为系统调用指令,在该实验中,需要根据条件输出通用寄存器的值或产生停机信号:

    if ($v0 == 0x22)
        /* 若通用寄存器 $v0 的值为 0x22,则输出 LedData,而 LedData 由寄存器锁存通用寄存器 $a0 的值 */
        std::cout >> LedData;		 
    else{
        /* 否则,产生停机信号,程序不向下执行,直到 Go 按钮事件产生 */
        do{
            ;
        }while(Go != true );
    }
    
    1. A

      通用寄存器 V0 编号为 2a0 编号为 4,执行 syscall 指令时,多路选择器选择该组信号,其余指令选择 rs,rt

      通用寄存器 $ra 编号为 0x1f,记录返回地址,jal 指令可类比 x86 指令集中的 call 指令,所以该指令执行时,多路选择器选择 1 端口,写入寄存器 W# 选择 ra,将返回地址 PC + 4 写入寄存器文件(RegFile)

    2. B

      根据控制信号 AluSrcB 及 SignedExt 作为多路选择器选择端,算逻运算单元 ALU 的 B 端输入数据如下图:

    ALU B 端数据来源

    另外,(PC + imm)即为上文的具体实现

    1. C

      JMP_IF 信号上文已叙述

      PC_JR 为 JR 指令执行时,指令中通用寄存器 rs 的值,该值作为新的 PC

      • 执行 syscall 指令且通用寄存器 $v0 值不为 0x22 时,使停机信号 Halt 置 1 ,该信号经非门使程序计数器使能端置 0 ,将其封锁
      • 若 $v0 值为 0x22,则 LED 更换数据信号 LED_EN 置 1 ,在下一个时钟的上升沿将通用寄存器 $a0 值锁存至 LedData 寄存器中
    2. D

      数据存储器 RAM 的容量与指令 ROM 一致,均为 1K * 32 bit

      本实验唯一用到数据存储器 RAM 的指令只有 lwsw ,地址线依旧舍弃最低两位

      MDin 为寄存器文件输出端 R2 的值,在 sw 指令执行时, 通过 MemWrite 信号,在时钟上升沿将其写入 RAM 中

      与此类似, lw 指令执行时,多路选择器选择内存数据,送入寄存器文件 Din 端口,在时钟上升沿写入 RegFile

    备注

    CLK 为时钟信号,RESET 为测试时清空各寄存器及 RAM 信号

    最后完成的单周期 CPU

    完整 CPU 框架

    展开全文
  • 使用logisim布线完成的MIPS单周期CPU,可支持28条指令。跑马灯的代码已经装入了寄存器,可以直接开启时钟运行。
  • 使用logisim布线完成的MIPS单周期CPU,可支持28条指令。跑马灯的代码已经装入了寄存器,可以直接开启时钟运行。
  • MIPS32位单周期CPU 32位MIPS单周期CPU 可以实现16条指令
  • 24条指令MIPS单周期CPU课设设计有这个压缩包足够
  • 31条指令单周期cpu设计(Verilog)-()总体设计

    万次阅读 多人点赞 2018-07-14 11:27:27
    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)-(六)指令操作时间表设计     (重要)

    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的具体执行过程了,看起来还是挺简单的嘛。

     


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

     

     

     

     

     

    展开全文
  • 原理大家参照上一篇文章MIPS CPU单周期(8条指令)的设计,主要是还是两部分:控制器+数据通路。 传送门单周期8条指令 待会再更新哈,稍等稍等。 有问题可在下方评论或者私信q453682174. ...
    大家好,我是小黄鸭,文章下面有我的联系方式,有问题请私聊。
    

    原理大家参照上一篇文章MIPS CPU单周期(8条指令)的设计,主要是还是两部分:控制器+数据通路。
    传送门单周期8条指令

    单周期MIPS CPU 24条指令

    1. 总体结构设计
      单周期CPU设计实验我们首先设计一个硬布线控制器,利用硬布线控制器的设计原理,来实现一个支持24条指令的MIPS单周期CPU。利用在运算器实验和存储系统实验中构建的运算器、寄存器文件、存储系统等部件以及Logisim其他功能部件,来构建一个32位MIPS CPU单周期数据通路。
      在这里插入图片描述
    2. 数据通路的设计
      数据通路要将运算和功能部件进行连接,组成一个能个执行取值、译码、执行、进一步可能包含中断的数据连接,能够让指令从PC开始,流向各运算和功能部件,并成功指令相应的功能,给出相应的返回。并且数据通路要具备基本的CPU要求,能够形成相应的数据流和状态转移。
    展开全文
  • MIPS32位单周期CPU 32位MIPS单周期CPU 可以实现16条指令
  • ZJU计算机组成课程作业,内含各部件代码,支持18条指令,包括slt,lui,slr,sll,jr,jal等指令
  • 本次课程设计的基本任务是利用logisim平台设计构建一个32位 MIPS CPU 单周期处理器,要求支持24条 MIPS 核心指令,最终设计实现的 MIPS 处理器能运行实验包中的 benchmark.asm。 课设设计报告如下: cpu设计...
    本次课程设计的基本任务是利用logisim平台设计构建一个32位 MIPS CPU 单周期处理器,要求支持24条 MIPS 核心指令,最终设计实现的 MIPS 处理器能运行实验包中的 benchmark.asm。
    

    课设设计报告如下:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    cpu设计实验包下载地址:
    https://download.csdn.net/download/xtb666666/19481434

    展开全文
  • 实验单周期 CPU 设计与实现——单指令 CPU

    千次阅读 多人点赞 2019-06-21 21:47:17
    实验单周期CPU设计与实现——单指令CPU 一、实验目的: 通过设计并实现支持一条指令的CPU,理解和掌握CPU设计的基本原理和过程。 、实验内容: 设计和实现一个支持加法指令单周期CPU。要求该加法指令(表示...
  • 31条指令单周期CPU

    2018-12-08 00:00:34
    采用单周期方式实现了MIPS的31条指令,具体指令参见压缩包中的PDF文件。配有31条指令仿真测试的coe文件以及每一条指令单独测试文件和测试结果,在Vivado2016和Modelsim上验证通过。
  • • 用硬件描述语言(Verilog)设计MIPS CPU,支持如下指令集 • ISA1 = {ADD/ADDU/SUB/SUBU/SLL/SRL/SRA/SLLV/SRLV/SRAV/AND/OR/XOR/NOR/ SLT/SLTU/ADDI/ADDIU/ANDI/ORI/XORI/LUI/SLTI/SLTIU/LB/LBU/LH/LH U/LW/SB/...
  • (Verilog)单周期CPU设计 单周期CPU设计与实现原理分析
  • 设计一个单周期CPU,该CP能实现基本的r型,j型的指令功能操作。
  • 单周期CPU设计

    万次阅读 多人点赞 2016-05-24 21:43:44
    首先要理解什么叫单周期CPU(与后面多周期CPU对比)单周期CPU指的是一条指令的执行在一个时钟周期内完成,然后开始下一条指令的执行,即一条指令用一个时钟周期完成。 单周期CPU的功能:能够实现一些指令功能操作...
  • 实验五、单周期 CPU 设计与实现——十条指令 CPU

    千次阅读 多人点赞 2019-07-03 23:30:07
    设计和实现一个支持如下十条指令单周期CPU。 Ø非访存指令 u清除累加器指令CLA u累加器取反指令COM u算术右移一位指令SHR:将累加器ACC中的数右移一位,结果放回ACC u循环左移一位指令CSL:对累加器中的数据进行...
  • 1.lw,sw指令格式及功能 指令 [31:26] [25:21] [20:16] [15:0] 意义 lw 100011 rs rt offset 从数存(数据存储器)中取数据写进寄存器 sw 101011 rs rt offset 将寄存器中的值写入数存 2.所需模块框图及...
  • 包含华科计组实验 8条指令单周期cpu和多周期微程序地址转移,在同一个.circ文件中 包含24条指令cpu的.circ和excel的控制信号表,还有多周期微程序地址转移excel表。 还有相关的.jar等相关文件 以及包含24条指令cpu的...
  • 一、一些概念 1.单周期CPU ...单周期CPU:取出并执行一条指令在一个时钟周期内完成,即一条指令用一个周期。MIPS就是一个单周期CPU。 2.MIPS指令格式和通用寄存器定义 MIPS所有的指令均为32位,MIPS指令的三种
  • 31MIPS指令单周期CPU

    2019-03-25 00:36:18
    本科生计算机组成原理课程大作业,使用Xilinx N4开发板,实验实现:31MIPS指令单周期CPU 可通过前仿真但不能下板,原因未查明
  • 内含CPU所有Verilog源码、论文详细解析,作业成绩为优秀 所有代码和论文皆为原创,严禁次转载!
  • 设计和实现一个支持如下十条指令单周期CPU。 非访存指令  清除累加器指令CLA  累加器取反指令COM  算术右移一位指令SHR:将累加器ACC中的数右移一位,结果放回ACC  循环左移一位指令CSL:对累加器中的数据...
  • 单周期24条指令.zip

    2020-07-02 17:21:19
    单周期CPU设计实验我们首先设计一个硬布线控制器,利用硬布线控制器的设计原理,来实现一个支持24条指令的MIPS单周期CPU。利用在运算器实验和存储系统实验中构建的运算器、寄存器文件、存储系统等部件以及Logisim...
  • Verilog单周期CPU设计(超详细)

    万次阅读 多人点赞 2019-01-19 12:27:24
    实验 单周期CPU一、设计目的与目标实验内容实验要求、课程设计器材硬件平台软件平台三、 CPU逻辑设计总体方案指令模块MIPS指令格式指令处理流程数据通路总体结构图设计流程逻辑图、模块详细设计PCAdd4...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 79,891
精华内容 31,956
关键字:

单周期cpu设计24条指令