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

    文章

    61

    浏览量

    13781
  • STA
    STA
    +关注

    关注

    0

    文章

    52

    浏览量

    19622
  • SCL
    SCL
    +关注

    关注

    1

    文章

    244

    浏览量

    18068

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    数字电路和模拟电路的差异解析

    运行,都离不开两大基础电子电路的支撑:数字电路与模拟电路。很多人在接触电子技术时,都会产生一个疑问:数字电路和模拟电路到底有什么区别?它们各
    的头像 发表于 03-14 09:47 433次阅读
    <b class='flag-5'>数字电路</b>和模拟<b class='flag-5'>电路</b>的差异解析

    JH7110 什么时候支持 Vulkan API?

    JH7110 什么时候支持 Vulkan API? 现在很多图形应用程序后端 API 正在迁移到 vulkan 支持 vulkan 后,您还可以运行许多以前不支持的游戏 JH7110 的 GLES
    发表于 01-26 06:11

    门控时钟(Clock-gating)介绍

    门控时钟(Clock-gating):是数字电路设计中常用于低功耗设计的一种设计,数字电路的功耗可以分为动态功耗和静态功耗两部分,现在的数字集成电路基本都采用CMOS结构,静态功耗几
    发表于 01-16 06:30

    有源逻辑探头的具体应用

    及典型场景的详细拆解: 一、数字电路研发与调试 此为有源逻辑探头的核心应用场景,核心解决复杂数字系统“信号观测无干扰、多通道信号同步分析”的关键需求,为
    的头像 发表于 12-16 10:29 291次阅读
    有源逻辑探头的具体应用

    飞凌嵌入式ElfBoard-文件I/O的了解探究之竞争冒险

    和修改共享资源,这可能导致数据不一致或程序行为异常,所以需要注意在多进程环境可能发生的竞争冒险问题。竞争
    发表于 11-26 15:38

    掌握数字设计基础:迈向芯片设计的第一步

    的行为。FSM 广泛应用于通信协议、控制器、指令调度等场景,是数字电路设计的核心模型之一。 5、RTL设计方法论:从抽象到落地 现代芯片设计常用 寄存器传输级(RTL) 方法,将系统的行为抽象为寄存器之间
    发表于 10-09 21:11

    高速数字电路设计与安装技巧

    内容简介: 详细介绍印制电路板的高速化与频率特性,高速化多层印制电路板的灵活运用方法,时钟信号线的传输延迟主要原因.高速数字电路板的实际信号波形,传输延迟和歪斜失真的处理,高速缓冲器IC的种类与传输
    发表于 09-06 15:21

    在NUC505选择从内部SPI闪存模式启动时,电路设计需要注意什么呢?

    在NUC505选择从内部SPI闪存模式启动时,电路设计需要注意什么?
    发表于 08-21 08:21

    数字电路设计

    获取完整文档资料可下载附件哦!!!! 如果内容有帮助可以关注、点赞、评论支持一下哦~
    发表于 08-15 13:43

    PMOS电路设计分析

    今天分享一个PMOS的电路设计,详细了解下各个元器件在电路起到的作用。
    的头像 发表于 07-21 16:15 3544次阅读
    PMOS<b class='flag-5'>电路设计分析</b>

    最全的硬件工程师笔试试题集

    到来以后,数据保持稳定不变的时间。如果 Hold Time 不够,数据同样不能被打入触发器。 (2) 什么是竞争冒险现象?怎样判断?如何消除? 答:在组合逻辑电路,由于门
    发表于 06-26 15:34

    如何学好电路设计?(文末分享电路设计资料合集)

    学好电路设计是硬件工程师的核心能力之一,需要系统的理论学习、实践积累和持续迭代。通过以下路径,结合至少3-5个完整项目经验,高效掌握电路设计技能;一、夯实基础理论电路
    的头像 发表于 05-22 11:40 1681次阅读
    如何学好<b class='flag-5'>电路设计</b>?(文末分享<b class='flag-5'>电路设计</b>资料合集)

    实用电子电路设计(全6本)—— 数字系统设计

    。其中包括数字电路基础、布尔代数和数字电路的表示方法、基本的数字IC、数字电路的基本功能块、各种数字IC、
    发表于 05-15 15:25

    实用电子电路设计(全6本)——数字逻辑电路的ASIC设计

    由于资料内存过大,分开上传,有需要的朋友可以去主页搜索下载哦~ 本文以实现高速高可靠性的数字系统设计为目标,以完全同步式电路为基础,从技术实现的角度介绍ASIC逻辑电路设计技术。
    发表于 05-15 15:22

    将DMACB寄存器的RC位设置为1来在DMA传输结束时重新加载计数器,什么时候需要重新加载的值存储在FM3

    我尝试通过将 DMACB 寄存器的 RC 位设置为 1 来在 DMA 传输结束时重新加载计数器。 什么时候需要重新加载的值存储在 FM3 ? - 当我将 1 写入 EM 位时是否
    发表于 04-30 07:33