锁存器、触发器、寄存器
1.锁存器(Latch)
1.1.SR锁存器(基本锁存器)
由两个或非门或者两个与非门组成,电路结构、图形符号和特性表如下所示。
此时,输出状态(次态)与输入状态、锁存器初态都有关。
1.2.电平触发SR触发器(门控SR锁存器)
当CLK=0时(无效),输出状态(次态)保持不变;只有当CLK=1时(有效),输出状态才随输入、初态的不同而改变,且与SR锁存器的特性一样。
当门控锁存器的控制信号有效时,锁存器就变成了一个组合电路,若此时输入信号发生多次变化,输出状态也可能发生多次变化,这一现象称为锁存器的空翻。此时,时序逻辑电路的模型就等效为两个各组合电路互为反馈的反馈系统,因此,系统有可能会因为瞬态特性不稳定而产生振荡现象,抗干扰能力差。
1.3.电平触发D触发器(D型锁存器)
在CLK的有效电平期间,输出状态始终随输入状态变化,输出与输入状态保持相同,所以这个电路又叫“透明的D型锁存器”。
2.触发器(flip-floph)
2.1.边沿触发D触发器
由两个D型锁存器组成,次态仅取决时钟有效边沿到达时输入的逻辑状态,且值保持不变到下次触发到达时(保持n个时钟周期)。
电路抗干扰能力强,工作可靠性更高。
3.寄存器(Register)
寄存器能够存寄一组二值代码,即由N个触发器组成。
4.基于Verilog的锁存器&触发器的分析
4.1.锁存器(Latch)的特点
(1)对毛刺敏感(使能信号有效电平时,输出状态可能随输入多次变化,产生空翻,对下一级电路很危险),不能异步复位,因此在上电后处于不确定的状态。
(2)锁存器会使静态时序分析变得非常复杂,不具备可重用性。(首先,锁存器没有时钟参与信号传递,无法做STA;其次,综合工具会将latch优化掉,造成前后仿真结果不一致)
(3)在FPGA中基本的单元是由查找表和触发器组成的,若生成锁存器反而需要更多的资源。根据锁存器的特点可以看出,在电路设计中,要对锁存器特别谨慎,如果设计经过综合后产生出和设计意图不一致的锁存器,则将导致设计错误,包括仿真和综合。因此,在设计中需要避免产生意想不到的锁存器。如果组合逻辑的语句完全不使用 always 语句块,就可以保证综合器不会综合出锁存器。
(4)但如果锁存器和触发器两者都由与非门搭建的话,锁存器耗用的逻辑资源要比D触发器少(D触发器需要12个MOS管,锁存器只需6个MOS管),锁存器的集成度更高,所以在的ASIC设计中会用到锁存器。但锁存器对毛刺敏感,无异步复位端,不能让芯片在上电时处在确定的状态;另外,锁存器会使静态时序分析变得很复杂,不利于设计的可重用。所以,在ASIC设计中,除了CPU这高速电路,或者RAM这种对面积很敏感的电路,一般不提倡用锁存器。
4.2.锁存器(Latch)的出现及解决办法
在基于always的组合逻辑描述语句中容易综合出锁存器的地方:
(1)在赋值表达式右边参与赋值的信号未在always@(敏感电平列表)中列出完整,生成透明锁存器;
(2)if语句的使用中缺少else语句;
(3)case语句没有列举出全部情况且没有default;
(4)输出变量赋值给自己。
参考二、8【FPGA】Verilog中锁存器(Latch)原理、危害及避免。
4.3.举例说明
时序电路中if...else不完整不会生出latch,而组合逻辑就会产生latch:
左上的电路是时序逻辑,生成触发器,而触发器是有使能端(enable)的,使能端无效时就可以保存数据,无需锁存器。右上的电路是组合逻辑,在enable为低电平时,输出q要保持不变,而组合逻辑没有存储元件,只能生成锁存器来保持数据。所以在时序逻辑中,不完整的 if…else… 结构并不会生成锁存器,而组合逻辑中不完整的 if…else… 结构就会生成锁存器。为了避免我们设计的组合逻辑中出现不想要的锁存器,在使用 if…else… 结构时一定要写完整。
module ex1(// input clk,input enable,data,output reg q);always @(*)// always @(posedge clk) // 方法1:将锁存器改为带使能的触发器 begin// q = 0; // 方法2:给输出变量赋初始值if(enable)q = data;// else // 方法3:补全if...else语句// q = 0;endendmodule
解决方法:
①将锁存器改为带使能的触发器(变为时序电路);
②给输出变量赋初始值;
③补全if...else语句。
4.4.感悟
①在always模块内被赋值的每一个信号都必须定义成reg型,但不一定就会生成寄存器。
②组合逻辑一般使用assign语句。
③当组合逻辑使用always模块时,@(*)或敏感信号列表需写完整,都属于电平触发。另外,if...else以及case情况(必要时加上default)需写完整,或者输出状态赋初始值。
④时序逻辑中“always @(posedge clk)”属于同步时钟,而“always @(posedge clk,negedge rst)”属于同步时钟,异步复位。
⑤“=”阻塞赋值表示组合逻辑,“<=”非阻塞赋值表示时序逻辑。
另外,可以参考FPGA 中的latch 锁存器。
锁存器、触发器、寄存器相关推荐
- 锁存器 触发器 寄存器 区别
一.锁存器 锁存器(latch)---对脉冲电平敏感,在时钟脉冲的电平作用下改变状态 锁存器是电平触发的存储单元,数据存储的动作取决于输入时钟(或者使能)信号的电平值,仅当锁存器处于使能状态时,输出才 ...
- 触发器(寄存器)与锁存器的异同
触发器(FF)当收到输入时钟脉冲时,便会根据规则改变状态,然后保持这种状态直到收到下一个触发脉冲信号到来. 寄存器(register)的存储电路通常是由触发器构成的,因为一个触发器能存储一位二进制数, ...
- FPGA之道(4)锁存器与寄存器
文章目录 概念 多位 阵列 普通移位寄存器 概念 触发器与这两个称谓之间到底有着什么样的关系呢? 事实上,在我们进行数字电路设计的时候,只需要关注于器件的功能和使用方式即可,而不需要对器件的实现原理和 ...
- 触发器、锁存器、寄存器以及它们之间的区别
一.基本概念 (1)锁存器 1. 锁存器(latch):是电平触发的存储单元,数据存储的动作(状态转换)取决于输入时钟(或者使能)信号的电平值,尽当锁存器处于使能状态时,输出才会随着数据输入发生变化. ...
- 锁存器 D触发器 寄存器区别 详细区别解释 Latch D Flipflop register
1. 锁存器 定义: 对脉冲电平敏感,在时钟脉冲的电平作用下改变状态. 优点: 面积小.锁存器比FF快,所以用在地址锁存是很合适的,不过一定要保证所有的latch信号源的质量,锁存器在CPU设计中很常 ...
- Part 1: 3.1 时序逻辑~3.2 flip flop 触发器寄存器
本次会学习如何将物理时间的时序,带入到计算机的世界中 第一,clock时钟振荡器 它是某种类型的振子,以一定的固定速率上下波动,并且每一个时钟周期,都作为一个数字整数时间单位.于是,这样就打破了物理时 ...
- Part 1: 3.2 flip flop 触发器寄存器
在3.1时序逻辑中,说道需要用一个寄存器,存储当前时间周期内的信号是1还是0,本次将讨论这个寄存器的结构 触发器可以记住上次输入,并在下次单元中输出它,弥补空缺: 逻辑:
- 【数字逻辑设计】Logisim构建锁存器/触发器
继续造轮子,嘿嘿. 1.SR锁存器 情况 S R Q Q' Ⅳ 0 0 Qprev Q'prev Ⅰ 0 1 0 1 Ⅱ 1 0 1 0 Ⅲ 1 1 0 0
- 组合逻辑电路和时序逻辑电路区别
比较项目 组合逻辑电路 时序逻辑电路(状态机)(同步) 输入输出关系 任意时刻的输出仅仅取决于该时刻的输入,与电路原来的状态无关 不仅仅取决于当前的输入信号,而且还取决于电路原来的状态,或者说,还与以 ...
- 【数电试题】西电通卓模拟卷三
-## 一,简答题 1.1.时序逻辑电路与组合逻辑电路有什么区别?试各举一例说明.可以采用什么方式来描述两类电路的功能? (10 分) [My answer] 组合逻辑电路和时序逻辑电路的区别 比 ...
最新文章
- 面向对象,面向服务(转)
- yum 错误:Invalid configuration value: failovermethod=priority
- No space left on device 解决 Cydia 安装应用错误
- Java GUI 基础知识
- 深入浅出 Java 中的包装类
- 【渝粤教育】广东开放大学 商务英语听说 形成性考核 (37)
- 基于EasyNetQ的RabbitMQ封装类
- 404页面应该怎么做?
- Atitit.antlr实现词法分析
- nuxt项目dist上传服务器,nuxt.js构建的项目,打包后如何部署到服务器?
- 不同的count用法
- 曾经大肆其道的电商返利APP,其运营策略你真的清楚吗,一文带你读懂返利APP的竞品分析
- 如何在五分钟让你的应用拥有高精度定位功能
- cocos2dx图片闪亮_SassDoc 2-闪亮的流章鱼出来了!
- css实现3D长方形,可旋转
- 四川省全国计算机考试一年可以考几次,四川网络教育统考科目没通过怎么办,一年可以考几次?...
- 服务器无限矿物指令,迷你世界刷矿物指令 | 手游网游页游攻略大全
- 渗透测试资产指纹识别工具
- 用PS将照片修改为358*441并且小于20k的符合社保要求
- 一文让你了解RFID标签芯片厂家有哪些?
热门文章
- 程序员的职业生涯个人规划(附上学习资料)
- 聊一聊Rust的结构体
- 若干个进阶SQL 进阶技巧
- 特斯拉市值蒸发6000亿!马斯克:冻结招聘,明年裁员,再找个「傻子」接管推特...
- 什么是BCD码?BCD码的用处。怎么把BCD码转换成二进制值?
- [创业-3]:创业失败的20大原因
- Json完整版介绍和工具类解析应用
- [ SharePoint ADFS 开发部署系列 (一)]
- python音频分析工具_python – 鸟鸣音频分析 – 查找两个剪辑的匹配程度
- Excel按颜色求和,计数,均值