zoukankan      html  css  js  c++  java
  • verilog中阻塞复制,非阻塞复制,顺序块,并行块之间的关系

    这几个概念是不一样的
    顺序块:顺序块中的语句是按顺序执行的,每条语句中的延迟值是与其前一条语句执行的仿真时间有关。
    并行块:并行块语句是并行执行的,它里面的每条语句中指定的延迟值都是相对于语句块开始执行的时候。
    所以顺序块和并行块的区别是,里面每条语句执行的仿真时间,而非具体的阻塞,非阻塞语句。
    阻塞赋值:在一下条语句执行前,这条赋值语句必须已经完成。
    非阻塞赋值:当非阻塞性过程赋值语句执行时,计算右侧的表达式,然后在预定时刻将右侧的值赋给的目标。最快的输出也要在当前时刻结束前的最后时刻。它计算出右侧的值后,并不阻塞,后面的语句正常运行,而真正的赋值发生在当前或者延迟结束的时刻。 不阻塞后面语句执行,在当前或者延迟结束时刻赋值是它的特点。而后面语句内部延迟,它只是说明赋值延迟时刻而已,而不关注赋值的时机。它们是不同的概念。

    下面是我写的例子,使用Synplify_pro综合:

    module test(
               d1,
               clk,
               q1,
               q2
               );
        input d1,clk;     
        output q1;
        output q2;
        reg q1,q2;
       
        always @  (posedge clk)
           begin
            q1 = d1;
            q2 = q1;
           end
    endmodule
    综合后只有一个DFF。


    module test(
               d1,
               clk,
               q1,
               q2
               );
        input d1,clk;     
        output q1;
        output q2;
        reg q1,q2;
       
        always @  (posedge clk)
           fork
            q1 = d1;
            q2 = q1;
           join
    endmodule

    综合后有两个DFF。

    module test(
               d1,
               clk,
               q1,
               q2
               );
        input d1,clk;     
        output q1;
        output q2;
        reg q1,q2;
       
        always @  (posedge clk)
           begin
            q1 <= d1;
            q2 <= q1;
           end
    endmodule
    综合后有两个DFF。

    module test(
               d1,
               clk,
               q1,
               q2
               );
        input d1,clk;     
        output q1;
        output q2;
        reg q1,q2;
       
        always @  (posedge clk)
           fork
            q1 <= d1;
            q2 <= q1;
           join
    endmodule

    综合后有两个DFF。

  • 相关阅读:
    Linux学习笔记:【004】Linux内核代码风格
    ARM寄存器介绍
    2013 HTML5中国峰会演讲:Android上的HTML5:过去,现在和将来
    Ubuntu下编译SHTOOLS
    反对网抄,没有规则可以创建目标"install" 靠谱解答
    使用MTL库求解最小二乘解
    反对抄袭 正解spring的@Autowired 不要相信网上的错误版本
    浅析GDAL库C#版本支持中文路径问题(续)
    浅析GDAL库C#版本支持中文路径问题
    GDAL库调试(包括跨语言调试)
  • 原文地址:https://www.cnblogs.com/rednodel/p/4053744.html
Copyright © 2011-2022 走看看