全手工搭棚啊
搞个编译器吧
忙活了一个月终于完成了这个CPU,这是我从2014年以来一直YY的一个CPU,这几天终于完成了
本CPU指令39条:传送指令33条、控制转移指令3条、运算指令2条,空指令1条。
本CPU每一个时钟一条指令,单周期指令,由高位ROM和低位ROM组成16位指令,地址16位,ROM和RAM都是64KB
一直以来对CPU的运行原理很是好奇,看了很多的的书都不明白,写的太复杂,直到2014年看了《穿越计算机的迷雾》、《编码的奥秘》,龙少设计的CPU,终于明白了原理!
这个CPU其实是龙少CPU的改进版!最大区别在控制器,他的CPU只利用了时钟上升沿,而我这个控制器使用了上升沿和下降沿,利用时钟上升沿三态门打开,下降沿寄存器锁存完成指令控制
本CPU工作原理:
1、A寄存器传送到B寄存器: ROM地址0001H存放高00100001 低00000000,高ROM输出连接两个4/16译码器,低ROM输出连接数据总线,用于实现立即数传送到寄存器和RAM,实现数据和地址传送!高ROM输出00100001使译码器1的,A三态门控制端为0,译码器2的,B触发器触发端为0,但是我这里使用反相器,使4/16译码器输出1011111111111111反相0100000000000000,在使用三态门控制输出,只有在时钟低电平的时候才输出高电平脉冲,实现触发器控制,也就是时钟为高电平时三态门打开,时钟为低电平时触发器锁存数据,完美实现一个时钟内完成一条指令控制!!!
2、立即数传送到A寄存器:ROM输出高00011110 低00000001(立即数1),高ROM输出00011110使控制器译码输出《低ROM的输出端OE为零,A寄存器锁存端为高电平脉冲》一个时钟周期内OE一直为零,输出数据到数据总线,A锁存端只有在时钟低电平时才完成上升沿锁存!!!
3、无条件转移指令原理:使用C寄存器(低8位地址)、D寄存器(高8位地址),74LS161置位功能实现,首先传送要跳转的地址给C、D寄存器,然后让控制器使74LS161的置位端为零,然后时钟上升沿使74LS161置位,完成无条件跳转!
其它条件转移指令实现原理一样,只是增加逻辑电路使条件满足时置位端才为零!!!
运算板
RAM板
555时钟板和I/O板
控制板
ROM板
编码板
背面连接图
整机成品
指令集
[修改于 5年11个月前 - 2019/06/11 14:31:25]
用AD画个板子吧!打样现在很便宜了,JLC才30大洋就可以出一张10x10的板子
膜拜一下大佬。。本人最近也打算将CPU搬到现实中来,请问在使用74门IC的时候需要注意一些什么吗?能直接把74门IC当成逻辑门随意拼接吗?
改天我也做一个,按照PLC指令做一个
200字以内,仅用于支线交流,主线讨论请采用回复功能。