自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 Verilog注意事项(不断补充版)

Verilog注意事项(不断补充版)

2023-03-05 12:02:09 169

原创 《自己动手写CPU》11.异常相关指令实现

1.实现的六种异常介绍MIPS32有不同的异常类型及其优先级,OpenMIPS只实现了六种异常情况的处理:●硬件复位(复位后所有信号清零)●中断(软件中断,硬件中断)●syscall系统调用(在用户模式下执行内核模式下的某些操作)●无效指令(OpenMIPS未定义的指令)●整数溢出(算术操作指令add,addi,sub运算溢出)●自陷指令(不是很理解他的作用)2.解决异常方法:精确异常①精确异常:异常发生时,处理器转移到异常处理例程,异常处理结束后返回原程序继续执行,不破

2023-02-03 23:18:36 598

原创 《自己动手写CPU》10.协处理器访问指令的实现

1.MIPS32架构提供了最多四个协处理器:CP0(系统控制),CP1(FPU,浮点处理单元),CP2(特定实现),CP3(FPU,浮点处理单元)。OpenMIPS没有实现浮点运算CP1,CP3不用实现,CP2也没有作用,只实现了CP0。2.CP0的主要工作有:配置CPU工作状态:通过读/写一个或一些内部寄存器来改变一些CPU特性(将字节次序从MSB变为LSB,或从LSB变为MSB)高速缓存控制:MIPS32架构的CPU会集成缓存控制器,用来控制读写缓存异常控制:异常发

2023-01-27 21:48:10 558

原创 《自己动手写CPU》9.存储加载指令实现及load相关解决

1.知识前提:<1>一个字 = 2个半字 = 2×2个字节 = 2×2×8bit = 32bit<2>加载存储地址计算:指令中0~15位为offset,21~15位为base,加载存储指令为16位的offset符号扩展至32位,然后与地址为base的通用寄存器的值相加。loadaddr/storeaddr<3>地址对齐:提高访问次数,提高读取效率;提高内存利用率,提高存储效率未地址对齐存储2个4字节数据:访问2次,占64位

2023-01-15 10:34:59 665 4

原创 《自己动手写CPU》8.转移指令

自己动手写CPU 第八章

2023-01-06 22:00:33 1328

原创 51定时器

控制寄存器描述定时器工作模式及电路图使用步骤1.设置TMOD,配置好工作模式2.设置TLn,THn的初值,来设置定时时间3.运行控制TRn置1,使定时器计数4.判断TFn是否溢出,判断溢出次数LED一秒亮一秒暗代码#include<reg52.h>//注意要选和单片机型号一致的sbit LED=p0^0; //对应下图最右边小灯。P0.0sbit ADDR0=P1^0;//看下LED小灯电路图,控制小灯的74HC138模块接口定义s

2022-10-23 22:50:00 185 1

原创 除法指令div.divu

试商法思想及DIV模块的Verilog实现

2022-09-10 22:21:27 814

原创 HI,LO寄存器添加

附:求大佬细说算术右移的代码

2022-07-29 20:22:33 292

原创 《自己动手写CPU》4.ori指令的实现+generate语法

1.立即数与扩展2.流水线构造模块图如下:各阶段工作及代码:①取指:②译码:③执行:④访存:⑤回写:在regfile模块中实现,只需将接口连接⑥顶层模块利用以上模块,进行例化,端口连接3.指令存储器ROM的实现ROM只读,大小为128KB4.最小SOPC由openmips和ROM组成5.generatefor循环里不能直接调用module,这时可用generate。...

2022-06-19 21:30:41 89

原创 流水线思想的openMIPS处理器设计+分频器设计

1.流水线思想将复杂的组合逻辑分为几个独立简单的组合逻辑,然后在这些部分间加入寄存器,保证在一个时钟周期内得到每部分的最终运算结果。原有的运算时间T被拆成T/n2.三级流水线3个硬件单元分别完成取指,译码,执行,即在"执行"时可对下条指令译码,对下下条指令取指。3.若取指时间过长,则译码、执行会停滞,这时我们需要引入缓存。处理器从缓存读取指令只需一个时钟周期。4.指令为加载/存储指令时,涉及访问存储器,使执行时间长,这时我们引入五级流水线——取指,译码,执行,访问,回写

2022-06-12 18:57:39 165

原创 自己动手写CPU一、二章

1.计算机组成运行处理器(CPU)从存储器中获取指令,按指令执行操作,输入用来提供运算数据、输出用来显示运算结果。2.指令集构架(ISA)指令的主要任务是对操作数进行运算①复杂指令集(CISC):指令的0,1编码串的长度不一②精简指令集(RISC):指令的0,1编码串长度固定3.MIPS32的基本数据类型及长度位:1bit 字节:8bit 半字:16bit 字:32bit 半字:64bit4.寄存器①通用寄存器:用$0,$1,…$31表示,有...

2022-06-05 18:57:02 242

原创 Verilog循环+BCD加法器+16位移位式乘法器

1.for循环循环体为多条语句用begin<循环语句>end2.while循环3.forever-disable循环(详细见上图)4.repeat循环若repeat表达式中出现x或z,则表达式将被当成0,语句块不被执行。repeat循环中出现disable立即结束循环,不管循环了几次或是否结束。5.wait语句使程序操作流程暂停,直到wait的表达式变为真后,再执行wait语句块6.begin-end 包含多条语句,语句按顺序执行fork...

2022-05-29 15:48:11 1145

原创 电路延迟时序的设定+2对1多路选择器

一.1.逻辑门延迟2.连接线延迟wire#4 y1;3.模块路径延迟当整体设计改变时,以上两种描述时间的延迟方式要做出修改。而模块路径延迟只针对从输入到输出路径,设定其延迟时间,无需改变语句指令。注:特定区块只在仿真测试时有效。在硬件实现中,综合器将特定区块specify-endspecify忽略。4.跳变沿敏感的路径延迟4种准位(0,1,x,z)有十二种转态变化5.条件式延迟可利用并列路径和完全连接路径进行延迟设定。6.延迟时间值设定使延迟...

2022-05-22 16:30:37 378 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除