异步D FlipFlop综合

时间:2015-10-07 17:03:34

标签: asynchronous verilog synthesis flip-flop

 module dff_async(clk,r1,r2,dout);
 input clk,r1,r2;
 output reg dout;

  always@(posedge clk or negedge r1)
  begin

    if(r2)
      dout<=1'b1;
    else
      dout<=1'b0;
  end

 endmodule

上面的代码没有合成,并且有错误:

  

合成不支持多个单边下的分配

enter image description here

根据我的解释,代码可以如上图所示合成。我无法找到问题,在合成代码时停止了什么。回复将不胜感激!

1 个答案:

答案 0 :(得分:1)

dout为低时,您需要异步重置r1

module dff_async (clk,r1,r2,dout);
    input clk,r1,r2;
    output reg dout;

    always @(posedge clk or negedge r1) begin
        if (!r1) begin
            dout <= 1'b0;
        end
        else begin
            dout <= r2;
        end
    end
endmodule

请注意,多路复用器的代码已经简化。