CPU设计我要让更多的人掌握它(续1)
已有 5690 次阅读
2010-1-3 04:55
|个人分类:计算机核|系统分类:科研笔记|
计算机器件, 计算机器件, 计算机器件, 计算机器件, 原理图, 原理图, 原理图, 原理图, 语言描述, 语言描述, 语言描述, 语言描述, 计算机器件, 原理图, 语言描述
2.2 深入理解计算机的器件
计算机是由运算器、控制器、存储器和输入输出设备构成的,其中运算器、控制器和存储器称为计算机的核心部件。输入输出设备又叫周边设备或外部设备,简称外设。外设主要是用来进行人机交互或计算机之间交互的设备。计算机核心部件主要是用来执行程序的设备。电子计算机中不论何种设备都是由电路器件构成的。电路的基本元件有电阻、电容、电感、导线、二极管、三极管、变压器、开关、电源等。电子元件的组合可以构成模拟电路和数字电路。模拟电路中的电压、电流等的变化是连续的,设备的状态变化也是连续的过程。数字电路中电路的状态只考察元器件两种对立的状态,换句话说数字电路的变化是不连续的。由于一种状态用1表示,另一种状态用0表示,故称这种电路为数字电路。数字电路相对简单,且容易控制,因而是设计计算机的重要途径。一般,电路观察点为高电位记为“1”,低电位记为“0”,这样就有了逻辑代数的基本常量0和1。
数字电路实质上应该叫逻辑电路,因为用一些电子元件可以直接构造出能够表达逻辑的“非”“与”“或”三种运算的电路。用这三种电路的组合,就能够表达全部的逻辑运算。又由于二进制数数码与逻辑常量完全相同,故而用逻辑组合电路就可以来表示二进制数,进而可以表示二进制数的算术运算和逻辑运算过程。
信息是事物的表现和描述。全部信息用能否运算来划分,只有两种,一是数值,二是非数值。由于不论数值信息还是非数值信息都可以用二进制数表示,故所有的信息都可以用二进制数表达。二进制数是可以用逻辑电路表示的,因而才会有所有的信息都可以用逻辑电路表达出来。计算机的核心部分又是由逻辑电路构造的,因而计算机能够表达和处理全部信息。
组成运算器的设备包括加减法运算器、乘法运算器、除法运算器,这其中又包括定点运算器和浮点运算器,这些是算术运算器。除了完成算术运算之外,运算器还包括逻辑运算器和一些数据特殊处理的运算器。
2.2.1 组成运算器的器件
计算机的功能最主要要是由运算器表达出来的,因而理解运算器是学习计算机设计的首要任务。
2.2.1.1 导线
导线又可叫作结点,这是因为电路中导线各处的电位都认为是相同的(理想状态)。原理图中导线是一条线,Verilog HDL语言中用“wire”描述。多根导线在原理图中要用粗线表示,还要标注有多少根。在语言描述中用整数向量表达更方便。例如,wire [7:0] line; 描述的是名称是line的8根导线组成的多股线。多股线国外称为“bus”,国内又常翻译成“总线”,实际上与计算机中传递数据的公共线路叫总线有一些不同,使用中要注意。
多股线其中的一条用向量分量的形式表示。例如,line[3]表示一条线,而line[5:3]表示其中的3条线。
如何表示导线连接?原理图中只要将画的线连接到一起就可以。Verilog HDL语言中用“assign”描述。例如,assign a = b;其中 a、b是导线,可以是多股线。
导线有条件的连接,原理图用开关元件表示,Verilog HDL语言中可以用“?:”运算符号来表达。例如,assign x = (k = = 0) ? a : b;这表示:如果导线k的值是0,那么导线x与导线a连接,不然导线x与导线b连接。
2.2.1.2 基本逻辑运算
在布尔代数的学习中,将使用系统这个概念。何为系统?严格地说现在尚无定论。一个系统可以认为是所涉及的对象全部,其中包括对象和对对象的各种处理操作。理论研究中,时常将对数据的各种处理操作称为运算。
定义 2 -1 在一个非空集合上定义了若干个运算,那么所成的系统叫代数系统,简称代数。
实际当中人们研究的代数系统很多,由于课程的需要,在此只研究逻辑代数,也就是布尔代数。下面给出布尔代数的定义。
定义 2 -2 布尔代数是在集合{0,1}上定义了运算:
或运算 与运算 非运算
0 + 0 = 0 0 • 0 = 0 1 = 0
0 + 1 = 1 0 • 1 = 0 0 = 1
1 + 0 = 1 1 • 0 = 0
1 + 1 = 1 1 • 1 = 1
所构成的系统。其中“+”、“•”、“’”是“或”、“与”、“非”逻辑运算符。
在布尔代数中的0,1叫逻辑值,它们是逻辑常量。0常用来表示否定,1常用来表示肯定。例如,一盏灯的状态可以用0表示不亮,用1表示亮。再如,电路中某一点的电势相对某一个标准低就用0来表示,而这一点的电势高,就用1来表示。
2.2.1.3 基本逻辑运算的电路元件
利用二极管和三极管可以组成能够实现逻辑运算的基本电路,这些基本逻辑电路分别称为或门电路、与门电路和非门电路。
2.2.1.3.1 或门电路
图 2 -1(a)所示的是或门电路,它是用两个二极管并联再和电阻串联组成的电路,粗短线表示接地,接地表示低电位。如果将a、b、c高电位用1记,低电位用0记,那么由二极管的单向导电性可知,当a或b有一个是高电位时(即a=1或b=1时),至少就有一个二极管导通,于是R就有从上往下的电流通过,R的上端c相对于另一端是高电位,即有c=1。
只有当a和b都是低电位时(a=0且b=0),两个二极管都不导通,R上就没有电流通过,R的上端和R的下端电势相同,都为低电位,即c=0。容易验证或门电路的状态和或运算的真值表的值是一样的,因而或门电路可以表达逻辑的或运算。
或门电路今后用图 2 1中(b)所示的简单符号来记,a,b叫输入端,c叫输出端。图 2 1(b)的左图是我国规定的符号,右图是设计软件中使用的符号。
2.2.1.3.2 与门电路
同或门电路一样,可以用2个三极管组成图 2 2 (a)所示的与门电路。这个电路的工作原理是:当两个三极管的基极a,b同时加上高电位时,两个三极管都导通,于是电阻R才有由上向下的电流,这样c端就是高电位(即c=1),不然,或者a=0,或者a=b=0,或者b=0,此任何一种情况都会使两个三极管至少有一个处在截止状态,这样电路就处于断开状态,电阻R没有电流通过。由于c端通过电阻R和“地”相连,地是低电位,故而c端是低电位。
从数值上看,与门电路的a,b任何一端为0都可以使c端的值为0。例如令a=0,则c=0,这样a就起一个控制端的作用,它能够控制c端使之为0。同样,b端也有相同的作用。
容易验证与门电路的状态和与运算的真值表的值是一样的,因而与门电路可以表达逻辑的与运算。
与门电路的符号如图 2 2 (b)所示,同样a、b是输入端,c是输出端。图 2 2 (b)的左图是我国规定的符号,右图是设计软件中使用的符号。
2.2.1.3.3 非门电路
非门电路也用三极管组成。图 2 3 (a)中的非门电路的R是负载电阻。当a端高电位即a=1时,由于三极管导通,相当于c与地直接相连,于是c点的电位和地一样,就是0。而当a=0时,由于三极管处在截止状态,c通过R与下端高电位一样,则有c=1。
非门电路的符号如图 2 3中的 (b)(c)(d)所示。在电路图的描述中,本书推荐使用图中(c)的画法,因为它描述简单利落,容易和其他电路组合在一起,能直观地表达复杂的逻辑关系。图 2 3(d)的画法在软件中使用。
2.2.1.3.4 组合逻辑电路
逻辑电路是依据表达式画出的,画逻辑电路时要依据逻辑运算的先后顺序,先画自变量的部分,每一个自变量用一条导线表示,然后根据逻辑关系用逻辑门连接,最后得到因变量的输出线。下面举两个根据逻辑表达式画出电路图的例子。
【例 2 -1】 逻辑表达式Y=AB+A’BC’+AC ,画出电路图。
用导线A、B、C表示自变量A、B、C,按着逻辑函数右面的运算顺序,先用与门连接,然后再用或门连接,最后得到输出线Y,它就是逻辑变量Y。最后的结果如图 2 4所示。
2.2.1.4 Verilog HDL的逻辑运算表示
逻辑运算或、与、非,在Verilog HDL语言中用符号“|”“&”“~”表示。
例如,
assign c = a | b;
assign c = a & b;
assign c = ~a;
分别表示了逻辑变量a、b、c之间的基本逻辑运算关系。
图 2 -4 的组合逻辑电路用Verilog HDL语言描述为:
asssign y = A & B | ~A & B & ~C | A & C ;
--- 待续 ---
https://blog.sciencenet.cn/blog-340399-283764.html
上一篇:
CPU设计我要让更多的人掌握它下一篇:
CPU设计我要让更多的人掌握它(续2)