【P6】Verilog搭建流水线MIPS-C3-CPU(50条指令)
我开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条指令)的更多相关文章
- 使用Verilog搭建一个单周期CPU
使用Verilog搭建一个单周期CPU 搭建篇 总体结构 其实跟使用logisim搭建CPU基本一致,甚至更简单,因为完全可以照着logisim的电路图来写,各个模块和模块间的连接在logisim中非 ...
- 基于五阶段流水线的RISC-V CPU模拟器实现
RISC-V是源自Berkeley的开源体系结构和指令集标准.这个模拟器实现的是RISC-V Specification 2.2中所规定RV64I指令集,基于标准的五阶段流水线,并且实现了分支预测模块 ...
- verilog实现的16位CPU单周期设计
verilog实现的16位CPU单周期设计 这个工程完成了16位CPU的单周期设计,模块化设计,包含对于关键指令的仿真与设计,有包含必要的分析说明. 单周期CPU结构图 单周期CPU设计真值表与结构图 ...
- verilog实现的16位CPU设计
verilog实现的16位CPU设计 整体电路图 CPU状态图 idle代表没有工作,exec代表在工作 实验设计思路 五级流水线,增加硬件消耗换取时间的做法. 具体每一部分写什么将由代码部分指明. ...
- 微处理器CPU 50年
CPU50年 ===电子管时期1912年:美国青年发明家德.福雷斯特(L.De Forest)在帕洛阿托小镇首次发现了电子管的放大作用.1946年:地球上第一台电子数字式计算机(ENIAC(埃尼阿克) ...
- 使用logisim搭建单周期CPU与添加指令
使用logisim搭建单周期CPU与添加指令 搭建 总设计 借用高老板的图,我们只需要分别做出PC.NPC.IM.RF.EXT.ALU.DM.Controller模块即可,再按图连线,最后进行控制信号 ...
- Verilog hdl 实现单周期cpu
参考计组实验测试指令 - 简书,添加了一些细节. 1.添加 bne指令 修改 ctrl.v 之后修改mipstestloopjal_sim.asm,mars dump 为 bnetest. ...
- 常用的50条linux 命令
从今天起,咱开始正式学习python了,于是遍整理了50条linux的常用命令. 1 线上查询帮助命令 :man 遇到什么不会的命令可以 man +你想要查询的命令 (需要有网),因为是英文的所以 ...
- 深入设计电子计算器(一)——CPU框架及指令集设计
版权申明:本文为博主窗户(Colin Cai)原创,欢迎转帖.如要转贴,必须注明原文网址 http://www.cnblogs.com/Colin-Cai/p/8278418.html 作者:窗户 Q ...
- CPU结构与指令执行过程简介
CPU(Central Processing Unit)是计算机中进行算术和逻辑计算处理指令的主要部件. CPU结构 CPU由通用寄存器组,运算器,控制器和数据通路等部件组成. 寄存器包括 数据寄存器 ...
随机推荐
- MybatisPlusException: can not find lambda cache for this entity[]异常解决
文章目录 场景说明 解决方案 场景说明 简单来说,我们系统中许多数据都是树状结构的,所以我定义了一个实体类父类BaseTreePO,并且想封装一个通用的树状对象的Service类,部分代码如下: ...
- SpringBoot支持Kafka多源配置的同时还要支持启停配置化,是真的会玩
开心一刻 今早,女朋友给我发微信 她:宝贝,你要记住 她:我可是你女朋友,你相亲就亲,想抱就抱 她:不要老是问我,男生要主动一些 我:可是你上次报警可不是这么说的 基础回顾 Spring Boot 集 ...
- 龙哥量化:通达信macd黄白线变色公式macd金叉怎么写macd死叉怎么写(需要继续优化,各种变色方式)
你提出的任何逻辑要求,只要是软件能实现的,我都能用通达信写出来,我レメLong622889通达信.大智慧.文华.博易的编程逻辑差不多,只是个别函数不一样.TB交易开拓者.金字塔和文华8,都是专业的期货 ...
- Qt编写物联网管理平台45-采集数据转发
一.前言 本系统严格意义上说是一个直连硬件的客户端软件,下面接的modbus协议的设备直接通过网络或者串口和软件通信,软件负责解析数据和存储记录.有时候客户想要领导办公室或者分管这一块的部门经理办公室 ...
- SpringBoot进阶教程(八十四)spring-retry
在日常的一些场景中, 很多需要进行重试的操作.而spring-retry是spring提供的一个基于spring的重试框架,某些场景需要对一些异常情况下的方法进行重试就会用到spring-retry. ...
- C#添加log4日志
第一步导入log4net 在vs的程序包管理器控制台中执行命令 NuGet\Install-Package log4net -Version 2.0.0 第二步加帮助类HttpHelper using ...
- Loadrunner11压测场景时最多跑5000个Vuser的问题解决办法
当我在用Loadrunner11压测场景时,设置Start Vusers是10000个.但实际运行是发现大约跑到5000个左右,后面的基本都是异常.如图: 查看Vusers运行详情: Error... ...
- 已有天翼云Ubuntu云主机,搭建幻兽帕鲁服务器
本文为您介绍使用您已有的天翼云Ubuntu云主机搭建幻兽帕鲁服务器的操作. 操作前提 如果您尚未购买天翼云云主机,推荐您使用更简单快捷的一键部署方案,具体请参考:镜像一键部署Palworld幻兽帕鲁服 ...
- redis 执行性能检测指令报错:-bash: redis-benchmark: command not found
最近在看redis相关的内容,redis有自带检测性能的命令: -bash: redis-benchmark: command not found 碰到的所有资料中均提示不能在redis客户端中执行, ...
- FLink18--全窗口聚合方式2 ProcessWindowApp
一.依赖 二.代码 package net.xdclass.class11; import java.util.List; import java.util.stream.Collectors; im ...