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

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

3天内不再提示

在时序逻辑中使用阻塞赋值会怎么样?

OpenFPGA 来源:OpenFPGA 作者:OpenFPGA 2022-09-06 09:44 次阅读

【数字实验室】在时序逻辑中使用阻塞赋值会怎么样?

cc7e627a-2d84-11ed-ba43-dac502259ad0.png

阻塞赋值的使用

如之前介绍所述,建议使用阻塞赋值来描述组合逻辑设计。但是,如果在编码时序逻辑行为时使用阻塞赋值,会发生什么?这是需要解决的最重要的问题之一,对后续讨论很重要。

如果阻塞赋值用于编码时序逻辑的行为,则可以观察到综合结果不是正确的功能设计意图。

接下来介绍使用阻塞赋值对时序电路设计进行编码的几个设计方案。

阻塞赋值和多个“Always”进程

如例6.1所述,在多个“Always” 进程中使用阻塞赋值。程序块“Always”在时钟的正边缘触发,综合器推断时序逻辑。如前所述,所有阻塞赋值都在活动队列中进行计算和更新。读者请参阅之前分享的分层事件队列一文。

如例6.1所述,这两个“Always” 进程并行执行,并以两位串行输入串行输出移位寄存器的形式生成输出。首先,always进程生成一个输出“b_in”从第一个“Always” 进程生成的输出被另一个“Always” 进程用作输入。因此,综合器将其推断为两位串行输入串行输出移位寄存器。

示例6.1的综合逻辑如图6.1所示,并具有输入“a_in”,“clk”和输出“y_out”

cc9a8400-2d84-11ed-ba43-dac502259ad0.png

例6.1在多个always块中阻塞赋值

ccae2dde-2d84-11ed-ba43-dac502259ad0.png

图6.1多个always块中阻塞赋值的综合逻辑

同一“always”进程中的阻塞赋值

如果阻塞赋值用于描述时序逻辑,并且在同一“always”程序块中使用多个分配,则预期需求可能与综合逻辑匹配,也可能与综合逻辑不匹配。原因是,在阻塞分配中,所有后续语句(下一个立即数)都被阻塞,除非直到当前语句被执行。这将导致硬件截断,并可能推断出不需要的综合输出。

考虑在示例6.2中描述的设计场景,其意图是创建三位串行输入和串行输出移位寄存器,但是在综合示例6.2之后,它推断为单个触发器。

可综合逻辑如图6.2所示,其输入为“a”、“clk”和输出为“y”。所需的功能是串行输入、串行输出移位寄存器,但上述示例由于使用阻塞赋值而推断出单个触发器。因此,建议在为时序功能编码或描述RTL时使用非阻塞赋值。

ccc009fa-2d84-11ed-ba43-dac502259ad0.png

例6.2在always”进程中的阻塞赋值

cce3f00e-2d84-11ed-ba43-dac502259ad0.png

图6.2同一always进程中阻塞赋值的综合逻辑

阻塞赋值示例

考虑在示例6.3中描述的设计场景,其意图是创建三位串行输入和串行输出移位寄存器,并且由于块“begin” 和 “end”中使用的阻塞赋值语句,它顺序生成三位串行输入串行输出移位寄存器。

综合逻辑如图6.3所示,其输入为“a”、“clk”和输出“y”。所需的功能是串行输入串行输出移位寄存器,它推断串行输入串行输出移位寄存器。因此,需要记住的重要一点是,程序“always”块中的阻塞赋值语句的顺序是综合中的决定性因素。

cd0451a0-2d84-11ed-ba43-dac502259ad0.png

例6.3同一always块中的阻塞赋值(排序)

cd147e0e-2d84-11ed-ba43-dac502259ad0.png

图6.3阻塞赋值重新排序后的可综合逻辑

非阻塞赋值

如之前介绍的“分层事件队列”一文所述,非阻塞赋值在活动事件队列中评估,并在NBA队列中更新。非阻塞赋值用于描述时序逻辑。这些指定在程序块“always”中使用,以获得所需的综合结果。所有非阻塞赋值在“always”块内并行执行。

如例6.4所述。非阻塞赋值用于多个“always”块。程序块“always”在时钟的正边沿触发,综合器推断时序逻辑。综合逻辑如图6.4所示。

cd35dfae-2d84-11ed-ba43-dac502259ad0.png

例6.4不同always块中的非阻塞赋值

cd70c4f2-2d84-11ed-ba43-dac502259ad0.png

图6.4不同always块中的非阻塞赋值的综合逻辑

非阻塞赋值示例

如果使用非阻塞赋值来描述时序逻辑,并且在同一“always”程序块中使用多个赋值,则综合器始终推断出所需的预期逻辑。原因是,在非阻塞赋值中,“begin-end”块中写入的所有语句都是“并行”执行的,这就产生了时序逻辑。

考虑示例6.5中描述的设计场景,意图是创建三位串行输入和串行输出移位寄存器,使用非阻塞赋值。

综合逻辑如图6.5所示,其输入为“a”、“clk”和输出“y”。所需的功能是串行输入串行输出移位寄存器,它推断串行输入串行输出移位寄存器。

cd954354-2d84-11ed-ba43-dac502259ad0.png

例6.5同一always块中的非阻塞赋值

cdab7ca0-2d84-11ed-ba43-dac502259ad0.png

图6.5同一always块中非阻塞赋值的综合逻辑

非阻塞赋值的排序

考虑在示例中描述的设计方案,其意图是创建三位串行输入和串行输出移位寄存器,并使用非阻塞赋值。

上一节中的实例,在本例6.6中重新排序。

综合逻辑如图6.5所示,其输入为“a”、“clk”和输出“y”。所需的功能是串行输入串行输出移位寄存器,它推断串行输入串行输出移位寄存器。所以,重要的一点是要记住,过程“always”块中非阻塞赋值语句的顺序不是推断逻辑的决定性因素。

cdbce9ea-2d84-11ed-ba43-dac502259ad0.png

例6.6在同一always块中具有顺序更改的非阻塞赋值

总结

不总结了,例子很多建议自己测试。

审核编辑 :李倩

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

    关注

    31

    文章

    5308

    浏览量

    119979
  • 电路设计
    +关注

    关注

    6664

    文章

    2426

    浏览量

    203203
  • 时序逻辑
    +关注

    关注

    0

    文章

    39

    浏览量

    9145

原文标题:【数字实验室】在时序逻辑中使用阻塞赋值会怎么样?

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

收藏 人收藏

    评论

    相关推荐

    时序逻辑电路故障分析

    时序逻辑电路的主要故障分析是一个复杂而重要的课题,它涉及电路的稳定性、可靠性以及整体性能。以下是对时序逻辑电路主要故障的全面分析,旨在帮助理解和解决这些故障。
    的头像 发表于 08-29 11:13 533次阅读

    时序逻辑电路有记忆功能吗

    时序逻辑电路确实具有记忆功能 。这一特性是时序逻辑电路与组合逻辑电路的本质区别之一。
    的头像 发表于 08-29 10:31 360次阅读

    时序逻辑电路必不可少的部分是什么

    时序逻辑电路必不可少的部分是 存储电路 ,这一结论主要基于时序逻辑电路的基本工作原理和特性。存储电路
    的头像 发表于 08-28 14:12 363次阅读

    时序逻辑电路的基本概念、组成、分类及设计方法

    时序逻辑电路是数字电路中的一种重要类型,它不仅在计算机、通信、控制等领域有着广泛的应用,而且对于理解和设计现代电子系统具有重要意义。 1. 时序逻辑电路的基本概念
    的头像 发表于 08-28 11:45 741次阅读

    时序逻辑电路的功能表示方法有哪些

    时序逻辑电路是数字电路中的一种重要类型,其特点是电路的输出不仅取决于当前的输入,还取决于电路的状态。时序逻辑电路广泛应用于计算机、通信、控制等领域。 1. 引言 在数字电路设计中,
    的头像 发表于 08-28 11:41 439次阅读

    时序逻辑电路的五种描述方法

    (State Diagram) 状态图是一种图形化的描述方法,用于表示时序逻辑电路的状态和状态之间的转换。状态图由以下元素组成: 状态(State):表示电路某一时刻的状态,通常用一个圆圈表示。 初始状态(Initial St
    的头像 发表于 08-28 11:39 717次阅读

    时序逻辑电路的描述方法有哪些

    时序逻辑电路是数字电路中的一种重要类型,它具有存储功能,能够根据输入信号和内部状态的变化来改变其输出。时序逻辑电路广泛应用于计算机、通信、控制等领域。本文将介绍
    的头像 发表于 08-28 11:37 397次阅读

    加法器是时序逻辑电路吗

    加法器不是时序逻辑电路 ,而是组合逻辑电路的一种。时序逻辑电路和组合逻辑电路的主要区别在于它们如
    的头像 发表于 08-28 11:05 409次阅读

    时序逻辑产生锁存器吗

    时序逻辑电路本身并不直接“产生”锁存器,但锁存器是时序逻辑电路中的重要组成部分。时序逻辑电路(S
    的头像 发表于 08-28 11:03 344次阅读

    时序逻辑电路包括什么器件组成

    时序逻辑电路是一种数字电路,它根据输入信号和电路内部状态的变化产生输出信号。时序逻辑电路广泛应用于计算机、通信、控制等领域。 一、时序
    的头像 发表于 07-30 15:02 567次阅读

    逻辑电路与时序逻辑电路的区别

    在数字电子学中,逻辑电路和时序逻辑电路是两种基本的电路类型。它们处理数字信号和实现数字系统时起着关键作用。逻辑电路主要用于实现基本的
    的头像 发表于 07-30 15:00 610次阅读

    什么是组合逻辑电路和时序逻辑电路?它们之间的区别是什么

    什么是组合逻辑电路和时序逻辑电路?时序逻辑电路和组合逻辑电路的区别是什么  组合
    的头像 发表于 03-26 16:12 3104次阅读

    verilog同步和异步的区别 verilog阻塞赋值和非阻塞赋值的区别

    Verilog是一种硬件描述语言,用于设计和模拟数字电路。Verilog中,同步和异步是用来描述数据传输和信号处理的两种不同方式,而阻塞赋值和非阻塞
    的头像 发表于 02-22 15:33 1526次阅读

    时序逻辑电路输出与什么有关 时序逻辑电路由哪两部分组成

    时序逻辑电路的输出与输入信号以及内部存储器状态有关。时序逻辑电路是一类特殊的数字电路,其输出信号的值不仅取决于当前的输入信号,还取决于过去的输入信号以及内部存储器的状态。
    的头像 发表于 02-06 14:30 2440次阅读

    时序逻辑电路有哪些 时序逻辑电路和组合逻辑电路区别

    时序逻辑电路是一种能够存储信息并根据时钟信号按照特定顺序执行操作的电路。它是计算机硬件中非常重要的一部分,用于实现存储器、时序控制器等功能。与之相对的是组合逻辑电路,它根据输入信号的组
    的头像 发表于 02-06 11:18 8975次阅读