首页 > 其他分享 >流水线设计方法学习

流水线设计方法学习

时间:2024-03-03 21:57:58浏览次数:22  
标签:逻辑 时间 学习 设计 信号 寄存器 流水线 ns 时钟

在数字设计中寄存器对输入信号有着一定的要求,主要是在两个方面上,一个是建立时间(Setup Timing),另外一个是保持时间(Hold Timing),最小建立时间是指在寄存器对信号进行采样之前信号已经提前完成变化,并保持不变;保持时间是指,寄存器在对其进行采样的时候,信号必须在这个时间内保持不变;要想寄存器成功对信号进行采样,信号在那段时间内就必须同时满足那两个条件,

图中寄存器为时钟上升沿触发,当上升沿到来后,寄存器将a端的信号进行采样后在b端进行输出,再经过逻辑组合电路到达B寄存器的c端入口,这之间信号a变成c时要经历寄存器A的反应时间,组合逻辑的延时,还有金属连线的延时,才能变成c信号供B寄存器采样。这些延时必须在下一个时钟对B寄存器进行动作之前完成,还必须预留足够的建立时间,否则寄存器B无法读取出有效的c信号,信号在每一个时钟周期内都获得正确的信号,也称作时许收敛。

在一些时钟较快、逻辑较多、面积受限的数字设计中,建立时间往往难以满足;也就是说组合逻辑的层数太多会使得输出信号c的建立时间不满足要求,在一些快速数字电路中,时钟周期短越短,供组合逻辑传播的时间就越短,在规模大,功能复杂度高的电路中,组合逻辑往往越多,在面对速度和复杂度的双重要求下,除了在制造工艺上缩短每个器件的延迟,在设计路线上一般有两个方法来满足建立时间的需求。一个是放宽对面积的要求,让后端布线工具能够在更大范围内寻找到更短的路径进行布线,从而缩短走线延迟。另外一个方面是在设计优化上,使用流水线设计(Pipeline)

假设上图中组合逻辑的延时是9ns,A寄存器的反应时间是1ns,走线延迟为0.5ns,建立时间要求为1.4ns,在一个10ns的时钟周期里,信号a变成c需要的时间是9ns+1ns+0.5ns=10.5ns,但是最长到达时间是10ns-1.4ns=8.6ns,传达时间10.5ns并不在8.6ns内,故不能满足建立时间,这可能会导致输出信号d处于亚稳态的状态。


如上图所示,在过长的组合逻辑中插入寄存器,对组合逻辑进行切割,减少上一级寄存器到下一级之间的时间,如图中A寄存器到C寄存器的时间为1+3+0.5=4.5ns(假设一个逻辑门延迟为9ns),再加上建立时间1.4ns,两个寄存器之间的信号传输只需要缩短到5.9ns,整个电路的最少时间周期就可以减少到5.9ns,随之而来的是整个电路的频率上升。

本质上来说,流水线插入,就是每过一部分组合逻辑,就把数据存入寄存器里,以避免组合逻辑反应时间太长,在时钟周期内不满足下一级寄存器的建立时间和保持时间

标签:逻辑,时间,学习,设计,信号,寄存器,流水线,ns,时钟
From: https://www.cnblogs.com/fchadventurer/p/18050807

相关文章

  • 动手学强化学习(五):时序差分算法代码
    一、单步sarsaimportmatplotlib.pyplotaspltimportnumpyasnpfromtqdmimporttqdm#tqdm是显示循环进度条的库classCliffWalkingEnv:def__init__(self,ncol,nrow):self.nrow=nrow#4self.ncol=ncol#12self.x=0#记录......
  • python接口自动化系列(02):yaml测试数据文件设计
     本系列汇总,请查看这里:https://www.cnblogs.com/uncleyong/p/18033074实现目标对测试数据进行设计,数据设计决定了后续读取数据的代码该如何实现。 关于被测试接口配套练习环境(含相关接口):https://www.cnblogs.com/uncleyong/p/17165143.html 常用数据用例数据频繁使用......
  • python接口自动化系列(01):自动化测试框架设计
     本系列汇总,请查看这里:https://www.cnblogs.com/uncleyong/p/18033074先看下最终效果(gif) 报告总览 前言之前分享了java自动化(详见:https://www.cnblogs.com/uncleyong/p/15867903.html),部分小伙伴建议分享一个python版本,安排!!!当然,通过测试招聘要求大家也可以发现,目前......
  • 找工作学习第六天
    按钮和面包屑“首页”没有左右排布,因为 button是一个行内元素,但是h3是一个块级元素,需要独占一行,所以到首页这里会自动换行,同样的块级元素还有divh1-h6,li,ui,p标签 很不自信,碰到难一点的就想和逃避,但是逃了能去干什么呢,继续去看手机?玩?等到暑假继续来后悔? flex布局,可以将元......
  • 动手学强化学习(五):时序差分算法
    第5章时序差分算法5.1简介第4章介绍的动态规划算法要求马尔可夫决策过程是已知的,即要求与智能体交互的环境是完全已知的(例如迷宫或者给定规则的网格世界)。在此条件下,智能体其实并不需要和环境真正交互来采样数据,直接用动态规划算法就可以解出最优价值或策略。这就好比对于......
  • 【学习性能分析--第二版】如何做好性能测试分析诊断调优-暨《软件性能测试、分析与调
    【推荐序】1999年,Windows98只有1800万行代码,运行环境只需要16MB内存、225MB硬盘。而目前最新的Windows10有6000万行代码,需要8GB内存、20GB硬盘才能流畅地运行。1990年,低速的CAN总线才125kb/s,高速的500kb/s吞吐的CAN总线就能满足整车通信需要,而且还有剩余。之后,CA总线升级到2.0,......
  • Java学习Day01
    开发语言汇总开发语言鼻祖,汇编语言C语言,面向过程的开发C++,是C语言的延伸,覆盖面向对象Java面向对象的开发,又叫C++--C#是Java的山寨Java发展史C语言的纯净版,无指针、内存的管理等C语言的纯净版,有如下特性:简单易用面向对象可移植性高性能分布式多线程安全性健壮......
  • Vue3学习(二十一)- 文档管理页面布局修改
    写在前面按照国际惯例,要先聊下生活,吐槽一番,今天是2月14日,也是下午听老妈说,我才知道!现在真的是对日期节日已经毫无概念可言,只知道星期几。现在已经觉得写博客也好,学习文章也罢,和写日记一样,已经融入到我的生活中,或者更确切的说,变成生活的一部分了。饭后和老妈闲聊了几句后,我发......
  • 03-PCB设计
    目录一.过孔类型二.焊盘三.丝印四.阻焊五.PCB层叠结构六.元件符号与封装七.设计流程一.过孔类型二.焊盘三.丝印四.阻焊五.PCB层叠结构六.元件符号与封装七.设计流程......
  • 动手学强化学习(五):值迭代与策略迭代代码
    一、策略迭代importcopyclassCliffWalkingEnv:"""悬崖漫步环境"""def__init__(self,ncol=12,nrow=4):self.ncol=ncol#定义网格世界的列self.nrow=nrow#定义网格世界的行#转移矩阵P[state][action]=[(p,next_state,......