触发器(基本的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 = ;
else if(!q)
i = ;
else
i = ; always @(rst_n or r or s)
if(!rst_n)
q = ;
else
case(i)
://置0
if(({r,s} == 'b01) || ({r,s} == 2'b11))
q = ;
else if(({r,s} == 'b10))
q = ; ://置1
if(({r,s} == 'b10) || ({r,s} == 2'b11))
q = ;
else if(({r,s} == 'b01))
q = ;
endcase assign qn = ~q; endmodule
仿真代码:
`timescale 1ns/1ns
module RS_top;
reg rst_n;
reg r;
reg s;
wire q;
wire qn; initial begin
rst_n = ;
#;
rst_n = ;
repeat()
begin
r = ;
s = ;
#; r = ;
s = ;
#; r = ;
s = ;
#; r = ;
s = ;
#; end
end
RS rs1(
.rst_n(rst_n),
.r(r),
.s(s),
.q(q),
.qn(qn)
); endmodule
仿真波形:
可以看到仿真结果是对的。
二、电平触发SR触发器,即同步SR触发器。在基本的SR与非门电路上在加了一个与非门电路。
代码实现:
module RS(rst_n,clk_en,r,s,q,qn);
input clk_en;
input rst_n;
input r;
input s;
output q;
output qn; reg i;
reg q;
reg qn; always @(rst_n or q)
if(!rst_n)
i = ;
else if(!q)
i = ;
else
i = ; always @(rst_n or r or s or clk_en)
if(!rst_n) begin
q = ;
qn = ;
end
else if(clk_en)//为1时,RS输入信号有效
case(i)
://置0
if(({r,s} == 'b10) || ({r,s} == 2'b11))
begin
q = ;
qn = ;
end
else if(({r,s} == 'b01))
begin
q = ;
qn = ;
end ://置1
if(({r,s} == 'b01) || ({r,s} == 2'b11))
begin
q = ;
qn = ;
end
else if(({r,s} == 'b10))
begin
q = ;
qn = ;
end
endcase
endmodule
仿真代码:
`timescale 1ns/1ns
module RS_top;
reg rst_n;
reg clk_en;
reg r;
reg s;
wire q;
wire qn; initial begin
rst_n = ;
#;
rst_n = ;
repeat()
begin
r = ;
s = ;
#; r = ;
s = ;
#; r = ;
s = ;
#; r = ;
s = ;
#; end
end
initial begin
clk_en = ;
#;
clk_en = ;
#;
clk_en = ;
#;
clk_en = ;
#;
clk_en = ;
end RS rs1(
.rst_n(rst_n),
.clk_en(clk_en),
.r(r),
.s(s),
.q(q),
.qn(qn)
); endmodule
仿真波形:在clk_en低电平时,Q处于保持状态,只有在clk_en为高时,RS输入信号才有效。
三、同步D触发器,是在同步SR触发器上演变过来的,D一端接到S,经过非门接到R:
代码实现比较简单:
if(!d) begin
q = 'b0;
qn = 'b1;
end
else begin
q = 'b1;
qn = 'b0;
end
触发器(基本的SR触发器、同步触发器、D触发器)的更多相关文章
- SQL 触发器-如何查看当前数据库中有哪些触发器
在查询分析器中运行: use 数据库名goselect * from sysobjects where xtype='TR' sysobjects 保存着数据库的对象,其中 xtype 为 TR 的记 ...
- redis作为mysql的缓存服务器(读写分离,通过mysql触发器实现数据同步)
一.redis简介Redis是一个key-value存储系统.和Memcached类似,为了保证效率,数据都是缓存在内存中.区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录 ...
- Keepass 2.x 之 同步与触发器
同步 之前用的 Keepass 1.x, 要实现工作电脑和个人电脑上的数据库文件同步,使用的是第三方的网盘同步.但有个问题就是,个人不习惯设置同步网盘开机启动,所以有时候工作电脑上的改动还没有同步上传 ...
- MySql触发器实现数据同步学习
触发器实现:(增.删.改操作事件触发数据单向同步)数据库触发器教程:https://www.cnblogs.com/phpper/p/7587031.html同步代码: DELIMITER $ DRO ...
- 锁存器 Latch v.s. 触发器 Flip-Flop
转载 http://guqian110.github.io/pages/2014/09/23/latch_versus_flip_flop.html 根据 Wiki: Flip-flop (elec ...
- 【Java EE 学习 29 上】【PL/SQL】【存储过程】【存储函数】【触发器】
一.PL/SQL简介 1.概念:PL/SQL语言是Oracle数据库专用的一种高级程序设计语言,是对标准SQL语言进行了过程化扩展的语言. 2.功能:既能够实现对数据库的操作,也能够通过过程化语言中的 ...
- 【转】mysql触发器的实战(触发器执行失败,sql会回滚吗)
1 引言Mysql的触发器和存储过程一样,都是嵌入到mysql的一段程序.触发器是mysql5新增的功能,目前线上凤巢系统.北斗系统以及哥伦布系统使用的数据库均是mysql5.0.45版本,很多程 ...
- PL/SQL之--触发器
一.简介 触发器在数据库里以独立的对象进行存储,它与存储过程和函数不同的是,存储过程与函数需要用户显示调用才执行,而触发器是由一个事件来触发运行.oracle事件指的是对数据库的表或视图进行的inse ...
- SQL Server 2005 中实现通用的异步触发器架构
在SQL Server 2005中,通过新增的Service Broker可以实现异步触发器的处理功能.本文提供一种使用Service Broker实现的通用异步触发器方法. 在本方法中,通过Serv ...
随机推荐
- JavaScript高级程序设计:第十一章
一.选择符API SelectorsAPILevel 1的核心是两个方法:querySelector()和querySelectorAll(). 1. querySelector()方法 queryS ...
- Fine Uploader 简单配置方法
由于jquery.uploadify是基于flash的jquery上传控件,客户老是说出问题,所以今天换成了一个纯js的异步上传控件. 这方面的资料很少,故此记下来分享一下. 项目地址:Fine Up ...
- http header cache-control (request和response区别)
摘要:(1)网络服务会根据 request的header中的 cache-control策略设置response的cache-control策略 1 response cache-control 和 ...
- 使用 Flex 库项目---打包swc
来源:http://help.adobe.com/zh_CN/flashbuilder/using/WSe4e4b720da9dedb5-1a92eab212e75b9d8b2-7ffe.html ...
- Ckeditor配置
配置参考文档,主要将ckeditor中的(adapters.images.lang.plugins.skins.themes.ckeditor.js.config.js.contents.css)解压 ...
- MySQL启动相关知识
使用mysqld和mysqld_safe启动的区别 直接运行mysqld程序来启动MySQL服务的方法很少见,mysqld_safe脚本[注意:mysqld_safe只是一个脚本]会在启动MySQL服 ...
- url重写步骤
url重写:在global文件中,在application_BeginRequest事件中1:获取URL string url=Request.AppRelativeCurrentExecutionF ...
- perl面向对象
来源: http://www.cnblogs.com/itech/archive/2012/08/21/2649580.html Perl面向对象 首先让我们来看看有关 Perl 面向对象编程 ...
- 巧妙使用Contains()方法查找一个数是否在某堆数中
问题:要判断用户输入的一个数,或者是程序里方法的一个参数的值,或者是一个变量的值是否在某堆数中. 简洁写法:把这堆数放在list中,使用list的Contains()方法检查list是否包含这个数,取 ...
- linux ubuntu平台下安装Scrapy
1.安装Python sudo apt-get install python2.7 python2.7-dev 2.安装pip 下载get-pip.py 选中该文件所在路径,执行下面的命令 sudo ...