触发器
第四章 触发器

CP Q
SD
Q
RD
RD S R
干扰信号
1S C1 1R S CP R
Q
跳变
4-2-3. 主从触发器
主从RS RS触发器 一 . 主从RS触发器 1.电路结构
由两级同步RS触发器串联 由两级同步RS触发器串联 RS 组成。 组成。 G1~G4组成从触发器, 组成从触发器,
Q' Q' & G6 1 G9 从 触 发 器 Q Q
G1 &
&
G2
G3 &
&
G4
CP'
组成主触发器。 G5~G8组成主触发器。
CP 与CP’互补,使两个触 互补, 互补
发器工作在两个不同的时 区内。 区内。
主 G5 & 触 发 器 G7 &
&
G8
R
CP
S
主从触发器的触发翻转分为两个节拍: 主从触发器的触发翻转分为两个节拍:
2.工作原理
01
从 触 发 器 Q Q0 1 G2
CP'
0 Q'
主 G5 & 触 1 发 器 G7 & &
1' Q 1
&
0
S
G9
功能表
R Qn 0 1 0 1 0 1 0 1 Qn+1 0 1 0 0 1 1 × × 功能 保持 置0 0 0 0 0 0 1 0 1 1 1 0 0
G6 1
0
G8
置1
0
R CP
1
S
1
1 1 1 1
不定
CP
G7、 G3、 G7、G8 G3、G4 封 锁
《电工电子技术》课件——触发器

01
02
TTL 维持阻塞 D 触发器(通 常上升沿触发)
TTL 边沿 JK 触发器(通常 下降沿触发)
03
CMOS 边沿 D 触发器和边沿 JK 触发器(通 常上升沿触发)
(二) 边沿 JK 触发器
CP 触发的边沿 JK 触发器 具有异步端的边沿 JK 触发器
可知,边沿 JK 触发器的特性方程:Q n1 JQ n KQ n
特性表:触发器次态与输入信号和电路原有状态之间关系。
次态:触发器在输 入信号变化后的状 态,用 Qn+1 表示。
现态:触发器在输 入信号变化前的状 态,用 Qn 表示。
RD SD Qn Qn+1 000×
001×
说明 状态不定
010 0
011 0
置0
100 1
101 1
置1
110 0 1 1 1 1 保持原状态不变
边沿触发器小结:
4. 边沿触发器的逻辑功能和特性方程与同步触发器 的相同,但由于触发方式不一样,因此,它们的逻 辑功能和特性方程成立的时间不同。边沿触发器的 逻辑功能和特性方程只在时钟的上升沿(或下降沿) 成立。
Qn+1 0
1 0 ××
1
0 0 × × 不定态
1 1 0×
Qn
1 1 1×
Qn
11↑0
0
11↑1
1
可得, D 触发器的特性方程:Qn+1=D
说明 异步置 0 异步置 1 禁用
保持
CP 时 Qn+1 = D
例:设触发器初态为 0 ,试对应输入波形画出 Q1、Q2 的波形。
D
1D
CP
C1
(a)
S
CP
数字电子技术基础-第四章-触发器

SD——直接置1端,低电平有效。
G2
G1 & Q3 & G3
& Q4 G4 &
Q
Q
L2
CP Q5 & G5 Q6 G6 &
C1 R 1D ∧ S RD SD
RD和SD不受CP和D信
SD
RD
D
号的影响,具有最高的 优先级。
3.集成D触发器74HC74
2Q 2Q 1Q 1Q Vcc 2RD 2D 2CP 2SD 2Q 2Q
2.特性方程
KQn J 0 1 00 01 11 10
0 0
0 0 1 1
0 0
1 1 0 0
0 1
0 1 0 1
0 1
0 0 1 1
0 1
1 1
0 0
0 1
Qn1 JQn KQn
1 1
1 1
0 1
1 0
3.状态转换图
J=1 K=× J=0 K=× 0 J=× K=1 1 J=× K=0
CP=1时, Q2=0,则Q=1, 封锁G1和G3 使得Q2=0,维持置1 同时Q3=1,阻塞置0
Q3
R
&
Q
G6
& Q4
D
G4
置1阻塞、置0维持线
Q3=0,则Q=0, 封锁G4,使得Q4=1, 阻塞D=1进入触发器, 阻塞置1 同时保证Q3=0,维持置0
触发器的直接置0端和置1端
RD——直接置0端,低电平有效;
JK触发器→T(T ′)触发器
Qn+ 1 = TQn + TQn
令J = K = T
D触发器→JK触发器
第五章 触发器

图5.5.2 带异步置位、复位端的CMOS边沿触发器
CMOS边沿触发器的特性表
CP
D
Q
n
Q n 1
0 0
0
0 0
1
0
1 1
1 1
1
(4-33)
二、维持阻塞触发器 1、阻塞RS触发器
S
①置1 维持 线
1
0
S’
& G5 0 1
③置0 阻塞线
&
G3 L1 L2
1 0 1
& G1
Q 0 1
§5.3 电平触发的触发器
一、电路结构及工作原理
(1)CP=0,状态不变。
(2)CP=1,工作,同SR锁存器一样约束条件为:SR=0。
电平触发RS触发器的特性表
*CP回到低电平后状态不定 在使用电平触发RS触发器的过程中,有时还需要CP信号到 来之前将触发器预先置成指定的状态,为此在实用的电平触发 RS触发器电路上往往还设置有专门异步置位输入端和异步复位 输入端,如下页图:1717
1
1 0
1 0
01 10
0 1 0 1
设触发器的初始状态Q=0。
CP=0:基本RS触发器的状态通过A,A’得以保持。
CP变为高电平以后:门 B,B’ 首先解除封锁,若此时输入 为J=1,K=0,则P=0,P’=1 ,…状 态无影响。 CP下降沿到达时:门 B,B’ 首先封锁,P,P’ 的电平不会立
第五章 触发器
§5.1 概述 §5.2 SR锁存器 §5.3 电平触发的触发器
§5.4 脉冲触发的触发器
§5.5 边沿触发的触发器 §5.6 触发器的逻辑功能及其描述方法
第5章-触发器

JK 00 01 10 11
Qn+1 Qn 0 1 Qn
CP
在CP上升沿时,接受J、K 信息,Q不变化
在CP下降沿时,根据接受 到旳J、K信息,Q变化
主从型J-K触发器工作波形图举例
J K Qn+1
CP
0 0 Qn
01 0
J
10 1
1 1 Qn
K
CP
接受JK 信号
Q Q状态 转变
0
置1 清0 翻转 翻转
2、触发器功能表
CP R S Q n+1 1 0 0 Qn 1 01 1
阐明 保持 置1
1 1 0 0 清0
&
&
1 1 1 不定 防止
R
R、S
控制端
CP
S
CP: 时钟脉冲
(Clock Pulse)
0 Qn 保持
3、逻辑符号
Q
Q
R
S
R CP S
4、特征方程
Qn+1=S+RQn SR=0(约束条件)
• 主从触发器旳特点 由两个触发器构成(主触发器和从触发器) 触发方式:主从触发方式(上升沿接受,下降沿触发)
5.4.1 主从RS触发器
1、构造:两个同步RS触发器构成,主从两触发器时钟脉冲反相 2、原理:CP:主触发器输入暂存,CP:从触发器封锁,保持原 状态;时钟后沿出现后从触发器接受主触发器信号而主触发器被 封锁。 3、优点:防止空翻现象 4、缺陷:CP高电平期间受R、S变化旳影响会造成误动作
指R、S从01或10变成11时,输出端状态不变
R-S触发器真值表
Q 1
&
01 RD
Q 1
数字电路与逻辑设计第4章触发器(Flip Flop)

4.1 概述
一、触发器概念
Flip - Flop,简写为 FF, 又称双稳态触发器。
触发器是一种具有记忆功能,能存储1位二进制信息(0 或1)的逻辑电路。
有一个或多个输入,两个互反的输出(Q和Q)。 通常用Q端的状态代表触发器的状态。
二、触发器的分类
基本RS触发器(RSFF)又称SR锁存器,是触发器中最简 单的一种,也是各种其他类型触发器的基本组成部分。
一、TFF
(1)功能表
T
Qn
Qn+1
0
0
0
0
1
1
1
0
1
1
1
0
简化的功能表
(2)特征方程
Qn1 TQn TQ n T Qn
说明:(1)一般不单独生产,由其他触发器转换而得。 (2)触发方式由被转换的触发器决定。
触发器总结
触发器是具有记忆功能的的逻辑电路,每个触发器 能存储一位二进制数据。
(4)波形图
强调触发方式
结构不做要求
边沿JKFF的逻辑符号:
1J C1 1K
J CP K
(下 圆c) 降圈国沿)触标(发小符号
次态方程: 功能表:
一、TFF
三、TFF和TFF
在数字电路中,凡在CP时钟脉冲控制下,根据输入 信号T取值的不同,具有保持和翻转功能的电路,即当 T=0时能保持状态不变,T=1时,每来一个CP的上升沿 (或下降沿),触发器的状态就翻转一次。
1
(6). 波形图 又称时序图,它反映了触发器的输出状态随时间和输
入信号变化的规律。
在任何时刻,输入都能直接改变输出的状态。
2.钟控原理
触发器(基本的SR触发器、同步触发器、D触发器)

触发器(基本的SR触发器、同步触发器、D触发器)⼀、能够存储1位⼆值信号的基本单元电路统称为触发器(Filp-Flop) 触发器是构成时序逻辑电路的基本逻辑部件。
它有两个稳定状态:“0”和“1”。
在不同的输⼊情况下,它可以被置0状态或1状态,当输⼊信号消失后,所置成的状态能够保持不变。
所以触发器可以记忆1位⼆值的信号。
根据逻辑功能的不同,触发器可以分为SR触发器、D触发器、JK触发器、T和T'触发器。
按照结构形式的不同,⼜可分基本SR触发器、同步触发器、主从触发器和边沿触发器。
其状态图:a、当触发器处在0状态,即Q = 0,若S'R' = 10或11时,触发器仍为0状态。
若S'R' = 01,触发器翻转成为1状态。
b、当触发器处在1状态,即Q = 1,若S'R' = 01或11时,触发器仍为1状态。
若S'R' = 10,触发器翻转成为0状态。
约束条件是S’R’不能同时为0。
代码实现:module RS(rst_n,r,s,q,qn);input rst_n;input r;input s;output q;output qn;reg q;reg i;always @(rst_n or q)if(!rst_n)i = 0;else if(!q)i = 0;elsei = 1;always @(rst_n or r or s)if(!rst_n)q = 0;elsecase(i)0://置0if(({r,s} == 2'b01) || ({r,s} == 2'b11))q = 0;else if(({r,s} == 2'b10))q = 1;1://置1if(({r,s} == 2'b10) || ({r,s} == 2'b11))q = 1;else if(({r,s} == 2'b01))q = 0;endcaseassign qn = ~q;endmoduleView Code仿真代码:`timescale 1ns/1nsmodule RS_top;reg rst_n;reg r;reg s;wire q;wire qn;initial beginrst_n = 0;#10;rst_n = 1;beginr = 0;s = 1;#20;r = 1;s = 1;#20;r = 1;s = 0;#20;r = 1;s = 1;#20;endendRS rs1(.rst_n(rst_n),.r(r),.s(s),.q(q),.qn(qn));endmoduleView Code仿真波形:可以看到仿真结果是对的。
数字电子技术基础第五章触发器

S
(a)
(a)防抖动开关电路图
uA Q uB Q
Q
反跳
反跳
Q (b)
(b)开关反跳现象及改善后的波形图
20
5.3 同步触发器
实际工作中,触发器的工作状态不仅要由触发输入 信号决定,而且要求按照一定的节拍工作。为此,需要 增加一个时钟控制端 CP。
CP 即 Clock Pulse,它是一串 周期和脉宽一定的矩形脉冲。
具有时钟脉冲控制的触发器称为时钟触发器,
又称钟控触发器。
同步触发器是其中最简单的一种,而 基本 RS 触发器称异步触发器。
21
(一)同步 RS 触发器
1. 电路结构与工作原理 Q 基本 RS 触发器 Q
G1
S1 Q3 G3
G2
Q4 R1 G4
S
10 CP
R
增加了由时钟 CP 控制的门 G3、G4
工作原理 ★ CP = 0 ,G3、G4 被封锁。基本 RS 触发 器的输入均为 1,触发器 状态保持不变。
的作用下,状态转换的 方向。
尾端:表示现态,箭头
指向表示次态。
16
(3) 特征方程(也称为状态方程或次态方程)
RD SD Qn Qn+1
说明
0 0 0 × 触发器状态不定
0 0 1×
0 1 0 0 触发器置 0 0110
1 0 0 1 触发器置 1 1011
1 1 0 0 触发器保持原状态不变 1111
9
2. 工作原理及逻辑功能 Q 1 触发器被置 1 0 Q
G1
G2
11
0 SD
输入 RD SD 00 01 10 11
输出 QQ
01 10
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、触发器概述触发器是定义在关系表上的一类由事件驱动的特殊过程。
触发器被建立后,它作为一个数据库对象被存储。
当触发事件出现时,触发器就会自动执行。
常见的触发事件就是对数据表的插入、删除和更新操作。
触发器类似于约束,但是比约束更加灵活,可以实施比Foreign Key约束,Check约束更为复杂的检查和操作。
二、创建触发器1、格式:Create trigger 触发器名on 表名| 视图[with encryption]{for | after | instead of} [delete] [,insert] [,update]asSQL 语句2、触发器中使用的特殊表(1)inserted表:当向表中插入数据时,inserted触发器被触发执行,新的记录插入到inserted表中。
(2)deleted表:用于保存从表中删除的记录。
当触发一个delete触发器时,被删除的记录存放到deleted表中。
修改一条记录等于删除旧记录,插入新记录。
对定义了update触发器的表进行修改时,表中的旧记录移到deleted表中,修改过的记录插入到inserted表中。
【例1】在成绩表SC上创建一个触发器tr_sc,该触发器被insert操作触发。
当用户向成绩表中插入一条新记录时,判断该学号在学生表student中是否存在,如果存在,则插入成功;否则,插入失败。
/*定义after触发器*/create trigger tr_scon scafter insertasbeginif (select count(*) from student,deleted where student.sno = deleted.sno)= 0beginprint '插入记录无效'rollback tranendend/*定义instead of 触发器*/create trigger tr_scon scinstead of insertasbeginif (select count(*) from student,deleted where student.sno = deleted.sno)= 0beginprint '插入记录无效'endelsebegininsert into sc(sno,cno,grade) select * from deletedendend【例2】在学生表student上创建一个触发器tr_student,该触发器被delete操作触发。
当用户在学生表student中删除一条记录时,判断该记录的学号是否在成绩表sc中存在。
如果存在,则允许删除;否则不允许删除该生信息。
/*定义after触发器*/create trigger tr_studenton studentafter deleteasbeginif exists(select * from sc,deleted where sc.sno = deleted.sno)beginprint '无法删除记录'rollback tranendend/*定义instead of 触发器*/create trigger tr_studenton studentinstead of deleteasbegindeclare @sno char(5)if exists(select * from sc,deleted where sc.sno = deleted.sno)beginprint '无法删除记录'endelsebeginselect @sno=sno from deleteddelete from student where sno = @snoendend或:create trigger tr_studenton studentinstead of deleteasbeginif exists(select * from sc,deleted where sc.sno = deleted.sno)beginprint '无法删除记录'endelsebegindelete from studentwhere sno in(select sno from deleted)endend【例3】在学生表student上创建一个触发器tr_student2,该触发器被update操作触发。
当用户在学生表student上修改一条学生记录的学号时,同时自动更新成绩表sc中相应的学号。
create trigger tr_student2on studentafter updateasbeginupdate scset sno = (select sno from inserted)where sno = (select sno from deleted)end【例4】创建一个触发器tr_sex。
当往学生表student中插入或更新一条记录时,该触发器检查指定修改或插入的记录的性别是否只是男或者女;若不是,给出错误信息。
create trigger tr_sexon studentafter insert,updateasbegindeclare @ssex char(2)select @ssex = ssex from insertedif (@ssex<>'男' and @ssex<>'女')beginprint '性别只能是男或者女,不能是' + @ssexrollback transactionendend【例5】建立一张教师表Teacher,定义完整性规则:教授工资不得低于4000元。
如果低于4000元,自动改成4000元。
/*建表*/create table teacher(tno char(6) primary key,tname char(8) unique,pjob char(10) not null,sal numeric(7,2))Go/*下面代码使用after关键字,建立insert、update触发器*/create trigger tr_teacheron teacherafter insert,updateasbegindeclare @sal numeric(7,2)declare @pjob char(10)declare @tno char(6)select @pjob = pjob, @sal=sal, @tno=tno from insertedif (@pjob='教授' and @sal<4000)beginupdate teacherset sal = 4000where tno = @tnoendendGo/*下面代码使用instead of关键字,建立insert触发器*/create trigger tr_teacher_inserton teacherinstead of insertasbegindeclare @sal numeric(7,2)declare @pjob char(10)declare @tno char(6)declare @tname char(8)select @pjob = pjob, @sal=sal, @tno=tno, @tname=tname from insertedif (@pjob='教授' and @sal<4000)beginset @sal = 4000endinsert into teacher(tno,tname,pjob,sal)values(@tno,@tname,@pjob,@sal)end/*下面代码使用instead of关键字,建立update触发器。
*/create trigger tr_teacher_updateon teacherinstead of updateasbegindeclare @sal numeric(7,2)declare @pjob char(10)declare @tno char(6)select @pjob = pjob, @sal=sal, @tno=tno from insertedif (@pjob='教授' and @sal<4000)beginset @sal = 4000endupdate teacherset sal = @salwhere tno = @tnoend/*下面代码使用游标,实现行触发器*/alter trigger tr_teacher_inserton teacherafter insert,updateasbegindeclare @sal numeric(7,2)declare @pjob char(10)declare @tno char(6)declare curMy1 cursor local for select tno,pjob,sal from inserted—定义游标open curMy1 --打开游标fetch next from curMy1 into @tno,@pjob,@sal --读取数据while @@fetch_status=0beginif (@pjob='教授' and @sal<4000)beginupdate teacherset sal = 4000where tno = @tnoendfetch next from curMy1 into @tno,@pjob,@salendclose curMy1 --关闭游标Deallocate curMy1 --删除游标end【例6】建立触发器,当教师表Teacher中的工资发生变化,自动在工资变化表sal_log 中增加一行记录。
/*建立sal_log表*/create table sal_log(tno char(6),sal numeric(7,2),username char(10),sdate datetime,constraint FK_sal_teacher foreign key (tno) references teacher(tno))/*建立insert、update触发器*/create trigger tr_teacheron teacherafter insert,updateasbegininsertinto sal_log(tno,sal,username,sdate)select tno,sal,current_user,current_timestampfrom insertedend【例7】在成绩表sc上创建一个触发器。