跨时钟域中的多bit处理

简介: verilog 跨时钟域

两级触发器存在的问题
如果简单的按照单比特信号穿越方法各bit打两拍单独穿越,则会造成各个bit穿越时间不一致(寄存器对于每个信号的延迟时间不一样),则会造成另一个时钟域里面有一些被前一个时钟沿采到了,有些被后面的采到了,导致目的时钟域采到的值错误,造成中间态无意义的数据。
2021060522084356.png

解决多比特跨时钟域方法
如果多比特信号之间存在逻辑关联性,可以在源时钟域将信号合成一个单一的控制信号,然后进行两级寄存器同步。
下左图是错误的处理方式,右图是正确的处理方式;
2021060522084356.png

RTL 代码
module twobits_cdc (
input clka ,
input clkb ,
input rst_n,
input lden ,
input load ,
output a_lden
);

reg b_lden;
reg b_load;
reg b_lden;

reg a_lden;
reg a_d;

always@(posedge clkb or negedge rst_n) begin
if (!rst_n)

b_lden <= 0;
b_load <= 0;

else

b_lden <= lden;
b_load <= load;

end

always@(posedge clka or negedge rst_n) begin
if (!rst_n) begin

a_d     <= 0;
a_lden  <= 0;
b_lden     <= 0;

end
else begin

  b_lden     <= b_load & b_lden ;
a_d     <= b_lden;
a_lden     <= a_d;

end
end

endmodule

二、多比特信号跨时钟域的处理方法
格需码编码
通过编码的方式将多位信号转化为每次只有一位变化的信号,将“多比特”的跨时钟域变换成“单比特”进行处理。

异步FFO
异步FIFO融合了寄存器同步,格雷码编码,握手控制等处理方式,是处理跨时钟域数据传输最常用的方式。

握手处理
所谓握手,是指通信双方使用了专用控制信号进行数据收发的状态指示。这个控制信号既有发送域给接收域的,也有接收域给发送域的,有别于前面的单向控制信号检测方式。类似于DMA与外设模块的通信,会用到dma_req,dma_ack

三、格雷码转换
格雷码可以通过算法与二进制编码进行相互转换,相邻两个编码之间只有一位不同。

格雷码是一种特殊的二进制编码方式,在一定程度上优于二进制编码
可以通过算法与二进制编码进行相互转换
相邻两个编码之间只有一位不同

相关文章
|
6月前
|
传感器 数据采集 运维
常见的中断源类型详解
【4月更文挑战第4天】常见的中断源类型详解
337 3
|
6月前
更换外部晶振RT-Thread中修改频率
更换外部晶振RT-Thread中修改频率
|
2月前
|
存储
sign与unsigned的原理、数据存储与硬件的关系
【9月更文挑战第15天】在编程语言中,`signed`(有符号)和`unsigned`(无符号)类型具有不同的原理和数据存储方式。有符号类型使用补码表示法,包含符号位,能表示正数、负数和零;无符号类型仅表示非负整数,没有符号位。两者在内存占用上相同,但在存储方式、处理器指令集支持、寄存器处理及溢出处理等方面存在差异。选择合适类型并处理溢出等问题至关重要。
63 11
|
3月前
|
网络架构
|
6月前
|
Linux C++ iOS开发
NI和EttusResearchUSRP设备之间的区别
NI和EttusResearchUSRP设备之间的区别
94 2
|
6月前
|
传感器 监控 Windows
GE通用电气 IC660BBD022 16电路启用源 I/O模块
GE通用电气 IC660BBD022 16电路启用源 I/O模块
某单位分配了一个B类地址,计划将内部网络分成35个子网,将来要增加16个子网,每个子网的主机数目接近800台,可行的掩码方案是
某单位分配了一个B类地址,计划将内部网络分成35个子网,将来要增加16个子网,每个子网的主机数目接近800台,可行的掩码方案是
200 0
|
前端开发
XVS-440-10MPI-1-1AD EATON 分类系统基于总线的主要作用
XVS-440-10MPI-1-1AD EATON 分类系统基于总线的主要作用
132 0
XVS-440-10MPI-1-1AD EATON 分类系统基于总线的主要作用
|
测试技术
PCD235B101 3BHE032025R0101 用于定时和触发的附加总线线路
PCD235B101 3BHE032025R0101 用于定时和触发的附加总线线路
97 0
PCD235B101 3BHE032025R0101 用于定时和触发的附加总线线路