数学电路与电子工程1(MEE)—— 锁存器和触发器

1 逻辑综合

1.1 DCB/DEC转换器

        下图是一个74HC42集成电路的逻辑图,它是一个二进制编码的十进制(BCD to Decimal)转换器,也称为DCB/DEC转换器。这种类型的IC通常用于将4位二进制数(BCD)转换为十进制输出。

        在这个IC中,有四个输入E_0, E_1, E_2, E_3,它们代表一个4位的二进制数。这四个输入可以转换为从0到9的十进制数字,这是由于BCD编码的特性,即每四位二进制数只能表示一个十进制数字。(二进制111 转换为十进制是7,所以需要4个输入)

        转换器的输出是十个引脚,分别代表十进制数0到9。每个输出引脚对应于一个特定的十进制数,当输入的二进制数代表该十进制数时,相应的输出引脚为高电平(1),其余的输出引脚为低电平(0)。

        例如,如果输入E_0E_1E_2E_3是二进制的1010(即十进制的10),那么所有的输出引脚都会是低电平(0),因为74HC42只能表示0到9的数字。若输入是二进制的0100(即十进制的4),那么第四个输出引脚将会是高电平,而其他的输出引脚仍然是低电平。

        图中的输出S_5,它是所有输入的逻辑与(AND)结果。

        综上所述,74HC42是一个4位BCD到10位十进制解码器,每个输出对应一个十进制数字,该数字由输入的BCD编码决定。当输入的BCD超出0到9的范围时,S_5输出将指示一个错误或无效输入。这种集成电路广泛应用于数字系统中需要进行BCD到十进制转换的场合。

1.2 逻辑的表示工具/方法

        逻辑的设计运用了很多工具,包括真值表、逻辑函数、电路图以及卡诺图(Karnaugh map)

1.2.1 真值表

        图中的真值表列出了不同的输入组合和相应的输出。输入变量包括:
        - C(选择)
        - T(茶)
        - L(牛奶)
        - J(投币)

        输出变量是:
        - 投币返回(ejection rendu)
        - 咖啡输出(sortie du café)
        - 茶输出(sortie du thé)
        - 牛奶输出(sortie du lait)

        真值表描述了在不同输入条件下的输出情况。例如,如果客户选择了咖啡(C=1),且没有选择茶或牛奶(T=L=0),并投入了硬币(J=1),则应该出咖啡而不退币(输出投币返回=0,咖啡输出=1)。

1.2.2 逻辑功能和电路图

        图为逻辑功能和电气图部分,展示了逻辑函数C的实现,这是通过使用NAND门和NOT门在CMOS技术中构建的。逻辑函数C的表达式是:
C = c.\overline{t.l}.p + c.\overline{t.l}.p = c.\overline{t}.p
其中,上划线表示逻辑非操作。

1.2.3 CMOS电路

        该电路使用了N沟道和P沟道晶体管来实现所需的逻辑功能。

1.2.4 卡诺图

卡诺图用于简化逻辑功能Sp,其表达式被简化为:
Sp = CT+ \overline{C}.\overline{T}.L

        卡诺图通过组合那些可以简化为单一项的相邻项来减少逻辑表达式的复杂性。在卡诺图中,标记为“1”和“X”的单元格表示逻辑函数为1的情况,其中“X”表示不关心的条件(即在这种情况下输出不影响函数的值)。

        本节展示了如何通过逻辑表达式、CMOS电路设计和卡诺图简化来设计一个热饮料分销机的逻辑控制系统。

1.3 CMOS逻辑门电路

        本节讲述了CMOS逆变器(或叫反相器)的结构和工作原理。

        在CMOS逆变器中,有两个主要的晶体管:一个P型晶体管T_P和一个N型晶体管T_N。P型晶体管位于顶部,连接到电源电压V_{DD},而N型晶体管位于底部,连接到地(表示为三角形的线)。

        当输入E为“1”逻辑电平时(高电平),N型晶体管T_N导通(passant),P型晶体管T_P截止(bloqué)。这意味着电路的输出S将连接到地,输出为“0”逻辑电平(低电平)。

        反之,当输入E为“0”逻辑电平时(低电平),P型晶体管T_P导通,N型晶体管T_N截止。这意味着电路的输出将连接到V_{DD},输出为“1”逻辑电平(高电平)。

        这种设计使得在任何时候只有一个晶体管导通,这有助于减少电路的功耗,因为不会有电流直接从V_{DD}流向地。这就是为什么CMOS技术在现代集成电路中非常流行,尤其是在需要低功耗的应用中。

        总结,第一张图是一个P型和N型晶体管的符号,表示逆变器的结构;第二张图是两个晶体管如何根据输入电平变化而变化的示意图。当输入是“1”时,N型晶体管导通,P型晶体管截止;而输入是“0”时,情况则相反。

1.4 CMOS逆变器中的信号传播延迟

        信号传播延迟是指输入信号变化后,输出信号稳定到新状态所需的时间。这种延迟是评估数字电路性能的关键参数之一。

在图中有两种类型的传播延迟:

1.4.1 T_{PLH}(Transition Low to High)

        当输入从低到高跳变时(L到H),输出从高到低的跳变。在这种情况下,传播延迟是指电容C_L通过P型晶体管充电的时间。P型晶体管导通时,电容C_LV_{DD}充电。

1.4.2 T_{PHL}(Transition High to Low)

        当输入从高到低跳变时(H到L),输出从低到高的跳变。传播延迟是指电容C_L通过N型晶体管放电的时间。N型晶体管导通时,电容C_L向地放电。

        如果一个逆变器是对称的,那么从低到高的传播延迟T_{PLH}将等于从高到低的传播延迟T_{PHL}。在实际应用中,由于晶体管的物理特性和制造工艺,这两个参数可能会有所不同。

        逆变器的设计要确保这两种延迟尽可能小,这样就可以使数字电路更快地响应输入信号的变化,提高电路的工作频率。传播延迟的大小直接影响了数字电路的最大运行速度和性能。在设计高速电路时,这些参数尤为重要。

1.5 CMOS电路的设计和相关的传播时间信息

        电路图中的CMOS电路是一个逻辑门电路,具体为一个逆变器链。它由三个串联的逆变器组成,最终输出为C。这种设计可能是为了增加电路的驱动能力或者是为了产生特定的逻辑功能。逆变器链中的每个逆变器都会引入一定的延迟。

两种类型的传播延迟:


        T_{PLH}:表示当输入信号从低电平跳变到高电平时,输出信号从高电平跳变到低电平的传播延迟。在这个例子中,T_{PLH}被给定为三倍的单个逆变器的传播时间3 \times t_p
        T_{PHL}:表示当输入信号从高电平跳变到低电平时,输出信号从低电平跳变到高电平的传播延迟。在这个例子中,T_{PHL}与单个逆变器的传播时间t_p相等。

        这里的t_p是指在一个对称的逆变器中的传播时间,即输入信号变化到输出信号响应所需的平均时间。

        图中的电路符号表示了电路的输入和输出以及CMOS逆变器的基本结构。传播延迟在设计任何数字电路时都是一个重要的参数,它会影响电路的工作频率和响应速度。

        对于串联的逆变器链,每个逆变器的延迟会累加,因此在设计时需要仔细考虑每个逆变器的延迟对整个电路性能的影响。

1.6 CMOS开关电路及其符号表示

        在CMOS技术中,一个开关由一个P型晶体管和一个N型晶体管组成,它们的源极(S)相连,并形成输出端点。这个组合允许电路在不同的控制电压下开启或关闭电流路径。

        电路的控制端是C(控制)和CB(控制的反相)。这两个控制端是互补的,即当C为高电平(1)时,CB为低电平(0);反之亦然。当C为1而CB为0时,两个晶体管都会导通,电路闭合,允许电流从E流向S。在符号图中,这对应于控制端C接高电平的情况,电流可以通过开关流动。

        反过来,当C为0而CB为1时,两个晶体管都会截止,电路开路,阻止电流从E流向S。在符号图中,控制端C接低电平时,开关是断开的,电流不会流动。

        这种CMOS开关广泛应用于各种数字和模拟集成电路中,特别是在逻辑门、数据总线和其他需要控制电流路径的场合。其优点包括低功耗和高速度。

1.7 多路复用器是

        2输入到1输出的多路复用器(multiplexer,简称MUX)的功能公式、电路实现和符号。

        多路复用器是一种用于在多个输入信号中选择一个信号进行输出的数字逻辑设备。在这个例子中,它有两个输入信号A和B,以及一个选择信号T。        

功能公式是:
        S = A\overline{T} + BT
这个公式意味着:
        当选择信号T为0(低电平)时,输出S将会是A信号的值,因为\overline{T}(T的反转)是1,所以A\overline{T}就是A。
        当选择信号T为1(高电平)时,输出S将会是B信号的值,因为BT是B。        

        电路图展示了这个多路复用器如何使用逻辑门来实现。图中包括了非门(NOT),用于反转选择信号T,两个与门(AND),用于处理输入信号与选择信号的组合,以及一个或门(OR),用于将与门的输出组合成最终输出S。

        符号图提供了多路复用器的简化符号,方便电路图表达和理解。在符号图中,有一个控制线T,它指示选择哪个输入信号连接到输出S。

1.8 组合逻辑电路

        这是一个按钮和灯泡的例子。根据图片的描述,这个电路有如下的功能规格:

        当按钮被按下时,如果灯泡是熄灭的,则点亮灯泡。
        如果灯泡是点亮的,按下按钮则熄灭灯泡。
        灯泡的状态会在按钮保持被按下一秒后改变。

        这个电路与之前研究的组合逻辑电路的不同之处在于它引入了“状态”和“时间”的概念。也就是说,电路的输出不仅取决于当前的输入,还取决于过去输入的历史(即电路有记忆功能),以及输入保持的时间长度。这个功能要求电路能够记住灯泡的当前状态(开或关),并且能够检测按钮是否被按下超过一定的时间。

        这种类型的电路被称为时序逻辑电路,因为输出不仅仅依赖于当前的输入,还依赖于输入随时间的变化。这与组合逻辑电路不同,后者的输出仅在当前输入下即时决定,不涉及时间延迟或历史状态。

        简而言之,这个电路包含记忆和计时功能,这些都是组合逻辑电路所不具备的。

1.9 顺序逻辑电路的基本结构

        顺序电路(Sequential Circuit)与组合逻辑电路不同,因为它包含存储元件,可以保存状态信息。这意味着顺序电路的输出不仅取决于当前的输入,还取决于电路的历史状态。

在图中的顺序电路包含以下部分:

        组合逻辑(Logique Combinatoire):它根据当前的输入和电路的当前状态,计算输出和下一个状态。
        存储元件(Éléments mémoire):用于存储电路的当前状态,使得电路能够根据历史信息来改变其行为。
        输出(Sortie):这是电路的输出,由组合逻辑和存储的状态共同决定。
        当前状态(État courant):电路当前所处的状态。
        下一个状态(État suivant):在下一个时刻,电路应该转移到的状态。

顺序电路的两个主要函数:

        输出函数(Sortie = F(entrée, état courant)):这个函数决定了基于当前输入和状态的电路输出。
        状态转移函数(État suivant = G(entrée, état courant)):这个函数决定了电路下一步应该转移到什么状态。

        这种电路的结构是Mealy机的基础。Mealy机是一种状态机,其输出不仅取决于当前状态,还取决于当前的输入。这与另一种状态机——Moore机相对,后者的输出仅由当前状态决定,与当前的输入无关。

        顺序电路广泛应用于各种数字系统中,例如计算机的中央处理器、通信系统、自动控制系统等,它们需要根据输入序列和过去的状态来决定自己的行为。

1.10 对比组合逻辑电路与顺序逻辑电路

1.10.1 组合逻辑电路(Circuit Combinatoire)

        输出仅仅依赖于当前的输入值。
        没有存储或记忆功能,因此它不具备保存历史信息的能力。
        电路的任何时刻的行为完全由那一刻的输入决定。
        常见的组合逻辑电路包括加法器、编码器、解码器和多路复用器等。

1.10.2 顺序逻辑电路(Circuit Séquentiel)

        输出不仅依赖于当前的输入,还依赖于电路的当前状态(即历史信息或之前的输入)。
        包含存储元件,如触发器(Flip-Flops)或寄存器(Registers),这些元件可以保存电路的状态。
        电路的行为取决于输入序列以及过去的状态,因此具有记忆功能。
        顺序逻辑电路通常用于构建更复杂的系统,如计数器、寄存器、存储设备和整个计算机处理器。

        总结来说,组合逻辑电路没有时间概念,而顺序逻辑电路则包含时间概念,因为它们的行为取决于时间序列上的输入和状态。这使得顺序逻辑电路能够执行更复杂的任务,如存储数据、执行计算机程序等。

2. 储存单元

2.1 存储元件(记忆元件)

        在数字电路设计中,信息存储是实现顺序逻辑功能的关键。这就需要使用能够存储信息的电子组件,我们称这些组件为存储元件或记忆元件。这些组件的主要特点包括:

        能够存储信息的状态,即使在没有电源的情况下也能保持(如非挥发性存储)或者在电源供应期间保持(如挥发性存储)。
        可以执行读取(读出存储信息)和写入(更新存储信息)操作。

2.2 存储元件

        触发器(Flip-Flops):基本的存储单元,可以存储一位(bit)信息。
        寄存器(Registers):由多个触发器组成,可以存储一个字(word,比如8位、16位、32位或64位)。
        随机存取存储器(RAM):允许数据被随机地读写,速度快,通常用作计算机内存。
        只读存储器(ROM):存储固定数据,一旦编程后通常不能更改。
        EEPROM和闪存(Flash Memory):可以电子地擦除和重写的非挥发性记忆体。

        对于需要快速访问数据的电路部分,如中央处理器(CPU)的算术逻辑单元(ALU),它们需要快速且容易访问的存储来保持数据和指令。因此,这些类型的存储通常是集成在处理器内部或作为缓存存储器存在,以减少访问数据的时间延迟,提高处理速度。这些存储元件的性能对于整个系统的性能至关重要,因为它们直接影响到数据处理的速度和效率。

2.3 冯·诺伊曼(Von Neumann)架构

        冯·诺伊曼(Von Neumann)架构的处理器架构是大多数现代计算机设计的基础。

2.3.1 冯·诺伊曼架构的核心组成部分

        a.处理单元(Unité de traitement):这通常指的是算术逻辑单元(ALU),负责执行所有的算术和逻辑操作。
        b.控制单元(Unité de contrôle):它负责控制和协调计算机内部操作的顺序,包括指令的解码和执行过程。
        c.存储单元(Unité de stockage):用于存储数据和指令,通常包括RAM和ROM。

        这三个单元通过一组总线(BUS)连接,总线负责传输数据、地址和控制信号。

2.3.2 冯·诺伊曼周期(Von Neumann Cycle)的四个阶段

        a.阶段1:取指令(Fetching the code of the instruction)。
        b.阶段2:指令解码以及读取执行所需数据(Decoding the code of the instruction and retrieving the data needed for execution)。
        c.阶段3:执行指令(Executing the instruction)。
        d.阶段4:存储结果(Storing the results)。

        这个周期是处理器执行指令和处理数据的连续过程,每个阶段都依赖于存储单元的能力来保存和提供数据。这种架构使得计算机能够按照一系列指令(即程序)来操作,并存储程序和数据在同一内存区域,允许指令和数据被重用和修改。

2.4 顺序组件

        在顺序电路中,"顺序组件"(或称为"时序逻辑元件")通常是指那些含有内部存储能力的组件,能够根据输入信号和当前状态提供相应的输出,并且在下一个时钟周期能够记住当前状态。常见的顺序组件包括触发器(Flip-Flops)、寄存器(Registers)、计数器(Counters)和所有包含这些元件的复杂电路。

在上图,顺序组件可能包括但不限于以下几个部分:

        reg_decal_9:是一个寄存器或一个具有移位功能的装置,用于数据存储和移位操作。
        synchro_vhd:包括一些同步元件,用于确保信号在时钟信号的控制下同步。
        compt_err_vhd:是一个错误计数器,用于跟踪和存储发生错误的次数。

        电路中的每个模块都可能包含一些顺序组件,用于执行各种功能,比如数据同步、错误检测和处理、信号转换等。例如,一个模块可能使用触发器来存储一个中间值,另一个模块可能使用计数器来跟踪某个事件发生的次数。电路图上通常不会详细展示内部的顺序逻辑,但可以根据模块的名称和功能推断出来。

        在硬件描述语言(例如VHDL)中,这些顺序组件通常通过描述它们的行为来实现,如在特定的时钟边沿上触发状态的变化。

2.5 正反馈原理

        CMOS技术中用于信息存储的基本原理,即正反馈原理。

        图中显示的是一个简单的双稳态电路,或称为“双稳态触发器”(Bistable)。双稳态电路是数字电子中的一个基本概念,它有两个稳定状态,A和B。这种电路能够存储一位信息(0或1)。

        图中的转换曲线图展示了电路状态随输入电压变化的响应。当输入电压(Ve1或Ve2)跨越某个阈值时,电路的状态会从一个稳定状态跳变到另一个。这种跳变表现为曲线图中的垂直部分。

        简而言之,本节描述了如何通过使用正反馈在CMOS技术中创建一个存储单元,这个单元能够在没有外部输入变化的情况下保持其状态。这是实现数字记忆功能的基本原理。

2.6 双稳态电路

        双稳态电路,也称为双稳态触发器,是一种基本的存储设备,它有两个互相连接的逆变器。逆变器是一种简单的电路,当你给它一个输入信号时,它会给出一个相反的输出信号;如果输入是高电平(1),输出是低电平(0);反之亦然。

        在双稳态电路中,第一个逆变器的输出连接到第二个逆变器的输入,而第二个逆变器的输出又反过来连接到第一个逆变器的输入。这种连接方式创造了一个环路,允许电路"记住"它的状态。

        这里如何保存信息的关键是正反馈。当你设置电路的状态时(比如,通过人为地将第一个逆变器的输入设为高电平),这个状态会因为反馈环路而保持。即使你移除了最初设置的输入信号,电路会因为这个反馈环路保持其状态——第一个逆变器的输出会保持低电平,第二个逆变器的输出会保持高电平。

        这个状态会一直持续,直到你强制改变它(比如,通过将第一个逆变器的输入切换到低电平)。这时,第一个逆变器的输出将变为高电平,而第二个逆变器的输出将变为低电平,新的状态又会因为反馈环路而被保持。

        总的来说,双稳态电路能够保存一个高或低的电平状态,它可以代表二进制中的1或0。这就是基本的数字存储单元——能够保存一位信息。在计算机和其他数字设备中,许多这样的单元被集成起来,形成了复杂的存储系统。        

2.7 双稳态触发器的状态的改变

        如何在没有输入端的情况下改变这个双稳态触发器的状态(即如何在Q或Q*上"写入"逻辑值),有两种常见的解决方案:

        a.静态随机存取存储器(Static Random Access Memory, SRAM):SRAM单元使用了更复杂的双稳态触发器,它们包含控制逻辑,允许我们通过一对输入线(通常称为写入线)改变状态。

        b.RS锁存器和D锁存器:这些是更先进的双稳态触发器,它们有专门的输入端,用于设定或重置状态。RS锁存器接受两个输入,分别是设定(Set)和重置(Reset),而D锁存器(也称为数据或延迟锁存器)有一个输入,它在时钟信号的控制下直接决定了Q的状态。

        在这些系统中,输入端允许我们将一个特定的值写入存储单元,无论是将其设定为高电平(1)或是低电平(0)。这使得双稳态触发器不仅能够存储信息,还能够按照我们的指令修改存储的信息。

2.7 数字电子中的存储单元:D锁存器(D Latch)和D触发器(D Flip-Flop)

2.7.1 D锁存器(D Latch)

        它用于根据控制信号的水平来存储数据。当控制信号(通常称为使能或E)为高时,D锁存器的输出Q将跟随输入D的值。当控制信号为低时,D锁存器的输出将锁定在最后一个值上,无论输入D如何变化。
        这种锁存器是透明的,意味着当使能信号为高时,输入的任何变化都会直接反映到输出上。

2.7.2 D触发器(D Flip-Flop)


        与D锁存器相比,D触发器的数据存储发生在控制信号(通常称为时钟或CLK)的边沿上,而不是水平上。这意味着数据的存储只会在时钟信号的上升边沿或下降边沿发生,而不是持续地随时钟信号的高电平状态发生。
        D触发器是边沿触发的,这使得它们特别适合用于同步电路,因为它们只在时钟周期的一个特定点更新它们的输出。

        控制信号通常被称为“时钟”信号。像所有数字信号一样,时钟信号具有方波形状,具有一个低电平(0V)和一个高电平(通常是Vcc,如3V或5V)。

        在数字系统中,时钟信号是同步操作的基础,它确保了电路中的所有动作都能在精确定义的时间点发生。这种同步是至关重要的,特别是在需要精确控制数据流和处理的复杂系统中。

2.8 时钟信号

图片展示了一个典型的数字信号时钟波形,并解释了与时钟信号相关的一些术语:

        周期(Période):这是时钟信号一个完整循环的持续时间。这里指的是从一个上升沿到下一个上升沿(或一个下降沿到下一个下降沿)之间的时间间隔。周期通常以秒的分数来衡量,如微秒(μs)或纳秒(ns)。

        频率(Fréquence d'horloge):这是周期的倒数,描述了时钟信号每秒钟完成多少个周期。频率通常以兆赫兹(MHz)或千兆赫兹(GHz)为单位。

        宽度(Largeur d'horloge):这是时钟信号保持高电平(1)状态的时间。对于方波信号,宽度通常是周期的一半,但对于非对称信号,高电平和低电平的持续时间可能不同。

        占空比(Rapport de cycle):这是时钟信号高电平宽度与整个周期的比率。它是一个无单位的比值,通常以百分比表示。例如,如果时钟信号的高电平持续一半周期,占空比是50%。

        时钟信号的有效性(Le signal d'horloge est actif):如果时钟信号在上升沿(Front montant)或高电平期间触发动作,称为“有效高”(Actif haut)。如果在下降沿(Front descendant)或低电平期间触发动作,称为“有效低”(Actif bas)。

        时钟信号是数字电路中的基本要素,特别是在同步数字电路设计中。它用于协调不同组件的动作,确保所有组件按照相同的速率工作。

3. D锁存器(D Latch)

3.1 D锁存器(D Latch)简介

        这是一个在高电平(active-high)时使能的D锁存器(D Latch)的CMOS实现以及其符号表示。

        D锁存器是一种基本的存储元件,它在使能信号E(Enable)为高电平时将数据输入D(Data)的状态“锁存”到输出Q上。当E为低电平时,锁存器将保持其输出不变,即使D的状态改变。

        实现D锁存器的两种方法是:

        a.使用RS锁存器:可以通过将RS锁存器的R(Reset)和S(Set)输入连接到D信号和E信号的适当组合来构建D锁存器。例如,可以将R连接到E/D(E AND NOT D)而S连接到ED(E AND D),以确保只有在E为高电平时,D的值才会影响锁存器的状态。

        b.使用多路复用器(MUX):另一种方法是利用多路复用器来选择要么将当前存储的值保持在锁存器中(通过反馈路径),要么接受来自D的新值。在这种设计中,多路复用器的选择输入由E控制,数据输入连接到D和反馈路径(通常是输出Q通过一个逆变器反馈)。

        在CMOS逻辑中,D锁存器通常使用传输门或类似的开关结构来实现,这些结构在CMOS技术中比基于逻辑门的设计更为紧凑。左边的电路图中显示了这样一个结构,其中包括一个传输门和一个逆变器。当E为高电平时,传输门导通,允许D上的值传递到输出Q和Q*(Q的补码)。右边的符号表示提供了一个简化的视图,其中包含了一个指示补码输出的小圆圈(表示Q*是Q的逆逻辑状态)。

3.2 D锁存器(D Latch)的电路图

        这是使用CMOS传输门实现的D锁存器(D Latch)的电路图。

        在这个电路中,D是数据输入,E是使能信号,Q是输出,Q*是输出的补码。使能信号E通过一个逆变器得到它的补码E*。电路中有两个传输门,传输门是由P型和N型MOSFET并联组成的开关,它可以在逻辑高电平和逻辑低电平之间传输信号。

D锁存器的工作原理如下:

        当E为高电平(1)时,E*为低电平(0),这会导致D到Q*的传输门关闭,而E到Q的传输门打开。这时,D的值会传递到输出Q,并通过逆变器在Q*上产生相反的状态。


        当E为低电平(0)时,E*为高电平(1),这会导致D到Q*的传输门打开,而E到Q的传输门关闭。这时,D锁存器会保持当前的输出状态

,不论D的输入如何变化。

        这种结构允许D锁存器在E为高时捕获并锁存输入D的值,在E为低时保持其输出状态不变。如果交换E和E*的连接,你会得到一个在低电平使能时工作的D锁存器。

        此外,正如文本所述,这种反馈结构赋予了电路顺序逻辑的特性,因为输出取决于历史状态和当前输入。

3.3 D锁存器的工作原理和特性

        本节描述了D锁存器的工作原理和特性,包括其行为的静态描述(通过转换表)以及逻辑符号。

        D锁存器(D Latch)或称为数据锁存器,是一种基础的数字逻辑电路,它可以根据使能信号(Enable, E)的状态存储一个位的信息。

3.3.1 两种主要模式

        a.存储模式(Mode mémoisation):当使能信号E为0时,D锁存器保持其当前状态不变,即不管数据输入D如何变化,输出Q和Q*都不会变。

        b.采集模式(Mode acquisition):当使能信号E为1时,D锁存器进入采集模式或透明模式,此时锁存器的输出Q会跟随输入D的值,而Q*是Q的补码(相反状态)。

3.3.2 转换表

        转换表展示了当E和D的不同组合时,Q和Q*的期望输出状态:

        如果E是0(无论D是什么),输出Q和Q*保持不变(表示为表中的Q和Q*)。
        如果E是1且D是0,输出Q将变为0,Q*将变为1。
        如果E是1且D是1,输出Q将变为1,Q*将变为0。

        D锁存器的输出可以用下面的顺序方程表示:

        Q+ = QĒ + ED
        Q*+ = QĒ + ĒD

        这里的"+"符号表示下一个状态,Ē是E的补码。

        在同步数字电路中,使能信号通常作为一个同步信号或时钟信号的一部分。当使能信号是高电平时,D锁存器可以接收新的数据;当是低电平时,它会保持当前存储的数据。这样可以控制数据在电路中的流动和更新时间。在实际的逻辑电路设计中,这种同步机制非常重要。

3.4 时序图

3.4.1 初步分析

        一个D锁存器(D Latch)的动态行为分析,包括时序图和两种不同的信号传播延迟:

        a.当使能信号E改变时的传播延迟t_{pH}(E \rightarrow Q)t_{pH}(E \rightarrow Q^*):这是指使能信号E从低到高变化引起的输出Q和Q*状态变化的延迟时间。

        b.当数据输入D改变时的传播延迟t_{pH}(D \rightarrow Q)t_{pH}(D \rightarrow Q^*):这是指数据输入D的变化引起的输出Q和Q*状态变化的延迟时间。

        在时序图中,E和D的波形显示了它们随时间的变化,以及相应的Q和Q*输出如何响应这些变化。当E处于高电平(使能状态)时,D的变化会立即传递到Q和Q*。这被称为锁存器的“透明”或“采集”模式,因为在这个模式下,任何D的变化都会直接影响到Q。

        当E回到低电平时,锁存器进入“锁存”或“存储”模式,在这种模式下,不管D如何变化,Q和Q*的输出都将保持当前状态,直到E再次变为高电平。这时,锁存器捕捉并保持了最后的D值。

        时序图中的斜条纹区域表示输出的不确定状态,通常发生在输入信号变化和锁存器输出稳定之间的时间间隔内。这些延迟对于同步数字系统设计至关重要,因为它们影响电路的整体性能和可靠性。

3.4.2 时序的相关概念

        在数字电子中,了解和计算时序参数对于确保电路正确工作至关重要。以下是与D锁存器相关的一些关键时序概念:

3.4.2.1 传播延迟(tpHL和tpLH)

        tpHL(High to Low propagation delay)是输出从高电平(High)变到低电平(Low)所需的时间。
          tpLH(Low to High propagation delay)是输出从低电平(Low)变到高电平(High)所需的时间。
   
        这些参数描述了输入变化到输出响应的时间间隔,它们可能因逻辑门的物理特性和设计而异。

3.4.2.2 使能信号E的时间宽度(tw)

        当D锁存器的使能信号E被激活(通常是变为高电平)以进入采集模式时,它必须保持激活状态足够长的时间(tw),以确保D上的数据值可以完全稳定并传播到输出Q。

3.4.2.3 数据输入D的时间约束

a.设置时间t_{su}t_{setup}
        这是指在使能信号E变低之前,输入D需要保持稳定的最小时间。在图中,这个时间间隔被标记为t_1。在这段时间内,输入D的值不能改变,以确保当锁存器准备"锁定"其值时,它能正确地捕获这个值。
        在图中,t_{1}必须大于或等于t_{su},即 t_{1} \geq t_{su}。        

b.保持时间t_{h}t_{hold}
        这是指在使能信号E变低后,输入D仍需要保持稳定的最小时间。在图中,这个时间间隔被标记为t_2。这是为了确保D的值在锁存器实际"锁定"之后不会改变,直到数据被稳定地存储。
        在图中,t_{2}必须大于或等于t_{h},即t_{2} \geq t_{h}

        设置时间和保持时间是数字电路设计中的标准术语,它们定义了在数据锁存器或触发器捕获输入之前和之后,输入信号必须保持稳定的时间长度。如果这些条件没有满足,电路可能无法正确存储预期的数据值,可能会导致不确定的行为或数据错误。

        设置时间和保持时间是确保数字电路正确同步和操作的关键参数。如果这些时序条件没有得到满足,可能会导致电路捕获错误的数据,从而产生不稳定或不可预测的行为。因此,设计稳定可靠的数字电路时,必须仔细考虑并满足这些时序要求。

        这些时序约束对于锁存器的可靠性至关重要。如果没有遵守这些约束,锁存器可能无法正确存储数据,导致不稳定或错误的输出。在设计复杂的数字电路时,工程师必须通过仿真和实际测量来验证这些时序参数,确保系统的稳定性和可靠性。

        在时序图中,您可以看到使能信号E的高电平周期内,输入D是如何影响输出Q的。在E高电平期间(采集模式),Q的值会跟随D的值。当E转到低电平时,D锁存器进入锁存模式,并保持当前D输入的值,不论D后续如何变化。

        这个动态分析对于理解和设计实际的数字系统非常重要,它确保了数据在电路中的正确流动和同步。

3.4 低电平有效的D锁存器(D Latch)

        本图展示了一个低电平有效的D锁存器(D Latch)的逻辑符号。图中符号中的圆圈表示该输入是低电平有效的,即当E为0时锁存器将数据从D传送到Q。在其他类型的锁存器中,没有圆圈的E输入是高电平有效的,意味着它需要一个高电平信号来激活数据的传送。

        为了实现这种行为,通常需要在CMOS电路中的传输门的控制信号上使用逆变器,这样就可以确保在E为0时传输门是导通的,从而使得锁存器在E为低时透明。在E为1时,传输门是关闭的,锁存器将保持当前状态,从而实现了数据的锁存。

4. D触发器(D Flip-Flop)

4.1 逻辑符号和其转换表

4.1.1 符号解释

        D触发器是一种数字记忆元件,它在时钟信号的特定边沿(上升边沿或下降边沿)捕获输入D,并将这个状态传递到输出Q。图中,一个三角形表示时钟输入(通常标记为H或CLK),而小圆圈表示该触发器在时钟信号的下降边沿(负边沿)捕获数据。输出Q*是输出Q的逻辑反(补码)。

4.1.2 转换表解释

        当H(时钟)为0时,D的值无关紧要(标记为X),输出Q和Q*保持原有的状态。
        当H为1时,输出也不变,因为D触发器只在时钟的特定边沿上改变其状态。
        当时钟信号H的边沿从低到高变化时(标记为\uparrow)或者从高到低变化时(标记为\downarrow),D触发器捕获此时D输入的值,并在下一个时钟周期将这个值更新到输出Q。如果D是0,输出Q将变为0,Q*将变为1;如果D是1,Q将变为1,Q*将变为0。

4.2 D触发器的特点

        D触发器是如何在时钟信号的边沿上同步数据的。

4.2.1 转换表

        当时钟H为0时,输入D的值是不相关的(表示为X),输出Q和Q*保持不变。
        当时钟H为1时,输出也保持不变,因为D触发器只在活动边沿上更新它的状态。
        当时钟信号H的活动边沿发生时(上升沿或下降沿,表示为\downarrow\uparrow,D触发器捕获此时D输入的值,并在下一个活动边沿更新到输出Q。

4.2.2 符号表示

        D触发器的符号与D锁存器相似,但它在时钟输入上有一个三角形,这表示它对时钟信号的边沿敏感。在时钟输入旁边的小圆圈表示触发器是在时钟信号的下降沿上捕获输入D的值。
        如果没有小圆圈,那么默认是在时钟信号的上升沿捕获D值。

4.2.3 D触发器的特点

        同步边沿上的数据采集:D触发器只在时钟信号的特定边沿上更新其输出,这被称为边沿触发。
        时间的离散化:由于D触发器只在时钟的活动边沿上响应,它允许系统在这些明确的时间点同步数据,从而离散化时间。

        由于D触发器的这些特性,它在数字电路中常用于同步操作,如存储寄存器、计数器和其他时序控制逻辑。转换表中通常省略了时钟信号为0或1时的行,因为在这些时刻D触发器的输出不会改变,仅在活动边沿时捕获和更新数据。这样,表的最后两行就概括了D触发器的核心行为:在时钟的活动边沿上,输出Q更新为与输入D相同的值。

4.3 双D锁存器(D Latch)

        本节讲解了一个基于双D锁存器(D Latch)的D触发器(D Flip-Flop)的设计。这种结构通常称为主从触发器或边沿触发的D触发器,它由两个阶段组成:一个用于数据的采集(acquisition),另一个用于数据的输出(affichage,也可以理解为输出或存储)。

        在这个设计中:

        a. 第一个D锁存器(D1、E1)在第一个时钟信号(h1)的控制下工作,负责采集数据输入D。当时钟信号H处于适当状态时,第一个D锁存器捕获并且暂时存储D输入的值。

        b. 第二个D锁存器(D2、E2)在第二个时钟信号(h2)的控制下工作,负责保持并输出数据。它接受来自第一个锁存器的输出(Q1),并在第二个时钟信号的控制下将这个值传递到最终输出Q。

        这种配置确保了D触发器在时钟信号的特定边沿上捕获数据,并且在下一个边沿之前不会改变输出。这意味着,无论数据输入D在两个时钟信号边沿之间如何变化,输出Q保持稳定,直到下一个触发边沿到来。

        这种双锁存器结构的触发器有助于减少所谓的“时钟偏斜”问题,这是由于时钟信号在不同部分的电路中传播时间不同而引起的。通过使用两个时钟信号(或一个时钟信号的两个不同相位),主从触发器可以提供更加稳定和可靠的数据存储和输出。在实际应用中,这通常通过时钟信号的上升沿和下降沿来实现,确保数据只在一个明确的时刻被捕获和输出。

4.4 主从D触发器(Master-Slave D Flip-Flop)的工作原理和时序图

       本节细描述了主从D触发器(Master-Slave D Flip-Flop)的工作原理和时序图。主从触发器是由两个D锁存器级联组成,其中一个充当"主"锁存器(L1),另一个充当"从"锁存器(L2)。这两个锁存器通过相反的时钟信号控制,以确保数据能够在时钟信号的一个完整周期内稳定地从D输入传递到Q输出。

主从D触发器的工作流程如下:

        a.当时钟H=0时:
        主锁存器L1处于数据采集模式,它捕获并且暂时存储来自D输入的值。
        从锁存器L2处于数据锁存模式,它保持当前的输出状态不变。

        b.时钟H从0变为1(上升沿)时:
        主锁存器L1进入锁存模式,保持之前采集的D值不变。
        从锁存器L2切换到数据采集模式,接受并显示来自主锁存器L1的值,这个值通过内部连接传递到从锁存器L2,并输出到Q和Q*。

        时钟信号的上升沿是触发数据从D到Q传递的关键时刻,这是因为在任何时钟信号H的稳定状态下,D和Q之间总有一个锁存器是在锁存模式,阻止了D到Q的直接连接。只有在时钟信号的上升沿,数据才能从主锁存器传递到从锁存器,然后输出到Q。

        这种设计确保了D触发器的输出仅在时钟信号的特定边沿上变化,提高了数据传输的可靠性,并且减少了因时钟抖动或其他时序问题引起的错误传输。主从触发器是数字电子中常用于边沿触发记忆和同步的关键组件。

4.5 D触发器(D Flip-Flop)的动态行为分析

        包括时序图和时序参数。

        这些图像的关键点如下:

4.5.1 时序图

        展示了时钟信号H、数据输入D、输出Q和Q*随时间的变化。这些图表通过阴影区域表示数据输入D必须在时钟信号的活动边沿之前稳定(设置时间tsetup)和之后稳定(保持时间thold)的时间段。

4.5.2 设置时间(tsetup)和保持时间(thold)

        这些时间参数是确保D触发器正确操作的关键。设置时间是数据D在时钟信号的活动边沿之前必须保持稳定的最小时间;保持时间是数据D在时钟信号的活动边沿之后必须保持稳定的最小时间。

        设置时间(tsetup):数据输入D必须在时钟信号H的活动边沿之前保持稳定。在图中,t1代表从数据输入D变为稳定到时钟信号H的活动边沿这段时间,它必须大于或等于设置时间tsetup(t_1 \geq t_{su})。在这个时间内,数据输入D的值不能变化,以保证它可以被触发器正确捕获。
        保持时间(thold):数据输入D必须在时钟信号H的活动边沿之后继续保持稳定。在图中,t2代表时钟信号H的活动边沿之后数据输入D保持稳定的时间,它必须大于或等于保持时间thold(t_2 \geq t_{h} )。即使时钟信号已经改变,数据输入D仍需要保持不变,以确保触发器的输出不会由于D的任何微小变化而错误地变化。

4.5.3 传播延迟(tp)

        这是指从时钟信号的活动边沿到输出Q和Q*更新为新值所需的时间。在D触发器中,输出只在时钟信号的活动边沿(通常是上升沿或下降沿)上更新,这与D锁存器不同,后者的输出可以在使能信号为高时任何时间改变。

        tpHL:这是输出从高电平变到低电平的传播延迟时间。
        tpLH:这是输出从低电平变到高电平的传播延迟时间。

4.5.4 时钟宽度(tw)

        时钟信号的高电平或低电平状态必须持续足够长的时间,以确保触发器可以正确地捕获输入数据并稳定输出。

        此外,时钟信号的宽度(tw)指的是时钟信号保持在一个确定的逻辑水平(高或低)的时间,这对于D触发器的正确操作也是必要的。

4.5.5 边沿触发的特性

        D触发器只在时钟信号的边沿上响应,这使得它成为实现同步系统的理想选择,因为它允许在明确定义的时刻更新数据,从而简化了时序设计。

        这些图像概述了D触发器的基本工作原理,解释了它如何在时钟信号的控制下同步数据,并确保了在数字系统设计中的数据完整性和一致性。在现代数字系统设计中,D触发器因其简单和高效的同步特性而被广泛使用。
这种精确的时序控制允许D触发器在数字系统中作为一个可靠的同步元件,确保数据在定义的时刻被捕获,并在下一个时钟周期内稳定输出。这对于设计需要精确时序控制的复杂数字电路系统至关重要。

5. 总结

        本篇文章概述了在电子学中记忆点(存储单元)的原理以及最常用的两种类型:

        D Latch(同步,基于水平,有锁存功能):这是一个简单的存储单元,可以在使能信号(通常是时钟信号的一个特定水平)激活时捕获和保持数据。它是同步的,因为它依赖于一个外部信号来控制数据的捕获和保持。

        D Flip-Flop(同步,基于边沿):这是一种边沿触发的存储单元,它在时钟信号的上升沿或下降沿捕获输入数据并在下一个边沿更新输出。它是完全同步的,因为它只在时钟信号的活动边沿响应。

        存储单元的时间特性,包括:

        传播时间(Propagation time)
        保持时间(Hold time)
        设置时间(Setup time)

        这些参数对于设计和实施可靠的数字电路至关重要。了解和满足这些时间约束是确保数据正确同步和电路按预期工作的关键。

        此外,本文说明如何从这些基本的顺序操作单元中抽象出来,以便在实施时可以忽略其内部工作机制。这通常通过数据表(datasheet)完成,数据表提供了组件的功能模型(黑盒模型)和实现所需的所有关键参数。

        本文介绍了时间的重要性,并提到了时序图(chronogramme)作为理解和设计这些元件行为的一种方法论工具。时序图是理解和验证数字电路时间特性的关键工具,可以帮助设计人员规划和验证电路的时间行为。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/247898.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PHP文件相关函数大总结

PHP中与文件相关的函数: 以下示例均以读取example.txt为例: example.txt的内容: this is a txt. 这是一个文件 1 .使用 file_get_contents 读取整个文件内容: $fileContent file_get_contents(example.txt); echo $fileContent…

Flink问题解决及性能调优-【Flink rocksDB读写state大对象导致背压问题调优】

RocksDB是Flink中用于持久化状态的默认后端,它提供了高性能和可靠的状态存储。然而,当处理大型状态并频繁读写时,可能会导致背压问题,因为RocksDB需要从磁盘读取和写入数据,而这可能成为瓶颈。 遇到的问题 Flink开发…

MySql8的简单使用(1.模糊查询 2.group by 分组 having过滤 3.JSON字段的实践)

MySql8的简单使用(1.模糊查询 2.group by 分组 having过滤 3.JSON字段的实践) 一.like模糊查询、group by 分组 having 过滤 建表语句 create table student(id int PRIMARY KEY,name char(10),age int,sex char(5)); alter table student add height…

【C/C++ 01】初级排序算法

排序算法通常是针对数组或链表进行排序&#xff0c;在C语言中&#xff0c;需要手写排序算法完成对数据的排序&#xff0c;排序规则通常为升序或降序&#xff08;本文默认为升序&#xff09;&#xff0c;在C中&#xff0c;<algorithm>头文件中已经封装了基于快排算法的 st…

记录我的历程

1、2024年1月30号更新 从2024年1月22号开始复更&#xff0c;已添加20篇文章&#xff0c; 前一阶段&#xff1a;排名1502450、原力分2、粉丝3人

PGsql 解析json及json数组

创建测试数据 drop table if exists json_test; create table json_test as select 111 as id, {"nodes":{"1692328028076":{"nodeId":"1692328028076","nodeName":"测试表1","nodeType":"DATACO…

STM32 OV7725摄像头模块识别颜色物体(1)--HSL二值化和腐蚀中心算法,并用串口输出数据

目录 前言 一、摄像头采集数据流程 二、如何将图像显示到电脑上 三、图像二值化 1、什么是RGB? 2、RGB565转RGB888 I、RGB565和RGB888的区别 II、代码 3、RGB转HSL I、什么是HSL II、转换公式 III、代码 3、输出一张摄像头二值化图片 I、原理 II、代码 四、简单的物体识别 1、…

ElasticSearch搜索引擎入门到精通

ES 是基于 Lucene 的全文检索引擎,它会对数据进行分词后保存索引,擅长管理大量的数据,相对于 MySQL 来说不擅长经常更新数据及关联查询。这篇文章就是为了进一步了解一下它,到底是如何做到这么高效的查询的。 在学习其他数据库的时候我们知道索引是一个数据库系统极其重要…

数字图像处理(实践篇)三十六 OpenCV-Python 使用ORB和BFmatcher对两个输入图像的关键点进行匹配实践

目录 一 涉及的函数 二 实践 ORB(Oriented FAST and Rotated BRIEF)是一种特征点检测和描述算法,它结合了FAST关键点检测和BRIEF描述子。ORB算法具有以下优势: ①实时性:能够在实时应用中进行快速的特征点检测和描述。 ②

[C++]使用纯opencv部署yolov8旋转框目标检测

【官方框架地址】 https://github.com/ultralytics/ultralytics 【算法介绍】 YOLOv8是一种先进的对象检测算法&#xff0c;它通过单个神经网络实现了快速的物体检测。其中&#xff0c;旋转框检测是YOLOv8的一项重要特性&#xff0c;它可以有效地检测出不同方向和角度的物体。…

git用法总结

以gitee为例&#xff0c;GitHub也可参考本文 创建远程仓库 在自己的gitee主页 创建本地仓库 在文件夹下&#xff0c;右键→git bash here git init添加gitignore vi .gitignoregitignore里的内容根据自己实际情况设置&#xff0c;这里举个例子 # #开头的是注释 # Prer…

Oracle篇—分区索引的重建和管理(第三篇,总共五篇)

☘️博主介绍☘️&#xff1a; ✨又是一天没白过&#xff0c;我是奈斯&#xff0c;DBA一名✨ ✌✌️擅长Oracle、MySQL、SQLserver、Linux&#xff0c;也在积极的扩展IT方向的其他知识面✌✌️ ❣️❣️❣️大佬们都喜欢静静的看文章&#xff0c;并且也会默默的点赞收藏加关注❣…

写静态页面——魅族导航_前端页面练习

0、效果&#xff1a; 1、html代码&#xff1a;&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><…

Spring Boot通过配置文件支持数据库自定义表名

直接上干货&#xff1a; 例如一个叫xxx的项目&#xff0c;yml文件里加上这段 xxxproject:db:xxxTable: xxx_dbname #自定义的数据库表名创一个Configuration类放表名和Mapper // XxxProjectAutoConfiguration.javaConfiguration MapperScan(basePackages "cn.com.xxxp…

【vue】defineModel在vue3.4中的最新用法和详解

在2023年12月28日&#xff0c;尤大发布了vue3.4版本&#xff0c;这个版本主要对一些实验性特性的改进&#xff08;比如defineModel&#xff09;&#xff0c;大量重写了模板编译器并重构了响应式系统&#xff0c;可以说是大大提升了运行速度和效率。 之前在vue3.3中defineModel…

分布式ID是什么,以美团Leaf为例改造融入自己项目【第十一期】

前言 在日常开发中&#xff0c;主键id应用是非常广泛的&#xff0c;但是当涉及到分布式系统的时候&#xff0c;往往需要使用到分布式id&#xff0c;每一个服务里面一套生成规则的不易管理&#xff0c;容易引发冲突。我的IM聊天系统中使用分布式id来生成消息唯一键,为后面幂等做…

Flink CEP实现10秒内连续登录失败用户分析

1、什么是CEP&#xff1f; Flink CEP即 Flink Complex Event Processing&#xff0c;是基于DataStream流式数据提供的一套复杂事件处理编程模型。你可以把他理解为基于无界流的一套正则匹配模型&#xff0c;即对于无界流中的各种数据(称为事件)&#xff0c;提供一种组合匹配的…

网络防御安全:2-6天笔记

第二章&#xff1a;防火墙 一、什么是防火墙 防火墙的主要职责在于&#xff1a;控制和防护。 防火墙可以根据安全策略来抓取流量之后做出对应的动作。 二、防火墙的发展 区域&#xff1a; Trust 区域&#xff0c;该区域内网络的受信任程度高&#xff0c;通常用来定义内部…

单片机介绍

本文为博主 日月同辉&#xff0c;与我共生&#xff0c;csdn原创首发。希望看完后能对你有所帮助&#xff0c;不足之处请指正&#xff01;一起交流学习&#xff0c;共同进步&#xff01; > 发布人&#xff1a;日月同辉,与我共生_单片机-CSDN博客 > 欢迎你为独创博主日月同…

electron-builder vue 打包后element-ui字体图标不显示问题

当使用electron打包完成的时候&#xff0c;启动项目发现使用的element-ui字体图标没显示都变成了小方块&#xff0c;并出现报错&#xff0c;请看下图&#xff1a; 解决方法&#xff1a; 在vue.config.js中设置 customFileProtocol字段&#xff1a;pluginOptions: {electronBui…