数字逻辑笔记—同步时序电路

第六章 同步时序电路

6.1 同步时序电路的基本概念

6.1.1 时序电路的定义和结构

  • 特点
    • 任一时刻的输出既与即刻输入有关(若有输入),还与电路当时的状态有关(和以前的输入有关)。
    • 即电路具有记忆能力。
  • 结构
    • 一定有存储元件(触发器)
  • 时序逻辑电路一般用以下三个方程进行描述

  • 例2

6.1.2 时序电路的分类

  1. 按电路中触发器状态变化是否同步分类

    • 若时钟CP同时加到每一个存储元件上为同步 ,否则为异步

  2. 按输出信号的特性分类

    • Moore型(简洁型)

      • 无输入X,或有输入X,但: Y ( t n ) = F [ Q ( t n ) ] Y(t_n)=F[Q(t_n)] Y(tn)=F[Q(tn)]
    • Mealy型

      • 一定有输入X,且 Y ( t n ) = F [ X ( t n ) , Q ( t n ) ] Y(t_n)=F[X(t_n) ,Q(t_n)] Y(tn)=F[X(tn),Q(tn)]

6.1.3 同步时序电路的描述方法

  1. 方程组 :++输出方程++ 、++激励方程++ 和++状态方程++

  2. 状态转换真值表

  3. 状态转换图

  4. 时序图(时间图) 或称工作波形图

6.2 同步时序电路的分析

6.2.1 分析方法

  1. 列方程组
  2. 根据方程组列出状态转换表
  3. 作出状态图
  4. 作出时序图(时间图、工作波形图)
  5. 用文字描述电路的功能

6.2.2 分析举例

  • 例1

    1. 求方程组

    2. 求状态转换表

    3. 状态转换图

    4. 时序图

    5. 描述电路功能

      • 通过分析可知:该电路为7进制加法计数器

  • 例2

  • 例3

    • 状态转换图是包含了"容错处理"的全状态图,而在系统分析的时候是系统进入稳定工作后的主循环
      • 系统分析包括电路功能判断画时序图
  • 例4

  • 例5

6.3 同步时序电路的设计

  • 设计步骤
    1. 分析要求,作状态图
    2. 状态化简
    3. 选触发器及确定触发器的个数
    4. 状态分配(状态编码)
    5. 作状态转换真值表
    6. 求出状态方程、激励方程和输出方程
    7. 对存在无效状态的电路,检查能否自启动
    8. 电路图

6.3.1 形成原始状态图和状态表

  • 例1

  • 例2

  • 例3

  • 例4

    • 存在任意项(或约束项)的状态表称不完全确定状态表,它所描述的电路叫不完全确定电路。
    • 若状态表中的次态和输出都有确定的状态和输出,则称为完全确定状态表。

6.3.2 状态化简

  • 化简目的

    • 使触发器个数最少
    • 简化激励方程
  • 所谓状态化简就是要省略等效状态。

  • 等效状态最简单的判别方法是:"输入相同,输出相同,到达的次态也相同"

6.3.2.1 完全确定状态表的化简
  • 等效状态

    • 设状态S1和S2是完全确定状态表中的两个状态,如果对于所有可能的输入序列,分别从状态S1和S2出发,所得到的输出和次态序列完全相同 ,则状态S1和S2是等效的。
      • 记为:(S1,S2),或者说S1和S2是等效对。
      • 等效状态可以合并
  • 等效状态的传递性

    • 若状态S1和S2是等效的,状态S2和S3是等效的,则状态S1和S3也是等效的。
      • 记为:(S1,S2),(S2,S3) → \rightarrow → (S1,S2,S3)
  • 等效类:是彼此等效的状态的集合称为等效类。

    • 例如:若有(S1,S2)和(S2,S3),则有等效类(S1,S2 ,S3)。
  • 最大等效类

    • 若一个等效类不是任何其它等效类的子集,则此等效类称为最大等效类。
    • 即使是一个状态,只要它不包含在别的等效类中,它也是最大等效类。
  • 状态化简就是从原始状态表中找出最大等效类的集合 ,然后++用一个新符号表示最大等效类++,从而得到最小化状态表。

  1. 观察法状态化简

  2. 隐含表法状态化简

    • 基本思想:
      • 对原始状态表中的所有状态两两比较,找出等效状态对;
      • 利用等效状态的传递性得到等效类和最大等效类;
      • 将最大等效类中的状态合并,得到最小化状态表。
    • 这里的"构成循环"(Cycle),指的是在判断状态等效性时出现了一种**"互相依赖"**(Circular Dependency)的情况。
    • 简单说就是:判断 A 和 E 是否等效,取决于 B 和 E;而判断 B 和 E 是否等效,反过来又取决于 A 和 E。
6.3.2.2 不完全确定状态表的化简
  • 相容状态 :设S1和S2是不完全确定状态表中的两个状态,如果对于所有的有效输入序列,分别从S1和S2出发,所得到的输出响应序列和次态(++除不确定的那些位外++)是完全相同的,则S1和S2是相容的。

    • 记为(S1,S2),或者说S1和S2是相容对。
    • 相容状态可以合并。
  • 不完全确定状态表的化简过程:

    • 第一步:作隐含表,寻找相容状态对(这和完全确定状态表的做法完全一样)
    • 第二步:画出状态合并图,找出最大相容类
    • 第三步:作出最小化状态表
  • 作最小化状态表时,先要从最大相容类中选出一组能覆盖原始状态表中全部状态的相容类,这一组相容类必须满足以下三个条件:

    • 覆盖性:即所选的相容类的集合应包含原始状态表中的全部状态。
    • 最小性:即所选相容类集合中的相容类个数应最少。
    • 闭合性 :即所选相容类集合中的任一相容类,在原始状态表中任一输入条件下产生的次态应该属于该集合中的某一相容类。(次状态们不跨类)
  • 同时具备最小闭合覆盖 三个条件的相容类的(包含最大相容类)集合,称最小闭覆盖

    • 不完全确定状态表的最简化,就是寻找最小闭覆盖。
    • 反映闭合和覆盖这两个性质的表称闭覆盖表。该表一部分反映相容类集合的状态的覆盖情况,另一部分反映相容类的闭合关系。

6.3.3 状态分配

  • 分配原则

    1. 在相同输入条件下++具有相同次态的现状态++ 应分配逻辑相邻编码

      • 这样可以保证相应触发器的激励函数对应的卡诺图中有较多的"1"相邻,有利于激励函数的化简。
    2. 同一现状态 在++相邻输入条件下++ 的不同次态应分配逻辑相邻编码。

      • 这是因为在激励函数的卡诺图中,同一现态,相邻输入所对应的方格相邻。该原则也有利于激励函数的化简。
    3. 在所有输入条件下具有相同输出的现状态应分配逻辑相邻编码。

      • 这可使输出函数对应的卡诺图中有较多的"1"相邻,有利于输出函数的化简。
    • 当时序电路的状态分配满足原则1和原则2时,电路的激励方程比较简单;
    • 满足原则3时,电路的输出表达式比较简单。
    • 这三条原则实际分配时可能会产生矛盾,此时应按原则1、原则2、原则3的优先顺序进行分配。
  • 例题

6.3.4 求激励方程和输出方程

  • 提取激励方程的两种方法

    1. 从状态方程中提取激励方程

    2. 直接求激励方程

6.3.5 检查电路的自启动情况

  • 什么样的电路需要检查?
    • 对于存在无效状态的电路需要讨论其自启动情况
    • 无效状态 ,也称为冗余状态 (Redundant State)或未用状态 (Unused State),是指:
      1. 非工作状态: 这些状态不属于 电路设计者为了实现特定功能而规定的有效工作状态链(即正常的状态循环)。
      2. 不应出现的状态: 在电路正常上电或理想工作过程中,它们不应该被达到
  • 怎么检查?
    • 检查所有无效状态能否在有限个时钟脉冲 作用下进入有效状态且输出正确,或检查电路中是否存在无效循环
  • 如何修改不能自启动的电路?
    • 修改状态转换表或采取适当的解决措施。

6.3.6 同步时序逻辑电路设计实例

6.3.6.1 序列检测器
  • 概述

    • 用途:用于对串行随机序列信号进行检测,从中识别某种特定的序列。

    • 设计序列检测器必须明确:

      • 检测什么样的特定序列,如"101"序列
      • 检测到特定序列后,输出"1"标志还是"0"标志
      • 给定序列是否可以首尾重叠
  • 示例 :试用JK触发器 设计一个串行"111"序列检测器(可重叠)。

6.3.6.2 代码检测器
  • 代码检测器检测的对象是依次输入的指定代码。检测时应按各代码的规定进行分组,组与组之间不能混淆。

  • 示例 :试用D触发器设计一个代码检测器,它接收串行的二进制代码,输入代码每三位为一组,当**连续输入的三位代码为"011"**时,电路输出"1",否则输出为"0"。每次判别后电路都返回起始状态,准备接收下一组代码。

    • 这里无效状态有错误输出是因为在关于输出的卡诺图化简的时候把输出为d也圈进来了
    • 对于状态的卡诺图化简即使圈进来d,也未必会有错误
6.3.6.3 计数器
  • 工作原理:计加到计数器上的CP脉冲的上升边沿下降边沿的个数。

  • :试设计一个两位的二进制减法计数器,由输入X控制,X=0状态不变;X=1在CP的作用下作减法计数。

    • 当产生借位时,计数器借位位Z=1,其它情况Z=0。
  • :试用JK触发器设计一个三进制可逆计数器。当X=0时,作加法计数;当X=1时作减法计数。若计数时产生进位或借位输出Z=1,否则Z=0。

6.3.6.4 计数器-集成加法计数器及应用
引脚 名称 同/异步 功能描述
CR ‾ \overline{\text{CR}} CR 清 0 端 (Clear) 异步 功能: 当 CR ‾ = 0 \overline{\text{CR}}=0 CR=0 时,无论 其他输入如何,计数器立即被清零,输出 Q 3 Q 2 Q 1 Q 0 Q_3 Q_2 Q_1 Q_0 Q3Q2Q1Q0 变为 0000 0000 0000。
LD ‾ \overline{\text{LD}} LD 预置数控制端 (Load) 同步 功能: 当 CR ‾ = 1 \overline{\text{CR}}=1 CR=1 且 LD ‾ = 0 \overline{\text{LD}}=0 LD=0 时,在下一个 CP 上升沿 到来时,将数据 D 3 D 2 D 1 D 0 D_3 D_2 D_1 D_0 D3D2D1D0 载入到计数器中。
CT P \text{CT}\text{P} CTP ( ENT P \text{ENT}\text{P} ENTP) 计数器工作状态控制端 (使能) 同步 功能: 与 CT T \text{CT}\text{T} CTT 配合使用。当 CT P = 1 \text{CT}\text{P}=1 CTP=1 且 CT T = 1 \text{CT}_\text{T}=1 CTT=1 时,计数器在 CP 上升沿到来时执行加法计数
CT T \text{CT}\text{T} CTT ( ENT T \text{ENT}\text{T} ENTT) 计数器工作状态控制端 (进位使能) 同步 功能: 与 CT P \text{CT}\text{P} CTP 配合使用。同时也控制进位信号输出端 CO \text{CO} CO 。当 CT T = 0 \text{CT}\text{T}=0 CTT=0 时,计数功能被暂停
CR LD CTP CTT CP Qn+1 状态 模式
0 d d d d d d d d d d d d 0000 0000 0000 异步清零
1 0 d d d d d d ↑ \uparrow ↑ D 3 D 2 D 1 D 0 D_3 D_2 D_1 D_0 D3D2D1D0 同步置数
1 1 1 1 ↑ \uparrow ↑ Q n + 1 Q^n + 1 Qn+1 加法计数
1 1 0 d d d d d d Q n Q^n Qn 暂停 ( CT P \text{CT}_\text{P} CTP 禁用)
1 1 d d d 0 d d d Q n Q^n Qn 暂停 ( CT T \text{CT}_\text{T} CTT 禁用)
  • 集成计数器的应用

    1. 构成任意进制计数器

      • 预置数法

        • 归零法

          • 74LS161 的CR端是异步低电平有效------只要CR=0,不需要等待CP上升沿,直接将Q1-4全部置0
          • 74LS163 的CR端是同步高电平有效------当CR=0,需要等待到下一个CP上升沿,才能将Q1-4置0
    2. 集成计数器的级联

6.3.6.5 移位寄存器
  • 寄存器用于存储一组二值代码。其分为基本寄存器移位寄存器(单向或双向)。

  • 例1:试设计一个三位串行输入/串行输出的移位寄存器,输入信号由低位到高位依次进行,输入端为X。

    • 根据以上要求可直接作出该寄存器的状态图和状态表。Q1,Q2,Q3依次存数字的 高,次高,低;

  • 例2 :设计一个两位 串行输入/并行输出双向移位寄存器。该寄存器有X1和X2两个输入,X1控制移位方向,X2用于数据输入。当X1=0时,X2向寄存器高位串行送数,寄存器中的数据从高位移向低位。当X1=1时,X2向寄存器低位串行送数,寄存器中的数据从低位移向高位。(用D触发器实现)

6.3.6.6 典型移位寄存器型计数器
  • 环形计数器

    • 有效工作状态: 环形计数器的工作原理是循环移位 一个特定的初始模式。
  • 扭环计数器

    • 特点:任意两个相邻码组之间只有一位发生改变,故译码时不会产生译码尖峰或毛刺。
    • 由于有无效循环存在,故可以通过修改反馈函数使电路能开机后自动进入有效循环

  • 最大长度移位寄存器型计数器

    • 最大长度移位寄存器型计数器是指计数长度为 N = 2 n − 1 N=2^n-1 N=2n−1 的移位寄存器型计数器,又称反馈移位寄存器。其反馈逻辑由异或门组成。
  • 做题tips:求激活方程时,可以变换原始方程来简化求JK/D/T的过程

6.4 有限状态机---Verilog时序逻辑设计

6.4.1 摩尔状态机Verilog描述

6.4.1.1 序列检测器
  • 用途:用于对串行随机序列信号进行检测,从中识别某种特定的序列。

  • 设计序列检测器必须明确:

    • 检测什么样的特定序列,如"101"序列;
    • 检测到特定序列后,输出"1"标志还是"0"标志;
    • 给定序列是否可以首尾重叠。
  • 示例

    • 用摩尔状态机(输出由状态单独决定)设计一个"1101"序列检测器。

      • 摩尔电路的输出电路简略,但是状态图个数多1!必须用一个单独状态来表示检测到序列,同时赋予输出值!
  • 有限状态机的Verilog描述

    • 状态寄存器描述(定义现态与次态关系)
      • 现态和次态什么关系?当下一个时钟沿到达时,现态等于次态!!
    • 状态逻辑关系描述(描述状态图的变迁关系)
    • 输出逻辑描述

6.4.2 米里状态机Verilog描述

6.4.2.1 代码检测器
  • 代码检测器检测的对象是依次输入的指定代码。检测时应按各代码的规定进行分组,组与组之间不能混淆。

  • :试用D触发器设计一个代码检测器,它接收串行的二进制代码,输入代码每三位为一组,当连续输入的三位代码为"011"时,电路输出"1",否则输出为"0"。每次判别后电路都返回起始状态,准备接收下一组代码。

    • 状态图前面有,直接看verilog代码
6.4.2.2 计数器
  • 设计一个四进制可逆计数器。当X=0时,作加法计数;当X=1时作减法计数。

6.4.2.4 寄存器
  • 例:设计一个三位的移位寄存器,输入信号由低位到高位依次进行左移。

相关推荐
s090713612 小时前
使用xilinx的fir IP核实现LFM信号匹配滤波的详细过程及原理
fpga开发·xilinx·fir·zynq·脉冲压缩
XINVRY-FPGA12 小时前
XC2C256-7VQG100I Xilinx CoolRunner-II CPLD FPGA
单片机·嵌入式硬件·fpga开发·硬件工程·dsp开发·fpga
占疏12 小时前
markdown的理解
笔记
黄埔数据分析12 小时前
chatgpt prompt for fpga
fpga开发·prompt
黄埔数据分析12 小时前
不同prompt 对比 async fifo
fpga开发·prompt
切糕师学AI13 小时前
ARM 架构中的 R15 程序计数器(PC)
arm开发·嵌入式·pc·程序计数器·寄存器
玩具猴_wjh14 小时前
12.9 学习笔记
笔记·学习
阿源-18 小时前
UEFI 中的杂项知识总结-Protocol Handle 机制的详细介绍
嵌入式·uefi·edk2·固件
不会代码的小猴21 小时前
C++的第九天笔记
开发语言·c++·笔记