第八章-时序逻辑电路设计优秀PPT.ppt
时时序序逻逻辑辑电电路路定定义义:随随意意时时刻刻的的输输出出不不仅仅取取决决于于当当时时的的输输入入信信号号,而而且且还还取取决决于于电电路路原原来来的的状状态态,或或者者说说,还还与与以以前的输入有关。前的输入有关。依依据据电电路路的的工工作作方方式式,时时序序逻逻辑辑电电路路可可分分为为同同步步时时序序逻逻辑辑电电路路(简简称称同同步步时时序序电电路路)和和异异步步时时序序逻逻辑辑电电路路(简简称称异异步步时时序序电电路路)两两种种类类型型。常见的时序逻辑电路有触发器、计数器、寄存器等。概述概述1.1.画出状态转换图画出状态转换图2.2.填写状态转换真值表填写状态转换真值表3.3.次态卡诺图次态卡诺图4.4.选定触发器类型求出输出方程、状态方程和驱动方程选定触发器类型求出输出方程、状态方程和驱动方程5.5.画电路图画电路图 时序逻辑电路设计步骤(补充)时序逻辑电路设计步骤(补充)8.1 时钟信号和复位信号时钟信号和复位信号8.1.1 时钟信号描述时钟信号描述时序电路总是以时钟进程形式来描述,方式有两种:时序电路总是以时钟进程形式来描述,方式有两种:1)进程的敏感信号是时钟信号进程的敏感信号是时钟信号2)用进程中的用进程中的WAIT ON语句等待时钟语句等待时钟任何时序电路都是用时钟信号作为驱动信号的。时序电路只是在时钟信号的有效沿或电平到来时,其状态才发生变更。因此,时钟信号通常是描述时序电路的程序的执行条件。1)进程的敏感信号是时钟信号进程的敏感信号是时钟信号在这种状况下,时钟信号应作为敏感信号,显式地出现在PROCESS语句后跟的括号中,例如PROCESS(clock_signal)。时钟信号边沿的到来,将作为时序电路语句执行的条件。例:PROCESS(clock_signal)BEGINIF(clock_edge_condition)THENsignal_out=signal_in;-其它时序语句;-ENDIF;ENDPROCESS;该进程在时钟信号发生变更时被启动,而在时钟边沿的条件得到满足时才真正执行时序电路所对应的语句。运用了IF语句对时钟沿进行说明。在这种状况下,描述时序电路的进程将没有敏感信号,而是用WAITON语句来限制进程的执行。也就是说,进程通常停留在WAITON语句上,只有在时钟信号到来,且满足边沿条件时,其余的语句才能执行,如下例如示:PROCESSBEGINWAITON(clock_signal)UNTIL(clock_edge_conditon);signal_out=signal_in;-其它时序语句;-ENDPROCESS2)用进程中的用进程中的WAIT ON语句等待时钟语句等待时钟在运用WAIT ON语句的进程中,敏感信号量应写在进程中的WAIT ON语句后面。在编写上述两个程序时应留意:无论IF语句还是WAITON语句,在对时钟边沿说明时,确定要注明是上升沿还是下降沿,光说明是边沿是不行的。当时钟信号作为进程的敏感信号时,在敏感信号的表中不能出现一个以上的时钟信号,除时钟信号以外,像复位信号等是可以和时钟信号一起出现在敏感表中的。WAITON语句只能放在进程的最前面或者是最终面。3)时钟边沿的描述)时钟边沿的描述可以用时钟信号的属性来描述时钟的边沿。其上升沿的描述为:IFclk=1ANDclkLAST_VALUE=0ANDclkEVENT时钟的下降沿的描述为:IFclk=0ANDclkLAST_VALUE=1ANDclkEVENT在一些程序中常常所见时钟沿表达如下时钟上升沿:(clockeventandclock=1)时钟下降沿:(clockeventandclock=0)8.1.2 触发器的同步和非同步复位触发器的同步和非同步复位同步复位:当复位信号有效且在给定的时钟边沿到来时,触发器才被复位。异步复位:一旦复位信号有效,触发器就被复位。1)同步复位)同步复位在用VHDL语言描述时,同步复位确定在以时钟为敏感信号的进程中定义,且用IF语句来描述必要的复位条件。例如:process(clock_signal)begin if(clock_edge_condition)then if(reset_condition)then signal_out=reset_value;else signal_out=signal_in;end if;end if;end process;2)非同步复位非同步复位异步复位在描述时与同步方式不同:首先在进程的敏感信号中除时钟信号以外,还应加上复位信号;其次是用IF语句描述复位条件;最终在ELSE段描述时钟信号边沿的条件,并加上EVENT属性。其描述方式如:PROCESS(reset_signal,clk_signal)BEGINIF(reset_condition)THENsignal_out=reset_value;ELSIF(clk_eventANDclk_edge_condition)THENsignal_out=signal_in;-其它时序语句;-属性属性 EVENT 对对在在当当前前的的一一个个微微小小的的时时间间段段内内发发生生的的事事务务的的状状况况进进行行检检测测。如如发发生生事事务务,则则返返回回 true,否则返回,否则返回 false。发发生生事事务务:信信号号电电平平发生变更。发生变更。左左例例中中进进程程后后跟跟括括号号内内有有两两个个敏敏感感信信号号:复复位位信信号号和和时时钟钟信信号号。进进程程中中的的IF语语句句一一起起先先就就推推断断复复位位条条件件,可可见见复复位位优先级高于时钟。优先级高于时钟。8.2 触发器触发器触发器(FlipFlop)是一种可以存储电路状态的电子元件。按逻辑功能不同分为:RS触发器、D触发器、JK触发器、T触发器。8.2.1 锁存器锁存器 锁存器锁存器(Latch)(Latch)是一种对脉冲电平敏感的存储单元电路,它们可以在特是一种对脉冲电平敏感的存储单元电路,它们可以在特定输入脉冲电平作用下变更状态。定输入脉冲电平作用下变更状态。锁存,就是把信号暂存以维持某种电平状态。锁存器的最主要作用是锁存,就是把信号暂存以维持某种电平状态。锁存器的最主要作用是缓存。缓存。锁存器依据触发边沿、复位和预置方式以及输出端多少的不同可以有锁存器依据触发边沿、复位和预置方式以及输出端多少的不同可以有多种形式的锁存器。多种形式的锁存器。1)D锁存器锁存器上升沿触发的上升沿触发的D D锁存器:锁存器:上升沿触发的D锁存器,有一个数据输入端d,一个时钟输入端Clk和一个数据输出端q。D锁存器的输出端只有在上升沿脉冲过后输入端d的数据才传送到输出端q。时钟信号应作为敏感信号,显式地出现在PROCESS语句后跟的括号中。运用了IF语句对时钟沿进行说明。时钟边沿的到来时,将作为时序电路语句执行的条件。D锁存器程序实例锁存器程序实例1D锁存器程序实例锁存器程序实例 2WAIT UNTIL 表达式;表达式;当表达式的值为当表达式的值为“真真”时,进程被启动,否则时,进程被启动,否则进程被挂起。进程被挂起。该语句在表达式中将该语句在表达式中将建立一个隐式的敏感信号建立一个隐式的敏感信号量表,当表中的任何一个量表,当表中的任何一个信号量发生变更时,就马信号量发生变更时,就马上对表达式进行一次评估。上对表达式进行一次评估。假如评估结果使表达式返假如评估结果使表达式返回一个回一个“真真”值,则进程值,则进程脱离等待状态,接着执行脱离等待状态,接着执行下一个语句。下一个语句。2)异步复位异步复位D锁存器锁存器异步复位D锁存器和一般的D锁存器区分 是 多 了 一 个 复 位 输 入 端 clr。当clr=0时,输出端q置0。clr称为清0输入端。clr低电平有效。进程后跟括号内有两个敏感信号:清0信号和时钟信号。进程中的IF语句一起先就推断清0条件,可见此时清0优先级高于时钟。异步复位异步复位D锁存器程序实例锁存器程序实例3)异步复位异步复位/置位置位D锁存器锁存器除了前述的d,clk,q端外,还有clr和pset的复位、置位端。当clr=0时复位,使q=0;当pset=0时置位,使q=1;clr、pset均是低电平有效。异步复位异步复位/置位置位D锁存器程序实例锁存器程序实例进程后跟括号内有三个敏感信号:时钟信号,复位信号和置位信号。通过进程中的IFTHENELSEIF语句可以看出:优优先先级级,置置位最高,复位次之,时钟最低。位最高,复位次之,时钟最低。4)同步复位同步复位D锁存器锁存器与异步方式不同的是,当复位信号有效(clr=1)以后,只是在有效边沿来时才能进行复位操作。从图中可以看出复位信号的优先级比d端的数据输入高,也就是当clr=1时,无论d端输入什么信号,在clk的上升沿到来时,q输出总是“0”。同步复位同步复位D锁存器程序实例锁存器程序实例进程后跟括号内只有一个敏感信号:时钟信号。通过进程中的IFTHENELSEIF语句可以看出:优优先先级级,时时钟最高,复位次之。钟最高,复位次之。8.2.2 JK触发器触发器JK触发器是数字电路触发器中的一种电路单元。JK触发器具有置0、置1、保持和翻转功能,在各类集成触发器中,JK触发器的功能最为齐全。在实际应用中,它不仅有很强的通用性,而且能敏捷地转换其他类型的触发器。由JK触发器可以构成D触发器和T触发器。JK触发器的输入端有置位输入pset,复位输入clr,限制输入j和k,时钟信号输入clk;输出端有正向输出端q和反向输出端qb。JK触发器的真值表如表所示。表中q0表示原状态不变,翻转表示变更原来的状态。优先级:置位最高于复位,与真值表不一样,没有考虑pset=clr=“0”时,输出时q=“X”(未知态)。四个敏感信号,异步与真值表一样的程序与真值表一样的程序此例中pset=clr=“0”这种状况没有考虑,在逻辑综合时,输出是未知的。libraryieee;useieee.std_logic_1164.all;entityrs_ffisport(r,s,clk:instd_logic;q,qn:bufferstd_logic);endrs_ff;architecturertlofrs_ffisbeginprocess(r,s,clk)beginifclkeventandclk=1thenifs=1andr=0thenq=0;qn=1;elsifs=0andr=1thenq=1;qn=0;elsifs=0andr=0thenq=q;qn=qn;elsenull;endif;endif;endprocess;endrtl;SClkQQRSRQQn00QQn01101001118.2.3 8.2.3 同步同步RSRS触触发器器null为空语句,不作任何操作。格式:为空语句,不作任何操作。格式:null;8.3 寄存器寄存器数字电路中,用来存放二进制数据或代码的电路称为寄存器。寄存器是由具有存储功能的触发器组合起来构成的。一个触发器可以存储1位二进制代码,存放n位二进制代码的寄存器,需用n个触发器来构成。依据功能的不同,可将寄存器分为基本寄存器和移位寄存器两大类。基本寄存器只能并行送入数据,须要时也只能并行输出。移位寄存器中的数据可以在移位脉冲作用下依次逐位右移或左移,数据既可以并行输入、并行输出,也可以串行输入、串行输出,还可以并行输入、串行输出,串行输入、并行输出,特别敏捷,用途也很广。8 8位串行位串行输入、串行入、串行输出移位寄存器出移位寄存器它具有两个输入端:数据输入端a和时钟输入端clk;一个数据输出端b。在时钟信号作用下,前级数据向后级移动。该8位寄存器由8个D触发器构成。8 8位移位寄存器描述(位移位寄存器描述(结构描述)构描述)在结构体的说明部分利用COMPONENT语句对要引用元件进行声明。利用生成语句指定生成次数利用COMPONENT_INSTANT语句,调用元件,用位置映射方式8 8位移位寄存器干脆用信号位移位寄存器干脆用信号连接描述接描述进程中执行信号代入语句时,被代入信号量的值在当时并没有发生变更,直到进程结束,代入过程才同时发生。此例描述了移位功能。若将程序中信号改成变量,变量赋值语句中,被赋值的变量的值会马上变更,结果如何?8.4 计数器计数器在数字电子技术中应用的最多的时序逻辑电路。计数器不仅能用于对时钟脉冲计数,还可以用于分频、定时、产生节拍脉冲和脉冲序列以及进行数字运算等。但是并无法显示计算结果,一般都是要通过外接LCD或LED屏才能显示。1、假如依据计数器中的触发器是否同时翻转分类,可将计数器分为同步计数器和异步计数器两种。常见的同步计数器有74160系列,74LS190系列,常见的异步计数器有74LS290系列。2、假如依据技术过程中数字增减分类,又可将计数器分为加法计数器和减法计数器,随时钟信号不断增减的为加法计数器,不断削减的为减法计数器。同步计数器指在时钟脉冲(计数脉冲)的限制下,构成计数器的各触发器状态同时发生变更的计数器。8.4.1 同步计数器同步计数器(1)(1)带允许端的十二进制计数器带允许端的十二进制计数器计数器由4个触发器构成,clr是清零,en是计数限制端,qa,qb,qc,qd为计数器的4位二进制值的输出端。带允允许端的十二端的十二进制制计数器数器调用了标准逻辑无符号包调用了标准逻辑无符号包定义了计数中间信号,由于输出定义了计数中间信号,由于输出qa,qb,qc,qd被定义为被定义为out类型类型PROCESS后跟两个敏感信号后跟两个敏感信号推断清零信号推断清零信号推断计数使能信号推断计数使能信号推断时钟信号推断时钟信号推断计数的终点推断计数的终点不同类型数据值可以进行相加,这是因不同类型数据值可以进行相加,这是因为调用了标准逻辑无符号程序包为调用了标准逻辑无符号程序包(2)(2)可逆计数器可逆计数器 可逆计数器依据计数限制信号的不同,在时钟脉冲作用下,可以实现加1和减1的操作。限制端updn=1计数器加1,updn=0计数器减1。可逆可逆计数器(加减数器(加减计数器)程序数器)程序设计调用了标准逻辑无符号包调用了标准逻辑无符号包定义了计数中间信号定义了计数中间信号PROCESS后跟两个敏感信号后跟两个敏感信号推断清零信号推断清零信号推断时钟信号推断时钟信号加计数和减计数推断加计数和减计数推断不同类型数据值可以进行相加减法,这是不同类型数据值可以进行相加减法,这是因为调用了标准逻辑无符号程序包因为调用了标准逻辑无符号程序包(3)(3)六十进制计数器六十进制计数器 4位二进制计数器构成1位BCD十进制计数器,六十进制计数器可由两位十进制计数器连接。六十进制计数器常用于时钟计数。六十进制计数器设计程序六十进制计数器设计程序调用了标准逻辑无符号包调用了标准逻辑无符号包计数器个位输出端,计数器个位输出端,4位位计数器十位输出端,计数器十位输出端,3位位定义了两个中间信号定义了两个中间信号第一个进程处理个位计数其次个进程处理十位计数六十进制计数器设计程序(续六十进制计数器设计程序(续1)推断个位写限制端,若有效推断个位写限制端,若有效,对个位写入数据对个位写入数据推断时钟信号上升沿推断时钟信号上升沿推断进位输入端推断进位输入端推断个位计数终点推断个位计数终点个位计数个位计数推断十位写限制端,若有效推断十位写限制端,若有效,对十位写入数据,对十位写入数据,推断时钟信号上升沿推断时钟信号上升沿第三个进程处理进位输出Co六十进制计数器设计程序(续六十进制计数器设计程序(续2)推断进位输入端和个位输出端推断进位输入端和个位输出端推断十位计数终点推断十位计数终点十位计数十位计数推断同时是否进位位推断同时是否进位位1,个位为,个位为9,十位为,十位为58.4.2 异步计数器异步计数器行波计数器行波计数器 异步计数器又称为行波计数器,低位计数器的输出作为高位计数器的时钟信号,各级级联构成异步计数器。与同步计数器最大的不同是时钟脉冲的供应方式。电路简洁,但计数延迟增加,计数器工作频率较低。首先首先首先首先对对基本元件基本元件基本元件基本元件D D D D触触触触发发器器器器进进行描述:行描述:行描述:行描述:定义中间信号定义中间信号PROCESS后跟两个敏感信号后跟两个敏感信号推断清零信号,高电平有效推断清零信号,高电平有效推断时钟信号上升沿推断时钟信号上升沿其次接受元件例化描述其次接受元件例化描述其次接受元件例化描述其次接受元件例化描述8 8 8 8位行波位行波位行波位行波计计数器数器数器数器:在结构体的说明部分利用在结构体的说明部分利用COMPONENT语句对要引用语句对要引用D触发器元件进行声明。触发器元件进行声明。利用生成语句指定生成次数利用生成语句指定生成次数时钟信号赋给计数器的最低位时钟信号赋给计数器的最低位利用利用COMPONENT_INSTANT语句,调语句,调用元件,用名称映射方式用元件,用名称映射方式