我开P6是过P5了吗?笑死,P5又挂了,还是经典的blezalc指令,天知道原来我是不会写的,前近一个月每次branch类指令全都加错,而且是错得离谱。但都把重心放在课下debug上了,自以为不就是branch+jal嘛没什么大不了;考前自己练习加到一半就停了,没想到真考到发现还得拓展传递一条信号并流水(?),然后改了半天加完信号流水完后发现错位了(?),然后就无了。

这次纯粹是自己的原因了,不会加指令。然而其实第3条访存指令似乎更容易加,周围也有同学做了t2+t3过的。然而由于前几次课上都是只做了t1/t2,潜意识里就只想做计算类和跳转类。变通赌狗是刻在骨子里的不会。

不过这样下次就会写跳转指令了,下周大概率能过了。保证了课下至少在课上没暴露问题,所以可以做P6了。

确实是技不如人。自己属于是必须踏实做好每一步才可能有所建树的人。心态摆好,踏实做事,慢慢来吧。

课下

Thinking_Log

1.关于cal_i类指令中imm_16的范围

slt $t1, $t2, 0xff00 越界不合法

slt $t1, $t2, 0x7fff 应该是能写的最大数

该imm_16前15位是我们可写,第十六位的设置通过符号表示,不能直接用补码表示。一旦书写的数16位出现1也算溢出不合法。

因而:

  • 0xffffffff : -0x7fff
  • 0x00007fff : 0x7fff

    书写范围:±(0x0000 ~ 0x7fff),可表示的数便是16进制补码的范围

2.关于mips指令中溢出检测问题

0xff001233 - 0x7f001234 从补码的角度看,属于溢出错误:因为这个“负数-正数”超过负数下限,经计算是0x7fffffff(可以先给被减数+1,算完再-1),最大的正数

0x7f001234 - 0xff001233 同样也溢出了!运算结果是0x80000001,“正数-负数”超过的正数上限溢出为负数

Bug_Log

1.sllv及相关类指令位移量未限制

之前循环位移看多了,潜意识就认为没关系。但其实应该取\(GPR[rt]_{4...0}\)

课上

似乎访存指令总有些问题?表面上看似乎可能还是课下问题?反正p5和p6的访存指令都出现未知bug。

【P6】Verilog搭建流水线MIPS-C3-CPU(50条指令)的更多相关文章

  1. 使用Verilog搭建一个单周期CPU

    使用Verilog搭建一个单周期CPU 搭建篇 总体结构 其实跟使用logisim搭建CPU基本一致,甚至更简单,因为完全可以照着logisim的电路图来写,各个模块和模块间的连接在logisim中非 ...

  2. 基于五阶段流水线的RISC-V CPU模拟器实现

    RISC-V是源自Berkeley的开源体系结构和指令集标准.这个模拟器实现的是RISC-V Specification 2.2中所规定RV64I指令集,基于标准的五阶段流水线,并且实现了分支预测模块 ...

  3. verilog实现的16位CPU单周期设计

    verilog实现的16位CPU单周期设计 这个工程完成了16位CPU的单周期设计,模块化设计,包含对于关键指令的仿真与设计,有包含必要的分析说明. 单周期CPU结构图 单周期CPU设计真值表与结构图 ...

  4. verilog实现的16位CPU设计

    verilog实现的16位CPU设计 整体电路图 CPU状态图 idle代表没有工作,exec代表在工作 实验设计思路 五级流水线,增加硬件消耗换取时间的做法. 具体每一部分写什么将由代码部分指明. ...

  5. 微处理器CPU 50年

    CPU50年 ===电子管时期1912年:美国青年发明家德.福雷斯特(L.De Forest)在帕洛阿托小镇首次发现了电子管的放大作用.1946年:地球上第一台电子数字式计算机(ENIAC(埃尼阿克) ...

  6. 使用logisim搭建单周期CPU与添加指令

    使用logisim搭建单周期CPU与添加指令 搭建 总设计 借用高老板的图,我们只需要分别做出PC.NPC.IM.RF.EXT.ALU.DM.Controller模块即可,再按图连线,最后进行控制信号 ...

  7. Verilog hdl 实现单周期cpu

    参考计组实验测试指令 - 简书,添加了一些细节. 1.添加 bne指令 修改 ctrl.v       之后修改mipstestloopjal_sim.asm,mars dump 为 bnetest. ...

  8. 常用的50条linux 命令

    从今天起,咱开始正式学习python了,于是遍整理了50条linux的常用命令. 1 线上查询帮助命令 :man   遇到什么不会的命令可以 man +你想要查询的命令 (需要有网),因为是英文的所以 ...

  9. 深入设计电子计算器(一)——CPU框架及指令集设计

    版权申明:本文为博主窗户(Colin Cai)原创,欢迎转帖.如要转贴,必须注明原文网址 http://www.cnblogs.com/Colin-Cai/p/8278418.html 作者:窗户 Q ...

  10. CPU结构与指令执行过程简介

    CPU(Central Processing Unit)是计算机中进行算术和逻辑计算处理指令的主要部件. CPU结构 CPU由通用寄存器组,运算器,控制器和数据通路等部件组成. 寄存器包括 数据寄存器 ...

随机推荐

  1. git clone 需要密码

    在使用Git管理代码项目的过程中,经常需要使用到git clone命令来克隆远程仓库到本地.有时候会碰到克隆远程仓库需要输入密码才能进行的情况.本文将会介绍如何解决这个问题. git clone 需要 ...

  2. Consul-template, Nginx 实现Thrift Consul负载均衡

    整体架构 我们先看下整个框架的架构是什么样子的,这里我们有三个服务提供者和三个服务调用者,它们通过 Consul 和 Nginx,以及 Consul-template 来实现负载均衡. 说明 本例子是 ...

  3. Qt/C++音视频开发75-获取本地有哪些摄像头名称/Qt内置函数方式

    一.前言 在需要打开本地摄像头的场景中,有个需求绕不开,那就是如何获取本地有哪些摄像头设备名称,这样可以提供下拉框给用户选择,不然你让用户去填设备名,你觉得用户会知道是啥,他会操作吗?就算你提供了详细 ...

  4. 【吐血经验】在 windows 上安装 spark 遇到的一些坑 | 避坑指南

    在 windows 上安装 spark 遇到的一些坑 | 避坑指南 最近有个活:给了我一个阿里云桌面(windows 10系统),让我在上面用 scala + spark 写一些东西. 总是报错不断, ...

  5. ThreeJs-11精通着色器编程(重难点)

    着色器语言编程比较重要,后面的几个章节都会围绕这个来做特效 一.初识着色器语言 首先什么叫做着色器,他是一种语言,首先需要设置为着色器材质,然后在材质里面书写一些语言,可以告诉他顶点,然后去自定义一些 ...

  6. Windows安全加固(四)

    七.服务安全 1.禁用TCP/IP上的NetBIOS(协议所用端口139) 作用:禁用TCP/IP上的NetBIOS协议,可以关闭监听的UDP137.UDP138.UDP139端口. (1)使用快捷键 ...

  7. G1原理—6.G1垃圾回收过程之Full GC

    大纲 1.FGC的一些前置处理 2.FGC的整体流程 3.传统FGC只能串行化 + G1的FGC可以并发化 4.并行化FGC之并行标记 + 任务窃取 5.并行化FGC之跨分区压缩 + 避免对象跨分区 ...

  8. C# HOOK 键盘事件

    C# HOOK 键盘事件 /* by: wgscd date:2023-8-15 desc: test hook in c# */ using System; using System.Collect ...

  9. 深入图解AQS实现原理和源码分析

    AQS底层实现原理用一句话总结就是:volatile + CAS + 一个虚拟的FIFO双向队列(CLH队列).所以在了解AQS底层实现时,需要先深入了解一下CAS实现原理. #名词解释(1)CAS: ...

  10. weixueyuan-Nginx核心配置指令2

    https://www.weixueyuan.net/nginx/config/ Nginx配置文件详解 Nginx 默认编译安装后,配置文件都会保存在 /usr/local/nginx/conf 目 ...