起因
看到黑马的视频以后,我突然发现,好像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地址的内容传到rega | 0b0 000 1111 | 1111 | 0000 | 000 | 0b000101010 | 取址 |
0000 | 001 | 0b000000001 | pc+1 | ||||
0000 | 002 | 0b010011000 | 执行 | ||||
load_b 0xE | 将0xF地址的内容传到regb | 0b0 001 1110 | 1110 | 0001 | 000 | 0b000101010 | 取址 |
0001 | 001 | 0b000000001 | pc+1 | ||||
0001 | 002 | 0b100011000 | 执行 | ||||
store 0xD | 将rega和regb相加的内容送到0xD的位置 | 0b0 010 1101 | 1101 | 0010 | 000 | 0b000101010 | 取址 |
0010 | 001 | 0b000000001 | pc+1 | ||||
0010 | 002 | 0b001010100 | 执行 |
最终实现效果就是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,虽然用的是仿真