-
2019-08-19 08:52:21
虽然每个数字电路系统可能包含有组合电路,但是在实际应用中绝大多数的系统还包括存储元件,我们将这样的系统描述为时序电路。
时序电路是由最基本的逻辑门电路加上反馈逻辑回路(输出到输入)或器件组合而成的电路,与组合电路最本质的区别在于时序电路具有记忆功能。
1. 简介
时序逻辑电路是数字逻辑电路的重要组成部分,时序逻辑电路又称时序电路,主要由 存储电路 和 组合逻辑电路 两部分组成。它和我们熟悉的其他电路不同,其在任何一个时刻的输出状态由当时的输入信号和电路原来的状态共同决定,而它的状态主要是由存储电路来记忆和表示的。同时时序逻辑电路在结构以及功能上的特殊性,相较其他种类的数字逻辑电路而言,往往具有难度大、电路复杂并且应用范围广的特点 。
在数字电路通常分为组合逻辑电路和时序逻辑电路两大类,组合逻辑电路的特点是输入的变化直接反映了输出的变化,其输出的状态仅取决于输入的当前的状态,与输入、输出的原始状态无关,而时序电路是一种输出不仅与当前的输入有关,而且与其输出状态的原始状态有关,其相当于在组合逻辑的输入端加上了一个反馈输入,在其电路中有一个存储电路,其可以将输出的状态保持住,我们可以用下图的框图来描述时序电路的构成。
从上面的图上可以看出,其输出是输入及输出前一个时刻的状态的函数,这时就无法用组合逻辑电路的函数表达式的方法来表示其输出函数表达式了,在这里引入了现态(Present state)和次态(Next State)的概念,当现态表示现在的状态(通常用Qn来表示),而次态表示输入发生变化后其输出的状态 (通常用Qn+1表示),那么输入变化后的输出状态表示为
Qn+1=f(X,Qn),其中:X为输入变量。
组合电路和存储元件互联后组成了时序电路。存储元件是能够存储二进制信息的电路。存储元件在某一时刻存储的二进制信息定义为该时刻存储元件的状态。时序电路通过其输入端从周围接受二进制信息。时序电路的输入以及存储元件的当前状态共同决定了时序电路输出的二进制数据,同时它们也确定了存储元件的下一个状态。时序电路的输出不仅仅是输入的函数,而且也是存储元件的当前状态的函数。存储元件的下一个状态也是输入以及当前状态的函数。因此,时序电路可以由输入、内部状态和输出构成的时间序列完全确定。
逻辑设计领域主要有两种类型的时序电路,它们分类的标准取决于我们观察到的输入信息的时机和内部状态改变的时机。同步时序电路 (synchronous sequential circuit)的行为可以根据其在离散的时间点上的信号信息来定义。而 [2] 异步时序电路(asynchronous sequential circuit)的行为则取决于任意时刻的输入信号以及输入信号在连续的时间内变化的顺序。
时序电路的特点是:输出不仅取决于当时的输入值,而且还与电路过去的状态有关。它类似于含储能元件的电感或电容的电路,如触发器、锁存器、计数器、移位寄存器、存储器等电路都是时序电路的典型器件,时序逻辑电路的状态是由存储电路来记忆和表示的。
时序逻辑电路的特点:任意时刻的输出不仅取决于该时刻的输入,而且还和电路原来的状态有关,所以时序电路具有记忆功能。
1.1、分类
1.2 时序逻辑功能描述方法
原文链接:https://blog.csdn.net/leemboy/article/details/82780617
1.2.1 逻辑方程组
1) 驱动方程(激励方程)
触发器的控制端J、K、D、T与其他参量的函数关系
J,K,D,T=f(Qn,X)
很简单时可默认不写2) 状态方程
将触发器特征方程改造而成的触发器的次态输出Qn+1与现态输出Qn的关系。
Qn+1=f(Qn,J,K,D,T)3) 输出方程
电路最终输出与触发器输出Qn的关系。
Y=f(Qn,X)
三种方程中,驱动方程、状态方程最重要,输出方程往往可以不要,因为电路简单时,触发器的输出Qn一般就是电路的最终输出。1.2.2状态转换表
1.2.3 状态图
1.2.4 时序图
时序逻辑电路的分析方法
1) 分析电路的组成
2) 根据电路写出三个方程
3) 列出状态转换真值表和状态表
4) 画出状态转换图
5) 描述电路逻辑功能几个概念
三种逻辑器件
时序逻辑电路应用很广泛,根据所要求的逻辑功能不同进行划分,它的种类也比较繁多。在具体的授课环节中,主要选取了应用较广、具有典型时序逻辑电路特征的三种逻辑器件进行比较详细地介绍 [1] 。
1.计数器
一般来说,计数器主要由触发器组成,用以统计输入计数脉冲CP的个数。计数器的输出通常为现态的函数。计数器累计输入脉冲的最大数目称为计数器的“模”,用M表示。如M=6计数器,又称六进制计数器。所以,计数器的“模”实际上为电路的有效状态数 。
同步七进制加法计数器的逻辑图计数器的种类很多,特点各异。主要分类如下:按计数进制可分为:二进制计数器、十进制计数器、任意进制计数器。按计数增减可分为:加法计数器、减法计数器、加/减计数器,又称可逆计数器。按计数器中触发器翻转是否同步可分为:异步计数器和同步计数器 。
2.寄存器
寄存器是存放数码、运算结果或指令的电路,移位寄存器不但可存放数码,而且在移位脉冲作用下,寄存器中的数码可根据需要向左或向右移位。寄存器和移位寄存器是数字系统和计算机中常用的基本逻辑部件,应用很广。一个触发器可存储一位二进制代码, n个触发器可存储n位二进制代码。因此,触发器是寄存器和移位寄存器的重要组成部分。对寄存器中的触发器只要求它们具有置0或者置1功能即可,无论是用同步结构的触发器,还是用主从结构或者边沿触发的触发器,都可以组成寄存器 。
3.顺序脉冲发生器
顺序脉冲是指在每个循环周期内,在时间上按一定先后顺序排列的脉冲信号。产生顺序脉冲信号的电路称为顺序脉冲发生器。在数字系统中,常用以控制某些设备按照事先规定的顺序进行运算或操作 。
特点
时序逻辑电路其任一时刻的输出不仅取决于该时刻的输入,而且还与过去各时刻的输入有关。常见的时序逻辑电路有触发器、计数器、寄存器等。由于时序逻辑电路具有存储或记忆的功能,检修起来就比较复杂。
带有时序逻辑电路的数字电路主要故障分析:
1. 时钟:时钟是整个系统的同步信号,当时钟出现故障时会带来整体的功能故障。时钟脉冲丢失会导致系统数据总线、地址总线或控制总线没有动作。时钟脉冲的速率、振幅、宽度、形状及相位发生变化均可能引发故障。
2. 复位:含有微处理器(MPU)的设备,即使是最小系统,一般都具有复位功能。复位脉冲在系统上电时加载到MPU上,或在特定情况下使程序回到最初状态(例如,看门狗Watchdog程序)。当复位脉冲不能发生、信号过窄、信号幅度不对、转换中有干扰或转换太慢时,程序就可能在错误的地址启动,导致程序混乱。
3. 总线:总线传递指令系列和控制事件,一般有地址总线、数据总线和控制总线。当总线即使只有一位发生错误时,也会严重影响系统功能,出现错误寻址、错误数据或错误操作等。总线错误可能发生在总线驱动器中,也可能发生在接收数据位的其它元件中。
4. 中断:带微处理器(MPU)的系统一般都能够响应中断信号或设备请求,产生控制逻辑,以暂时中断程序执行,转到特殊程序,为中断设备服务,然后自动回到主程序。中断错误主要是中断线路粘附(此时系统操作非常缓慢)或受到干扰(系统错误响应中断请求)。
5. 信号衰减和畸变:长的并行总线和控制线可能会发生交互串扰和传输线故障,表现为相邻的信号线出现尖峰脉冲(交互串扰),或驱动线上形成减幅振荡(相当于逻辑电平的多次转换),从而可能加入错误数据或控制信号。发生信号衰减的可能原因比较多,常见的有高湿度环境、长的传输线、高速率转换等。而大的电子干扰源会产生电磁干扰(EMI),导致信号畸变,引起电路的功能紊乱。
检修方法
在检修时序逻辑电路之前应尽可能熟悉系统的结构原理和电路,然后是分析故障的表征特性,尽可能地缩小故障产生的范围。较高档的医疗设备一般带有自诊断程序,可充分利用它查找故障,将故障定位到较小范围。
检查电源
时序逻辑电路较常采用±5V、±15V、±12V电源。当电源对地短路或电源稳定性差都可能导致系统故障,表现为系统无反应、系统程序紊乱等。一般来说,电源对地短路是因为电容(去耦电容)短路产生的,找到故障电容最好的办法是采用电流跟踪仪跟踪短路电流,没有电流跟踪仪的就只好将电路分单元查找替换。
检查时钟
时钟电路一般由石英晶体电路组成(也有采用RC振荡电路的)。根据经验,石英晶体较易损坏。可用示波器测试时钟信号的频率、振幅、相位,或简单地用逻辑探针检测时钟脉冲的有无。对各个单元电路的时钟均应检测,以防断线、松脱、干扰等引起时钟脉冲的不正确。
检查总线
用逻辑探针检查总线上是否有脉冲活动。若总线上没有脉冲活动,可继续检查总线驱动器输入端有无脉冲信号、驱动器是否在允许状态、驱动器是否响应激励等,来确定故障是否是由于总线驱动器引起的,然后轮流检查每一个总线接收者。另外,可以关掉电源,用多用表检查总线各线的对地电阻,如果所有线的阻值一样,那么总线估计正常;如果一条或多条线的阻值与其余的不同,那么该线值得怀疑;如果有两根线的阻值相同,而又高于或低于其它的线,那么这两条线可能相互短路了。
检查关键的脉冲信号
用逻辑探针、示波器或逻辑分析仪观察复位、使能、选通、读写、中断、读内存等控制信号,可以较好地判断集成电路(IC)是否正常工作。当复位信号有效时,IC输出应被清零或置位,程序应回到初始状态运行;当使能信号有效而时钟脉冲正常时,IC数据线上应有脉冲活动;当逻辑探针连到读内存线上,而指示灯没有闪烁显示(即读内存线上没有脉冲活动),说明微处理器可能在程序的某处卡住了,因为每一条指令读地址处存储器时,读内存线上通常是应有脉冲信号的;对于中断信号,可用逻辑探针来观察是否发生中断线路粘附,也可通过外加直流电压或低电平来控制(允许或禁止)被测试的中断。
检查接口
接口卡、印刷板与插座插接时可能松脱或偏离中心导致接触不良而引发故障,实际上很多故障的确是由此产生的,对此可用无水酒精擦拭清洁接口后再重新插接固定。另外数字系统还常常通过外部通信线路(RS232、MODEM、IEEE-488等)与其它系统连接,而连接线通常很长,还可能暴露于电子干扰源下,例如继电器、电机、变压器、大型X线机、阴雨天闪电等,连接口接触不良和电子干扰源的电磁干扰(EMI)均可能会产生错误的数据传送,甚至损坏相关的元件。对电磁干扰最好找出干扰源后排除它,其次可改善工作环境(如湿度和温度等),加强屏蔽,或改用屏蔽性能好的连接线。
时序逻辑电路的检修有许多方法技巧,必须通过长期实际工作摸索总结经验,才能更好地诊断、发现、排除故障,提高时序逻辑电路的维修技术水平。
设计步骤
下面提到的时序电路的设计步骤与组合电路类似,但还需要一些额外的步骤。
1.规格说明书:如果没有,先写出电路的规格说明书。
2.系统描述:从问题的陈述中得出状态图或状态表。
3.状态赋值:如果通过步骤1中只能得到状态图,则在从状态图中得到状态表。并为状态表中的每个状态赋二进制代码。
4.得到触发器的输入方程:选择一种或多种类型的触发器,通过已经编码的状态表中的下一状态得到触发器的状态方程。
5.得到输出方程:通过状态表中的输出信号栏得到输出方程。
6.优化:优化触发器的输入方程和输出方程。
7.工艺映射:画出电路由触发器、与门、或门和反向器所组成的逻辑图。将这个逻辑图转换为由有效的触发器和门工艺组成的新的逻辑图。
8.验证:验证最终设计的正确性。
为了方便起见,我们一般都省略步骤7即工艺映射,而在示意图中仅使用触发器、与门、或门和反向器。
更多相关内容 -
数字电路:第六章 时序逻辑电路 6.4 时序逻辑电路的设计方法.ppt
2021-09-19 23:41:46数字电路:第六章 时序逻辑电路 6.4 时序逻辑电路的设计方法.ppt -
时序逻辑电路设计报告.doc
2021-07-14 10:42:35Multisim设计一个简易交通灯控制电路实验报告 -
如何分析组合逻辑电路与时序逻辑电路?
2020-07-13 18:10:41你了解如何如何分析组合逻辑电路与时序逻辑电路吗?数字电路根据逻辑功能的不同特点,可以分成两大类,一类叫组合逻辑电路(简称组合电路),另一类叫做时序逻辑电路(简称时序电路)。逻辑电路的特点组合逻辑电路在... -
时序逻辑电路
2018-08-26 12:17:35数字电路基础之时序逻辑电路讲义来自中国科学技术大学 -
电工电子技术:第10章 触发器和时序逻辑电路.ppt
2021-09-17 23:43:51电工电子技术:第10章 触发器和时序逻辑电路.ppt -
基于Multisim的时序逻辑电路设计与仿真
2020-11-03 09:05:21随着计算机技术的发展, 电子电路的设计与分析方法发生了重大变革, 可以通过计算机辅助分析和仿真技术来完成。EDA 技术是在电子CAD 技术基础上发展起来的通用软件系统, 是指以计算机为工作平台, 融合了应用电子... -
时序逻辑电路-教程与笔记习题
2021-05-19 19:09:14时序逻辑电路的设计与介绍 -
对触发器与时序逻辑电路定义的理解
2020-08-26 01:09:46触发器是数字电路的记忆单元,它有两个稳定状态,在外信号作用下,这连个稳定状态可相互转换。因此,触发器常用来存储二进制信息和组成计数器等时序逻辑电路。” -
第六章 时序逻辑电路的分析与设计-教程与笔记习题
2021-05-18 14:57:18第六章 时序逻辑电路的分析与设计 -
浙江理工大学 数字电路实验 实验七-时序逻辑电路的设计multisim电路模拟
2019-01-20 10:16:36包括D触发器逻辑功能测试1、D触发器逻辑功能测试2、D触发器逻辑功能测试3、利用74LS161设计BCD5421码十进制计数器,multisim模拟电路完全正常 -
FPGA初学者教程 时序逻辑电路 学号循环显示器
2021-12-14 14:55:35FPGA初学者教程 时序逻辑电路 学号循环显示器 -
时序逻辑电路的特点及逻辑图分析
2020-07-19 04:45:17本文主要讲解了时序逻辑电路的特点及逻辑图分析方法,希望对你的学习有所帮助。 -
EDA简单时序逻辑电路
2018-05-27 14:15:53这是一个EDA相关的介绍简单时序电路的实验,对初学者有一定帮助 -
Verilog HDL基础教程之:时序逻辑电路
2020-08-05 18:35:51本文介绍了Verilog HDL的时序逻辑电路 -
时序逻辑电路实际应用.ppt
2021-10-10 22:34:22时序逻辑电路实际应用.ppt -
异步时序逻辑电路例题
2014-06-20 08:58:52异步时序逻辑电路例题,异步时序逻辑电路的设计与分析例题,从而简化异步时序逻辑电路的分析与设计。 -
数字电路与逻辑设计:第6章 时序逻辑电路 2.ppt
2021-09-17 22:31:52数字电路与逻辑设计:第6章 时序逻辑电路 2.ppt -
常见时序逻辑电路
2022-04-05 22:19:21用Verilog描述常见的时序逻辑电路。
与组合逻辑电路不同,时序逻辑电路的输出不仅与当前时刻输入变量的取值有关,而且与电路的原状态(即过去的输入情况有关)。
时序逻辑电路的结构框图如下:
- 与组合电路相比,时序逻辑电路有两个优点:
- 时序逻辑电路包括组合逻辑电路和存储电路两部分,存储电路具有记忆功能,通常由触发器组成。
- 存储电路的状态反馈到组合逻辑电路输入端,与外部输入信号共同决定组合逻辑电路的输出。组合逻辑电路的输出除包括外部输出外,还包含连接到存储电路的内部输出,它将控制存储电路状态的转移。
- 时序逻辑电路按状态变化的特点,可分为同步时序逻辑电路和异步时序逻辑电路。在同步时序逻辑电路中,电路状态的变化在同一时钟脉冲作用下发生,即各触发器状态的转换同步完成。在异步时序逻辑电路中,没有统一的时钟脉冲信号,即各触发器状态的转换是异步完成的。
- 对时序逻辑电路功能的描述方式主要有三种:逻辑方程,状态转移表和状态转移图,时序图。
- 对时序逻辑电路的设计进行描述也有不同的方式,主要有三种:状态转移图描述,基于状态化简的结构性描述,VerilogHDL抽象描述。
触发器
触发器是时序逻辑电路的最基本电路单元,主要有D触发器、JK触发器、T触发器和RS触发器等。根据功能要求的不同,触发器还具有置位、复位、使能、选择等功能。
D触发器
最简D触发器
D触发器的逻辑符号如下所示:
图中D为信号输入端,clk为时钟控制端,Q为信号输出端。这种触发器的逻辑功能是:不论触发器原来的状态如何,输入端的数据D(无论D=0,还是D=1)都将在时钟clk的上升沿被送入触发器,使得Q=D。其真值表如下所示:
代码如下:module DFF (q, clk, data_in); output q; input clk, data_in; reg q; always @(posedge clk) q <= data_in; endmodule
带复位端的D触发器
在D触发器的实际使用中,有时需要一个复位端(也称清零端)。带有复位端的D触发器的逻辑符号如下所示:
电路上电时,电路的逻辑处于不定状态,复位脉冲的到来将电路初始化为Q=0的状态。随后,在时钟的控制下,输入端D的数据在每个时钟上升沿被置到输出端Q。同步清0的D触发器的代码如下:module DFF_rst (q, clk, reset, data_in); output q; input clk, reset, data_in; reg q; always @(posedge clk) if (!reset) q <= 0; else q <= data_in; endmodule
异步清0的D触发器的代码如下:
module DFF_srst (q, clk, reset, data_in); output q; input clk, reset, data_in; reg q; always @(posedge clk or negedge reset)//只要接收到复位信号,立马复位 if(!reset) q <= 0; else q <= data_in; endmodule
可以看到,同步清0和异步清0的电路代码只是在always后的敏感向量表上有所不同。对于同步清0,并不是清0信号一变化电路马上就会被置0,清0信号有效后需等待时钟的有效边沿到来后电路才会有动作,因此不应该把清0信号写入敏感向量表中。而异步清0时,只要清0信号有效,电路就会马上更新,输出置0,因此对于异步电路,清0信号有必要写入敏感向量表中。
T触发器
T触发器的逻辑符号如下所示:
其逻辑功能为:当时钟的有效边沿到来时,如果T=1,则触发器翻转;如果T=0,则触发器的状态保持不变。reset为复位端,异步复位,低电平有效。代码如下:module TFF (data_out, T, clk, reset); output data_out; input T, clk, reset; reg data_out; always @(posedge clk or negedge reset) if (!reset) data_out <= 1'b0; elseif(T) data_out <= ~data_out; endmodule
计数器
计数器是应用最广泛的逻辑部件之一。计数器可以统计输入脉冲的个数,具有计时、计数、分频、定时、产生节拍脉冲等功能、
根据计数器中触发器时钟端的链接方式,分为同步计数器和异步计数器;根据计数方式分为二进制计数器、十进制计数器和任意进制计数器;根据计数器中的状态变化规律,分为加法计数器、减法计数器和加/减计数器。二进制计数器
采用D触发器实现的二进制计数器的逻辑电路图如下:
代码如下:module comp2bit (Q, clk, reset); output q; input clk, reset; reg Q; always @(posedge clk or negedge reset) if (!reset) Q <= 1'b0; else Q <= ~Q; endmodule
任意进制计数器
对于M进制的计数器,首先应确定计数器所需触发器的个数。N个触发器对应了2的N次方个状态,其应大于M。
以十一进制计数器为例,最少需要4个触发器。采用反馈清零法设计的十一进制计数器的代码如下:module comp_11 (count, clk, reset); output [3:0]count; input clk, reset; reg [3:0]count; always @(posedge clk) if(reset) count <= 4'b0000;//复位 else if (count == 4'b1010)//一个技术循环结束 count <= 4'b0000; else count <= count + 1; endmodule
移位寄存器
移位寄存器 可以用来实现数据的串并转换,也可以构成移位计数器,进行计数、分频,还可以构成序列码发生器、序列码检测器等。
以环形移位寄存器为例,N位环形寄存器由N个移位寄存器组成,它可以实现环形移位,如下图所示:
其将每个寄存器的输出作为下一位寄存器的输入,并将高位寄存器的输出作为循环的输入,代码如下:module shiftregist1 (D, clk, reset); parameter shiftregist_width = 4; output [shiftregist_width-1:0]D;//[3:0]D input clk, reset; reg[shiftregist_width-1:0]D; always @(posedge clk) if (!reset) D <= 4'b0000; else D <= {D[shiftregist_width-2:0], D[shiftregist_width-1]}; //D[2:0], D[3] endmodule
序列信号发生器
序列信号发生器是能够产生一组或多组序列信号的时序电路,它可以由纯时序电路构成,也可以由包含时序逻辑和组合逻辑的混合电路构成。
以一个产生100111序列的信号发生器为例,可以采用不同的方法:- 由移位寄存器构成
采用循环移位寄存器,在电路工作前,将所需的序列码置入移位寄存器中,然后循环移位,就可以不断地产生需要的序列。由于移位寄存器输入和输出信号之间没有组合电路,不需要进行组合逻辑的反馈运算,因此所占用的电路的面积很大,结构框图如下:
代码如下:
module signal_maker (out, clk, load, D); parameter M = 6; output out; input clk, load; input [M-1:0]D; reg [M-1:0]Q; initial Q = 6'b100111; always @(posedge clk) if(load) Q <= D; else Q <= [Q[M-2:0], Q[M-1]];//移位 Q[4:0]+Q[5] assign out = Q[M-1] endmodule
- 由移位寄存器和组合逻辑电路构成
反馈移位寄存器型序列信号发生器的结构框图如下所示:
它由移位寄存器和组合反馈网络组成,从移位寄存器的某一输出端可以得到周期性的序列码。
代码如下:
module signal_maker2 (out, clk, load, D); parameter M = 4; output out; input clk, load; input [M-1:0]D; reg [M-1:0]Q; wire w1; always @(posedge clk)//时序电路部分,移位寄存器 if(load) Q <= D; else Q <= {Q[M-2:0], w1}; assign w1 = (~Q[3])|(~Q[1]&(~Q[0]))|(Q[3]&(~Q[2]));//组合逻辑电路,反馈网络 assign out = Q[M-1]; endmodule
有限同步状态机
有限状态机是时序电路的通用模型,任何时序电路都可以表示为有限状态机。
- 根据输出信号的产生方式,有限状态机可以分为米利型(Mealy)和摩尔型(Moore)。Mealy型状态机的输出与当前状态和输入有关,Moore型状态机的输出仅依赖于当前状态,而与输入无关。结构如下所示:
- 状态机的编码方式很多,由此产生的电路也各不相同。常见的编码方式有三种:二进制编码、格雷编码和一位独热编码。
- 二进制编码:其状态寄存器是由触发器组成的。N个触发器可以构成2的N次方个状态。二进制编码的优点是使用的触发器个数较少,节省了资源;缺点是状态跳转时可能有多个bit(位)同时变化,引起毛刺,造成逻辑错误。
- 格雷编码:与二进制编码类似。格雷编码状态跳转时只有一个bit(位)发生变化,减少了产生毛刺和一些暂态的可能。
- 一位独热(One Hot)编码:这是对于n个状态采用n个bit(位)来编码,每个状态编码中只有一个bit(位)为1,如0001、0010、0100、1000。One Hot编码增加了使用触发器的个数,但该种编码方式为以后的译码提供了方便,能有效地节省和简化组合电路。
- 有限状态机的描述方法有两段式和三段式两种。
1.两段式描述方法:
//第一个进程,同步时序always块,格式化描述次态寄存器迁移到现态寄存器 always@(posedge clk or negedge rst_n)//异步复位 if(!rst_n) current_state <= IDLE; else current_state <= next_state;//非阻塞赋值 //第二个进程,组合逻辑always模块,描述状态转移条件判断 always@(current_state or 输入信号)//电平触发 begin next_state = x;//初始化,使得系统复位后能进入正确的状态 case(current_state) S1:if(...) next_state = S2;//阻塞赋值 out <= 1'b1;//非阻塞逻辑 ... endcase end
2.三段式描述方法:
//第一个进程,同步时序always模块,格式化描述次态寄存器迁移到现态寄存器 always@(posedge clk or negedge rst_n)//异步复位 if(!rst_n) current_state <= IDLE; else current_state <= next_state;//非阻塞赋值 //第二个进程,组合逻辑always模块,描述状态转移条件判断 always@(current_state or 输入信号)//电平触发 begin next_state = x;//初始化,使得系统复位后能进入正确的状态 case(current_state) S1:if(...) next_state = S2; ... endcase end //第三个进程,同步时序always模块,格式化描述次态寄存器输出 always@(posedge clk or negedge rst_n) begin ...// case(next_state or 输入信号) S1: out1 <= 1'b1; S2: out1 <= 1'b0; default:... //default免除综合工具综合出锁存器 endcase end
三段式并不是一定要写三个always块,如果状态机更为复杂,always块也会相应增加。
接下来以两个时序电路来说明有限同步状态机的应用。
顺序脉冲发生器
顺序脉冲发生器又称脉冲分配器,其将高电平脉冲依次分配到不同的输出上,保证在每个时钟周期内只有一路输出高电平,不同时钟上的高电平脉冲依次出现在所有输出端。
以4位顺序脉冲发生器为例,其有4路输出S0、S1、S2、S3,每路输出上高电平脉冲依次出现,输出在1000、0100、0010、0001之间循环。4位顺序脉冲发生器的状态转移图如下所示:
代码如下:module state4 (OUT, clk, rst_n); output [3:0]OUT; input clk; input rst_n; reg [3:0]OUT; reg [1:0]STATE, next_STATE; always @(STATE) case(STATE) 2'b00; begin OUT <= 4'b1000; next_STATE <= 2'b01; end 2'b01; begin OUT <= 4'b0100; next_STATE <= 2'b10; end 2'b10: begin OUT <= 4'b0010; next_STATE <= 2'b11; end 2'b11; begin OUT <= 4'b0001; next_STATE <= 2'b00; end endcase always @(posedge clk or negedge rst_n) if (!rst_n) STATE <= 2'b00; else STATE <= next_STATE; endmodule
“11010”序列检测器
序列检测器就是将一个指定的序列从数字码流中检测出来。当输入端出现序列11010时,输出为1,否则输出为0。在此不考虑重复序列,即出现指定序列后就重新开始序列检测,不再考虑以前的数据。该序列检测器的状态转移图如下所示:
代码如下:module seqdet (D_out, D_in, rst_n, clk); parameter IDLE = 3'd0, A = 3'd1, B = 3'd2, C = 3'd3, D = 3'd4, E = 3'd5; output D_out; input D_in, rst_n, clk; reg [2:0]state, next_state; wire D_out; assign D_out = (state == E)?1:0; always @(state or D_in) case(state) IDLE:if(D_in) next_state = A; else next_state = IDLE; A: if(D_in) next_state = B; else next_state = IDLE; B: if(D_in) next_state = B; else next_state = C; C: if(D_in) next_state = D; else next_state = IDLE; D: if(D_in) next_state = B; else next_state = E; E: if(D_in) next_state = IDLE; else next_state = A; default: next_state = IDLE; endcase always @(posedge clk) state <= next_state; endmodule
-
第四章 时序逻辑电路.pdf
2021-12-05 21:54:53第四章 时序逻辑电路.pdf -
六章时序逻辑电路课件(完整).pptx
2021-10-10 05:15:57六章时序逻辑电路课件(完整).pptx -
实验四触发器和时序逻辑电路.doc
2021-09-26 06:27:20实验四触发器和时序逻辑电路.doc -
一文搞懂时序逻辑电路
2021-05-16 17:50:001 时序逻辑电路 1.1 介绍 输出往往反馈到输入端,与输入变量一起决定电路的输出状态。 1.2 特点 任意时刻输出不仅取决于该时刻输入变量的状态,而且还与原来的状态有关。 1.3 锁存器 1.3.1 特点 有两个互补的输出...时序逻辑电路
1.1 介绍
输出往往反馈到输入端,与输入变量一起决定电路的输出状态。
1.2 特点
任意时刻输出不仅取决于该时刻输入变量的状态,而且还与原来的状态有关。
1.3 锁存器
1.3.1 特点
- 有两个互补的输出端 Q Q Q和 Q ‾ \overline{Q} Q,当 Q Q Q = 1时, Q ‾ \overline{Q} Q = 0;而当 Q Q Q = 0时, Q ‾ \overline{Q} Q = 1。
- 有两个稳定状态,通常将 Q Q Q = 1和 Q ‾ \overline{Q} Q = 0称为1状态,而当 Q Q Q = 0和 Q ‾ \overline{Q} Q = 1称为0状态,若输入不发生变化,锁存器必定处于其中一个状态,并且长期保持下去。
- 在输入信号的作用下,锁存器可以从一个稳定状态转换到另一个稳定状态。
- 我们把输入信号发生变化之前的锁存器状态称为现态(PS),用 Q n Q^n Qn和 Q ‾ n \overline{Q}^n Qn来表示,而把输入信号发生变化后锁存器所进入的状态称为次态(NS),用 Q n + 1 Q^{n+1} Qn+1和 Q ‾ n + 1 \overline{Q}^{n+1} Qn+1来表示。
1.3.2 常用锁存器
1.3.2.1 SR锁存器
1.3.2.1.1 或非实现
1.3.2.1.1.1 状态方程
{ Q n + 1 = S + R ‾ Q n S ∙ R = 0 \begin{cases} Q^{n+1} = S + \overline{R}Q^n \\ S \bullet R = 0 \end{cases} {Qn+1=S+RQnS∙R=0
1.3.2.1.1.2 状态转换图
1.3.2.1.1.3 真值表
R S Q n Q^n Qn Q n + 1 Q^{n+1} Qn+1 0 0 0 保持 Q n Q^n Qn不变 0 0 1 保持 Q n Q^n Qn不变 0 1 0 1 0 1 1 1 1 0 0 0 1 0 1 0 1 1 0 不稳 1 1 1 不稳 1.3.2.1.2 与非实现
1.3.2.1.2.1 状态方程
{ Q n + 1 = S ‾ ‾ + R ‾ Q n S ‾ + R ‾ = 1 \begin{cases} Q^{n+1} = \overline{\overline{S}} + \overline{R}Q^n \\ \overline{S} + \overline{R} = 1 \end{cases} {Qn+1=S+RQnS+R=1
1.3.2.1.2.2 状态转换图
1.3.2.1.2.3 真值表
R ‾ \overline{R} R S ‾ \overline{S} S Q n Q^n Qn Q n + 1 Q^{n+1} Qn+1 0 0 0 不稳 0 0 1 不稳 0 1 0 0 0 1 1 0 1 0 0 1 1 0 1 1 1 1 0 保持 Q n Q^n Qn不变 1 1 1 保持 Q n Q^n Qn不变 1.3.2.2 SR锁存器与非和或非的区别
- 与非门是输入低电平控制的器件,即有一个输入为0时,输出就一定是1。
- 或非门是输入高电平控制的器件,输入都是0时,输出才是1。
- 根据真值表可以得到与非门和或非门的置0和置1正好相反。
1.3.2.2 门控SR锁存器
1.3.2.2.1 状态方程
{ Q n + 1 = S + R ‾ Q n S ∙ R = 0 \begin{cases} Q^{n+1} = S + \overline{R}Q^n \\ S \bullet R = 0 \end{cases} {Qn+1=S+RQnS∙R=0
1.3.2.2.2 状态转换图
1.3.2.2.3 特性表
EN S R Q n Q^n Qn Q n + 1 Q^{n+1} Qn+1 0 x x x 保持 Q n Q^n Qn不变 1 0 0 0 保持 Q n Q^n Qn不变 1 0 0 1 保持 Q n Q^n Qn不变 1 0 1 0 0 1 0 1 1 0 1 1 0 0 1 1 1 0 1 1 1 1 1 0 不稳 1 1 1 1 不稳 1.3.2.3 门控D锁存器
1.3.2.3.1 状态方程
Q n + 1 = D Q^{n+1} = D Qn+1=D
1.3.2.3.2 状态转换图
1.3.2.3.3 真值表
EN D Q n Q^n Qn Q n + 1 Q^{n+1} Qn+1 0 x x 保持 Q n Q^n Qn不变 1 0 0 0 1 0 1 0 1 1 0 1 1 1 1 1 1.4 触发器
1.4.1 分类
1.4.1.1 逻辑功能划分
1.4.1.1.1 RS触发器
和门控RS锁存器情况基本相同
1.4.1.1.2 D触发器
和门控D锁存器情况基本相同
1.4.1.1.3 JK触发器
1.4.1.1.3.1 状态方程
Q n + 1 = J Q n ‾ + K ‾ Q n Q^{n+1} = J\overline{Q^n} + \overline{K}Q^n Qn+1=JQn+KQn
1.4.1.1.3.2 状态转换图
1.4.1.1.3.3 真值表
EN J K Q n Q^n Qn Q n + 1 Q^{n+1} Qn+1 0 x x x 保持 Q n Q^n Qn不变 1 0 0 0 保持 Q n Q^n Qn不变 1 0 0 1 保持 Q n Q^n Qn不变 1 0 1 0 0 1 0 1 1 0 1 1 0 0 1 1 1 0 1 1 1 1 1 0 翻转 1 1 1 1 翻转 1.4.1.1.4 T触发器
1.4.1.1.4.1 状态方程
Q n + 1 = Q n ‾ Q^{n+1} = \overline{Q^n} Qn+1=Qn
1.4.1.1.4.2 状态转换图
1.4.1.1.4.3 真值表
CP T Q n Q^n Qn Q n + 1 Q^{n+1} Qn+1 0 x x 保持 Q n Q^n Qn不变 1 0 0 保持 Q n Q^n Qn不变 1 0 1 保持 Q n Q^n Qn不变 1 1 0 翻转 1 1 1 翻转 1.4.1.2 电路结构和触发方式划分
1.4.1.2.1 同步触发器
1.4.1.2.2 主从触发器
- 克服同步触发器的空翻现象。
- 提高触发器工作的可靠性。
- 使触发器在每个时钟脉冲周期内状态只改变一次。
1.4.1.2.3 边沿触发器
触发器仅在时钟脉冲的上下沿到来时才接收输入信号,在脉冲为0或1的时候不接受输入信号。边沿触发器不仅克服了空翻现象,而且大大提高了抗干扰能力。
1.4.2 触发器之间的转换方法
先比较已有触发器和待求触发器的特性方程,求出转换电路的逻辑函数表达式,再根据转换逻辑画出逻辑电路图。
1.5 触发器和锁存器的区别
- 锁存器同其所有的输入信号相关,当输入信号变化时锁存器就变化,没有时钟端。
- 锁存器由电平触发,非同步控制。在使能信号有效时锁存器相当于通路,在使能信号无效时锁存器保持输出状态。
- 锁存器对输入电平敏感,受布线延迟影响较大,很难保证输出没有冒险产生。
- 触发器受时钟控制,只有在时钟触发时才采样当前的输入,产生输出。
- 触发器由时钟沿触发,同步控制。
- 触发器则不易产生冒险。
- 触发器相比较于锁存器优点在于触发器是一个同步双稳态器件,所谓同步,是指触发器的记忆状态按时钟脉冲的边沿来改变。触发器在时钟脉冲的上边沿和下边沿来启动记忆1为数据的方法,提高了逻辑电路的可靠性和工作速度。
1.6 常用时序电路
1.6.1 寄存器
1.6.1.1 介绍
由锁存器或触发器组成,一次能够并行存储n位比特数据的逻辑部件称为寄存器
1.6.1.2 分类
1.6.1.2.1 数据寄存器
并行输入并行输出
1.6.1.2.2 移位寄存器
- 右移寄存器
- 循环右移寄存器
- 左串输入右串输出
- 串行输入并行输出
- 并行输入串行输出
- 左移寄存器
- 循环左移寄存器
- 右端串行输入从左端串行输出
1.6.1.2.3 双向移位寄存器/通用寄存器
- 串入串出
- 串入并出
- 并入串出
- 并入并出
1.6.2 计数器
1.6.2.1 介绍
计数器的功能是记忆脉冲的个数,计数器所能记忆脉冲的最大数目称为该计数器的模,用字母M来表示,构成计数器的核心元件是触发器
1.6.2.2 分类
1.6.2.2.1 计数功能分
- 加法计数器
- 减法计数器
- 可逆计数器
1.6.2.2.2 进位基数分
- 二进制计数器
- 十进制计数器
- 任意进制计数器
1.6.2.2.3 进位方式分
- 同步计数器(并行计数器)
- 异步计数器(串行计数器)
1.7 时序逻辑电路的一般模型和结构特点
时序电路由组合电路和起记忆作用的存储电路组成,其中存储电路一般由各类触发器组成。
1.8 按其状态的改变方式不同分类
1.8.1 同步时序逻辑电路
- 所有触发器状态的变化是在同一时钟信号作用下同时发生的
1.8.1.1 三组逻辑表达式
输出方程:组合逻辑电路的输出内容
Y = F ( X , Q n ) Y = F(X,Q^n) Y=F(X,Qn)
驱动方程:各个触发器的激励信号
Z = G ( X , Q n ) Z = G(X,Q^n) Z=G(X,Qn)
状态方程:触发器的现态次态
Q n + 1 = H ( X , Q n ) Q^{n+1} = H(X,Q^n) Qn+1=H(X,Qn)
1.8.1.2 按其输入和输出的关系不同
1.8.1.2.1 米里型时序逻辑电路
输出是输入变量和状态变量的函数,输出不仅与输入有关,而且与电路的现态有关
1.8.1.2.2 摩尔型时序逻辑电路
输出只是状态变量的函数,而和当时的输入无关
1.8.2 异步时序逻辑电路
没有统一的时钟信号,各触发器状态的变化不是同时发生的,而是有先有后的
1.9 功能描述方法
1.9.1 逻辑表达式
用于描述时序电路功能的逻辑表达式为输出方程、驱动方程和状态方程。
1.9.2 状态转换表
把时序电路的输入和现态的各种可能取值,代入状态方程和输出方程进行计算,求出相应的次态和输出,将全部的计算结果列成真值表的形式
1.9.3 状态转换图
圆圈:表示时序电路的各种状态。
箭头线:表示状态转换方向
箭头线旁注明:状态转换前的输入变量 X X X的取值和输出变量 Y Y Y的值。- 示例
-
米里型
-
摩尔型
-
1.9.4 时序图
描述时序电路在输入信号和时钟脉冲序列作用下,电路状态及输出随时间变化的波形图。
1.10 同步时序逻辑电路分析方法
- 列出时序电路的输出方程和各触发器的驱动方程;
- 将触发器的驱动方程代入各自的特性方程,求出各触发器的次态方程,从而得到时序电路的状态方程;
- 根据求得的状态方程和输出方程,列出时序电路的状态转换表;
- 根据状态转换表列出状态表,画出状态图或时序图;
- 总结分析时序电路的逻辑功能。
1.11 自启动能力
电路经过若干个 C L K CLK CLK脉冲作用,还是能进入有效序列,不会陷入某个死循环出不去。
1.12 同步时序逻辑设计
1.12.1 步骤
- 建立原始状态表
- 所要设计的同步时序电路的逻辑功能是通过文字、图形或波形来描述的,首先必须将它们变换成规范的状态图或状态表。这种直接从文字描述得到的状态图或状态表称为原始状态图或原始状态表。
- 状态化简
- 原始状态表(或图)中可能包含多余的状态,消除多余状态的过程称为状态化简。
- 状态编码
- 给最简状态表中的每一个状态指定一个特定的二进制代码,形成编码状态表的过程称为状态编码,也称为状态分配。
- 选择触发器类型
- 确定逻辑方程
- 根据编码状态表和选定触发器类型,写出时序电路的状态方程、驱动方程和输出方程。
- 画逻辑图
- 根据得到的的驱动方程和输出方程,画出逻辑电路图。
- 检查电路是否能自启动,如果不能自启动要重新设计逻辑方程。
- 有些同步时序电路设计中会出现没用的无效状态,当电路上电后可能会进入这些无效而无法退出。
1.12.2 状态化简
设 A A A和 B B B是原始状态表中的两个状态,若分别以 A A A和 B B B为初始状态,加入任意的输入序列,电路均产生相同的输出序列, 即两个状态的转移效果相同,则称 A A A和 B B B是等效状态或等效状态对,记作 ( A , B ) (A, B) (A,B)。凡是相互等效的状态都可以合并成一个状态。
1.12.2.1 判断两个状态是否等效的条件
- 在相同的输入条件下都有相同的输出。
- 在相同的输入条件下次态也等效。 这可能有三种情况
- 次态相同
- 次态交错
- 次态循环(次态互为隐含条件)
1.12.2.2 隐含表法
隐含表是一种斜边为阶梯形的直角三角形表格。该表格两个直角边上的方格数目相等,等于原始状态数减1。隐含表的纵向由上到下、横向从左到右均按照原始状态表中的状态顺序标注,但纵向“缺头”,横向“少尾”。表中的每个小方格用来表示相应的状态对之间是否存在等价关系。如图5-19所示就是根据具有 A A A、 B B B、 C C C、 D D D、 E E E 这五个状态的原始状态表作出的隐含表。
1.12.2.2.1 隐含表化简步骤
- 构造隐含表,并在表中每个方格中标明相应状态对是否等价。
- 状态对肯定不等价的,在隐含表相应方格中标注“×”
- 状态对肯定等价的,在隐含表相应方格中标注“√”
- 状态对条件等价的,在隐含表相应方格中标注等价条件。
- 顺序比较。先将隐含表中所有的状态按照一定顺序对照原始状态表逐一进行比较,并将比较结果按上面的约定标注在隐含表中每一个小方格内。
- 关联比较。追查填有等价条件的那些方格,若发现所填的等价条件肯定不能满足,就在该方格右上角加一个“×”。
- 确定原始状态表的最大等价类。从隐含表的最右边开始,逐列检查各个小方格,凡是未打“×”的方格,都代表一个等价状态对。彼此等价的几个状态可合并到一个等价类中,最终形成若干个最大等价类。如果有的状态没有包含在任何一个最大等价类中,则该状态自己就是一个最大等价类。
5.建立最简状态表。将每个最大等价类用一个状态来代替,将这种替代关系应用于原始状态表,并删除多余行,就得到了最简状态表。
1.12.3 状态编码
建立最简状态表后,要设计的同步时序电路所需的状态数 N N N就被确定下来,进而电路所需要的触发器个数 K K K也被确定下来。
K K K和 N N N应满足下列关系 2 K − 1 ≤ N ≤ 2 K 2^{K-1}\le N \le2^K 2K−1≤N≤2K
状态编码是给最简状态表中用字母表示的 N N N个状态分别指定一个二进制代码的过程,该代码就是这 K K K个触发器的状态组合。N N N的数目将随着 K K K的增加而急剧增大。在这种情况下,想要对全部编码方案进行一一对比,从中选取最佳方案是十分困难的。因此,在实际工作中常采用经验法,按一定原则进行状态编码,来获得接近最佳的方案。其基本思想是在选择状态编码时,尽可能使状态和输出函数在卡诺图上1单元的分布为相邻,以便形成更大的包围圈。从而有利于状态函数和输出函数的化简。
状态编码依据的原则为:
(1)相同输入条件下,次态相同,现态应给予相邻编码。所谓相邻编码,就是指各二进制代码中只有一位代码不同。
(2)在不同输入条件下的同一现态,次态编码应相邻。
(3)输出相同,现态编码应相邻。 -
数字电子技术基础:第6章_时序逻辑电路_下.ppt
2021-09-20 00:18:00数字电子技术基础:第6章_时序逻辑电路_下.ppt -
组合逻辑电路 & 时序逻辑电路
2020-09-22 14:42:17组合逻辑电路 特点:是任意时刻的输出仅仅取决于当前时刻的输入,与电路之前的历史状态无关(即无记忆能力) 组合逻辑电路的设计通常包含以下几个步骤: 进行逻辑抽象。分析事件的因果关系,确定输入变量和输出变量...组合逻辑电路
特点:是任意时刻的输出仅仅取决于当前时刻的输入,与电路之前的历史状态无关(即无记忆能力)
组合逻辑电路的设计通常包含以下几个步骤:
- 进行逻辑抽象。分析事件的因果关系,确定输入变量和输出变量,列出输入变量和输出变量的逻辑真值表。
- 写出逻辑函数。将真值表转换为对应的逻辑函数式,或者直接画出卡诺图,然后使用第三章中介绍的卡诺图将逻辑函数进行化简。
- 根据化简后的逻辑函数,画出逻辑电路图。
常见的组合逻辑电路:多路选择器、编码器、译码器、移位器、比较器、
多路选择器
最简单的多路选择器(Multiplexer)是1位二选一多路器。
当输入S为高电平时,输入Y的值为输入A1的值;
当输入S为低电平时,输入Y的值为输入A0的值。四选一多路选择器代码
module MUX4X32 (A0, A1, A2, A3, S, Y); input [31:0] A0, A1, A2, A3; input [1:0] S; output [31:0] Y; function [31:0] select; input [31:0] A0, A1, A2, A3; input [1:0] S; case (s) 2ˊb00: select = A0; 2ˊb01: select = A1; 2ˊb10: select = A2; 2ˊb11: select = A3; endcase endfunction assign y = select (A0, A1, A2, A3, S); end module
译码器
module DEC2T4 (I0, I1, Y0, Y1, Y2, Y3); input I0, I1; output Y0, Y1, Y2, Y3; not i0 (I0_n, I0); not i1 (I1_n, I1); nor i2 (Y0, I0, I1); nor i3 (Y1, I0, I1_n); nor i4 (Y2, I0_n, I1); nor i5 (Y3, I0_n, I1_n); endmodule
编码器
比较器
把比较输入信号之间是否相等的电路叫做比较器(Comparator):如果两个输入向量相等,则输出高电平,否则输出低电平
module CPT4 (A, B, Y); input [3:0] A, B; output Y; xor i0 (D0, A[0], B[0]); xor i1 (D1, A[1], B[1]); xor i2 (D2, A[2], B[2]); xor i3 (D3, A[3], B[3]); nor i4 (Y, D0, D1, D2, D3); endmodule
数据扩展器
对数据进行符号扩展或零扩展
module EXT16T32 (X, Se, Y); input [15:0] X; input B; output Y; wire [31:0] E0, E1; wire [15:0] e = {16{X[15]}}; parameter z = 16ˊb0; assign E0 = {z, X}; assign E1 = {e, X}; MUX2X32 i(E0, E1, Se, Y); endmodule
时序逻辑电路
组合逻辑电路的特点是任意时刻的输出仅仅取决于当前时刻的输入,与电路之前的历史状态无关;
而时序逻辑电路的 输出不仅取决于当前的输入,还取决于电路的历史状态。 因此我们需要一种元件能保存电路的状态信息。如果一个元件带有内部存储功能,它就包含状态,也称之为状态单元(State Element)。
- 锁存器:锁存器在E的高(低)电平期间对信号敏感
- 触发器:触发器在CP的上升沿(下降沿)对信号敏感
共同点:具有0 和1两个稳定状态,一旦状态被确定,就能自行保持。一个锁存器或触发器能存储一位二进制码。
不同点:
- 锁存器—对脉冲电平敏感的存储电路,在特定输入脉冲电平作用下改变状态。
- 触发器—对脉冲边沿敏感的存储电路,在时钟脉冲的上升沿或下降沿的变化瞬间改变状态。
常见的时序逻辑元件:锁存器、
锁存器
最简单的时序电路由一对反相器形成一个双稳态元件,如图所示。该元件具有两个稳定状态,只要一接上电源,它就随机出现两种状态中的一种,并永久保持这一状态。
若Q为高电平输出,则Vin2为高电平输入,Qn输出低电平,同时Vin1也为低电平输入,又使得Q继续保持高电平输出;若Q为低电平输出,则Vin2为低电平输入,Qn输出高电平,同时Vin1也为高电平输入,又使得Q继续保持低电平输出;
SR锁存器
上述双稳态元件虽然可以持续保存电路的状态信息,但是缺点是不能根据我们的需求去修改存储的信息。因此我们还需要其他的元件来实现我们的需求。
- 当Sn为输入高电平,Rn为输入低电平时,Qn输出为高电平,Q输出为低电平;
- 当Sn为输入低电平,Rn为输入高电平时,Q输出为高电平,Qn输出为低电平;
- 当Sn为输入低电平,Rn为输入低电平时,Q输出为高电平,Qn输出为高电平;
- 当Sn为输入高电平,Rn为输入高电平时,此时电路的特性就像一个双稳态元件,但是电路的输出只能维持Q和Qn处于输出相反电平的逻辑状态。
Sn Rn Q Qn 1 1 维持不变 维持不变 1 0 0 1 0 1 1 0 0 0 1 1 En锁存器
由于Sn-Rn锁存器对两个输入端的电平信号是一直敏感的,我们需要在Sn-Rn锁存器的基础上增加一个输入使能端En,使得输出只在使能端En为输入高电平时才对输入端的电平敏感。
D锁存器
可在带输入使能端的Sn-Rn锁存器的基础上略作修改,使得修改后的元件能够保存一个二进制位的状态信息。我们把这种修改后的锁存器叫做D锁存器(D Latch)。
module D_Latch (D, En, Q, Qn); input D, En; output Q, Qn; wire Sn, Rn, Dn; not i0 (Dn, D); nand i1 (Sn, D, En); nand i2 (Rn, En, Dn); nand i3 (Q, Sn, Qn); nand i4 (Qn, Q, Rn); //这两行代码实现的是Sn-Rn锁存器 endmodule
触发器
D锁存器已经能够保存一个二进制位的状态信息,并且能够在输入使能端为高电平时改变其存储的信息,即通过输入使能端的电平信号去控制D锁存器的开闭。
不过,在计算机芯片内部,我们往往需要通过输入的时钟边沿信号(时钟的上升沿或下降沿)去控制D锁存器的开闭,把这种用时钟边沿控制D锁存器中存储内容的元件叫做D触发器。
用两个D锁存器和两个非门构成了一个上升沿触发式D触发器
当Clk输入端为低电平时,主锁存器的En端为高电平输入,为打开状态;从锁存器的En端为低电平输入,为关闭状态。因此D触发器的输出端Q和Qn维持之前的状态信息。换句话说,此时D触发器中存储的信息是由从锁存器提供的。当Clk输入端从低电平变为高电平时,主锁存器的En端从输入高电平变为低电平,即变为关闭状态,其输出端Q保持En端电平降低前的D端输入的电平信息;从锁存器的En端从输入低电平变为高电平,即变为打开状态,其输出Q端与其输入D端的电平信号一致。换句话说,D触发器在时钟信号的上升沿采样D端输入信号并保存在其主锁存器中。
当Clk输入端从高电平变为低电平时,主锁存器的En端从输入低电平变为高电平,即变为打开状态,其输出端Q`开始接收D端的输入电平并保持一致;从锁存器的En端从输入高电平变为低电平,即变为关闭状态,其输出端Q保持En端电平降低前的D端输入的电平信息。换句话说,D触发器在时钟信号的下降沿将其存储的信息从主锁存器移到从锁存器
-
时序逻辑电路的分析与设计.ppt
2019-09-12 22:06:58时序逻辑电路的分析与设计ppt,本文介绍了时序逻辑电路的基本概念,时序逻辑电路的分析方法,同步时序逻辑电路的设计方法。 -
数字电子技术基础-第五章--时序逻辑电路.ppt
2021-09-17 23:07:38数字电子技术基础-第五章--时序逻辑电路.ppt -
时序逻辑电路定时器
2017-09-28 12:46:17大学生初级时序逻辑的课程设计,定时器的一个仿真程序