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
    +关注

    关注

    181

    文章

    2960

    浏览量

    229959
  • 二进制
    +关注

    关注

    2

    文章

    772

    浏览量

    41549
  • 浮点数
    +关注

    关注

    0

    文章

    59

    浏览量

    15851
收藏 人收藏

    评论

    相关推荐

    labview中浮点数与十六进制字符串相互转

    与下位机数据交流及通讯时,经常有浮点数与十六进制字符串相互转化的需求,经过两天总结,找到了最简洁的相互转化的方法,萌新欢迎大佬指正,文件也附上。*附件:HEX字符串与
    发表于 10-21 19:51

    二进制补码及与原码的互相转换方法

    大沙把一些基础的知识说清楚,本文介绍二进制补码及与原码的转换方法。 先说原码,原码‌是一种计算机中对数字的二进制定点表示方法。在原码表示法中,数值前面增加了一位符号位,最高位为符号位,0表示正数,1
    的头像 发表于 09-19 22:25 298次阅读

    TMS320C6743定点浮点数字信号处理器数据表

    电子发烧友网站提供《TMS320C6743定点浮点数字信号处理器数据表.pdf》资料免费下载
    发表于 08-07 11:37 0次下载
    TMS320C6743<b class='flag-5'>定点</b>和<b class='flag-5'>浮点数</b>字信号处理器数据表

    TMS320C6654定点浮点数字信号处理器数据表

    电子发烧友网站提供《TMS320C6654定点浮点数字信号处理器数据表.pdf》资料免费下载
    发表于 08-07 10:11 1次下载
    TMS320C6654<b class='flag-5'>定点</b>和<b class='flag-5'>浮点数</b>字信号处理器数据表

    TMS320C6671定点浮点数字信号处理器数据表

    电子发烧友网站提供《TMS320C6671定点浮点数字信号处理器数据表.pdf》资料免费下载
    发表于 08-05 11:17 0次下载
    TMS320C6671<b class='flag-5'>定点</b>和<b class='flag-5'>浮点数</b>字信号处理器数据表

    二进制处理中的一些技巧

    二进制和十进制的处理中,有时候一些小技巧是很有用的。 1、把十进制数转换成二进制数 (1)在MATLAB中有一个函数dec2b
    的头像 发表于 07-05 11:51 467次阅读

    一文带你秒懂IEEE 754浮点数

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

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

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

    鸿蒙二进制数组创建

    背景 c++层数据都是二进制,需要转换成arrayBuffer透传到ets层给业务使用,但是鸿蒙的使用下面两个api创建出来的二进制数组数据都是错误的。 接口
    的头像 发表于 01-31 15:24 1190次阅读

    10进制转换为二进制算法

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

    10进制转换为二进制算法

    二进制算法可以分为两个步骤:整数部分转换和小数部分转换。下面将详细介绍这两个步骤。 首先,我们来讨论整数部分的转换。整数部分的转换是比较简单的,我们可以通过不断地进行除2取余的操作来得到二进制数的每一位。 具体的步骤如下
    的头像 发表于 01-11 09:14 2106次阅读

    modbus浮点数怎么读取

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

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

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

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

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

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

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