目錄
描述
輸入描述:
輸出描述:
參考代碼
?
描述
sig_a 是 clka(300M)時鐘域的一個單時鐘脈沖信號(高電平持續一個時鐘clka周期),請設計脈沖同步電路,將sig_a信號同步到時鐘域 clkb(100M)中,產生sig_b單時鐘脈沖信號(高電平持續一個時鐘clkb周期)輸出。請用 Verilog 代碼描述。
clka時鐘域脈沖之間的間隔很大,無需考慮脈沖間隔太小的問題。
電路的接口如下圖所示:
?
?
輸入描述:
????input ????????????????clka????,?
????input ????????????????clkb????,? ?
????input ????????????????rst_n????????,
????input????????????????sig_a????????,
輸出描述:
????output? ???????? ????sig_b
參考代碼
reg Q_sig_a;
always @(posedge clka or negedge rst_n) beginif(~rst_n) beginQ_sig_a <= 'd0;end else if(sig_a)beginQ_sig_a <= ~Q_sig_a;endelse if(~sig_a)beginQ_sig_a <= Q_sig_a;end
end
reg Q_buff0;
reg Q_buff1;
always @(posedge clkb or negedge rst_n) begin if(~rst_n) beginQ_buff0 <= 'd0;Q_buff1 <= 'd0;end else beginQ_buff0 <= Q_sig_a;Q_buff1 <= Q_buff0;end
end
reg Q_slow;
always @(posedge clkb or negedge rst_n) beginif(~rst_n) beginQ_slow <= 'd0;end else beginQ_slow <= Q_buff1;end
endassign sig_b = Q_buff1 ^ Q_slow;
?
?