上图是用与非门实现的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)。

最新文章

  1. 百度ueditor 实例化 Cannot set property &#39;innerHTML&#39; of null 完美解决方案
  2. 【Android】魅族Flyme OS 3摄像头无法预览的问题
  3. 5 HandlerIterator处理程序迭代器类——Live555源码阅读(一)基本组件类
  4. JavaScript POST 请求如何跨域
  5. 十大谷歌Google搜索技巧分享
  6. ssh 安装
  7. word文档左侧显示目录
  8. SQLite学习第02天:数据类型
  9. 生产环境搭建MySQL复制的教程(转)
  10. Django之上传文件
  11. 大型项目使用Automake/Autoconf完成编译配置
  12. Python3基础 list(zip()) 将两个列表打包起来
  13. 为 NativeScript 项目添加 iOS / Android 平台 API 的智能感知
  14. Socket 参数笔记
  15. Spinner之下拉多选,监听ID后显示不同Frgment页面
  16. linux shell set命令
  17. `vue-router`的`History`模式下的项目发布
  18. 20175236 2018-2019-2 《Java程序设计》第四周学习总结
  19. win10 共享 及 媒体流
  20. UPF Usage

热门文章

  1. 你会用setTimeout吗
  2. WCF、WebAPI、WCFREST、WebService 、RPC、HTTP 概念解释
  3. Android 程序结构介绍
  4. c#操作excel的一些记录
  5. java调用7zip解压压缩包
  6. node模块机制
  7. Django Rest Framework进阶一
  8. Cocos2d-x下HTTP网络通讯
  9. 网页打开速度优化——HTTP请求头及响应头
  10. Javascript作业—取字符串的第一个只出现一次的字母