请教一个阻塞跟非阻塞的问题
时间:10-02
整理:3721RD
点击:
always @(posedge rx_flag_clk or negedge rx_flag_rst_n)
begin
if(rx_flag_rst_n == 1'b0)
enable_reg = {8{1'b1}}; //initial value 8'hff, all data enable
else
enable_reg = {rx_flag_rxen, enable_reg[7:1]};
end
always @(posedge rx_flag_clk or negedge rx_flag_rst_n) //change to assign
begin
if(rx_flag_rst_n == 1'b0)
flag_cont_rxeno <= 1'b1;
else
flag_cont_rxeno <= enable_reg[0];
end
仿真出来结果flag_cont_rxeno 与enable_reg[0]波形在同一拍
但实际会不会是不同拍,这样设计是不是会导致严重错误?
begin
if(rx_flag_rst_n == 1'b0)
enable_reg = {8{1'b1}}; //initial value 8'hff, all data enable
else
enable_reg = {rx_flag_rxen, enable_reg[7:1]};
end
always @(posedge rx_flag_clk or negedge rx_flag_rst_n) //change to assign
begin
if(rx_flag_rst_n == 1'b0)
flag_cont_rxeno <= 1'b1;
else
flag_cont_rxeno <= enable_reg[0];
end
仿真出来结果flag_cont_rxeno 与enable_reg[0]波形在同一拍
但实际会不会是不同拍,这样设计是不是会导致严重错误?
It is OK in real design.
But the problem is simulation.
In simulation, you will see strange result like you said.
Usually, we want the real simulation to be same as real design.
I will suggest you to change your coding style.
2楼好强大。
好的Coding Style要求
在组合逻辑中使用阻塞赋值
在时序逻辑中使用非阻塞赋值
在同一个Always,process中不同时使用阻塞和非阻塞
第一个程序不建议使用的
第一个不好
推荐第二种style
