- 博客(13)
- 收藏
- 关注
原创 《自己动手写CPU》11.异常相关指令实现
1.实现的六种异常介绍MIPS32有不同的异常类型及其优先级,OpenMIPS只实现了六种异常情况的处理:●硬件复位(复位后所有信号清零)●中断(软件中断,硬件中断)●syscall系统调用(在用户模式下执行内核模式下的某些操作)●无效指令(OpenMIPS未定义的指令)●整数溢出(算术操作指令add,addi,sub运算溢出)●自陷指令(不是很理解他的作用)2.解决异常方法:精确异常①精确异常:异常发生时,处理器转移到异常处理例程,异常处理结束后返回原程序继续执行,不破
2023-02-03 23:18:36
858
原创 《自己动手写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
912
原创 《自己动手写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
846
4
原创 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
260
1
原创 《自己动手写CPU》4.ori指令的实现+generate语法
1.立即数与扩展2.流水线构造模块图如下:各阶段工作及代码:①取指:②译码:③执行:④访存:⑤回写:在regfile模块中实现,只需将接口连接⑥顶层模块利用以上模块,进行例化,端口连接3.指令存储器ROM的实现ROM只读,大小为128KB4.最小SOPC由openmips和ROM组成5.generatefor循环里不能直接调用module,这时可用generate。...
2022-06-19 21:30:41
136
原创 流水线思想的openMIPS处理器设计+分频器设计
1.流水线思想将复杂的组合逻辑分为几个独立简单的组合逻辑,然后在这些部分间加入寄存器,保证在一个时钟周期内得到每部分的最终运算结果。原有的运算时间T被拆成T/n2.三级流水线3个硬件单元分别完成取指,译码,执行,即在"执行"时可对下条指令译码,对下下条指令取指。3.若取指时间过长,则译码、执行会停滞,这时我们需要引入缓存。处理器从缓存读取指令只需一个时钟周期。4.指令为加载/存储指令时,涉及访问存储器,使执行时间长,这时我们引入五级流水线——取指,译码,执行,访问,回写
2022-06-12 18:57:39
217
原创 自己动手写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
327
原创 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
1378
原创 电路延迟时序的设定+2对1多路选择器
一.1.逻辑门延迟2.连接线延迟wire#4 y1;3.模块路径延迟当整体设计改变时,以上两种描述时间的延迟方式要做出修改。而模块路径延迟只针对从输入到输出路径,设定其延迟时间,无需改变语句指令。注:特定区块只在仿真测试时有效。在硬件实现中,综合器将特定区块specify-endspecify忽略。4.跳变沿敏感的路径延迟4种准位(0,1,x,z)有十二种转态变化5.条件式延迟可利用并列路径和完全连接路径进行延迟设定。6.延迟时间值设定使延迟...
2022-05-22 16:30:37
529
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人