IC学习笔记9——多比特信号的跨时钟域处理方法之“MUX/DMUX同步器”

一、“打两拍”处理多比特信号跨时钟域的问题

在这里插入图片描述
在这里插入图片描述如上图所示adata信号从2’b00变到2‘b11,一段时间之后再变为2’b00,但是因为寄存器同步器的delay有随机性,可能是一个周期之后就同步过去了,也可能需要两个周期。
这样我们就可能在bdata1上看到一个周期的2’b01,之后也可能看到一个周期的2’b10,这两个值都是adata没有出现过的,也就是说bdata1出现了错误的值。
为了解决这个问题,我们介绍一种"MUX/DMUX同步器“来解决多比特信号的跨时钟域问题。

二、MUX/DMUX同步器

2.1 电路波形图在这里插入图片描述

如上图所示,MUX/DMUX同步器主要是用于带有数据有效标志信号的多比特数据跨时钟域问题,且多比特数据要保持一段时间
上图红色虚线框内是主要是对数据有效标志信号的处理,可以发现其实就是对单比特的数据有效标志信号在bclk时钟域打了两拍,其实就是单比特从慢速时钟域到快速时钟域的处理方式。数据有效标志信号在时钟bclk下打两拍后就同步于该打拍的时钟域了,此时同步于aclk的数据依然保持有效,将同步后的数据有效标志信号作为多路选择器的选通信号,将数据也同步于bclk时钟域中
此外,对adata_valid_rr在bclk还打了一拍主要是为了让数据有效标志信号和同步bclk的数据匹配。
在这里,需要注意的是,如果bclk的时钟速率小于aclk的时钟速率,我们只需要把上图红色虚线框内电路换成单比特从快速时钟域到慢速时钟域的处理方式即可。

2.2 代码

             module mux_synchronizer(
                                      input                adata_valid,
                                      input     [7:0]      adata,
         
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值