Skip to content

计算机逻辑设计

时序逻辑电路

锁存器(Latch)和触发器(Flip-Flop)

特点

锁存器(Latch)无需接入 clk,是一个 asynchronized storage。

触发器(Flip-Flop)需要接入 clk,依靠 clk 来协调同步状态转移。

描述方式

  • Used in analysis

已知触发器的输入和现态,预测触发器的输出和次态

  • Characteristic table - defines the next state of the flip-flop in terms of flip-flop inputs and current state
  • Characteristic equation - defines the next state of the flip-flop as a Boolean function of the flip-flop inputs and the current state

  • Used in design

已知现态和次态,预测我们要提供怎样的输入

  • Excitation table(激励表) - defines the flip-flop input variable values as function of the current state and next state

S-R 触发器

Characteristic Table

S R \(Q(t+1)\) Operation
0 0 \(Q(t)\) Keep
0 1 0 Reset
1 0 1 Set
1 1 ? Invalid Operation

Characteristic Equation

\(Q(t+1)\) 的卡诺图

SR\\(Q(t)\) 0 1
00 0 1
01 0 0
11 X X
10 1 1

化简之后,得到: $$ Q(t+1) = S + \overline RQ(t) $$ Excitation Table

\(Q(t)\) \(Q(t+1)\) S R Operation
0 0 0 X Keep / Reset
0 1 1 0 Set
1 0 0 1 Reset
1 1 X 0 Keep / Set

D 触发器

D 触发器,本质上就是 S-R 触发器再外加一个 1-2 Decoder。

Characteristic Table

D \(Q(t+1)\) Operation
0 0 Reset
1 1 Set

Characteristic Equation $$ Q(t+1) = D + \overline {\overline D} Q(t) = D $$ Excitation Table

\(Q(t)\) \(Q(t+1)\) S R Operation
0 0 0 X Keep / Reset
0 1 1 0 Set
1 0 0 1 Reset
1 1 X 0 Keep / Set

T 触发器

T 触发器,就是一个只能翻转和保持的触发器。

  • 实际使用中,初值由电位噪声随机生成。

Characteristic Table

T \(Q(t+1)\) Operation
0 \(Q(t)\) Keep
1 \(\overline{Q(t)}\) Complement

Characteristic Equation $$ Q(t+1) = Q(t) \oplus T $$ Excitation Table

\(Q(t)\) \(Q(t+1)\) T Operation
0 0 0 Keep
0 1 1 Complement
1 0 1 Complement
1 1 0 Keep

JK 触发器

JK 触发器,本质上就是 S-R 触发器外加一个 Complement 位(可以保证所有输入都是 valid)。可以说是集齐了上述所有触发器的功能。

Characteristic Table

J K \(Q(t+1)\) Operation
0 0 \(Q(t)\) Keep
0 1 0 Reset
1 0 1 Set
1 1 \(\overline Q(t)\) Complement

Characteristic Equation

\(Q(t+1)\) 的卡诺图

JK\\(Q(t)\) 0 1
00 0 1
01 0 0
11 1 0
10 1 1

化简之后,得到: $$ Q(t+1) = J\overline {Q(t)} + \overline K Q(t) $$

Excitation Table

Q(t) Q(t+1) J K Operation
0 0 0 X Keep / Reset
0 1 1 X Set / Complement
1 0 X 1 Reset / Complement
1 1 X 0 Keep / Set

状态机

状态表

  • Present State – the values of the state variables for each allowed state.
  • Input – the input combinations allowed.
  • Next-state – the value of the state at time \((t+1)\) based on the present state and the input.
  • Output – the value of the output as a function of the present state and (sometimes) the input.

Example 1:

img

Example 2:

img

注意:即使某个状态理论上无法达到,也需要在表中写出。因为实际情况下,电路可能会因为一些 error 而达到那个状态。

状态图

img

化简

状态等效的三种情况:

  • 首先,输出相同
  • 其次,次态相同、交错、循环

当然,更好的方式,就是用隐含表来化简

img

以上图为例,依照输出,我们对状态进行归类:

\(\left\{C, F\right\},\left\{A, B, E\right\},\left\{D, G\right\}\)

并且: $$ \begin{aligned} &C = F \ &A = B \iff C = F \land B = A \iff C = F \ &B = E \iff C = F \land A = E \ &D = G \iff C = D \land E = D \ \end{aligned} $$ 也就是:

img

从而,不难推出: $$ C = F, A = B = E, D \neq G $$ 从而,最后可以化简到 4 个状态:

\(\left\{C, F\right\},\left\{A, B, E\right\},\left\{D\right\},\left\{G\right\}\)

可编程技术

采用对接触点的熔断,进行一次性编程。

ROM

or 逻辑可编程。

img

Programmable Array Logic (PAL)

and 逻辑可编程。

缺点:

  • 某些函数可能使用一个 PAL 上的函数元件无法实现
  • 此时可以采用多级电路

优势:

  • 不难发现,对于 \(N\) 输入,我们若使用 ROM,则需要 \(2^N\) 条线。若使用 \(PAL\),则只需 \(N\) 条线。
  • 如果有 \(M\) 个函数,则总共需要 \(kNM\) 个接触点,\(k\) 为每个函数最多可用的 and 数。
  • 相比 ROM 的 \(2^NM\) 是大大的提升

img

Programmable Logic Array (PLA)

本质上,就是一个 "Sum of \(k\) Products"(而非 ROM 的 "Sum of All Minimum Terms, i.e. \(2^N\) Products")。结构和 ROM 类似,但是比 ROM 小得多。

  • 优点:
  • PLA (可编程逻辑阵列) 可以具有大的 N 和 M,可以实现对于只有有限输入 N 的只读存储器 (ROM) 来说不实际的方程。
  • PLA 的所有乘积项都可以连接到所有输出,克服了 PAL (可编程阵列逻辑) 的有限输入问题
  • 一些 PLA 的输出可以进行补码运算,添加了 POS (积和和积) 功能。

  • 缺点:

  • 通常情况下,乘积项的数量限制了 PLA 的应用。
  • 需要进行两级多输出优化,以减少实现中乘积项的数量,从而使其适应 PLA。
  • PAL 具有多级电路能力,而 PLA 中没有。PLA 需要外部连接来实现多级电路。

img

内存基础

Make RAM Larger

img

可以看到,上图中,我们增加了 A2, A3 两位,通过一个 2to4 decoder,负责选择激活哪一个

也就是:高位输入用来选择 RAM 芯片(输出是高阻态),低位输入用来选择对应芯片的 Cell.

img

Make RAM Wider

imgimg

可以看到,左图中,Data In 和 Data Out 都被拓展到了 4-bit。

SRAM 和 DRAM 的读取

SRAM

imgimg

大多数 SRAM 操作是异步的。因为 SRAM 就是事件驱动的——数据给到了,我就改变。

  • 当然,改变需要时间,但是与时钟周期无关。

DRAM

imgimg

DRAM 操作是同步的。因为 DRAM 的电容需要隔几个时钟周期之后同步刷新,而且行列是分开送入的(怎样分开?靠时钟上升沿),因此需要同步刷新、送数据。

DRAM

  1. 读写时,会破坏数据。
  2. 将所有的 DRAM 输出接到 Sense Amplifier 上,可以让破坏性读入变为非破坏性读入。
  3. 需要做定时刷新(电容会自己放电)
  4. Refresh Controller and Refresh Counter

DRAM 结构

img

如图,DRAM 适用于大型的 RAM。由于 DRAM 可以紧密排布且价格便宜,因此被广泛应用于大型 RAM 之中。

为了进一步减小线路体积,我们使用两次传入地址的方式,分别传入行列地址。

DRAM 的类型

  • Synchronous DRAM (SDRAM)
  • for addressing internal data to be transferred on each clock cycle
  • beginning with the column address counts up to column address + burst size – 1 一次可以读出多个数据
    • img 与 SRAM 配合形成 cache
  • Double Data Rate SDRAM (DDR SDRAM)
  • Transfers data on both edges of the clock Provides a transfer rate of 2 data words per clock cycle