您的位置:首页 > 财经 > 金融 > 东莞市领导班子_商标图片大全 设计图_什么是seo标题优化_口碑营销的模式

东莞市领导班子_商标图片大全 设计图_什么是seo标题优化_口碑营销的模式

2025/4/26 23:04:04 来源:https://blog.csdn.net/m0_66360845/article/details/147501118  浏览:    关键词:东莞市领导班子_商标图片大全 设计图_什么是seo标题优化_口碑营销的模式
东莞市领导班子_商标图片大全 设计图_什么是seo标题优化_口碑营销的模式

VIVADO中单精度浮点数IP核计算结果与MATLAB单精度浮点数计算结果的对比

MATLAB定点运算仿真,对比VIVADO计算的结果

目录

前言

一、VIVADO与MATLAB单精度浮点数运算结果对比

二、MATLAB定点运算仿真

总结


前言

        本文介绍了怎么在MATLAB中使用单精度浮点数进行运算,另外还将MATLAB单精度浮点数运算的结果和VIVADO浮点数IP核运算的结果作了对比,会发现二者结果是吻合的。最后还介绍了怎么在MATLAB中进行定点运算的仿真,也将其和VIVADO仿真的结果进行了对比,二者也是吻合的。


提示:创作不易,有帮助请一键三连!

一、VIVADO与MATLAB单精度浮点数运算结果对比

        首先用MATLAB产生一组测试数据,

a=randn(1);mat2str(a)

b=randn(1);mat2str(b)

aa=single(a);mat2str(aa)

num2hex(aa)

bb=single(b);mat2str(bb)

num2hex(bb)

cc=aa*bb;mat2str(cc)

num2hex(cc)

ans =
    '0.5376671395461'
ans =
    '1.83388501459509'
ans =
    '0.537667155265808'
ans =
    '3f09a48e'
ans =
    '1.8338850736618'
ans =
    '3feabcbf'
ans =
    '0.986019790172577'
ans =
    '3f7c6bcb'

MATLAB产生了两个单精度的数,并计算了这两个数的乘法,还给出了相应的4字节数据表示值。这里需要注意的是,按理来说,单精度浮点数应该只有7位小数,但是MATLAB在展示结果时依然采用的双精度浮点数,所以小数位数多于7位。包括VIVADO仿真界面也是如此

数值表示字节表示
aa0.5376671552658083f09a48e
bb1.83388507366183feabcbf
cc=aa*bb0.9860197901725773f7c6bcb

以上是MATLAB的运算结果,下面是VIVADO以单精度浮点数计算的结果

        对比可以发现,MATLAB和VIVADO计算的结果是相等的。这样我们在编写算法时就可以先用MATLAB模拟FPGA运算仿真验证算法性能了。

        一组数据有可能是偶合,再随机测试一组数据,确保真的对得上。MATLAB再运行一次,得:

ans =
    '-2.25884686100365'
ans =
    '0.862173320368121'
ans =
    '-2.25884675979614'
ans =
    'c01090f2'
ans =
    '0.862173318862915'
ans =
    '3f5cb764'
ans =
    '-1.94751739501953'
ans =
    'bff94840'

MATLAB结果如表格所示:

数值表示字节表示
aa-2.25884675979614c01090f2
bb0.8621733188629153f5cb764
cc=aa*bb-1.94751739501953bff94840

VIVDO计算结果如下:

对比依然可以发现,MATLAB和VIVADO计算的结果是相等的。

综上,VIVADO中的单精度浮点数的运算能用MATLAB的计算来模拟,此处只验证了乘法,推测其他运算也是没问题的,不放心的读者可自行验证加减除。

二、MATLAB定点运算仿真

        方法比较简单,就是把数乘上2^(位宽)后四舍五入再进行运算,相当于把数给扩大,只有整数部分。注意这个位宽是不包含符号位的。运算完后需要截位就自行截位,不需要截位就不用截位。

MATLAB代码及运算结果如下:

leng=15; % 不含符号位

a=randn(1)+1j*randn(1);

aa=round(a*2^(leng));mat2str(aa)

real_a=dec2hex(real(aa),4)

imag_a=dec2hex(imag(aa),4)

b=randn(1)+1j*randn(1);

bb=round(b*2^(leng));mat2str(bb)

real_b=dec2hex(real(bb),4)

imag_b=dec2hex(imag(bb),4)

c=aa*bb

mat2str(c)

real_c=dec2hex(real(c),8)

imag_c=dec2hex(imag(c),8)

ans =
    '-28340-985i'
real_a =
    '914C'
imag_a =
    'FC27'
ans =
    '-5403+20569i'
real_b =
    'EAE5'
imag_b =
    '5059'
c =
   1.7338e+08 - 5.7760e+08i
ans =
    '173381485-577603505i'
real_c =
    '0A55976D'
imag_c =
    'DD92784F'

同样的,给出VIVADO中调用定点复数乘法器运算得到的结果。

对比十六进制表示的输入和输出,可发现MATLAB的结果和VIVADO的结果完全吻合。


总结

        从结果来看,在MATLAB中也能模拟VIVADO中的单精度浮点运算和定点运算。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com