【问题标题】:Verilog If statement -Appears to be triggering before ConditionVerilog If 语句 - 似乎在 Condition 之前触发
【发布时间】:2020-04-01 07:13:26
【问题描述】:

根据下面的代码和波形,为什么r_D <= 8'h40w_Rx_DV == 1'b1 之前执行?在w_Rx_DV 变高之前,不应为R_D 分配任何值。

感谢任何cmets

  module main(

  input           i_Clock,
  input           i_Rx_Serial, 
  output          o_PWM
                   );

  reg              r_Load ;         
  reg [7:0]        r_D =0;
  wire             w_Rx_DV;
  wire [7:0]       w_RX_Byte;
  reg [7:0]        r_RX_Byte;        


  PWM PWM(
     .i_Clock(i_Clock),
     .i_Load(r_Load),   
     .i_D (r_D),         
     .o_PWM(o_PWM)   

  );

  rx rx(
     .i_Clock (i_Clock),
     .i_Rx_Serial (i_Rx_Serial),
     .o_Rx_DV (w_Rx_DV),
     .o_Rx_Byte (w_RX_Byte)
   );


always @ (posedge i_Clock)
  begin
    r_Load <= 0;
    if(w_Rx_DV == 1'b1) ;
      begin
        r_RX_Byte <= w_RX_Byte;
          if(r_RX_Byte ==8'h0)
            begin
                r_D <= 0;
                r_Load <= 1;
            end
          if(r_RX_Byte == 8'h3F)        
            begin
                 r_D <= 8'h40;
                 r_Load <= 1;
            end
     else
        begin
        r_Load <= 0;
        end
     end
     end


endmodule

waveform

【问题讨论】:

标签: verilog fpga ice40


【解决方案1】:

为什么 r_D

因为这里if 后面有一个分号:

if(w_Rx_DV == 1'b1) ;
                 // ^ End of if statement.

【讨论】:

    猜你喜欢
    • 2014-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多