单精度浮点运算/定点运算下 MATLAB (VS) VIVADO

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中的单精度浮点运算和定点运算。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/902991.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣-141.环形链表

题目描述 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中存在环 ,则返回 true 。 否则,返回 false 。 class Solution { public:bool hasCycle(ListNode *head) {ListNode *fast head;ListNode *slow head;while (fast! n…

RESTful学习笔记(一)

Web发展 一、API 程序硬件接口(Application Programming Interface),是预先定义好的逻辑函数,软件系统不同组成部分衔接的约定,直接调用函数,无序访问代码细节,分为SDK和Web应用接口两类 SDK…

SD2351核心板:重构AI视觉产业价值链的“超级节点”

在AI视觉技术狂飙突进的当下,一个吊诡的现象正在浮现:一方面,学术界不断刷新着ImageNet等基准测试的精度纪录;另一方面,产业界却深陷“算法有、场景无,技术强、落地难”的怪圈。明远智睿SD2351核心板的问世…

【数据结构】红黑树原理及实现

目录 一. 红黑树的概念1. 红黑树的规则思考 2. 红黑树的效率 二.红黑树的实现1. 红黑树的结构2. 红黑树的插入3. 红黑树的平衡调整情况1:变色情况2:单旋变色情况3:双旋变色 4. 红黑树插入及平衡调整代码实现5.红黑树的验证 一. 红黑树的概念 …

时间复杂度分析

复杂度分析的必要性: 当给我们一段代码时,我们是以什么准则来判断代码效率的高低呢?每一段代码都会消耗一段时间,或占据一段数据空间,那么自然是在实现相同功能的情况下,代码所耗时间最少,所占…

L1-1、Prompt 是什么?为什么它能“控制 AI”?

*Prompt 入门 L1-1 想象一下,你只需输入一句话,AI 就能自动为你写一篇文案、生成一份报告、甚至规划你的创业计划。这种“对话即编程”的背后魔法,就是 Prompt 的力量。 🔍 一、Prompt 的定义与由来 Prompt(提示词&am…

微信小程序文章管理系统开发实现

概述 在内容为王的互联网时代,高效的文章管理系统成为各类平台的刚需。幽络源平台今日分享一款基于SSM框架开发的微信小程序文章管理系统完整解决方案,该系统实现了多角色内容管理、智能分类、互动交流等功能。 主要内容 一、用户端功能模块 ​​多角…

【Python-Day 5】Python 格式化输出实战:%、format()、f-string 对比与最佳实践

Langchain系列文章目录 01-玩转LangChain:从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块:四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain:从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…

R7周:糖尿病预测模型优化探索

🍨 本文为🔗365天深度学习训练营中的学习记录博客 🍖 原作者:K同学啊 一、数据预处理 1.设置GPU import torch.nn.functional as F import torch.nn as nn import torch, torchvisiondevice torch.device("cuda"…

使用Tortoise-ORM和FastAPI构建评论系统

title: 使用Tortoise-ORM和FastAPI构建评论系统 date: 2025/04/25 21:37:36 updated: 2025/04/25 21:37:36 author: cmdragon excerpt: 在models.py中定义了Comment模型,包含id、content、created_at、updated_at字段,并与User和Article模型建立外键关系。schemas.py中定义了…

【VS Code】如何使用SSH打开远程服务器Docker上的项目或文件夹

要在VS Code中使用SSH打开远程服务器Docker上的项目或文件夹,您需要结合使用VS Code的Remote - SSH扩展和Docker的远程访问功能。以下是详细步骤: 安装VS Code Remote - SSH扩展 打开VS Code。点击左侧活动栏的扩展图标(或使用快捷键CtrlShif…

NHANES指标推荐:PLP

文章题目:Association of pyridoxal 5-phosphate (PLP) with lipid profiles: a population-based cohort study DOI:10.3389/fnut.2025.1545301 中文标题:5-磷酸吡哆醛 (PLP) 与血脂谱的关系:一项基于人群的队列研究 发表杂志&am…

MySQL 详解之备份与恢复策略:数据安全的最后一道防线

在任何信息系统中,数据都是最宝贵的资产。数据的丢失可能源于多种原因:硬件故障、人为误操作、软件 Bug、恶意攻击,甚至自然灾害。一旦发生数据丢失,如果没有有效的备份和恢复机制,后果可能是灾难性的,可能导致业务中断、经济损失甚至法律责任。 数据库备份与恢复,正是…

2026《数据结构》考研复习笔记五(栈、队列)

栈、队列 一、栈1.卡特兰数2.不合法的出栈序列 二、队列1.循环队列2.输入输出受限队列(四个数1234) 三、算法1.栈在括号匹配中的应用2.中缀表达式求值(通过转化为后缀表达式再后缀表达式求值)3.中缀表达式转化为后缀表达式4.后缀表…

深入解析微软MarkitDown:原理、应用与二次开发指南

一、项目背景与技术定位 微软开源的MarkitDown并非简单的又一个Markdown解析器,而是针对现代文档处理需求设计的工具链核心组件。该项目诞生于微软内部大规模文档系统的开发实践,旨在解决以下技术痛点: 大规模文档处理性能:能够高…

pyinstaller打包paddleocr发生错误解决

python环境是3.9,github paddleocr v2.10.0。 一个非常简单的案例如下,打包时发生错误。 import requests from paddleocr import PaddleOCR if __name__ "__main__":paddleocr_ocr PaddleOCR(use_angle_clsTrue, langch,det_model_dirmode…

算法之回溯法

回溯法 回溯法定义与概念核心思想回溯法的一般框架伪代码表示C语言实现框架 回溯法的优化技巧剪枝策略实现剪枝的C语言示例记忆化搜索 案例分析N皇后问题子集和问题全排列问题寻路问题 回溯法的可视化理解决策树状态空间树回溯过程 回溯法与其他算法的比较回溯法与动态规划的区…

命令行指引的尝试

效果 步骤 首先初始化一个空的项目,然后安装一些依赖 npm init -y npm install inquirer execa chalk ora至于这些依赖是干嘛的,如下图所示: 然后再 package.json 中补充一个 bin 然后再根目录下新建一个 index.js , 其中的内容如下 #!/…

探秘LLM推理模型:hidden states中藏着的self verification的“钥匙”

推理模型在数学和逻辑推理等任务中表现出色,但常出现过度推理的情况。本文研究发现,推理模型的隐藏状态编码了答案正确性信息,利用这一信息可提升推理效率。想知道具体如何实现吗?快来一起来了解吧! 论文标题 Reasoni…

流量抓取工具(wireshark)

协议 TCP/IP协议簇 网络接口层(没有特定的协议)PPPOE 物理层数据链路层 网络层: IP(v4/v6) ARP(地址解析协议) RARP ICMP(Internet控制报文协议) IGMP传输层:TCP(传输控制协议)UDP(用户数据报协议)应用层…