文号
853801
阅读
35922
回复
23
收藏
30
自制74门8位CPU

忙活了一个月终于完成了这个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置位,完成无条件跳转!

其它条件转移指令实现原理一样,只是增加逻辑电路使条件满足时置位端才为零!!!


 运算板

IMG_20190117_110013.jpg

 


 RAM板


IMG_20190117_110031.jpg


 555时钟板和I/O板

IMG_20190117_110023.jpg

 

控制板

IMG_20190117_110003.jpg

 


 ROM板

IMG_20190117_105941.jpg

 


编码板


IMG_20190117_105951.jpg

 


背面连接图


IMG_20190117_121753.jpg

 


 整机成品

IMG_20190120_091453.jpg

 


IMG_20190116_140246.jpg

 

IMG_20190116_135753.jpg

 


指令集

IMG_20190121_145544.jpg

 


 


[ 修改于7年5个月前 - 2019/06/11 14:31:25 ]
7年10个月前IP:四川
853805
1楼

全手工搭棚啊😢

搞个编译器吧

引用
评论
7年10个月前IP:海南
853807
2楼
引用虎哥发表于1楼的内容
全手工搭棚啊😢搞个编译器吧

是啊全手工焊接,几百条线,焊接、测试、检查错误用了一个月,是准备要搞个编译器来编程才行,手工机器码编程太容易出错,工程量也很大!

引用
评论
1
7年10个月前IP:浙江
853819
3楼

牛人一个👍👍

引用
评论
1
7年10个月前IP:江西
853918
4楼

哈,同行握手😁

引用
评论
7年10个月前IP:海南
853921
5楼

一起研究啊😀

引用
评论
7年10个月前IP:海南
853922
6楼
引用左手执者发表于4楼的内容
哈,同行握手😁

可以交流一下CPU制作

引用
评论
7年10个月前IP:江西
853992
9楼

用AD画个板子吧!打样现在很便宜了,JLC才30大洋就可以出一张10x10的板子

引用
评论
7年10个月前IP:海南
853995
10楼

@rpg-7画图软件是AD吗?我基本都没有用电脑画过电路图和PCB板,可以推荐一下吗?

引用
评论
7年8个月前IP:广东
855722
11楼

膜拜一下大佬。。本人最近也打算将CPU搬到现实中来,请问在使用74门IC的时候需要注意一些什么吗?能直接把74门IC当成逻辑门随意拼接吗?

引用
评论
7年8个月前修改于 7年8个月前IP:北京
855727
12楼

改天我也做一个,按照PLC指令做一个

引用
评论
7年8个月前IP:海南
855729
13楼
引用Resbi发表于11楼的内容
膜拜一下大佬。。本人最近也打算将CPU搬到现实中来,请问在使用74门IC的时候需要注意一些什么吗?能直接把74门IC当成逻辑门随意拼接吗?

只要不接错线,逻辑上没有问题都可以的,

引用
评论
7年8个月前IP:广东
855859
14楼

打算挖矿吗?朋友😂,这下计算力应该挺厉害的吧

引用
评论
1
7年8个月前IP:广东
856225
15楼

牛x,搞编译器吧,折腾起来要命啊

引用
评论
7年8个月前IP:广东
856234
16楼

楼主,做一个64位的大概要多少钱成本呢?

引用
评论
1
7年8个月前IP:海南
856277
17楼
引用改装pcp发表于16楼的内容
楼主,做一个64位的大概要多少钱成本呢?

用74芯片搞64位不现实,体积太大,芯片速度上不去也是浪费!

引用
评论
7年8个月前IP:海南
856278
18楼
引用不会飞的鸟发表于15楼的内容
牛x,搞编译器吧,折腾起来要命啊

最近都懒得弄了,这个CPU的程序都是手工汇编,先写汇编然后手工编译成机器码,再用开关写入ROM!要先弄烧写器,再弄编译器了!

引用
评论
7年7个月前IP:云南
857341
19楼

太佩服啦!真的高手

引用
评论
7年6个月前IP:浙江
859464
20楼

有套件卖吗?

引用
评论
7年5个月前IP:浙江
860582
21楼
引用分立元件发表于18楼的内容
最近都懒得弄了,这个CPU的程序都是手工汇编,先写汇编然后手工编译成机器码,再用开关写入ROM!要先弄烧写器,再弄编译器了!

手工编译成机器码,这个太烧脑了吧😁

引用
评论
7年5个月前IP:陕西
860633
22楼

我一直想用ECL逻辑电路做个CPU

引用
评论
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的