reg型变量怎么赋值_使用阻塞赋值和非阻塞赋值建模的分频时钟

本文探讨了在Verilog中建模分频时钟时,使用非阻塞赋值可能引发的竞争冒险问题。通过示例代码,解释了非阻塞赋值在时钟路径上导致的综合前后仿真不匹配,并提出使用阻塞赋值可以避免这一问题,确保时钟路径的正确建模。建议在建模数据路径时使用非阻塞赋值,而在时钟路径上使用阻塞赋值。
摘要由CSDN通过智能技术生成

76e81505afa0c9a8b1c3fd69e77de0c5.png

我们常常能看到一个Verilog RTL Coding guideline :在建模时序逻辑的时候,使用非阻塞赋值。

但事实上,当我们遵循使用非阻塞赋值来建模分频时钟(时钟路径)时,可能会存在竞争冒险的问题。

module Non_blocking(
  input clk ,
  input rst_n,
  input data_in,
  output data_out)
  reg clk_div ,
  always@(posedgeclk or negedge rst_n) begin
    if(!rst_n) begin
      clk_div<= 0 ;
    end
    else begin
      clk_div <= ~clk_div ;   //update value  after delta
    end
  end
   
  reg data_reg ;
  always@(posedgeclk or negedge rst_n) begin
    if(!rst_n) begin
      data_reg<= 0 ;
    end
    else begin
      data_reg <= data_in ;   //update value  after delta
    end
  end
  always@(posedgeclk_div or negedge rst_n) begin
    if(!rst_n) be
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值