| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> 硅芯思见:Timing Borrow深入浅出 -> 正文阅读 |
|
[嵌入式]硅芯思见:Timing Borrow深入浅出 |
硅芯思见 更多内容↑↑↑↑↑↑↑↑↑↑,其中更新更多内容! 本文纯属学习之用,欢迎指正文中不足,封面图片若有侵权,请及时沟通! Timing Borrow技术又称为cycle stealing技术,其原理主要是利用latch的电平敏感特性,通过有效电平获取数据再通过无效电平保持被锁存的数据,主要用于解决路径时序不满足电路要求的情况. 本文为描述方便使用的latch为高电平有效,latch的使能信号为clk,在clk为高电平时输入被传输到输出,其中clk变为有效的边沿称为opening edge,clk变为无效的边沿称为closing edge.根据数据到达latch输入端的先后可分为三种情况: 1> 数据先于使能信号有效前; 2> 数据在使能信号有效和失效之间到达; 3> 数据在使能信号无效时到达; 当latch的输入数据在clk有效沿前到达时,此时latch的行为类似于触发器,即也有setup和hold约束要求,在clk有效后,输入数据会立刻传输至latch输出端; 当latch的输入数据在clk有效沿和失效沿之间到达latch时,输入数据立即更新至输出端,此时clk有效沿至数据到达latch输入端的时间即为该数据的timing borrow,而数据到达latch输入端到clk无效后的时间即为后级电路的可用时间; 当latch的输入数据在clk失效后到达latch时,latch输出端将不受本次输入影响,将继续保持前次锁存的数据; 【示例一】三级锁存器 ?在G1的上升沿之后,数据从L1传输到L2,当数据在G2L2上升沿之前到达L2,此时数据要满足L2的setup要求,数据在G2L2上升沿之后立即更新至输出端,其工作类似于一级触发器,此时数据要传输至后级latch(L3)需要满足的时间应该为setup_2a;当数据在G2L2上升沿之后到达L2,此时数据从L1传输至L2的时间为setup1和部分G2L2有效时间(Borrowed time即借用的L2有效电平的时间),而此时剩余的G2L2有效时间部分为留给数据再从L2传输至L3(Available time),即数据从L1传输至L2用时越多,那么留下给数据从L2传输至L3的时间就越少,因为数据是在L2为有效电平期间传输穿过,所以数据传输至L3的耗时为setup_2b,此时数据传输不需要满足L2的setup要求,下图为上述描述的时序关系;当数据从L1传输至L2时,在L2有效电平之后到达时,L2此时处于关闭状态,数据将不会被L2锁存,也不会传输至L3,该数据将被丢弃. ?【示例二】 数据在FF0成功缓存后,经过path1?Delay到达L1的D端,此时当数据在Opening Edge之前到达L1,此时数据仅需要满足L1的setup等时序要求即可立即更新至L1的Q端;当FF0发送至L1的D端的数据在Opening Edge和Closing Edge之间到达L1时,此时因为L1处于全开状态,D端数据会立即更新至L1的Q端,并且可以在L1处于无效状态时保持Q端为在L1全开时传输的数据,此时留给FF1的时间就为path2 Delay.这里如果L1为一个触发器,那么因为path1 Delay发生在L1有效沿之后,时序将很为紧张并且极易出现时序违例,因此此例中通过L1可以解决路径的延迟较大的问题.下图为上述描述的时序关系: ? ?【总结】 综上所述,使用Timing Borrow技术主要是利用latch为电平触发,在有效电平阶段为"全透明(transparent)",只要数据在有效电平的这个区间内完成传输即可,因此示例中的Timing Borrow的最大借用时间应该为半个时钟周期.同时通过Timing Borrow可以加速设计,当路径延迟较大时,可以通过借用latch的部分时间实现数据的锁存从而可以提高设计运行的速度(没有latch,设计如果时钟频率,那么后续的触发器不一定能够采样到有效的数据),同时采用Timing Borrow还能保证功能的正确性.目前设计中一般不采用latch主要是因为latch时序分析和测试比较复杂而已.这里需要注意的是,在使用该技术是一定要注意前级电路借用时间与后级电路剩余时间之间的关系. |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 20:34:41- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |