当前位置: 首页 > ai >正文

latch/ff的电路结构及setup/hold/tpd、clkWidht/recovery/remove

1.与非门latch结构

1.1基本latch

用verilog描述如下:这个代码应该是可综合的,但是需要其他逻辑保证 s | r !=0

always @(*) beginif (s=0)q = 1;if (r=0)q = 0;
end
//s | r == 0是非法状态

修改一下代码如下:

always @(*) beginif (s=0)q = 1;else if (r=0)q = 0;
end

这种是代码中常用的组合逻辑没有else分支,电路如下:

1.2带clk/En的latch

有时也叫做电平触发的flip-flop

1.3 D-latch

带clk的SR电平触发器的一个变种是D latch,而D latch是icg中常用的latch,代码及结构如下:

如上图右图
always @(*) beginif (clk=0)En_latch = En & TE;
end

2.主从触发器flip-flop 

单latch会在clk有效期间 Q输出一直随D(SR)翻转,如果需要在一个CLK周期内,Q输出只变化一次就可以采用两个latch级联,主触发器在CLK=1是锁存输入,从触发器在CLK=0时,将主触发器的输出capture,并输出。

2.1 脉冲触发器

2.1.1 主从SR触发器

下图给出的是clk下降沿脉冲SR触发器

凡是SR latch/flip-flop总要求S和R不能同时有效,否则会出现不定态。解决办法有两种,JK接法和D-FF接法

另外主触发器在CLK==1期间输出Qm会一直随S/R变化,从触发器只会capture clk下降沿到来前Qm的状态。所以S/R的输入要被从触发器capture,就需要SR的最后变化在经过G7/8和G5/G6的传输延迟到达G3、G4的clk'上升沿(clk的下降沿)时已经稳定,而这个SR在主触发器的传输延迟就是setup的根源,后续会详细介绍。

如果S&R!=1,则Q/Q'的输出只与clk下降沿前一刻的SR状态有关。

2.1.2 主从JK触发器

 由于Q和Q'的反馈,即使J&K==1,G7和G8输出不会同时为0。所以不会出现不定态。但是

J&K == 1时 下一拍clk下降沿到来,输出Q会取反。也就是J&K==1时,Q在不停的翻转,在很多场景下并不好用。

另外由于Q和Q'的反馈,当Q==0时,J=0,K=1并不起作用,此时Q输出不变;当Q==1时,J=1,K=0也不起作用,此时Q输出不变。换句话说,最终输出的Q和Q'并不只是和clk下降沿前的J和K的输入有关,是和整个CLK==1的高脉冲期间的整个J和K以及Q和Q'的状态有关。

2.2 DFF(边沿触发器)

为了提高可靠性,增强抗干扰能力,希望触发器的次态仅取决于CLK的下降沿(或上升沿) 到来时的输入信号状态,与在此前、此后输入的状态没有关系,我们可以采用两级D-latch级联的方式构成DFF。当然DFF也是分为主从触发器的。

2.2.1 主从D触发器

上面两种电路都是D触发器的电路图。

相比SR触发器,DFF没有输入约束,且没有保持状态

相比JK触发器,DFF的输出只与变化沿前的D(满足setup的D输入)有关

2.2.2 维持阻塞DFF

2.2.3 3个latch构成的DFF

3.latch/FF/边沿/脉冲

3.1 latch/FF

对于latch和flip-flop的区分,目前有些混乱,有的以是否有CLK信号为区分,有的以使能期间输入输出是否透明来区分("透明"表示使能期间输入变化会直接反映到输出)

按照是否有时钟信号来区分,带clk的latch被称作电平触发的触发器,而带en的latch就不叫触发器

D-latch又被称为电平触发的D触发器

用透明性来区分,电平触发器在CLK==1(0)期间,输入直接反应到输出,应该叫做latch

JK触发器也不是完全不透明的。

所以不要纠结这个划分。我更倾向于把具有主从结构或边沿触发特性的叫做触发器。

3.2脉冲/边沿触发

边沿触发的定义比较清晰,触发器的次态仅取决于CLK的下降沿(或上升沿) 到来时的输入信号状态【不包含当前状态Q】,与在此前、此后输入的状态没有关系。

脉冲触发的脉冲指的并不是边沿脉冲,而是CLK==1/0的脉冲电平期间。脉冲触发在CLK有效期间的输入和当前输出状态都可以影响输出次态。

DFF显然是边沿触发

SR触发器因为存在同时为0的保持状态和同时为1的不定态,所以不能认为是边沿触发。

JK触发器因为反馈的存在,输出还和当前状态Q有关,所以不能认为是边沿触发

另外无论DFF还是SR/JK触发器,它们的主触发器在clk有效电平都会发生多次改变,这个和FF是边沿触发还是脉冲触发没关系。

DFF的保持和SR触发器的保持不一样,DFF要完成保持功能 是通过把DFF的Q返回给D,然后用有个mux信号选择输入信号d还是Q给port D

4.从FF电路分析setup/hold/Tpd/clkWidth/recovery/removel

4.1 setup/hold/Tpd/clkWidth的来源

以上升沿有效维持-阻塞DFF为例:

T_setup:时钟信号在门G3,G4输入端,激励信号D经过G2加在G4输入端,经过G2,G1加在G3输入端→激励信号至少比CP信号提前2个门电路延时才保证CP脉冲到来时稳定(建立时间需要>=2个门电路延时时间)

T_hold:CP脉冲到来后,G3,G4输出在一个门电路延时后改变,其输出将反馈至G1,G2维持后,激励信号可撤消(保持时间至少1个门电路延时时间);

T_pd:G3,G4输出在一个门电路延时后送到G5,G6输入,经1个门延时后输出(传输延时需要>=2个门电路延时时间)

CLK_width:保证G3~G6组成的同步RS触发器稳定翻转,CP高电平维持时间>=触发器传输延时(2个门电路延时);在CP=0期间,必须等激励输入稳定才可进行下一次触发(>=触发器建立时间)。综上,CP脉冲周期>=4个门电路延时

以上升沿触发主从DFF为例:

1.要保证主触发器的Q端稳定输出,要求G1/2输出至少保持一个G3/4延迟,才能建立正反馈

2.要保证主触发器的Q端稳定输出不晚于从触发器的G5/6clk上升沿到达时刻t0

设D在t1,t2之间保持不变,CLK在t3时刻低电平跳变到高电平,t4为G3/4稳定时刻则:

t1+G9

t3+G11

T_setup:D端要保证在CLK上升沿之前,被G1、G2稳定采样,需要G9+G2的延迟

T_hold:由于要G3/4稳定输出,需要保证G1/2的输入至少保持G3/G4的延迟时间,那么CLK下降沿到来之后,且此时G1/2的() 

http://www.xdnf.cn/news/13420.html

相关文章:

  • Dexcap复现代码运行逻辑全流程(二)——realsense T265测试使用
  • 【学习笔记】RTSP-Ovnif-GB28181
  • vtk 对stl文件进行降采样
  • 鹰盾播放器AI识别字幕技术栈解析:从视频帧处理到语义理解的全流程实现
  • 工作总结及记录
  • vim的相关命令 + 三种模式(10)
  • Java异步编程难题
  • 保险丝的作用、基本参数和选型
  • vite原理
  • 智慧航空 | 飞机引擎设备拆解可视化
  • pysnmp模块中 GET、SET、WALK操作详细分步解析
  • 【Java】【力扣】121.买卖股票的最佳时机
  • 分布式I/O在食品包装行业中的应用
  • 239. 滑动窗口的最大值
  • [服务器] Amazon Lightsail SSH连接黑屏的常见原因及解决方案
  • 使用Kubectl命令操作集群
  • AIStor 的模型上下文协议 (MCP) 服务器: 工作原理
  • TiDB 上线步骤是怎么样?怎么做到数据不丢失?怎么保证可靠性?
  • 网络安全之防病毒系统
  • Linux文件回收机制:安全删除文件不怕误删
  • 查看 Ubuntu 系统信息
  • 国债与企业债:稳健与高收益的债券选择
  • JSON 是什么?核心概念与语法解析
  • JavaScript解密里的ChaCha20 加密算法全解
  • MCP使用
  • Java多线程实现之线程池详解
  • 如何彻底删除Neo4j中的所有数据:完整指南
  • 数组——数组的遍历
  • 佰力博科技与您探讨铁电材料电滞回线测量法
  • SpringBoot使用oshi获取服务器相关信息