2025-02-23 14:31阅读: 8评论: 0推荐: 0

跨时钟域-单脉冲信号处理方法

逻辑设计中将所有同步元件(例如触发器和RAM等)使用相同时钟信号的部分称为时钟域。

退出亚稳态所需的时间被称为resolution Time(Tr)。

由于建立时间的违反,寄存器的输出电压可能是代表逻辑高、逻辑低,甚至更糟糕的是介于逻辑高和逻辑低之间的电压。

亚稳态是指触发器无法在特定时间内达到已知状态。当触发器进入亚稳状态时,您既无法预测元件的输出电压电平,也无法预测输出何时将稳定至正确的电压电平。在此稳定时间内,触发器的输出处于某个中间电压电平,或者可能振荡,并且可以级联无效的输出电平,以使触发器在信号路径的更下方。

单脉冲信号的跨时钟域处理
所谓单脉冲信号就是单bit信号,对于这类信号,有两种场景:
1、从慢时钟域到快时钟域的脉冲信号处理。
2、从快时钟域到慢时钟域的脉冲信号处理。

1、慢到快
信号从慢时钟域同步到快时钟域,在快时钟域是一定能采样到的,只不过可能会出现亚稳态的结果。处理方式是两级寄存器同步,也就是“打两拍”。

2、快到慢
同步一个单比特信号到频率较慢的时钟域,比较麻烦。因为这存在目的时钟域检测不到源时钟域脉冲的情况。

我们首先应该会想到展宽源时钟域信号,这里的展宽需要牺牲一点东西,例如展宽高电平信号就得牺牲低电平持续的时间,同理展宽低电平,就得牺牲一点高电平的时间,不过这都不是事,因为我们既然要展宽,肯定是展宽我们需要使用的电平信号。
这通常需要在每个时钟域中设置一个寄存器,从目的时钟域向源时钟域反馈一种形式,表示检测到了信号。

module fast2slow_CDC(
input wire clk1 ,
input wire clk2 ,
input wire rst ,
input wire pulse_clk1 ,
output wire pulse_syn_clk2
);
reg pulse_wide_clk2 ;
reg reg1_pulse_wide_clk2 ;
reg reg1_pulse_wide_clk1 ;
reg reg2_pulse_wide_clk1 ;
//生成脉冲展宽信号
reg pulse_wide_clk1 ;
always@(posedge clk1 or posedge rst) begin
if(rst) begin
pulse_wide_clk1 <= 1'b0 ;
end
else if(pulse_clk1) begin
pulse_wide_clk1 <= 1'b1 ;
end
else if(reg2_pulse_wide_clk1) begin
pulse_wide_clk1 <= 1'b0 ;
end
else begin
pulse_wide_clk1 <= pulse_wide_clk1 ;
end
end
//在目的时钟域内采样展宽后的信号
always@(posedge clk2 or posedge rst) begin
if(rst) begin
pulse_wide_clk2 <= 1'b0 ;
reg1_pulse_wide_clk2 <= 1'b0 ;
end
else begin
pulse_wide_clk2 <= pulse_wide_clk1 ;
reg1_pulse_wide_clk2 <= pulse_wide_clk2 ;
end
end
//在源时钟域内同步目的时钟域内的展宽信号,以生成反馈信号
always@(posedge clk1 or posedge rst) begin
if(rst) begin
reg1_pulse_wide_clk1 <= 1'b0 ;
reg2_pulse_wide_clk1 <= 1'b0 ;
end
else begin
reg1_pulse_wide_clk1 <= reg1_pulse_wide_clk2 ;
reg2_pulse_wide_clk1 <= reg1_pulse_wide_clk1 ;
end
end
assign pulse_syn_clk2 = reg1_pulse_wide_clk2;
endmodule

本文作者:大耳毛豆

本文链接:https://www.cnblogs.com/yjxmike/p/18732101

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   大耳毛豆  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 百万级群聊的设计实践
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起