数据位宽转换

目录

由宽到窄的数据转换

由窄到宽的数据转换


由宽到窄的数据转换

        假设数据从模块A传入到模块B,模块A的输出数据为32位,模块B的输入数据位宽为16位,那么如何能把数据从A传入B而不损失数据呢。可以通过时钟的分频与倍频实现。

        假设一个原时钟clk1,通过二分频,把原时钟变为时钟clk2,那么clk1的时钟频率就是clk2的两倍。在clk2的上升沿,我们读入32bit数据,在clk1的上升沿我们输出16bit数据,由于clk1的频率是clk2的两倍,每读入一次32bit数据,就会输出两次16bit数据,从而实现了数据位宽的转换。

注意代码中输出信号data_out的赋值,即在分频的慢时钟域的高位期间发送高16位,在地位期间发送低16位。

由窄到宽的数据转换

        由窄到宽的数据位宽转换原理和由宽到窄的是一样的。把频率高一点的时钟用来采样16bit数据,频率低一点的时钟用来输出32bit数据

注意由窄到宽需要两个中间变量来保存数据,clk1打拍时候,temp保存高16位,sync保存组合后的,在clk2打拍的时候将组合后的sync赋值输出。(先发送的数据为高16位,后发送的位低16位)

位宽转换的核心就在于生成一个与原时钟成比例关系的时钟,这样时钟频率的比例关系就可以和数据的位宽扯上联系。


原文链接:https://blog.csdn.net/qq_57502075/article/details/127136259

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值