微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 请教一个阻塞跟非阻塞的问题

请教一个阻塞跟非阻塞的问题

时间: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]波形在同一拍
但实际会不会是不同拍,这样设计是不是会导致严重错误?

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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top