除以2个时钟和相应的复位产生

时间:2015-06-15 06:26:40

标签: verilog reset clock synthesis asic

我的问题是关于使用2个时钟产生可合成的除法和verilog中的相应复位。

我们可以使用verilog

生成如下所示的2分频
module frquency_divider_by2(
  input      rst_n,
  input      clk_rx,
  output reg clk_tx
);

always @ (posedge clk_rx) begin
  if (~rst_n) begin
    clk_tx <= 1'b0;
  end
  else begin
    clk_tx <= ~clk_tx;
  end
end

endmodule

我的问题是如何使用rst_n生成相应的重置(由使用clk_tx的flops使用)

任何人都可以帮助我。

感谢您的帮助

1 个答案:

答案 0 :(得分:3)

要在clk_tx的两个正边缘之后异步应用重置和释放。等待2个正边沿使复位在一段时间内停止为低电平。

output reg rst2_n;
reg temp;

always @ (posedge clk_rx, negedge rst_n ) begin
  if (~rst_n) begin
    {rst2_n,temp} <= 2'b0;
  end
  else begin
   {rst2_n,temp} <= {temp, 1'b1};
  end
end

对于同步复位,您需要检查较快时钟的任何部分是否为低电平,在综合期间,您需要检查cdc(时钟域交叉)。

output reg rst2_n;
reg [1:0] sync_reset_n;
always @ (posedge clk_rx) begin
  sync_reset_n[1:0] <= {sync_reset_n[0], rst_n};
  rst2_n            <= &sync_reset_n ; //AND BIT reduction
end