kaomantou 发表于 2014-1-22 16:34:44

新手,关于阻塞赋值有点晕

下面这段代码,专家给解释解释
    always @(posedge Clk54 or negedge SysRst)
    begin
      if (!SysRst) begin
            ClkCnt_Q3   = 3'd1;
            Pclk_Q      = 1'b0;
            DotClkEn_Q= 1'b0;
      end else begin
            if (ClkCnt_Q3 & ClkCnt_Q3) begin
                ClkCnt_Q3 <= 3'd1;
            end else begin
                ClkCnt_Q3 <= ClkCnt_Q3 + 3'd1;
            end
            Pclk_Q <= (SysCmdValue_Q)?1'b0:ClkCnt_Q3;
            DotClkEn_Q <= ((~ClkCnt_Q3) & ClkCnt_Q3 & ClkCnt_Q3);
      end
    end
这是一个驱动液晶的程序的一部分,为啥复位时用的是阻塞赋值,而没用非阻塞赋值

caiden_chen 发表于 2014-1-23 09:19:21

这里使用阻塞、非阻塞都可以,但一般使用非阻塞

kaomantou 发表于 2014-1-23 12:44:14

caiden_chen 发表于 2014-1-23 09:19
这里使用阻塞、非阻塞都可以,但一般使用非阻塞

谢谢啦!!!

cxhy 发表于 2014-1-23 19:33:12

fpga最大的特点就是可以并行执行任务,但是有时候一些赋值语句如果并行执行的话可能会出现一些小问题。所以需要使用阻塞式赋值是语句按照语言逻辑顺序执行。避免并行执行导致的难以预知的错误。

jssd 发表于 2014-1-27 14:38:35

过程数值变量用非阻塞,信号变量就用阻塞
页: [1]
查看完整版本: 新手,关于阻塞赋值有点晕