码迷,mamicode.com
首页 > 编程语言 > 详细

利用ZYNQ SOC快速打开算法验证通路(1)——MATLAB浮点数与定点二进制补码互转

时间:2018-06-29 19:24:06      阅读:519      评论:0      收藏:0      [点我收藏+]

标签:fscanf   简单   mat   数值   16进制   size   思想   个数   height   

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

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

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

技术分享图片

技术分享图片

技术分享图片

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

                                   技术分享图片 技术分享图片

  直接对比数据和命令检测结果显示两者完全一致。现在利用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之间的数据传输,从而避免写上位机软件和网络协议先关设计配置带来的工作量。这部分内容在下篇博文中叙述。

利用ZYNQ SOC快速打开算法验证通路(1)——MATLAB浮点数与定点二进制补码互转

标签:fscanf   简单   mat   数值   16进制   size   思想   个数   height   

原文地址:https://www.cnblogs.com/moluoqishi/p/9244640.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!