从零开始设计一个简单的CPU和计算机,证明是可行的!

文 号

831026

32 回复 / 2175 浏览


qql1 个月前 -2017-02-22 20:43831026
现代的CPU很强大和复杂,导致很多人认为个人是无法设计一个CPU的,或者即使能设计出来简单的也是需要很多经费和大量的元器件。

百度和谷歌一下网上的设计,几乎都是外国人的作品,有一些还是很复杂的,动不动说花了好几年时间。最近有一个英国剑桥的詹姆斯·纽曼(James Newman),打造一台只能玩俄罗斯方块的大块头花了他四年时间,耗资达到4万英镑!!!!而仅仅只是希望让人了解计算机的工作原理。

那我们普通人能不能加入?到底能不能设计出一个计算机来?

当然能!

强大的CPU暂且不说,就拿简单的来说,我认为个人设计一个简单的CPU不但是可行的,还是非常有意义的,当然这个设计必须得是从零开始设计的----只使用简单的逻辑元器件,比如74系列元器件(三极管?)。

在查找了很多相关的书籍还有逛国内外网站后,又花了很多时间去比较和验证,终于设计出了一个简单又特别经典的计算机(关键是成本也少)。

也许很多人说为什么不使用可编程逻辑器件来制作呢?还简单便捷,我觉得能使用简单的逻辑器件制作的才是从零开始设计,也是对计算机的底层工作原理了解最好的方式。

另外要说,按照我的设计,你甚至可以使用简单的三极管、MOS管来制作一个计算机!而且并不是很难的事情,因为我的设计也只使用了28块74系列芯片而已!

==============================================
介绍一下我设计的计算机系统的基本概况:

小名:qCPU(CuteCPU)
CPU:4位
ROM:4KB
RAM:4KB
运行频率:74芯片极限
IO:2组4位的IO口
4个按键
其他外设就是5个LED发光二极管,一个蜂鸣器,一个5X7点阵LED,一个LCD1602液晶
总共8条指令,配备我自己设计的汇编器,使用起来跟
当年使用8086汇编编程很像
目前可以使用USB下载,USB提供电源,在电脑编写代码后,编译下载运行一条龙!!

==============================================

目前的指令如下:
ADD    加法
RM     读取内存
ADDC   带进位加法
WM     写内存
SUB    减法
OUT    IO输出
<      小于比较
=      等于比较
GOTO   小跳转
QCLR   清空
QMOV   赋值
QADD   加法
QSUB   减法
QGOTO  长跳转
QJMP   立即跳转
CALL  调用子程序
RET   从子程序返回
==============================================

不多说了,,,上图说话吧,,目前一些功能还在测试中,代码库也在完善中,敬请期待。
这个板子发去打样后发现有一个BUG,就在板子上临时修改了

273808

273809

273810

273811

273812

273813

273814

273815

273816

273817

273818

273819


待续……

[修改于 1 个月前 - 2017-02-26 19:54:22]


ry7740kptv1 个月前 -2017-02-22 21:10831028
目测分立CPU风暴来袭~

虎哥1 个月前 -2017-02-23 01:21831039
楼主精神可嘉
龙少先后做了几个74搭建的CPU,在爱好者圈中达到登峰造极的水平。但他没有继续深造,并且婉拒现代处理器的设计模式和工具链,可惜了。
希望楼主做得更好。

[修改于 1 个月前 - 2017-02-23 02:28:04]


qql1 个月前 -2017-02-23 08:36831054
我做的这个比较简洁直观,后面我写一写我这个跟龙少的区别,顺便评价他的设计

bg8npk1 个月前 -2017-02-23 09:48831058
74芯片厂或成最大赢家

manbo7891 个月前 -2017-02-23 14:22831079
能上电路原理图吗?

qql1 个月前 -2017-02-26 18:41831241
引用 manbo789:
能上电路原理图吗?
还在测试中,现在请假在家,后面上传

qql1 个月前 -2017-02-26 19:49831244
引用 虎哥:
楼主精神可嘉
龙少先后做了几个74搭建的CPU,在爱好者圈中达到登峰造极的水平。但他没有继续深造,并且婉拒现代处理器的设计模式和工具链,可惜了。
希望楼主做得更好。


龙少制作的CPU有一个小缺点,就是直接用控制信号线接到寄存器芯片74HC273的CLK引脚,
这样的话,就不能在相邻的指令修改同一个寄存器的值。如下图

273879


不过这个对一般的使用没有什么影响

[修改于 1 个月前 - 2017-02-26 19:50:17]


Cirno1 个月前 -2017-02-26 21:51831246
谁来搭个74 GPU 然后跑一跑 CNN 吧。。。

我说要有光1 个月前 -2017-02-27 10:42831254
这种CPU在Youtube上一般被称作“homebrew computer”

希望这些资源能帮上LZ
https://www.youtube.com/results?search_query=homebrew+computer

qql1 个月前 -2017-02-27 11:07831255
那些基本都是 使用某一种现成的 CPU的,比如6502,也算比较好玩吧
但是我做这个是 从零开始的,,到时候我做一系列视频教程讲解从
草稿纸设计一个简单的计算机。

[修改于 1 个月前 - 2017-02-27 11:21:10]


qql1 个月前 -2017-02-27 11:56831257
其实我做的这个跟之前龙少制作的很像,从基本原理上看差别很小,
都是哈佛结构,都没有中断和栈,但是这些都可以利用编译器从软件上模拟。

简单罗列一下差别如下:

龙少CPU                                         qqlCPU  (qCPU)
位数:8位                                                  4位
ROM:2MB/4MB                                       4KB
RAM:4MB                                                4KB
ALU 芯片:74LS181                                74HC283
电路板:14块                                   1块主板 + 1块下载器
下载方式: 编程器?SD卡?                USB下载器

下载方式肯定是USB下载方式好的,连电源都可以省略了,编译下载运行
一键搞定

成本:  
龙少的187块IC芯片+14块PCB板子,焊接都很麻烦了
他的设计中使用了过多的244三态门缓冲器,不是一个简洁的设计。

我的设计中使用153,157数据选择器,比使用244简洁。
我的整个系统才28块IC,一块16cmX10cm 大小的主板

外设:
其他什么外设VGA之类其实不是很必要,毕竟只是简单的处理器
LED流水灯,LED点阵,简单的字符液晶就算完美了

分析纯_金25 天前 -2017-03-01 12:32831357
窝目前也在挖这个坑2333不过我懒得买74看手册了,FPGA大法好:)
lz不要一看到语言就想到python啦lua啊javascript什么的。语言也有高级的和低级的。
比如verilog就low的不要不要的
273914

273915

qql25 天前 -2017-03-01 14:58831363
引用 分析纯_金:
窝目前也在挖这个坑2333不过我懒得买74看手册了,FPGA大法好:)
lz不要一看到语言就想到python啦lua啊javascript什么的。语言也有高级的和低级的。
比如verilog就low的……
嗯,,其实 我也玩C++,PHP,JS,python也用过。VHDL学校学过,verilog 后面自己还专门学了
一下,还不错。
目前做这个就是想只是使用 简单的元器件搭出来,我还想从晶体管级别搭一个,
或者用继电器搭一个,证明一下在150多年前,其实人们也可以用继电器搭一个计算机。
不过这个要耗费很多时间,先放一放吧。
============================================

我设计的这个,我觉得是4位计算机中最简洁的(简洁就是美),非常适合类似中学生这样
入门学习计算机原理。
后面我做一系列视频讲解怎么玩,以及点评讲解其他人的设计。

如果大家支持我的话,后面我再研究 冯诺依曼体系结构的 CPU设计,可能做复杂一些,加入

中断,栈之类,有可能用FPGA来设计。

[修改于 25 天前 - 2017-03-01 15:02:32]


分析纯_金25 天前 -2017-03-01 17:18831369
引用 qql:
嗯,,其实 我也玩C++,PHP,JS,python也用过。VHDL学校学过,verilog 后面自己还专门学了
一下,还不错。
目前做这个就是想只是使用 简单的元器件搭出来,我还想从晶体管级别搭一个……
继电器非常好评,我有空也打算弄个玩的。

虎哥25 天前 -2017-03-01 17:24831370
如果没记错的话的,计算机史上的确有继电逻辑的作品。当年灵图搞的那个破译机,不就是继电 机械逻辑吗。而德国更先一步制成Z3型计算机,美国也在同一时代制成了MARK系列计算机。用电子管替代继电器是顺理成章的事情,目标至今没变:提速。
273928

qql24 天前 -2017-03-02 00:32831398
引用 虎哥:
如果没记错的话的,计算机史上的确有继电逻辑的作品。当年灵图搞的那个破译机,不就是继电 机械逻辑吗。而德国更先一步制成Z3型计算机,美国也在同一时代制成了MARK系列计算机。用电子管替代继电器是顺理成章……
虎哥,我正想后面把图灵破译的那个算法提取出来,用我自己设计的CPU来破译德军的密文,哈哈哈

或者计算圆周率π 也挺好玩的,还有其他比较有趣的比如 生成对数表 等等之类的

guangyu_200523 天前 -2017-03-03 21:22831434
期待qql,尽快更新,前期联系龙少未果。。。

我说要有光22 天前 -2017-03-04 20:15831459

guangyu_200521 天前 -2017-03-05 11:22831479
youtube播放不出,有什么办法?

radio21 天前 -2017-03-05 17:20831499
没有栈是怎么实现CALL和RET的?
是把地址存进寄存器?

[修改于 21 天前 - 2017-03-05 18:11:27]


qql21 天前 -2017-03-05 20:56831505
引用 radio:
没有栈是怎么实现CALL和RET的?
是把地址存进寄存器?
有栈,只是没有专门的栈指针,因为寄存器资源紧一点,用一个内存地址来做栈指针
毕竟内存有4KB这么大,相对寄存器多很多

qql21 天前 -2017-03-05 20:58831506
引用 guangyu_2005:
youtube播放不出,有什么办法?
你可以使用赛,风,蓝,灯之类的软件,就能打开youtube

qql21 天前 -2017-03-05 21:02831507
引用 guangyu_2005:
期待qql,尽快更新,前期联系龙少未果。。。
前面打样PCB有BUG,浪费了200,现在重新打样10片(打样很慢还没到),我自己留一片,
我算了一下,整个系统100来块钱,你要的话给你留一片

[修改于 21 天前 - 2017-03-05 21:17:32]


qql21 天前 -2017-03-05 21:17831508
引用 guangyu_2005:
期待qql,尽快更新,前期联系龙少未果。。。
做一款经典的计算机设计板子还是挺累人的

[修改于 19 天前 - 2017-03-07 11:57:41]


qql19 天前 -2017-03-07 14:54831521
下面是这个计算机系统的设计原理图,基本没有什么修改了,大家可以看看

273996


PDF文件格式的:

其他LED数码管,LED点阵,下载线还在制作测试中。。

[修改于 19 天前 - 2017-03-07 14:57:21]


manbo78919 天前 -2017-03-07 16:01831522
编译器是自己弄的?

qql18 天前 -2017-03-08 00:53831534
引用 manbo789:
编译器是自己弄的?
自己弄的,,就是一个汇编器,支持标号地址

qql18 天前 -2017-03-08 17:03831557
新版本设计发到了新帖子这里
https://bbs.kechuang.org/t/81483

布布卡14 天前 -2017-03-12 17:06831741
用来学微机原理比较有感觉


qql7 天前 -2017-03-18 21:47831952
这个视频好像我以前看过,,后面我研究一下他的电路看看怎么样

qql3 天前 -2017-03-23 10:17832094
为了方便交流,我建了一个QQ群 自制CPU和计算机 322053937

返回 电子技术
返回 本页顶部

想参与大家的讨论?现在就 登陆 或者 注册


nkc Development Server https://github.com/lovetheory/nkc2

科创研究院 (c)2005-2016

蜀ICP备11004945号-2 川公网安备51010802000058号