时序逻辑电路设计

锁存器和触发器

  • 组合逻辑电路的不足
    不受统一的时钟信号控制,电路输出端完全由输入端的状态决定,是一种无记忆电路 输入信号消失,则输出信号也会立即消失

RS锁存器/D锁存器

触发器就是构成记忆功能部件的基本单元,是实现储存记忆功能的基本单元电路

时序逻辑的特点
  • 当时的输出由当时的输入和电路的原来状态共同决定 具有“记忆”功能
  • 结构特点:由组合逻辑电路和储存电路组成

触发器的概念和特点
  • 构成记忆功能部件的逻辑单元电路

特点:

  1. 有两个互非的输出Q和Q\overline Q,Q称为状态变量
    当Q=0时,称为0态;当Q=1时,称为1态
  2. 无外加信号时,触发器保持原有状态不变,n级触发器可以储存n位二进制数的2n种状态
  3. 在外加信号的作用下,触发器可以从一种状态转换到另一种状态,具有置0或置1的功能
双稳态电路
  • 可以有两种稳定状态的电路
  • 可以用两个反相器构成
    可输出两种稳定状态,但是首次加电,初值未知,Q未知,缺少输入,电路无法工作
基本RS锁存器
  1. RS锁存器:由两个与非门或或非门交叉连接构成。

    • 功能
      • 保持:保持当前状态不变。
      • 置0:将输出状态置为0。
      • 置1:将输出状态置为1。
    • 约束条件:两个输入信号 S 和 R 不允许同时为1。
  2. RS锁存器的逻辑表示方法

    • 功能表:描述输入状态如何影响输出。
    • 特性表:将电路的当前状态和输入列入真值表,用以计算次态。
    • 特性方程:基于特性表推导出锁存器的功能方程。
    • 基本RS锁存器的HDL代码
    1
    2
    3
    4
    5
    6
    module RS_FF(Q, QN, SDN, RDN);
    input SDN, RDN;
    output Q, QN;
    assign Q = !(SDN && QN);
    assign QN = !(RDN && Q);
    endmodule
D锁存器
  1. D锁存器:通过单一输入端 D,简化RS锁存器,消除不确定状态。

    • 工作原理
      • 当时钟信号有效时,输入端 D 决定输出。
      • 当时钟信号无效时,输出保持不变。
  2. 钟控RS锁存器:为协调电路的同步工作,增加时钟信号控制。

    • 电位触发:当时钟信号为高电位时,RS锁存器的状态随输入变化。
  3. 钟控D锁存器:通过D输入和时钟信号的配合实现数据存储。

D触发器

D触发器

  • 由两个反向的D锁存器构成,主从结构,时钟沿触发状态变化。
  • 分类
    • 主从触发器:主锁存器和从锁存器的时钟输入相反。
    • 边沿触发器:只在时钟信号的边沿(上升沿或下降沿)改变状态。

JK触发器

JK触发器

  • 功能最全面的触发器,具备置0、置1、翻转、保持功能。
  • 逻辑功能:通过增加反馈线解决RS锁存器无效状态问题。
  • 特性表:根据不同输入 J, K 决定输出。

JK触发器的HDL设计

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
module JK_FF(CP,J, K,Q,QN);
input CP, J, K;
output Q,QN;
reg Q,QN;
always @(CP or J or K)
begin
if (CP==0) //保持
begin Q = Q; QN = QN; end
else if (CP==1)
case ({J,K})
2’b00: begin Q = Q; QN = QN; end //保持
2’b01: begin Q = 1’b0; QN = 1’b1; end //置0
2’b10: begin Q = 1’b1; QN = 1’b0; end //置1
2’b11: begin Q = !Q; QN = !QN; end //翻转
endcase
end
endmodule

有限状态机(FSM)

可描述有限个状态以及这些状态之间的转移及引起转移的动作等的离散数学模型。

  1. FSM的分类
    • Moore型FSM:输出信号仅与当前状态有关。
    • Mealy型FSM:输出信号与当前状态和输入信号有关。

Moore型有限状态机

  1. Moore型FSM设计:

    • 输出信号仅与当前状态相关
    • 输入M位,输出N位,状态K位(可以表示2k个不同状态)
    • 次态逻辑:组合逻辑电路,输入M+K位,输出K位次态
    • 状态寄存器:K位寄存器
    • 输出逻辑:组合逻辑电路,输入K位状态,输出N位信号
  2. FSM设计步骤

    1. 确定输入、输出和状态数。
    2. 绘制状态转换图。
    3. 编写状态转换表。
    4. 编写输出逻辑表和次态逻辑表。
  3. Moore型FSM设计示例:交通灯控制器FSM模型。

    • 状态:A路绿灯/B路红灯、A路黄灯/B路红灯、A路红灯/B路绿灯、A路红灯/B路黄灯。
    • 输入:传感器检测是否有车辆等待,1表示有人通过或等待,0表示无人等待。
    • 输出:A路绿灯B路红灯、A路黄灯B路红灯、A路红灯B路绿灯、A路红灯B路黄灯。

Mealy型有限状态机

  1. Mealy型FSM设计:

    • 输出信号与当前状态和输入信号有关
    • 输入M位,输出N位,状态K位(可以表示2k个不同状态)
    • 次态逻辑:组合逻辑电路,输入M+K位,输出K位次态
    • 状态寄存器:K位寄存器
    • 输出逻辑:组合逻辑电路,输入M+K位,输出N位信号
  2. FSM设计步骤:与Moore型FSM类似,但输出逻辑表和次态逻辑表不同。

有限状态机的状态编码问题

  1. 起始状态选择:起始状态指电路复位后所处的初态,选择合适的起始状态将使设计简捷高效。 FSM必须有时钟信号和复位信号。
  2. 状态编码方式的选择
  • 二进制编码:采用log2N个触发器来表示这N个状态,按二进制顺序编码,节省逻辑资源,但可能产生输出毛刺
  • 格雷码编码:采用log2N个触发器来表示这N个状态,但相邻状态只有一个比特位不同。节省逻辑资源,降低了输出毛刺的可能,状态转换中,相邻状态只有一个比特位产生变化。
  • 独热码编码:采用N个触发器来表示这N个状态。逻辑资源消耗最大,但可以避免状态机产生错误的输出,并且有时可简化输出逻辑。

时序电路的时序分析

  1. 时序约束

    • 建立时间 $ T_{setup} $:时钟沿之前,输入必须稳定。
    • 保持时间 $ T_{hold} $:时钟沿之后,输入需保持稳定。
    • 孔径时间:$T_{setup} + T_{hold} $ ,输入必须稳定的时间窗口。
    • Clock-to-Q时间 $ T_{ctq} $ :从触发时钟边沿到输出稳定的时间
  2. 时钟周期的计算

    • $ T_{clk} \geq T_{ctq} + T_{cd} + T_{setup} +时钟偏移$
    • 其中:
      • $ T_{ctq} $:时钟到输出的延迟。
      • $ T_{cd} $:组合逻辑的最大延迟。
      • 时钟偏移:由于时钟信号源到各个寄存器部件的连线长度不同等原因所引起的各个寄存器时钟信号达到的细微时间差异, 一般忽略。

  1. 时序电路的时序

寄存器

  1. 寄存器的概念:用于存放一组二进制代码
    • 基本组成:由触发器和控制门电路组成,其中:一个触发器能储存1位二进制代码;接收数据的控制门电路,控制在同一个接收命令作用下,使各触发器同时接收数据。
    • 触发方式:由组成寄存器的触发器的触发方式决定:边沿或电位触发。
    • 基本操作:写/读/复位

寄存器{数码寄存器{数据寄存器(多位D型触发器组成)数据锁存器(多位电位触发器组成)寄存器阵列移位寄存器{单项移位寄存器双向移位寄存器寄存器 \begin{cases} 数码寄存器\begin{cases}数据寄存器(多位D型触发器组成)\\ 数据锁存器(多位电位触发器组成)\\寄存器阵列\end{cases} \\移位寄存器\begin{cases}单项移位寄存器\\ 双向移位寄存器\end{cases} \end{cases}

数据寄存器/数据锁存器

数据寄存器
  1. 组成
    • 由多个边沿触发器组成的用于保存一组二进制代码的寄存单元。
    • 当时钟信号的有效沿(上升沿或下降沿)到来时,将输入端数据打入寄存器,此时输出信号等于输入信号;
    • 在时钟信号的其它时刻,输出端保持刚才输入的数据,即为寄存状态,而不管此时输入信号是否变化
  2. 结构:多位并行数据输入输出
  3. HDL设计示例:8位数据寄存器
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    module reg_8bit(qout, data, clk, clr);
    output [7:0] qout;
    input [7:0] data;
    input clk, clr;
    reg [7:0] qout;
    always @(posedge clk or posedge clr)
    begin
    if (clr) qout = 8'b0;
    else qout = data;
    end
    endmodule
数据锁存器
  • 由多位电位触发器组成的用于保存一组二进制代码的寄存单元。
  1. 功能:(1)当输入控制信号(如时钟)为高电平时,门是打开的,输出信号等于输入信号; (2)当输入控制信号为低电平时,门是关闭的,输出端保持刚才输入的数据,即为锁存状态,而不管此时输入信号是否变化。
  2. 使用场合:通常由电平信号来控制,属于电平敏感型,适于数据有效滞后于控制信号有效的场合。
  3. HDL设计示例:1位数据锁存器
    1
    2
    3
    4
    5
    module latch_1(q,d,clk);
    output q;
    input d, clk ;
    assign q = clk ? d : q; /* 时钟信号为高电平,打入数据,否则锁存原数 */
    endmodule
    1
    2
    3
    4
    5
    6
    7
    8
    module latch_8bit(qout,data,clk);
    output [7:0] qout;
    input [7:0] data;
    input clk;
    reg [7:0] qout;
    always @(clk or data) //电平敏感
    if (clk) qout = data;
    endmodule
据寄存器和数据锁存器的区别
  • 数据寄存器:
    • 由边沿触发的触发器(D触发器)组成。
    • 通常由同步时钟信号来控制,属于脉冲敏感型
    • 适于数据有效提前于控制信号(一般为时钟信号)有效、并要求同步操作的场合。
  • 数据锁存器:
    • 由电位触发器(D锁存器)组成。
    • 一般由电平信号来控制,属于电平敏感型
    • 适于数据有效滞后于控制信号有效的场合

移位寄存器

  1. 移位寄存器的定义:具有移位功能的寄存器。每来一个时钟脉冲,寄存器中数据就依次向左或向右移一位。
  2. 应用场景:用于数据的串行输入和并行输出,或并行输入和串行输出。乘法运算中的右移,除法运算中的左移等。
  3. 分类
    • 左移寄存器:数据从左侧输入,逐位右移。
    • 右移寄存器:数据从右侧输入,逐位左移。
    • 双向移位寄存器:可双向移动数据。
    • 循环移位寄存器:数据从一端移入,从另一端移出,形成循环。
4位右移移位寄存器

  • 工作方式
    • 串入并出
      串并转换(需要N个CP周期),经过4个CP,串行输入的4位数据全部移入移位寄存器中,并从Q3Q2Q1Q0并行输出1011
    • 串入串出
      把最右边的触发器的输出作为电路的输出。经过4个CP后, Q3 输出的是最先串行输入的数据。
      从每个触发器Q端输出的波形相同,但后级触发器Q端输出波形比前级触发器Q端输出波形滞后一个时钟周期。
      把工作于串入串出方式的移位寄存器称为“延迟线” (第N级FF延迟N个CP周期)
4位双向移位寄存器
  • S=0,左移:数据从SL端串行输入,顺序左移,经过4个CP,串行输入的4位数据全部移入移位寄存器中,可从输出端并行输出;或也可继续左移,并通过QA端实现串行输出。
  • S=1,右移:数据从SR端串行输入,也可实现并行或串行输出。
  • CP:时钟信号
  • /RD:复位信号,低电平有效

  • 4位双向移位寄存器(CT74194)

  • 用2片CT74194扩展为8位移位寄存器

    • 把两片的S1、S0、CP和RD\overline R_D分别并联,两片同时做同样操作
    • 将片①的Q3接至片②的DIR,当S1S0=01时,两片同时右移,片②的输出Q3作为整个电路的右移串行输出端(Q7 )
    • 将片②的Q0接至片① 的DIL,当S1S0=10时,两片同时左移,片①的输出Q0 作为整个电路的左移串行输出端Q0

移位寄存器的Verilog实现:基于时钟信号,数据位通过移位操作向左或向右移动。

1
2
3
4
5
6
7
8
9
module shift_reg(qout, din, clk);
output [3:0] qout;
input din, clk;
reg [3:0] qout;
always @(posedge clk)
begin
qout = {qout[2:0], din}; // 右移操作
end
endmodule

计数器

同步计数器

  • 计数器:具有计数功能的数字电路,可以统计输入脉冲的个数
  • 分类:同步计数器和异步计数器、加法计数器和减法计数器、二进制计数器和十进制计数器

同步计数器:逻辑表达式、状态转换表、状态转换图、时序图

特点:
  • 所有触发器的时钟端并联在一起,作为计数器的时钟端
  • 各触发器同时翻转,不存在时钟到各触发器输出的传输延迟的积累
  • 由于其工作频率只与一个触发器的时钟到输出的传输延迟有关,所以它的工作频率比异步计数器高。
  • 由于计数器各触发器几乎是同时翻转的,因此,各触发器输出波形的偏移为各触发器时钟到输出的延迟之差,同步计数器输出经译码后所产生的尖峰信号宽度比较小。
  • 缺点:结构比较复杂(各触发器的输入由多个Q输出相与得到),所用元件较多。

异步计数器

特点:
  • 输入系统时钟脉冲只作用于最低位触发器,高位触发器的时钟信号往往是由低一位触发器的输出提供的,高位触发器的翻转有待低一位触发器翻转后才能进行。
  • 由于每一级触发器都存在传输延迟,因此计数器工作速度慢,而且,位数越多计数越慢。在大型数字设备中较少采用。
  • 对计数器状态进行译码时,由于触发器不同步,译码器输出会出现尖峰脉冲(位数越多,尖峰信号也就越宽),使仪器设备产生误动作。
  • 优点:结构比较简单,所用元件较少。

以下降沿触发的4位二进制异步计数器为例