目录
(2)多路信号分离器(DEMUX Demultiplexer)(一生多)
(1)Finite state machines(FSMS):有限状态机
(3)设计Moore Machines:以智能交通信号灯为例(输出只受状态影响)
(4)米利型状态机(mealy machine)模式检测器(pattern Dectector)
1. 地址编码器(decoder)是解复用器(demultiplexer)。
(2)PROM(Programmable Read Only Memory)
1. 半加器(half adder)/全加器(full adder):
(1)单周期处理机(single-cycle processor)
(2)多周期处理机(multicycle processor)
(3)流水线处理机(pipelined processor)
(1)命中率(hit rate):CPU成功请求到数据的概率
第一章 逻辑电路
1.逻辑门
AND(a*b)
OR(a+b)
NOT(a取反)
buffer(通路,不管他)
使用逻辑门时,注意:
(1). 不要使逻辑门销保持浮动
(2). 不要并行进行多个输出。
(3).逻辑门需要时间来对它们的输入做出反应
2.画出电路图
(1)单个表达式
先按照表达式画一个稍微复杂的图
我们进行化简,将 ,i2,i0三个值做一个真值表
我们发现这符合异或门的规律,所以我们可以将 这部分的图用
来代替
可以化简成这样
(2)多个表达式
我们先提取出表达式里面都有些什么
好了,最主要的就是i0~3了,我们将他们初步画在电路图上
接着用与门造出小部分的组合
最后用或门把他们都拼接起来
(3)一般的电路图设计如下
3. MUX(multiplexer) :多路复用器
多路复用器根据选择信号的值(s1,s0)从几个输入中选择出一个输出(多生一)
(1)性质:
2^n:1的MUX的选择信号对有n个信号
选择信号的宽度取决于输入信号的宽度
输出值(y)是一个1位信号
(2)多路信号分离器(DEMUX Demultiplexer)(一生多)
4.Multiplexer Logic
最简单的方式:多路复用器可以用作查找表来执行逻辑功能。
更先进的方式:我们可以通过用该变量来表示输出来组合行对来消除一个输入变量。这可以返回一个小的(半大小的)真值表。
从多路复用器读取表达式
1.创造真值表
2.找出最小项创建SOP
3.写出表达式
第二章 时序电路(sequential circuits)
1. 基本概念
组合电路的输出仅依赖于电流的输入,而时序电路输出取决于电流输入和内存
(1)双稳态元件
特点:非门是交叉耦合的,这意味着i1的输入是i2的输出,反之亦然
![](https://i-blog.csdnimg.cn/blog_migrate/5647d36c054825c167f31294ca09da6a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/774669c91305abaf6fd6af88f1e26c1f.png)
(2)SR锁存器(锁存0和1)
它的状态可以通过S(设置)和R(重置)输入进行控制。
第一种情况:R=0,S=0, 这个时候输出的是内存
第二种和第三种情况的分析:
最后一种情况无法输出
那为什么不单独用S或者R来算Q或者!Q,因为当S和R都为1时,输出来的Q和!Q是错误的,无法输出,单独输入S或R是不会出现这种情况的,所以S和R得捆绑在一起输入。
既然可以捆绑,那整个SR锁存器可以进行封装
那有没有可以控制S和R状态改变的呢,我们可以在封装外面加上CLK和D来控制,也就是D锁存器
(3)D锁存器
我们用D(data)信号来控制下一个状态是什么
用CLK(clock)信号来控制什么时候状态要进行改变
时钟信号是一个周期变化的信号,他的图长这样
D锁存器的输出随着时钟信号的变化而变化
D锁存器对于电平变化非常敏感,如果时钟信号处于高电平,则将D的输出传给Q,D的输出和Q的一样,和!Q相反
但是问题来了:如果时钟信号处于高电平位置时,D必须保持稳定状态,这样Q的输出才能是稳定的,然而在上面的图里面,在CLK处于高电平状态时,D上升,D的上升变化立即传播到Q,Q跟着上升。Q复制了D上升的那段斜线,此时Q的状态不稳定(介于1和0之间)。
那么怎样使Q能够稳定输出呢,D触发器告诉了我们答案
(4)D触发器
D触发器由两个D锁存器组成,
第一个D锁存器用来存储D的输入,当第二个D锁存器的CLK信号和第一个同步时,进行输出。
D触发器有两种形式
(1)小圆点在后一个锁存器上的
D触发器将D在时钟的下降边缘复制到Q(negative edge-triggered)
(2)小圆点在前一个锁存器上
D触发器在时钟的上升边缘复制D到Q(positive edge-triggered)
(5)寄存器
N位寄存器是一个N个触发器组,它们共享一个公共的CLK输入,因此寄存器的所有位都可以同时更新
①平行寄存器(PIPO)
②移位寄存器(SISO)
它有一个串行输入Sin,一个串行输出输出。在时钟的每一个下降/上升边缘,一个新的位从Sin移位,所有后续内容向前移位。
③串行并行输出(SIPO)寄存器
从Sin输入数据,从Q0到Q3输出数据
④并行操作中串行输出(PISO)寄存器
从D0到D3输入数据,从Sout输出数据
2.时序电路逻辑
时序电路设计:时序电路设计是组合电路(combinational)加上存储元件(storage element)
时序电路和组合电路的区别:
*时序电路的值取决于当前值和之前输入的值。
时序电路(Sequential Circuit)等于触发器+组合电路。
触发器存的值是状态值(state),x和状态值Q同时输入,产生结果y和新的状态值Q+,Q+被存在
存储元件中。
(1)Finite state machines(FSMS):有限状态机
用于展示状态值变化的过程
有限的理解:因为存储元件存的有限元素,输出的y也是有限的。
state的值有1个,同输入时会得都2个不同的结果
state的状态值有n个的话,结果就有2^n个
FSM的状态表示:状态转换图
解读状态转换图
一个封闭的圆表示一个状态,图中有两个状态S0,s1,最右边的0/0表示:输入/输出。
箭头从Q=1返回到Q=1表示,输入为0时,状态值不变,输出的结果y=0
同理:从S1指向S0的箭头1/0,表示在状态值S1时输入1,状态值被改变为S0,并且输出结果y=0
如果输出结果和输入没有关系,结果可以写在圆内:
上图中的S1状态下无论输入是0还是1,输出结果都为0,只有状态改变,所以我们可以把y=0写在圆内
(2)分类
FSMs可以分为两类:Moore machines和Mealy machines
两者区别:摩尔型(Moore)的输入->状态->输出,输入不直接影响输出
米利型(mealy)的输入->状态->输出同时输入->输出,输入可以直接影响输出
状态真值表:
已知Fsms的输入:状态值+输入(Q+a),输出:新的状态值+输出(Q^+ 和 y),所以我们可以对新的转态值和输出做真值表,并且求出等式。
(3)设计Moore Machines:以智能交通信号灯为例(输出只受状态影响)
输入:两个交通信号Ta Tb,输出:两个信号灯信号La,Lb
要求:当交通拥挤时保持绿灯
1.设计状态转换图:x表示无论1还是0都不影响结果
2.求状态真值表和状态等式
注意我们对状态进行二进制编码00表示Sa,01表示sb(用二进值编码把状态值存在寄存器里面)
同样结果有三种(红橙黄),所以我们对结果进行二进制编码求出等式
最后构建电路图
总结:state Diagram->state table->state/output expression->sequential circuit
(4)米利型状态机(mealy machine)模式检测器(pattern Dectector)
输入是比特流0,1序列,并检测到101时输出1
状态转换图
从Sa开始,当输入1时切换状态输入0时才转换状态,最后再无论结果是0还是1都回到Sa。
简单来说:先和101的1匹配再和0匹配最后和1匹配。
后面和交通信号灯大同小异:把状态量二进制编码表示,求表达式不多展开
分析时序电路就反过来
(5)总结:用有限状态机设计时序电路
第一步:确定选用什么机
第二步:画出状态表和输出表,并写出表达式
状态表包含当前状态,输入和下一状态
输出表
第三步:根据表达式画出电路图
这里的画图有两个方法:逻辑门方法和用可编逻辑阵列方法
举个例子:画出下面表达式的电路图
用逻辑门可以这样画 用可编逻辑阵列可以这样画
可编逻辑阵列的方法后面会提到,在这里先说一下打叉的地方说明取的是这里的输出
练习:
根据图片画出状态表和输出表(其中Sa = 00、Sb = 01、Sc=10(即,如果状态为10,则为Q1 = 1;Q0 = 0))
同步电路和异步电路分析(Synchronous and Asynchronous Sequential Logic):
同步电路:电路元件只有寄存器或者组合电路,所有的寄存器用一样的时钟信号
异步电路:可能有多种时钟信号
![](https://i-blog.csdnimg.cn/blog_migrate/9756f3ce126785ac60359d89c4bac2e3.png)
第三章 内存数组
内存数组是由单元(cell)组成的二维数组。
读取数据时每次读取一行,每行都有一个对应地址,地址是固定的。
1. 地址编码器(decoder)是解复用器(demultiplexer)。
输入和VDD连接,以选择信号作为地址信号
一个输入信号对应地址的一位,输出的结果是y中的某一个,总的来说是一个地址信号对应一个输出y,更像是一种映射关系。
Ps:我们常说的地址和内存的物理地址是不一样的,地址解码器是把地址映射为在内存上的实际地址。
2. 存储单元(bit cell)
每个bit cell存着一个bit数据,如果wordline(字线)为0,位线(bitline)和bit cell不连接,为1则连接
位线可以改变bitcell的内容,字线用来决定位线是否发挥作用
在DRAM中,一行存储单元共用一条字线和多条位线。
不同的类型的bitcell存储数据的方式不一样:
DRAM(Dynamic RAM):给电容充能,充能表示1,接地表示0
优点:便宜和快,缺点:每次数据在读完后或者每隔一段时间要重新充能,因为电容的电会泄露
SRAM(Static RAM):用双稳态电路直接保留高低电平表示0,1,有比DRAM更多的电级管
优点:不用充能,缺点:贵和慢
3. 读取存储单元
位线开始不连接bitcell,字线打开后,位线连接,bitcell的值输出位线0或1
写入bitcell:位线被驱动,字线被打开,位线写入。
写入可以k不用地址解码器,应为写入哪个位置由系统决定,如果精准写入就会用到。
(1)ROM(只能读的内存)
用有无晶体管表示是否存储数据。
电流只能从字线流向位线。
像这里有点的位置表示有数据存储在这里。
(2)PROM(Programmable Read Only Memory)
只能被写入一次。
原理:一开始假设字线和位线连通,输出高电压破坏连接,不可逆。
EPROM:EROM的一种,不同在于破坏数据用强紫外线。
(3)可编程式逻辑阵列
一种固定结构逻辑器件,具有可编程与门和可编程或门。
体系结构对应于SOP形成的逻辑表达式。
根据真值表设计电路
数据读取形式:找点对应的字母,先纵向查看有没有字母组合,最后在最下方进行横向查看,用或门的特性把刚刚的字母组合加起来
第四章 ALU
1. 半加器(half adder)/全加器(full adder):
全加器 半加器
输入:
a,b
Cin是进位输入
输出:
Cout : 就是在计算过程中出现的进位的数字
y:a+b的最终结果
根据真值表求出表达式构造就好了
2.多字节全加器
1.把全加器的C out和下一个全加器C in连接
这种叫做(Ripple-Carry Adder)行波进位全加器
n位全加器含义2*n+1个门
2.先行进位全加器,进位的运算不用用前一个C out直接求出表达式(CLA)
运算只用到三个门
3.减法运算:a-b等于-b的补码加a
-b的补码等于将b包括符号位按位取反+1
减法就转化为加法(a-b = a + (-b)),加完把最前面超出位数的去掉就行
乘法(无符号数)
两个规则:1.必须前面补符号位2减去最后一个数
移位:左移/逻辑右移/算术右移
逻辑移补0,算术移补符号位
逻辑与位异或:略
4. ALU:算术逻辑整合单元
一个ALU将各种数学和逻辑运算组合成一个单元,不只是可以进行加法,还可以计算减法啊,逻辑位移那些。而且ALU相当于一个计算器,他是不会存储计算结果的。
F:表示操作模式,a,b表示输入,y表示输出
5.怎么使用ALU
(1)ALU在CPU里的电路长啥样
使用寄存器提供ALU输入信号并捕获输出。该寄存器文件包含多个寄存器。哪些寄存器为ALU提供输入数据取决于地址(A1、A2)。哪个寄存器将存储结果取决于地址A3
(2)如何向寄存器文件提供指令
计算机先将输入的指令存储到指令内存中,接着指令内存输入部分指令到ALU和寄存器文件
(3) 怎么按顺序向ALU传输指令
我们使用一个附加的寄存器和一个加法器来生成程序计数器(PC)信号。在每个循环中,PC的值都增加了1。因此,指令可以逐个转到寄存器文件。
(4)我们可以增加一些指令的形式
type-r指令,r表示register,由3个寄存器名字和1个函数的形式
type-i指令,i表示immediate number立即数,由操作码(opcode),两个寄存器和立即数组成
比如这条指令
例如:
当操作码 = 1,表示将立即数放到寄存器2,忽略寄存器1
当操作码 = 2,表示寄存器2 = 寄存器1的数据+立即数
(5)如何设计支持type-i和r指令的电路
我们可以加上一个控制单元来存储函数和操作符
(6)type-j 跳转指令
设计type-j指令电路
sign extend 画了一条线返回加法器,这个地方就是返回return步骤
(7)存储问题
我们的ALU只是一个计算工具,如果我们想要在上一次计算结果下继续计算,又该怎么做呢
计算机为此设置了一个数据内存,每一次计算结果,符号,命令等都会存在这里面,可以从里面调用数据重新返回给寄存器文件和ALU进行下一次计算
第五章 CPU
1.CPU工作进程
2. 处理机
(1)单周期处理机(single-cycle processor)
特点:在单个周期中执行命令,如果遇到一条比较长的命令,CLK的周期必须足够长
(2)多周期处理机(multicycle processor)
特点:通过添加一组寄存器,将一条指令分解为多个更短的步骤
(3)流水线处理机(pipelined processor)
将单周期处理器细分为五个流水线阶段。因此,多条指令可以同时执行,每个阶段各执行一个。
每个寄存器将整个图分成5大块
和多周期处理机的区别是多条指令能不能同时进行
(4)三个处理机的比较
单周期处理机指令逐个执行,每个指令的执行时间相同,命令处理完到下一条命令会有一个空档期
多周期处理机指令逐个执行,有些指令可以比其他指令执行得更快。
流水线处理机指令同时执行
练习:
您的任务是通过重新设计单周期处理器的结构来提高其速度。给定的CPU假设有3个不同的指令。这些指令的执行过程如下所示。
命令1: 获取指令、解码、执行和回写。
命令2: 获取指令、解码和回写。
命令3: 获取指令、解码和内存写入
当前,每个进程步骤的时间消耗为:获取命令4ns;解码1ns;执行8ns;回写4ns;内存写入: 8ns。哪种优化对提高速度的效果最好?
A. 内存写入: 8ns -> 2ns
B. 获取指令: 4ns -> 2ns
C. 执行时间: 8ns -> 5ns
这道题答案选C,不是选A哦
单周期处理器,每一条命令的执行是单独的,需要等第一条命令处理完才能开始第二条命令。
命令一总时间17ns,命令二总时间9ns,命令三总时间13ns
这种问题其实是一种木桶效应的问题,命令一总时间最长,说明他是这个进程里面的短板,我们就要给他缩短时间填补短板,而命令1缩短时间最好办法就是C选项的处理方法
3.缓存
CPU可以从缓存中请求数据。
如果缓存包含数据(缓存命中),缓存可以立即将数据传递给CPU(以非常高的速度)。
如果缓存不包含数据(缓存丢失),CPU将从内存中获取数据(并将数据放入缓存中以备将来使用)
(1)命中率(hit rate):CPU成功请求到数据的概率
下图CPU有6个箭头通过缓存指向内存,说明命中4个数据,丢失了6个数据