0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

数字电路设计中什么时候需要分析竞争与冒险

lp7u_bia ? 来源:珠海芯思科技 ? 作者:珠海芯思科技 ? 2021-08-09 14:43 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1. 前言

数字电路课程中,老师在讲组合逻辑的时候,一般都会讲竞争与冒险。sky当时也听的云里雾里,没有想清楚如下问题:

1) 竞争与冒险究竟是什么东西?有啥物理现象?

2) 在数字电路设计中,什么时候需要关心(分析)竞争与冒险?

3) 如何避免竞争与冒险导致的问题呢?

经过多年实际工作的实践与理解,在此文略作分析。

2. 竞争与冒险的产生

在数字电路中,调用一个AND gate,用verilog可以如下描述:

assign out = in0 & in1;

其综合后对应的电路与波形如下:

4b170f80-f878-11eb-9bcf-12bb97331649.png

如果in0/in1分别有1--》0/0--》1的变化,如果同时满足如下两个条件:

1) in0/in1同时变化;

2) 从in0/in1的driver到AND gate的delay绝对匹配;

则,AND gate的输出端不会有毛刺,一直稳定的输出logic 0。

但是在实际电路中,经过place & route后,如上两个条件基本不能满足。抽象简化后,实际电路和波形如下:

4b25cd90-f878-11eb-9bcf-12bb97331649.png

可以看到,由于in0/in1到AND gate输入pin上delay的不匹配,导致AND的输出out出现一个logic 1的小脉冲,一般也叫毛刺(glitch)。

对于一个简单的AND gate,就会产生毛刺;那么对于一个更复杂的电路,比如:加法器,乘法器,glitch更是起起伏伏,直到一定的时间后,才会输出稳定的值。

这就是信号的竞争与冒险:逻辑上(真值表)输入的变化本来不会导致组合逻辑输出的变化;但是因为在输入逻辑gate的PIN上,输入信号变化时间上的差异,导致组合逻辑的输出端产生一些不必要的0--》1/1--》0变化,出现glitch。

3. 竞争与冒险分析

A. 对于同步电路(比如DFF的clk是同一个信号),我们需要分析(关心)竞争与冒险吗?

答案是不需要。

在实际同步数字电路中,组合逻辑通常伴随时序逻辑(DFF等),其结构如下图:

4b3b4864-f878-11eb-9bcf-12bb97331649.png

因为在同步电路中,我们会做STA时序分析,计算每条path的delay(如上图绿色线)。AND gate在各条path的最大delay后,out PIN上的信号是稳定不变的。再分析后级DFF是否满足setup/hold timing需求,则后级DFF一定采样到out PIN上稳定的输出值,而非中间的glitch。

也就是说:在同步电路中,我们利用STA分析,已经把out PIN产生glitch的期间给滤除(mask)掉了;只要后级DFF的setup/hold timing分析pass,则后级DFF肯定采样到正确的逻辑计算值,不会采样到毛刺。

B. 对于异步电路(比如DFF的clk不是同一个信号),我们需要分析(关心)竞争与冒险吗?

答案是需要。

在实际异步数字电路中,组合逻辑也通常伴随时序逻辑(DFF等),其结构如下图:

4b48645e-f878-11eb-9bcf-12bb97331649.png

在异步电路中,我们在做STA时序分析,会有困难。虽然我们仍然能准确计算每条path的delay(如上图绿色线),但是我们无法预知clk0/clk1的相位(phase)关系,导致无法分析后级DFF的setup/hold time,即:我准确计算out PIN在glitch产生期间是否会有clk1的上升沿。在工程实践中,一般是设置:set_flase_path -from clk0 -to clk1。这样,后级DFF(图中橙色DFF)可能会采样到毛刺。

这时,我们就得关心glitch了,即竞争与冒险。

不是说了不能计算了吗?那怎么“关心”呢?

既然不能计算,就从电路结构上解决问题:

通过增加一个clk0 domain的DFF,让clk0--》clk1的数据交互是DFF输出,是不是就肯定不会有glitch啦 ^_^。“out_reg”PIN是DFF输出,不会有glitch的。

啊,讲到这儿,是否突然明白,老师讲:跨时钟域时,信号一定要DFF的Q端直接输出。

C. 还有哪儿需要分析(关心)竞争与冒险吗?

当然是有的。

比如:chip IO上的异步信号。比如IIC接口的SCL/SDA。这2信号在chip输出时,是不是应该(必须)用DFF输出呢?不能搞组合逻辑输出,否则接收方chip可能看到SCL上的glitch,导致功能错误。

4. 总结

综上:

1) 在同步电路中,我们并不关心竞争与冒险,因为有STA做保障;

2) 在异步电路中,我们关心竞争与冒险(从电路结构解决问题),因为没有STA做保障;

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 同步电路
    +关注

    关注

    1

    文章

    60

    浏览量

    13565
  • STA
    STA
    +关注

    关注

    0

    文章

    52

    浏览量

    19339
  • SCL
    SCL
    +关注

    关注

    1

    文章

    243

    浏览量

    17579

原文标题:数字IC/FPGA设计基础_竞争与冒险

文章出处:【微信号:bianpinquan,微信公众号:变频圈】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    模拟示波器在电路设计与调试的应用

    电路的性能。例如,在高速数字电路设计,模拟示波器能帮助工程师捕捉到那些瞬间变化的信号,通过调整电路参数确保数据的准确传输。 波形观测与分析
    发表于 03-31 14:07

    数字电路—24、计数器

    数字电路,能够记忆输入脉冲个数的电路称为计数器
    发表于 03-26 15:13

    集成电路设计静态时序分析介绍

    Analysis,STA)是集成电路设计的一项关键技术,它通过分析电路的时序关系来验证电路
    的头像 发表于 02-19 09:46 ?667次阅读

    数字电路设计:前端与后端的差异解析

    本文介绍了数字电路设计“前端”和“后端”的区别。 数字电路设计“前端”和“后端”整个过程可类比盖一栋大楼:前端好比建筑师在图纸上进行功能和布局的抽象设计,后端则是工程队把图纸变成实
    的头像 发表于 02-12 10:09 ?631次阅读

    数字电路有哪些特点和作用

    上均呈现离散状态,仅用有限个离散值来表示信息,其中以二进制的 0 和 1 最为常见。这种离散特性为数字电路带来诸多优势。一方面,它极大地简化了信息的处理过程。相较于模拟信号那种连续变化、需要精确跟踪每一个细微幅度变化
    的头像 发表于 02-04 17:17 ?985次阅读

    数字电路在嵌入式系统的应用

    随着科技的迅猛发展,嵌入式系统已经成为现代电子产品不可或缺的一部分。从简单的家用电器到复杂的工业控制系统,嵌入式系统无处不在。数字电路作为嵌入式系统的核心组成部分,其设计和应用直接影响着系统的性能
    的头像 发表于 01-24 09:41 ?695次阅读

    数字电路编程语言介绍

    文本形式描述电路的行为和结构。 并行性和并发性 :数字电路编程语言支持并行和并发操作的描述,这是数字电路设计的基本特性。 模块化 :这些语言支持模块化设计,允许设计师将复杂的
    的头像 发表于 01-24 09:39 ?839次阅读

    数字电路与模拟电路的区别

    可以是电压、电流或任何其他物理量,它们随时间连续变化。模拟电路的信号通常不进行量化,这意味着它们可以取任意值。模拟电路的例子包括放大器、滤波器和振荡器等。 1.2 数字电路 与模拟
    的头像 发表于 01-24 09:36 ?1426次阅读

    模拟电路数字电路的区别

    在现代电子技术,模拟电路数字电路是两种截然不同的电路类型,它们各自有着独特的特点和应用场景。 一、信号处理方式 模拟电路: 模拟
    的头像 发表于 01-24 09:22 ?1097次阅读

    卡诺图在数字电路的应用

    卡诺图(Karnaugh map,简称K-map)在数字电路具有广泛的应用,它主要用于布尔代数表达式的简化和最小化,从而优化数字电路的设计。以下是卡诺图在数字电路
    的头像 发表于 01-14 17:08 ?1497次阅读

    BJT在数字电路的应用

    数字电路设计,BJT因其独特的电气特性和成本效益而被广泛使用。BJT可以作为开关使用,控制电流的流动,从而实现逻辑功能。 1. BJT作为开关 在数字电路,BJT最常见的应用之一
    的头像 发表于 12-31 16:34 ?1113次阅读

    如何使用 Verilog 进行数字电路设计

    使用Verilog进行数字电路设计是一个复杂但有序的过程,它涉及从概念设计到实现、验证和优化的多个阶段。以下是一个基本的步骤指南,帮助你理解如何使用Verilog来设计数字电路: 1. 明确设计需求
    的头像 发表于 12-17 09:47 ?1381次阅读

    逻辑异或在数字电路的作用

    逻辑异或(Exclusive OR,简称XOR)在数字电路扮演着至关重要的角色。以下是逻辑异或在数字电路的几个主要作用: 一、实现基本逻辑功能 异或门(Exclusive OR G
    的头像 发表于 11-19 09:44 ?1838次阅读

    一般运算放大器什么时候数字电压供电什么时候是模拟电压供电?

    您好,我发现在有的电路,运算放大器是数字电源,有时候又是模拟电源供电,请问一般运算放大器什么时候
    发表于 09-11 06:03

    数字电路是对什么信号进行传输的

    的逻辑电平。 在现代电子技术数字电路扮演着至关重要的角色。从计算机、智能手机到家用电器,数字电路无处不在。 数字电路的基本原理 1. 数字
    的头像 发表于 08-11 11:00 ?1552次阅读