目录
描述
输入描述:
输出描述:
参考代码
描述
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) begin
if(~rst_n) begin
Q_sig_a <= 'd0;
end
else if(sig_a)begin
Q_sig_a <= ~Q_sig_a;
end
else if(~sig_a)begin
Q_sig_a <= Q_sig_a;
end
end
reg Q_buff0;
reg Q_buff1;
always @(posedge clkb or negedge rst_n) begin
if(~rst_n) begin
Q_buff0 <= 'd0;
Q_buff1 <= 'd0;
end
else begin
Q_buff0 <= Q_sig_a;
Q_buff1 <= Q_buff0;
end
end
reg Q_slow;
always @(posedge clkb or negedge rst_n) begin
if(~rst_n) begin
Q_slow <= 'd0;
end
else begin
Q_slow <= Q_buff1;
end
end
assign sig_b = Q_buff1 ^ Q_slow;