【CDC跨时钟域信号处理】慢时钟域到快时钟域-单bit

跨时钟域信号传输,单bit,慢时钟域到快时钟域,一般使用同步器,打两拍防止亚稳态。
不可以直接将组合逻辑的输出做两级同步,需要打拍。打一拍产生亚稳态的概率还很大,两拍提高可靠性,三拍改善不大。

电路图如下:
【CDC跨时钟域信号处理】慢时钟域到快时钟域-单bit_第1张图片
verilog代码描述如下:

//clk_a是慢时钟域时钟,clk_b是快时钟域时钟,data_in为输入信号,data_out为输出信号
module slow_to_fast(
	input clk_a,
	input clk_b,
	input rst_n,
	input data_in,
	output wire data_out	
);

reg data_in_reg;
reg [1:0] data_out_reg;

//将输入data_in信号寄存
always@(posedge clk_a or negedge rst_n)begin
	if(!rst_n)
		data_in_reg <= 1'b0;
	else
		data_in_reg <= data_in;
end

//将要输出的信号寄存打拍
always@(posedge clk_b or negedge rst_n)begin
	if(!rst_n)
		data_out_reg <= 2'b0;
	else
		data_out_reg <= { data_out_reg[0] , data_in_reg } ;
end

//给输出赋值
assign data_out = data_out_reg[1];

你可能感兴趣的:(信号处理,fpga开发)