我的问题是关于使用2个时钟产生可合成的除法和verilog中的相应复位。
我们可以使用verilog生成如下所示的2分频
module frquency_divider_by2( …
要异步,请在两个正边缘之后应用重置和释放 clk_tx 。等待2个正边沿使复位在一段时间内停止为低电平。
clk_tx
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