计算机系统要素-从零开始构建现代计算机--第三章,01-D触发器与1比特存储器实现

简介

这是《计算机系统要素:从零开始构建现代计算机》的学习笔记,刚刚启程学习,记录博客好提醒自己不要半途而废。
书籍获取代码实现与书籍介绍,可关注这位大佬,视频课程:coursera/B站
偷一张大佬github截图作为介绍:
在这里插入图片描述

实现的逻辑电路

1比特位存储器

1bit存储器的记忆能力来源于D触发器(Data Flip Flop, DFF),下面先介绍DFF

D触发器介绍

在前面两章实现的电路都没有时序相关逻辑,对输入即时计算并输出计算结果,对上一时刻的状态没有记忆,而对状态的记忆是存储器实现的核心。存储器的记忆能力来源于D触发器。

D触发器功能

DFF功能
DFF功能为输出上一时刻的输入:
o u t ( t ) = i n ( t − 1 ) out(t)=in(t-1) out(t)=in(t1)
即输出永远是延迟一个时钟周期的,完成一个时钟周期的记忆
DFF时序图

D触发器原理
1.由Nand实现状态保持与翻转(基本RS触发器)

将两个Nand门按如下方式连接,成为RS触发器,为叙述方便,分别将两个Nand门记为A,B
在这里插入图片描述
假设某个时刻输入为1,1
在这里插入图片描述
此时不必关心输出是什么值,我们将上面A的输入改为0,此时A的输出为1,导致B的输出为0,B的输出转接到A的输入,可以看到两个Nand都保持了稳定:
在这里插入图片描述
此时将A的输入改为1,仍然保持稳定:
在这里插入图片描述
若此时将B的输入改为0再改为1,由于A,B是等效的,因此A将稳定输出0,B稳定输出1
总结:
输入为1,1时保持输出不变(存储的1bit内容不变)
任何时候,要保证某个Nand输出1,而另一个为0,只需要进行两个操作:
先将这个Nand的输入置为0,再置为1

2.从基本RS触发器到同步RS触发器

在这里插入图片描述
这里不分析,仅作中间变化的参考

3.从同步RS触发器到D触发器

DFF
上面这张图对应下图的in out 应该是D和Q端,
DFF功能
至于最后 o u t ( t ) = i n ( t − 1 ) out(t)=in(t-1) out(t)=in(t1)是怎么实现的,请看下面真值表的解析
真值表

D(in)CPS’R’Q(out) Q ˉ \bar{Q} Qˉ
0011不变不变
011001
1011不变不变
110110

可见:
1.一个完整的时钟周期分成2部分:CP=0(tic),CP=1(toc)
2.tic时DFF输出不变(因为基本RS触发器的输入为1 1)
3.toc时DFF输出更新为D
注:可能0叫toc,1叫tic,在这里不细究,只为了方便演示记忆的电路实现

把真值表拉长一点,从第一行开始,让它按时间演化,看看 o u t ( t ) = i n ( t − 1 ) out(t)=in(t-1) out(t)=in(t1)是怎么实现的:

timeD(in)CPS’R’Q(out) Q ˉ \bar{Q} Qˉ
tic0011不变不变
toc011001
tic101101
toc110110
tic001110
toc011001
tic001101
toc011001
tic101101
toc110110
tic101110
toc110110

从真值表看来tic toc的职责是:
1.tic,不更新,D值被忽略,输出上一toc时的输入值
2.toc,更新,将Q更新为D,不输出

第2点,toc若输出,输出的就是toc当前的输入值,而不是上一周期的输入值,失去了时间性,变成了无记忆电路。
根据以上两点,去掉干扰再看一下真值表(空格表示忽略), o u t ( t ) = i n ( t − 1 ) out(t)=in(t-1) out(t)=in(t1)就很清晰了:
真值表

timeD(in)Q(out)
tic不变
toc0
tic0
toc1
tic1
toc0
tic0
toc0
tic0
toc1
tic1
toc1

可以看到,DFF延迟输出的实现,来自于两个方面:
1.RS触发器的状态保持
2.计算机时钟的控制
DFF电路是在tic toc都会进行输出的,所以外部应该还要有控制的电路,实现tic时对DFF取值, toc不取值,这应该是计算机时钟设计考虑的范围

1bit存储器

在这里插入图片描述
有了上面的DFF,1bit存储器的实现是相当简单的
从上面看DFF功能为
if tic Q=D(t-1), out Q
if toc Q=D, no out

1bit存储器每一时刻都有两个输出候选:一,上一时刻的输入,二,上一时刻的输出
既然有两个输出候选,就把它们与load一起输入一个Mux,然后输入DFF的D端:

电路

1bit存储器

因为DFF在toc时才读取 D,更新值,所以load操作只在toc时生效
真值表,空格表示忽略:

timeinloadDQ(out)
tic不变
toc111
tic1
toc101
tic1
toc001
tic1
toc010
tic0
toc111
tic1
toc111

hdl:

CHIP Bit {
    IN in, load;
    OUT out;

    PARTS:
    Mux(a=preOut, b=in, sel=load, out=o1);
    DFF(in=o1, out=preOut, out=out);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值