新手,关于阻塞赋值有点晕
下面这段代码,专家给解释解释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
这里使用阻塞、非阻塞都可以,但一般使用非阻塞
谢谢啦!!! fpga最大的特点就是可以并行执行任务,但是有时候一些赋值语句如果并行执行的话可能会出现一些小问题。所以需要使用阻塞式赋值是语句按照语言逻辑顺序执行。避免并行执行导致的难以预知的错误。 过程数值变量用非阻塞,信号变量就用阻塞
页:
[1]