动手写CPU
致力于嵌入式的苦逼学生
Vuko-wxh
道阻且长 行则将至。
展开
-
CPU-MIPS32指令架构(无内锁流水线微处理器)
MIPS32中使用了大量的寄存器。因为寄存器的存取可以在一个时钟周期内完成,同时也简化了寻址方式。MIPS32中除了加载和存储指令外,都是使用寄存器或立即数作为操作数的MIPS32的寄存器分为两类:1,、通用寄存器寄存器名字 约定命名 用途$0 zero 总是为0$1 at ...原创 2018-12-03 21:44:14 · 2211 阅读 · 0 评论 -
FPGA-设计一个定点乘法器(原码一位乘法器)
定点数指小数点在数中的位置是固定不变的,通常有定点整数和定点小数。在对小数点位置作出选择之后,运算中的所有数均应统一为定点整数或定点小数,在运算中不再考虑小数问题。 定点数就是指小数点的位置固定不变,小数点的位置通常有两种约定方式:定点整数(纯整数,小数点在最低有效值位之后 比如:100.)和定点小数(纯小数,小数点在最高有(效数值位之前 比如:.101)。(1)定义:数据中...原创 2018-12-03 21:16:14 · 8121 阅读 · 0 评论 -
FPGA-阵列乘法器的设计(利用全加器 基于CRA阵列乘法器)
在计算机中,乘法是数字信号处理中的重要角色。 四位无符号数相乘的手算运算可以提炼出最简单的乘法器的计算算法,利用手算乘法的思想,算出每次的部分积然后求和。这样的方法思想较为容易理解前面的(FPGA-定点乘法器)已经给出具体的代码的设计,代码中设计的是4位,则需要4个时钟周期,如果是N位则会需要N个时钟周期进行运行,这样运行的乘法器运行效率不高(也可以看做是串行的),...原创 2018-12-17 23:30:22 · 6899 阅读 · 0 评论 -
CPU-逻辑移位操作与空指令说明
逻辑、移位操作与空指令说明 MIPS32指令集架构中定义的逻辑操作指令有8条:and、andi、or、ori、xor、xori、nor、lui。当中ori指令已经实现了,本章要实现其余7条指令。 MIPS32指令集架构中定义的移位操作指令有6条:sll、sllv、sra、srav、srl、srlv。 MIPS32指令集架构中定义的空指令...原创 2019-05-01 17:01:56 · 3300 阅读 · 0 评论 -
CPU-移动操作指令说明
移动操作指令说明MIPS32指令集架构中定义的移动操作指令共有6条:movn、movz、mfhi、mthi、mflo、mtlo,后4条指令涉及到了对特殊寄存器HI、LO的读写操作,截止到本章,我们的OpenMIPS处理器只实现了32个通用寄存器、以及PC,所有的指令也只是对32个通用寄存器进行操作,还没有涉及特殊寄存器,本章将实现HI、LO这两个特殊寄存器。HI、LO...原创 2019-05-02 11:12:49 · 2380 阅读 · 0 评论 -
学习目录-自己动手写CPU
FPGA-设计一个定点乘法器(原码一位乘法器) CPU-MIPS32指令架构(无内锁流水线微处理器) FPGA-阵列乘法器的设计(利用全加器 基于CRA阵列乘法器) Linux-(在写CPU的过程中遇到的) CPU-流水线的数据相关问题 CPU-逻辑移位操作与空指令说明 CPU-移动操作指令说明...原创 2019-05-02 14:42:37 · 1839 阅读 · 2 评论 -
Linux-(在写CPU的过程中遇到的)
最近在学习自己制作CPU 需要进行再Linux系统上进行GNU工具的使用,汇总了一些自己遇到的问题和用到的指令,大部分是在别处看到的,贴贴剪剪,希望对大家有帮助。安装虚拟机大家进行百度吧,我不建议大家装个双系统,我觉得没有虚拟机好用。装机的话:推荐软件安装管家公众号进行安装设置共享文件夹:1、The command could not be located because '/us...原创 2019-04-30 21:00:36 · 429 阅读 · 0 评论 -
CPU-流水线的数据相关问题
5.1流水线数据相关问题 我们在第4章实现的五级流水线结构非常easy。假设依照“简单即美(SimpleisBeautiful)的标准,那么我们的流水线是美的,可是不完美,由于现实往往是复杂的,一个简单的流水线是解决不了如此多的现实问题的,本节探讨的数据相关问题就是当中一个问题。在我们实现逻辑、移位操作等其他指令之前。必须先讨论这个问题,由于这个问题已经影响到測试程序的编写了。...转载 2019-05-01 14:21:12 · 7218 阅读 · 3 评论 -
CPU-关于移位运算符的问题
最近不是很理解算术运算符和移位运算符的区别,就百度了下,记录下来逻辑左移=算数左移,右边统一添0逻辑右移,左边统一添0逻辑右移就是不考虑符号位,右移一位,左边补零即可。算术右移需要考虑符号位,右移一位,若符号位为1,就在左边补1,;否则,就补0。所以算术右移也可以进行有符号位的除法,右移,n位就等于除2的n次方。例如,8位二进制数11001101分别右移一位。逻辑右移就是[0]...原创 2019-05-18 20:12:36 · 662 阅读 · 0 评论