From Nand To Tetris 从与非门到俄罗斯方块

17、P1 W3 U3.2 触发器(Flip-Flops)(待完

2019-08-06  本文已影响0人  shazizm

视频:
如果本次课程对应的 Coursera 的视频打不开,可以点击下面链接
P1W3U3.2 - Flip Flops

从上节课了解到:
out(t)由 In(t-1)在一个Clock周期内(从 t-1 到 t )得出。
因为 对应的 输入 和 输出 差了一个Clock周期。
所以需要引入一个东西,在一个周期内记住 这个输入,从而得出正确对应的输出。
(注:这里解释的感觉有欠缺)

那这个东西就是 Flip-Flops(触发器)
它会把输入的状态,在一个Clock周期后,在输出端呈现。

在 t 时刻的时候,我们需要一个东西来记住上一个 t-1 时刻的输入

Flip-Flops 有很多种,在此需要的是叫DFF

DFF(Data Flip Flop)
如图 它会记住 t 时刻的 in。
然后在一个Clock周期后 在out输出。

逻辑电路 示意图里 的小三角 代表此电路是一个 时序电路。


这个课程,只需要这一种时序逻辑电路DFF,就能完成存储,计数等电路

在这个课程里, DFF 就像 NAND 一样,被假设成一个最基础的元件。

课程里并不会去设计实现 DFF
提到老师提供的硬件模拟器也不支持 实现DFF
那真正的物理电路应该怎么设计呢?

最后解释了一下在物理世界DFF,可以是由NAND组成的。
概念复杂,大概分两步实现一下:
第一步:(待完善)
第二步:(待完善)

课程遗憾,没有加入 时序电路的实现。

课程里需要的时序电路,基本都是基于如下结构实现的。

图里 有一串DFF,每一个DFF可以理解为一个位(bit)
需要学生设计的是 左边蓝色色块(Combinatorial Logic),之前两周设计的那种逻辑电路。

另外上一步输出的也可能会作为当前步的输入。

全课时序电路的设计思路

先来介绍一个可以一直记住 一位状态的东西(1位寄存器),这一位的状态经过多少Clock周期都不会变,直到请求记住新的状态。

2个input:
如果 load现在是 1,那么下一时间的 out = 现在的 in
如果 load现在是 0,那么下一时间的 out = 现在的 out

load是1的时候,就是请求1位寄存器记住当前输入。

下图给出一个例子,看load 和 in 的变化,如何影响 out


那么这样一个东西(1位寄存器),我们如何设计实现呢。
如下图


利用一个mux 和一个 dff

下图 给出一个带时序的来分析一下:

红圈框住的时序后,out 应该是什么呢?


上图 红圈框住的时序后,out 应该是什么呢?答案:0

这节课,知道了DFF在课程里是直接给出(就像NAND),不用学生设计和实现。

并且用 DFF 和 Mux 实现了一个 1位的寄存器。

下节课,就来看如何用DFF来做出一个巨大的存储器。

上一篇下一篇

猜你喜欢

热点阅读