0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

MATLAB浮点数与定点二进制补码互转算法验证方案

454398 来源:博客园 作者:没落骑士 2020-10-15 10:59 次阅读

最近本人一直在学习ZYNQ SOC的使用,目的是应对科研需要,做出通用的算法验证平台。大概思想是:ZYNQ PS端负责与MATLAB上位机数据分析与可视化软件交互:既可传输数据,也能通过上位机配置更新硬件算法模块配置寄存器内容,同时可计算分析PL端算法实现性能指标。PL端的FPGA逻辑则负责算法的硬件实现,以探索高效并行硬件架构。为此本人后续会持续编写《利用ZYNQ SOC快速打开算法验证通路》系列专题博文,在各个阶段进行些基础性总结。

MATLAB中数据为双精度浮点型,因此打开算法验证通路的第一步即为MATLAB中浮点数与定点二进制补码之间的相互转换。在之前的博文:《FPGA与MATLAB数据交互高效率验证算法——仿真阶段》中提到过两种数值表示方式之间的转换,但为了便于testbench仿真,MATLAB写和读的文件均为txt文本文件。在算法板级验证中,数据应以未经过ASCII码编码的二进制数据方式被处理。这里涉及到MATLAB函数fscanf和fprintf以及函数fread和fwrite的区别,前两个分别为读和写文本文件,后两个则是读写二进制文件。

以下给出浮点定点转换以及读写二进制文件代码:

先看下写出到文件的数据和从该该文件读回的数据是否一致。

直接对比数据和命令检测结果显示两者完全一致。再来对比下量化之前与读回定点数经过类型转换后的浮点数。

MATLAB显示两者的差值。可见在浮点转定点数时,会有一定的精度损失,但仅在10的负四次方数量级,在很多精度要求不高的场合下可以忽略。

现在利用Uedit软件打开该文件,并以16进制方式显示:

我们用前两个数据做验证,依次是00_38和FF_2A。由于是补码形式,故先写成二进制形式:0000_0000_0011_1000和1111_1111_0010_1010,再转换为原码:0000_0000_0011_1000和1000_0000_1101_0110,十进制结果就是56和-240,与MATLAB中数据吻合。

非常简单的东西困扰了我有一阵,希望对大家有帮助吧。因为算法验证平台仅是载体,最重要的是PL端的算法硬件实现部分。为了简单快速形成算法验证通路,采用网络调试助手和W5500协议栈芯片实现MATLAB与ZYNQ之间的数据传输,从而避免写上位机软件和网络协议先关设计配置带来的工作量。这部分内容在下篇博文中叙述。

编辑:hfy

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • matlab
    +关注

    关注

    175

    文章

    2908

    浏览量

    228325
  • 二进制
    +关注

    关注

    2

    文章

    700

    浏览量

    41231
  • 浮点数
    +关注

    关注

    0

    文章

    58

    浏览量

    15777
收藏 人收藏

    评论

    相关推荐

    一文带你秒懂IEEE 754浮点数

    一、简介1、常见的浮点数表示方式是IEEE754标准,它规定了浮点数的存储格式和运算规则,这个标准定义了两种浮点数表示:单精度和双精度。2、任何一个浮点数
    的头像 发表于 03-18 08:09 257次阅读
    一文带你秒懂IEEE 754<b class='flag-5'>浮点数</b>

    如何实现二进制和BCD码数据的相互转变?

    如何实现二进制和BCD码数据的相互转变? 二进制码是将十进制数字表示为二进制数和十进制数的一种表
    的头像 发表于 02-18 14:51 254次阅读

    10进制转换为二进制算法

    进制转换为二进制是计算机科学中非常基础且重要的概念之一。在理解和应用计算机科学的基础知识时,掌握这个算法是至关重要的。 在开始讲解十进制转换为二进
    的头像 发表于 01-15 10:32 440次阅读

    modbus浮点数怎么读取

    常重要的。 首先,要理解Modbus浮点数的表示方式。在Modbus协议中,浮点数采用了IEEE 754标准进行编码和解码。IEEE 754标准定义了浮点数二进制表示方法,包括符号位
    的头像 发表于 12-28 14:38 1101次阅读

    AD9957的二进制补码的小数点位置如何确定?

    您好!我正使用AD9957的QUDC模式,现通过DSP给AD9957送入并行数据。我的问题是,数据手册说施加于引D<17:0>的数据字可以选择二进制补码编码格式,那么请问这18位的二进制
    发表于 12-25 07:55

    单精度和双精度浮点数的区别

    。 单精度浮点数,也称为单精度浮点数格式,用于在计算机中表示32位二进制格式的浮点数。一个单精度浮点数由三个部分组成:符号位、指数部分和尾数
    的头像 发表于 12-15 10:25 1914次阅读

    单精度和双精度浮点数的区别

    在计算机科学和数值计算中,浮点数是一种用于表示实数的数据类型。浮点数有两种精度级别:单精度和双精度。这两种精度级别在表示范围、精度和存储空间等方面都有所不同。本文将详细介绍单精度和双精度浮点数的区别
    的头像 发表于 12-13 10:55 1090次阅读

    缝缝补补的浮点数进制转换器

    [浮点数]()在计算机科学中是一种重要的数据类型,用于表示实数。其中,FP32和FP16是两种常见的浮点数格式,分别占用32位和16位。
    的头像 发表于 12-04 14:00 336次阅读
    缝缝补补的<b class='flag-5'>浮点数</b><b class='flag-5'>进制</b>转换器

    请问ADSP-21469的汇编指令集ISA/VISA中有没有专门用来进行浮点数定点数转换的指令?

    得到的ADC数据需要进行定点数浮点数的转换,为了节省开销,想使用汇编程序进行定点浮点之间的转换。请问ADSP-21469的汇编指令集ISA/VISA中有没有专门用来进行
    发表于 11-29 08:03

    西门子PLC浮点数程序案例分享

    64位浮点数保存于VB0开始的存储区中,转换得出的32位浮点数保存于VD100中。
    发表于 10-27 17:07 1130次阅读
    西门子PLC<b class='flag-5'>浮点数</b>程序案例分享

    定点数浮点数的概念 浮点数二进制序列与指数表达式之间的转化

    的缺点:由于小数点位置固定不变,定点数所表示的数的范围非常有限,不能同时表达特别大或特别小的数,所以才出现了浮点数,以此来扩充数的范围,同时浮点数也广泛应用于精度要求高的场合。简单的理解浮点数
    的头像 发表于 08-22 16:06 2393次阅读
    <b class='flag-5'>定点数</b>和<b class='flag-5'>浮点数</b>的概念 <b class='flag-5'>浮点数</b><b class='flag-5'>二进制</b>序列与指数表达式之间的转化

    扩充浮点运算集是否需要自己在FPGA板子上设置一个定点数转为浮点数的部分?

    扩充浮点运算集的时候,是否需要自己在FPGA板子上设置一个定点数转为浮点数的部分?
    发表于 08-11 09:13

    单精度浮点数和十六进制互转换例程(基于LV)

    十六进制字符转成普通字符十六进制字符转成浮点数浮点数转成十六进制字符应用于上位机和PLC通讯的数据转换
    发表于 08-07 15:12 13次下载

    C浮点数与字符转换工具

    C浮点数与字符转换工具免费下载。
    发表于 06-19 18:17 0次下载

    FPGA浮点数表示及计算机数值表示规则

    定点数硬件实现简单,但表示的范围有限,且部分的小数运算IP核只支持浮点数运算,因此这里还需要提到浮点数的相关内容。
    发表于 06-16 15:41 887次阅读
    FPGA<b class='flag-5'>浮点数</b>表示及计算机数值表示规则