从零设计一个简单的8位cpu-只有加法功能

起因

看到黑马的视频以后,我突然发现,好像cpu也没那么难弄啊

参考

https://www.bilibili.com/video/BV1nV411T7U3?p=19&vd_source=aff85f08953cac4861618b53983f0ef3

数字电路模拟软件

digital

cpu结构

我这里把黑马的教程的东西简化了,重点在于跑通整个流程
在这里插入图片描述
一般来说:一个门构成的模块基础结构包括数据线+读写控制+时钟,比如一个8位的加法器,比较完善的情况下,应该有8*2+3的接线,一共19根线,包括8个输出线,8个输入线以及读写控制线2根还有一个时钟信号线

如果需要储存中间状态或者自定义,加寄存器即可,比如说内存地址寄存器mdr,指针寄存器pc等等,只要网上加即可,还有计算模块也是,比如说减法器,乘法器也可以,现在这个结构只是一个基础结构,总线也都是抽象成一根线的

指令说明

自定义汇编指令(汇编代码)说明二进制指令结构(汇编对应的二进制指令)(e2prom内存储)地址部分指令部分微指令(lut内存储)控制指令说明
load_a 0xF将0xF地址的内容传到rega0b0 000 1111111100000000b000101010取址
00000010b000000001pc+1
00000020b010011000执行
load_b 0xE将0xF地址的内容传到regb0b0 001 1110111000010000b000101010取址
00010010b000000001pc+1
00010020b100011000执行
store 0xD将rega和regb相加的内容送到0xD的位置0b0 010 1101110100100000b000101010取址
00100010b000000001pc+1
00100020b001010100执行

最终实现效果就是3+3=6存到0xD中

e2prom内容

初始内容

0x0 0xF
0x1 0x1E
0x2 0x2D
0x3 0
0x4 0
0x5 0
0x6 0
0x7 0
0x8 0
0x9 0
0xA 0
0xB 0
0xC 0
0xD 0
0xE 3
0xF 3

最终内容

0x0 0xF
0x1 0x1E
0x2 0x2D
0x3 0
0x4 0
0x5 0
0x6 0
0x7 0
0x8 0
0x9 0
0xA 0
0xB 0
0xC 0
0xD 6
0xE 3
0xF 3

lut内容

0x0 0x2A
0x1 1
0x2 0x98
0x3 0
0x4 0x2A
0x5 1
0x6 0x118
0x7 0
0x8 0x2A
0x9 1
0xA 0x54
0xB 0
0xC 0
0xD 0
0xE 0
0xF 0

这个lut是4输入的,指令我设计的是两位,控制高2位,剩下两位由计数器轮询,也就是说,指令划分了区域,一条指令确定了基础的地址位置,然后计数器确定了指令轮询区间

整体流程

就是由lut控制取址和译码的过程,只是取址过程还要细分一下,取址,计数器加一即可,剩下的就是通过指令固定lut的高位,然后计数器轮询内部数据,然后将数据转为信号输出控制各个读写开关

总结

这个demo我看了5遍黑马,一开始第一遍全看,之后看了第二遍好像又懂了点,第三遍我才有方向的,思考一下之后,第四遍才开始做demo的,有了思路以后,卡住了,看了第五遍关键视频,期间也发现了很多大佬

推荐视频

b站-踌躇月光:这个大佬的特点就是十分的精细,抽象程度不是很高,入门建议看黑马的,这个大佬的特色就是不光实现了cpu还把操作系统实现的非常细节-尤其是各种协议
b站-黑马程序员:这个机构的课程都很容易理解,但是进阶的内容比较缺乏,关键是这个机构的课程抽象化程度高并且在工具的选用上非常的易用,推荐作为入门首选

目前也发现了机构与个人的区别,主要是面向群体不同,机构目标在于盈利,就得整点看着高端的东西,但是入门又说的比较通俗,大学很多的老师
都是看论文和文献得到的知识,深度比较深,一般入门听跟听天书一样,而且他们的教学目标在于全面以及完成教学指标,所以不怎么会简化模型
或者说繁重的教学任务已经想不到这些了,所以还是需要有比较有选择的进行学习

b站-清华邓博士:这个大佬看称呼就知道了,清华博士,主要方向是riscv的指令架构
b站-吕昱峰-CQU弟中弟:这个主要的方向是竞赛方向,mips5级流水线cpu

推荐教材

中科大的有个老师的riscv的ppt,科大的本科生在学习计算机组成原理的时候要求就是做一个5及流水线的riscv指令架构的cpu,虽然用的是仿真

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值