首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当我们在verilog中做latch时,我们使用阻塞还是非阻塞语句?

在Verilog中做latch时,我们通常使用非阻塞语句。

阻塞语句(blocking assignment)使用“=”符号,它会按照顺序执行,并且在当前语句执行完之前会阻塞后续语句的执行。这意味着如果使用阻塞语句来实现latch,会导致逻辑上的错误。

非阻塞语句(non-blocking assignment)使用“<=”符号,它在同一个时间步中同时执行,并且不会阻塞后续语句的执行。这使得非阻塞语句更适合用于latch的实现,因为latch需要在时钟上升沿之后才能更新其输出。

使用非阻塞语句可以确保latch在时钟上升沿之后才更新其输出,从而避免潜在的逻辑错误和冒险现象。

以下是腾讯云相关产品和产品介绍链接地址:

  • 腾讯云云服务器(CVM):提供弹性计算能力,满足各种业务需求。产品介绍链接
  • 腾讯云云数据库MySQL版:高性能、可扩展的关系型数据库服务。产品介绍链接
  • 腾讯云对象存储(COS):安全、稳定、低成本的云端存储服务。产品介绍链接
  • 腾讯云人工智能平台(AI Lab):提供丰富的人工智能算法和模型,帮助开发者构建智能应用。产品介绍链接
  • 腾讯云物联网平台(IoT Hub):提供全面的物联网解决方案,支持海量设备接入和数据管理。产品介绍链接
  • 腾讯云移动开发平台(MTP):提供一站式移动应用开发、测试、分发和运营服务。产品介绍链接
  • 腾讯云区块链服务(TBCAS):提供安全、高效的区块链解决方案,支持多种应用场景。产品介绍链接
  • 腾讯云视频处理服务(VOD):提供视频上传、转码、剪辑、播放等功能,满足多媒体处理需求。产品介绍链接
  • 腾讯云音视频通信(TRTC):提供实时音视频通信能力,支持多种场景的实时互动。产品介绍链接
  • 腾讯云云原生应用引擎(TKE):提供容器化部署和管理的云原生应用平台。产品介绍链接

请注意,以上链接仅供参考,具体产品选择应根据实际需求进行评估和决策。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 【Verilog】深入理解阻塞和非阻塞赋值的不同

    阻塞和非阻塞赋值的语言结构是Verilog 语言中最难理解概念之一。甚至有些很有经验的Verilog 设计工程师也不能完全正确地理解:何时使用非阻塞赋值何时使用阻塞赋值才能设计出符合要求的电路。他们也不完全明白在电路结构的设计中,即可综合风格的Verilog模块的设计中,究竟为什么还要用非阻塞赋值,以及符合IEEE 标准的Verilog 仿真器究竟如何来处理非阻塞赋值的仿真。本小节的目的是尽可能地把阻塞和非阻塞赋值的含义详细地解释清楚,并明确地提出可综合的Verilog模块编程在使用赋值操作时应注意的要点,按照这些要点来编写代码就可以避免在Verilog 仿真时出现冒险和竞争的现象。我们在前面曾提到过下面两个要点:

    05

    SystemVerilog不只是用于验证(2)

    我们再从对可综合代码的支持角度看看SystemVerilog相比于Verilog的优势。针对硬件设计,SystemVerilog引入了三种进程always_ff,always_comb和always_latch。always_ff用于描述时序逻辑,对应FPGA中的触发器,其内部应使用非阻塞(<=)赋值方式,因为它模拟的正是触发器传输数据的方式。always_comb用于描述纯组合逻辑,其内部使用阻塞赋值方式,采用了隐式的全变量敏感列表。always_latch用于描述锁存器。FPGA设计中一般不建议使用锁存器。这样,三种进程对应三种场景,无论是设计者还是工具本身对电路意图都非常清晰。在Verilog中,只有always,换言之,这三种进程都能通过always实现。例如:

    02

    非阻塞赋值和阻塞赋值能出现在一个always块内吗?可以,但请慎用

    我们用了两篇文章,分别讨论了Verilog HDL里面的“非阻塞赋值”和“阻塞赋值”。用实例分析了如果在一个always块内等式右边的表达式或者变量,是另一个always块内等式左边的表达式或者变量,仿真器在同一个时间(同一个时钟的边沿)内同时执行两个等式,这就会导致竞争产生。令人难受的是,一般这种竞争问题,很难去Debug,因为有时候,我们也不太清楚仿真器是如何调度RTL代码。为了规避竞争的产生,我在文章里面推荐了4中编码方式,如果能够认真体会的话,应该可以规避大量的竞争。而深刻理解“非阻塞赋值”,则能够更好的描述时序逻辑电路。

    07
    领券