• 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。

  • 相关阅读:
    百度JS模板引擎 baiduTemplate 1.0.6 版
    javascript 拖放效果
    二维码的生成(可设置大小)以及插件下载地址
    处理html页面元素工具类(HtmlAgilityPack.dll)的使用
    webstrom一键上传github及使用
    git bash上传代码到github
    CSS 样式书写规范+特殊符号
    Html的基本元素(Element)
    AttributeError: 'Sxgl' object has no attribute 'driver' 解决方法之一
    Linux 监控数据库资源占用
  • 原文地址:https://www.cnblogs.com/-9-8/p/4396029.html
Copyright © 2020-2023  润新知