数据位宽转换

目录

由宽到窄的数据转换

由窄到宽的数据转换


由宽到窄的数据转换

        假设数据从模块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


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部