zoukankan      html  css  js  c++  java
  • Verilog篇(四)时序模型

    时序模型:仿真器的时间推进模型,它反映了推进仿真时间和调度事件的方式。

    1)门级时序模型:适用于分析所有的连续赋值语句,过程连续赋值语句,门级原语,用户自定义原语。

       特点:任意时刻,任意输入变化都将重新计算其输出。假设已经存在一个门级时序模型,同时该模型产生的一个事件已被调度但还未执行,如果事件的结果将导致

                一个新事件产生,仿真器会撤销对先前事件的调度,转而调度新事件。

       适用于模拟电路中的惯性延时。适用于组合逻辑建模。

       惯性延时:例如在一个与非门电路中,门延时5ns,那么任何小于这个延时值的输入变化都不会对输出产生影响。

       写法:always @(a or b)  begin  #5 sum = a + b;  end    起始时刻为T,T+5时刻再将此时刻的a+b计算赋值。(right)

               always @(a or b)  begin sum = #5 (a+b); end   起始时刻为T,T+5时刻再将T时刻a+b的值赋值给sum。

                assign #5 B = ~ A;    //B是A延时5单位后的值。更新A和B都发生在5单位后。(right)

                assign B = #5 ~ A;    //B是A延时5单位后,5单位前的值。更新A发生在刚开始,更新B发生在5单位后。

    假设Clk时钟为200ns,则 assign #800 Clk_delay = Clk; 语句执行。 Clk_delay将一直保持未初始化的值,因为Clk的周期200ns的变化会一直刷新事件,使得#800的事件一直执行不了。

    2)过程时序模型:适用于initial, always, 。

       特点:敏感表只是输入的一个子集。假设寄存器的一个更新事件已经被调度,如果再调度同一个寄存器的另一个更新事件,即使在同一时刻,前一个事件也不会被

                取消。

       适用于模拟电路中的传导延时。适用于时序逻辑建模。

       传导延时:金属线上的传输延时,D触发器中clk-to-Q延时。

       写法:always @(posedge clk or negedge rst_n)  begin

                   if(~rst_n)     A <= 0;

                   else  A <= #2B;

               end                   //B的值在延时2个单位后,将0时刻时的值赋值给A,期间B的变化不会影响A。(right)

               always @(posedge clk or negedge rst_n)  begin

                   if(~rst_n)     A <= 0;

                   else  #2 A <= B;

               end                   //B的值在延时2个单位后,将2时刻时的值赋值给A,期间B的变化不会影响A。

  • 相关阅读:
    读书笔记:Visual Studio DSL工具特定领域开发指南
    OpenTest:教你在自动化脚本中增加选择文件的支持
    MetaModelEngine:域模型定义
    WPF:从WPF Diagram Designer Part 2学习面板、缩略图、框线选择和工具箱
    2010年8月blog汇总:敏捷个人和OpenExpressApp之建模支持
    2010年7月blog汇总:OpenTest、MetaModelEngine和敏捷个人
    101与金根回顾敏捷个人:(69)《幸运的秘密》
    MetaModelEngine:模型存储的概要说明
    故事:用户凭什么跟你走
    MDSF:软件工厂(Software factory)介绍
  • 原文地址:https://www.cnblogs.com/-9-8/p/4396029.html
Copyright © 2011-2022 走看看