找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 8347|回复: 0

如何制作一台计算机?

[复制链接]

57

主题

3

回帖

386

积分

管理员

积分
386
发表于 2022-1-15 22:48:37 | 显示全部楼层 |阅读模式
如何制作一台计算机?
题主是大一CS专业的一个学生,突然产生一个想法,能不能用一年的时间做一台计算机?
查阅了一些资料,首先看到有人用逻辑电路在Minecraft里制作了一个小型计算机…于是我大大降低了做一个计算机的预期难度。
但是看了一些计算机的历史,却发现无论是帕斯卡、莱布尼茨的机械式计算机,还是有人用晶体管和导线搭建的CPU 2-3MHz的计算机,都有着极高的复杂度…
那么三个人在一年内做出一台计算机有没有可能?做出可以用机器语言编程序的机器有多难?
注:并不打算使用诸如单片机芯片的任何技术黑匣子…


知乎 北极:


首先,题主要明确你要做的计算机包含哪些东西?看题主的意思似乎是只有一个CPU,实际上计算机还包括内存、外存、输入输出设备这些,不知道题主是否考虑过这些硬件的设计。
如果只设计CPU,那么应该说,不太困难。
但如果题主是大一新生,那么我觉得可能需要学习一些基础课才行。
首先要学习的是电路基础,包括模电(模拟电子技术)和数电(数字电路),其中模电如果时间有限可以不学,但数电是必须要学的。学会了数电,就可以设计出寄存器、加法器了,并且应该掌握了门电路的使用,有了这些,如果动手能力足够强,使用74xx系列的芯片设计一个简易的计算器已经并不困难了,类似的实验很多本科生都做过,我也做过。第二步:题主要学习的是计算机接口技术,以及汇编语言,懂得如何把数字信号输入输出(通过PC调试器或者别的东西)。第三步:学习计算机组成原理、编译原理等内容,搞清楚微指令的概念,剩下的工作就是设计一套合适的指令集和微指令,把各种门电路结合到一起就可以了。当然,还有一些周边的东西也需要学,不过这些东西也可以用现成的,比如时钟信号怎么处理等等(模电会有介绍),自己买一个做好的时钟也是可以的。设计一个CPU,并不是一个特别高深的东西,一个合格的计算机专业的本科生,基本上都能学习到设计CPU的基础知识。设计CPU的困难点在于:它太复杂了,你画一个电路图,上面如果有10个门,那么很简单,有100个,就有点麻烦了,如果有1000个、10000个呢?
这东西跟编程是一个道理,写出1000行的程序的难度,和写100行的难度是不一样的,一个人独立写10000行,就算很厉害了,这都是一个道理。
就是你需要有一个整体感,能对整个框架和细节都了解清楚。
设计一个加法器、乘法器、寄存器,都不困难,但如果把几个、十几个加法器、乘法器、寄存器都组合到一块,就困难了。
真实的CPU在设计上,还有一个困难就是高频下工作的问题,但如果CPU的主频在10Mhz以下(如果芯片不好就按1MHz来设计),那么就暂时不会遇到这种问题。
另外,我见过有本科生设计出来过CPU,指令集是模仿8086的,能运行汇编指令,百度以下应该有类似的新闻,可能还不止一个。
-------------------------------------------------------
我记得我上大学那会就听说有人用TTL电路做了一个模拟CPU,可惜链接没有找到,找到一个老外的:
耐心很重要 看国外牛人自己动手在家里搭建CPU_爱活网 Evolife.cn

只要有耐心,我认为计算机本科阶段的知识是足够的。
另外,与CPU相关的还有中断控制器、内存控制器,这些东西也是要考虑的,以及I/O总线等等,这需要对计算机硬件有足够的了解。
另外,我不推荐用FPGA,用FPGA最简答,但没什么成就感,要知道从一个加法器做起还是蛮有成就感的。






回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|春软虚拟实验室交流社区 ( 鲁ICP备19005754号-3 )

GMT+8, 2025-4-3 23:06 , Processed in 0.056681 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表