分析setup/hold电气特性从D触发器内部结构角度

上图是用与非门实现的D触发器的逻辑结构图,CP是时钟信号输入端,S和R分别是置位和清零信号,低有效; D是信号输入端,Q信号输出端;

这里先说一下D触发器实现的原理:(假设S和R信号均为高,不进行置位和清零操作)
CP=0时: G3和G4关闭,Q3和Q4输出为’1’。那么G5和G6打开,Q5=D,Q6=/D。Q5,Q6
        的信号随输入信号D的改变而变化; G1和G2构成一个SR锁存器,我们知道,当
        SR锁存器的S、R的输入均为高的时候,锁存器的输出保持不变,所以Q和/Q保
        持不变.
CP从0跳变为1时: G3和G4打开,Q3=Q6=/D,Q4=Q5=D。由SR锁存器的特性,Q=Q3=D,/Q=/D;
CP=1时: 不管D怎么变化,Q3和Q4的信号都不会发生变化,所以输出也不会改变,具体原因由兴趣的可以推一下;
下面就又重复CP=0的时刻了.

从上面的分析可以知道,输入信号D是在CP=0的时刻,经过与G5和G6两个与非门的延迟Tsu之后才传输到Q5和Q6端的,然后再CP跳变为1的时候被锁存到输出端的.
我们假设Tsu=5ns,如果D输入信号在CP跳变为1之前4ns(<5ns)的时候,才发生变化,那么在CP跳变为1时,输入信号D还没有传输到Q5和Q6,SR锁存器锁存的将是D变化之前的数据。也就是说D输入信号只有在CP跳变之前>Tsu的时间里准备好,触发器才能将数据锁存到Q输出端口,也就是所说的要保证信号的建立时间.

在CP跳变为1之后,Q5和Q6的信号要经过G3和G4两个与非门的延迟(Thd)才能传递到Q3和Q4,构成SR锁存器之前的D输入的阻塞,保证在CP=1是输入数据变化不会影响锁存结果。
我们假设Thd=5ns,如果D输入信号在CP跳变为1之后5ns内发生跳变,因为此时Q3和Q4还没发生变化,均为’1’,Q5和Q6的状态将会发生跳变。在CP=1的时刻,Q3和Q4跟随Q5、Q6的改变也发生跳变,末端SR锁存器的输出Q也发生跳变,造成输出结果不对。   也就是说在CP跳变为1之后的Thd时间内,D信号不能发生变化,也就是所说的要保证信号的保持时间(Thd)。

时间: 2024-08-26 05:56:09

分析setup/hold电气特性从D触发器内部结构角度的相关文章

setup/hold 分析

分析说明:D2:目的寄存器:D1:源寄存器: edge2:下一个时钟上升沿:edge1:当前时钟上升沿:edge0:当前时钟上升沿的前一个时钟沿:如下图: 建立时间:触发器D2(数据要到达目的的地方)在时钟上升沿edge1(以edge1是当前的时钟上升沿)输入端的数据data1(data1是 edge0时D1打给D1的数据,或者说是edge0时刻D1的输出.edge0是edge1的前一个上升沿)的前一段时间t_setup要求data1 数据稳定(为什么要这样要求呢?).很明显建立时间是对D2的输

【源码分析】cocostudio场景编辑器的触发器逻辑

去看场景编辑器的差不多都可以看到有模拟器的设置(菜单栏的设置).默认是选择cocostudio安装路径中的Simulator.exe这个模拟器,看官网介绍是自己可以选择模拟器,而且公开源代码可以按需设计和编译成自己想要的模拟器,随便举个例子,比如可以支持调度器!当然这里你要去实现和触发器一样的cocostudio逻辑,嘿嘿 这里先提供一个官网的源码(cocos2.x版本):https://github.com/chukong/CocoStudioConnector 首先,说一下整体的逻辑,其实也

[转]亚稳态分析

[转]亚稳态分析 发布时间:2011-05-12 19:56:15 技术类别:CPLD/FPGA ?? 1,简介 这篇文章是我对电子设计中,亚稳态问题的一种分析和总结.文章通过对数字电路中器件的工作机制的介绍,引出亚稳态问题的发生机制.并通过对亚稳态问题发生机制的探讨,用以得到一种能够清楚地,有的放矢地解决亚稳态问题的能力.而这种能力,将会成为你作为一个工程师的价值所在.希望通过这个探讨,可以使你设计出属于自己的预防亚稳态的方法.对于常用的预防亚稳态的方法,由于网上已经有大量介绍,并且涉及到具体

触发器触发-同步电路和异步电路异处

前几天写verilog的时候遇到这个问题,以前没有注意到这个问题,真是不应该! 举例: 贴一段很简单的代码 module async(clk,rst_n,out); input clk,rst_n; output[7:0] out; reg[7:0] out; //async always @(posedge clk or negedge rst_n) begin if(!rst_n) out <= 8'h00; else out <= out + 1'b1; end //sync //alw

Linux内核--网络栈实现分析(一)--网络栈初始化

本文分析基于内核Linux Kernel 1.2.13 原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7488828 更多请看专栏,地址http://blog.csdn.net/column/details/linux-kernel-net.html 作者:闫明 以后的系列博文将深入分析Linux内核的网络栈实现原理,这里看到曹桂平博士的分析后,也决定选择Linux内核1.2.13版本进行分析. 原因如下: 1.功能和网络栈层次

Tinker 源码分析之DexDiff / DexPatch

本文已在我的公众号hongyangAndroid首发. 转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/60874334 本文出自张鸿洋的博客 在上一篇文章中,我们介绍了Android 热修复 Tinker接入及源码浅析,里面包含了热修的一些背景知识,从tinker对dex文件的处理来看,源码大体上可以分为3部分阅读: 在应用中对patch的合并与加载,已经在上篇文章中详细介绍过了Android 热修复 Tinker接入及源码

Android 热修复 Tinker 源码分析之DexDiff / DexPatch

在上一篇文章中,我们介绍了Android 热修复 Tinker接入及源码浅析,里面包含了热修的一些背景知识,从tinker对dex文件的处理来看,源码大体上可以分为3部分阅读: 在应用中对patch的合并与加载,已经在上篇文章中详细介绍过了Android 热修复 Tinker接入及源码浅析 详细的dex patch,dex diff算法 tinker gradle plugin相关知识 tinker有个非常大的亮点就是自研发了一套dex diff.patch相关算法.本篇文章主要目的就是分析该算

为何ICG容易出现setup violation?

ICG(Intergrated Clock Gating)作为low power的设计手法之一,已经在实际中得到广泛应用.它们能够在某些时候将某些clock关断从而达到降低功耗的目的.然而从时序的角度,经常会发生ICG的setup难以收敛的情况. 为什么会出现这种情况呢? 下图展示了一种简单的带ICG的clock tree结构: 一般每个ICG会控制一个或多个DFF,通过某个DFF传递过来的控制信号控制ICG的开启或者关断. 然而,在CTS(clock tree synthesis)工具或者命令

使用Android Studio分析内存问题

大家好!本人是即将毕业学生一枚,闲暇时间经常看大神们写的博客学到很多东西.最近在做毕业设计的时候遇到一些问题,然后把自己的问题和解决方法总结一下,有不对的地方希望大家多多包涵,提出批评与指导. 这篇博文主要介绍使用AndroidStudio对内存进行分析和跟踪,还有就是从源码角度解决ImageLoader引起的OOM问题. 我正在做的项目使用到了ImageLoader来加载图片,我也是第一次使用,就拿来直接用了.写完的代码运行很正常的加载图片,并没有发现什么问题.但是在测试的时候发现了问题.当多