前言
概述
了解了前面的一些模拟电路的基础知识,接下来我们要通过自己动手做一台计算机来了解学习数字电路等其他的一些知识。要想自己动手做一个计算机,首先需要知道什么是计算机?计算机分为哪些模块?计算机的组成原理是什么?以及计算机是怎样工作的?带着这些问题,我们一起开启接下来的学习!
自己做一台计算机步骤
其实做一台计算机就像盖房子一样,上面步骤看起来很复杂,实际上很轻松,总结如下:
1. 学习数字电路和计算机的基础知识,先了解了解盖房子用什么砖。
2. 设计出一个计算机的结构,就像盖房子需要先设计图纸一样。
3. 用电子元件(比如电线、电路板、芯片等)制作出计算机的电路,开始搬砖砌墙了。
4. 设计出计算机的指令集(比如加减乘除、取数存储等),就像是设计每个房屋的功能,这是客厅,这是书房,这是健身房,这是卫生间,水源电源和排水怎么设计
5. 开发出计算机的软件,测试是否能够正常工作,房屋里面放上家具,看看好不好用。
什么是计算机
计算机是一种能够执行计算的设备,1946年2月14日世界上第一台数字计算机ENIAC在美国宾夕法尼亚大学被制造出来,这标志着人类社会进入了信息化时代。
计算机核心原理
要学习计算机核心原理,从自己动手制作一个简单的CPU开始是最佳的途径。所以要实现一个简易的CPU,配合一些外设组成一个完整的计算机。这是个图灵完备的8位CPU的计算机,支持汇编语言,可以用我们自己的汇编器生成机器指令。因为预算有限,后期我会用到电路仿真软件进行仿真,通过模拟器运行你设计的计算机;当然如果预算充足,可以把基于原理图把真正的计算机制造出来。
CPU-中央处理器
CPU中央处理器是指挥计算机工作的核心部件,在计算机中相当于大脑的地位,承载了计算机中最基本的原理。近70年来,从早期ENIAC计算机的CPU, 到现在的手机中超大规模集成电路CPU,CPU变化的只是制作工艺,其根本的工作原理基本没有变。
电子计算机发展历史
●1945年 哈佛马克1:使用继电器,用电磁效应,控制机械开关,缺点为有磨损和延迟。
最早还因为有虫子(bug)飞进去导致故障,引申出bug=故障的意思。
● 1943年 巨人1号:使用真空管(三极管),制造出世界上第一个可编程的计算机。
● 1946年 ENIAC:第一个电子数值积分计算机,为第一台通用计算机。
● 1947年 晶体管出现,使用的是固态的半导体材料,相对真空管更可靠。
● 1950年代空军ANFSQ-7: 真空管到达计算极限。
● 1957年 IBM 608: 第一个消费者可购买的晶体管计算机出现
数字电路与二进制
二进制
数和数字
简单来说,数是一个抽象的概念,而数字是用来表示数的符号。数 (number) 是一种数学抽象概念。数字 (digit) 是表示数量的符号,如 0, 1, 2, 3, 4, 5, 6, 7, 8, 9。二进制没那么神秘,只不过是人们又发明出来一种新的组合符号来表示数字。
bit位
计算机中的一位二进制表示:单个数字1或0,1位二进制数字命名为位(bit),也称1比特。
byte字节
1byte=8bit,即1byte代表8位数字。最早期的电脑为八位的,即以八位为单位处理数据。为了方便,将八位数字命名为1字节(1byte)。
十进制与二进制
十进制有10个数字,0-9,逢10进1(不存在10这个符号),则每向左进一位,数字大10倍。二进制有2个数字,0-1,逢2进1,(不存在2这个符号),则每向左进一位,数字大2倍。我们可以用8421码将二进制与十进制连接起来,进行转换。比如二进制的1011:1*2^0 + 1*2^1 + 0*2^2 + 1*2^3= 11
二进制用途
二进制可以表示文字,如ASCII 美国信息交换标准码表
二进制也可以表示图片,下边是个6x6大小的显示屏,由36个白色LED组成,只有黑和白两种颜色,我们可以用0表示黑,用1表示白。
led灯可以通过PWM等技术去调节亮度,这样就可以表示不同的亮度,从黑(不亮)到白色(最亮),每个像素点通过一个0到255的8bit的数字(1byte)来表示, 所以28x28像素的灰度图图片需要784个byte来表示。
用0 ~ 255*255*255表示颜色数据,每一个像素点由RGB三种颜色组成。
二进制也可以表示声音
当然,二进制也可以表示视频,无非就是图片+声音。在数字视频中,视频帧被分解为数字像素,并将每个像素表示为二进制数。每个像素通常由三个分量表示:红色、绿色和蓝色分量,即RGB值。每个分量通常使用8位二进制数(即一个字节)表示,因此每个像素由24位二进制数(即三个字节)表示。视频的每一帧都由一系列像素组成。如果视频的分辨率为1920 x 1080(高清1080p),则每一帧将包含1920 x 1080 = 2,073,600个像素。对于每个像素,计算机将RGB值编码为二进制数字,并将所有像素编码成一长串二进制数字序列。这个序列被存储在计算机的硬盘驱动器中,以便以后可以被读取和播放。
逻辑门
逻辑门是一种电路元器件,它能够执行一种或多种逻辑运算。常见的逻辑门有:与门(AND gate)、或门(OR gate)、非门(NOT gate)、异或门(XOR gate)等。这些逻辑门通过接受一些输入信号,并根据逻辑运算规则产生一个输出信号。这些逻辑运算可以用来构建复杂的逻辑电路,实现各种各样的功能。
与门
与门是计算机里面一种很特殊的门,它有两个输入,叫做A和B。如果A和B两个输入都是1,那么与门的输出就是1,否则输出就是0。与门的作用就像是一个开关,它能够根据两个输入的情况来决定是否让电流通过。
或门
或门是计算机里面一种很特殊的门,它有两个输入,叫做A和B。如果A和B两个输入有一个是1,那么与门的输出就是1,否则输出就是0。或门的作用就像是一个开关,它能够根据两个输入的情况来决定是否让电流通过。
非门
异或门
异或门是一种特殊的非门,它可以把两个电信号进行比较,如果这两个信号相同,它的输出就是0;如果不同,它的输出就是1。
小结
与或非是计算机逻辑门的最基础的部件,其他任意的部件都可以通过与或非三种门来表示。
案例
用EDA绘制各种门电路:继电器:C35449,按钮:C2834896,发光二极管:C3097768,电阻:C714232,电源接头:C8404。
原理图如下:
pcb图如下:
3D效果图如下:
算数逻辑单元
ALU
ALU(Arithmetic Logic Unit)是计算机CPU中的算术逻辑单元,它负责处理计算机中的数学运算和逻辑运算。它可以执行基本的算术运算(加减乘除)和逻辑运算(与或非),并且根据运算结果产生相应的输出。ALU是CPU中最重要的部分之一,负责实现计算机的基本运算功能。
半加器
半加器,只能完成一半功能的加法器,这里说的一半功能就是他不能接收到进位。
全加器
如果一个加法器能接收进位,还能完成加法,那他就是一个全加器,一个全加器由两个半加器组合而成。
8位二进制加法器
溢出
计算的结果超过了数据的容量时,就会出现数值溢出,计算机溢出的概念:在有限的空间内,无法存储位数过大的数,则称为溢出。
补码
把一个正数的二进制按位取反,然后再加一就是负数的补码表示方法。使用补码表示法的优点在于,补码还可以避免在数值0上的两种表示方式(+0和-0),因此更加方便和精确。有了补码的表示方法,计算机就可以用加法电路来完成减法运算。
锁存器
与门可以存储下来0, 或门可以存储下来1,我们把与门和或门进行一个组合,就能做出来第一个有用的电路结构。
上升沿生效的的锁存器
下降沿生效的锁存器
寄存器
寄存器=8/16/32位锁存器
CPU中的8位寄存器
说明
后续内容会陆续发布!