首页 > 其他分享 >always_ff、always_comb、always_latch 和 always

always_ff、always_comb、always_latch 和 always

时间:2022-09-27 10:22:42浏览次数:53  
标签:逻辑 latch always 阻塞 ff comb

always 是来自 Verilog 的主要进程类型,另一个是 initial 在模拟开始时运行一次.

always_ff @(posedge clk) :
代表一个触发器(ff),该过程在时钟的每个上升沿被触发(执行).这替换了 always @(posedge clk).这是唯一应该使用非阻塞 (<=) 赋值的类型,因为它模仿了触发器传输数据的方式.

always_latch :用于表示锁存器.由于在一般的同步设计中是不允许(或至少不推荐)使用latch式设计,在一般的设计中不用它了。

always_comb:
用于组合逻辑,当您不需要锁存器时,它会替换 always @* .现在我们可以区分我们想要和不想要锁存器的设计意图.

与原始的always块一样,这三个新的东西也是无限循环过程块—即每一个仿真周期都执行,与之相对的是initial块,在一次仿真中只执行一次。

但是与原始的always块不一样的是,三个新的always块是专门针对可综合性RTL逻辑建模而定义的,而原始always块则是万金油。事实上,always_ff, always_comb, always_latch能实现的,always都能够实现。

always相关的可综合设计规则

  1. 使用always_comb进行组合逻辑建模,always_comb中使用阻塞赋值;
  2. 使用always_ff进行时序逻辑建模,always_ff中只能使用非阻塞赋值。只有非阻塞赋值才能正确描述时钟沿触发的同步逻辑行为。
  3. 同步设计中一般不允许使用latch,因此不要使用always_latch;
  4. 通用的always只用于testbench的设计;
  5. 在always_comb/always_ff/always_latch不允许使用时间和事件控制语句;
  6. 绝对不允许在同一个过程块内混合使用阻塞(=)和非阻塞(<=)两种赋值。
  7. 组合逻辑和时序逻辑尽量不要在一个过程块中描述。

 

标签:逻辑,latch,always,阻塞,ff,comb
From: https://www.cnblogs.com/VARForrest/p/16733577.html

相关文章

  • DataGridViewComboBoxCell单元格内容变化后立即引发事件
    原文(C#):(38条消息)C#DataGridView中DataGridViewComboBoxCell下拉列表选择事件_HEALER..的博客-CSDN博客_c#combobox选择事件PrivateSubDataGridView2_EditingCon......
  • Java并发编程解析 | 基于JDK源码解析Java领域中并发锁之同步器Semaphore,CyclicBarrier
    苍穹之边,浩瀚之挚,眰恦之美;悟心悟性,善始善终,惟善惟道!——朝槿《朝槿兮年说》写在开头在并发编程领域,有两大核心问题:一个是互斥,即同一时刻只允许一个线程访问共享......
  • 带有 TreeView 下拉菜单的 ComboBox
    AComboBoxwithaTreeViewDrop-DownPostedon November4,2010 That’sright,exactlywhatitsaysonthebox.Butwhydoweneedacontrollikethis?We......
  • 具有分组功能的 ComboBox 控件
    发表于2010年6月24日 Windows窗体ComboBox控件是一个出色的用户界面组件,适用于您希望向用户呈现一组离散的选项或邀请他们输入任意字符串值的情况。它不会对可用......
  • How To Bind a Combobox to a Dictionary in WPF C#
    HowToBindaComboboxtoaDictionaryinWPFC# 回答1UseaDictionary<Answer,string>(noneedforanotherclass)AnswerDisplay=newDictionary<Answer,s......
  • Verilog-Latch的产生
    避免latch的产生latch的简介latch其实就是锁存器,是一种在异步电路系统中,对输入信号电平敏感的单元,用来存储信息。锁存器在数据未锁存时,输出端的信号随输入信号变化,就像......
  • 深入理解JUC:第四章:CountDownLatch倒计时器
    理论:CountDownLatch是一个非常实用的多线程控制工具类。常用的就下面几个方法:CountDownLatch(intcount)//实例化一个倒计数器,count指定计数个数countDown()//计数......
  • CountDownLatch+ThreadPool 优化统计报表
    一、功能要求业务方要求每天发一个统计日报到用户邮箱、业务为统计每日的多项市场指标数据,因为数据表中数据量庞大,每项指标的SQL是单独的逻辑,所以要在一个接口内执行多个S......
  • always@(*)和 always_comb 有什么区别?
    1.always_comb在时间0自动执行一次,而@(*)等待直到其敏感列表中的信号发生改变时才执行。2.always_comb对函数参数和内容的变化都敏感,而always@(*)只对函数参......
  • initial 和 always什么时间开始执行?
    “initial”程序块在时间0开始执行,并在其所有可执行语句完成时结束。它只执行一次。而“always”块在模拟过程中不断执行,并且仅在仿真完成时结束。initial块没有触发点。......