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

  最近本人一直在学习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之间的数据传输,从而避免写上位机软件和网络协议先关设计配置带来的工作量。这部分内容在下篇博文中叙述。

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

时间: 2024-10-10 15:43:49

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

利用ZYNQ SOC快速打开算法验证通路(6)——利用AXI总线实时配置sysGen子系统

利用ZYNQ验证算法的一大优势在于,可以在上位机发送指令借助CPU的控制能力和C语言易开发特点,实时配置算法模块的工作模式.参数等对来对其算法模块性能进行全面的评估.最重要的是无需重新综合硬件模块. 接着上篇该系列博文,在sysGen中设计模块功能为:根据模式选择输入,来完成乘2或除2两种运算,0乘1除. 测试激励选用From Workspace模块,从MATLAB工作空间导入数据.利用MALTAB脚本可以非常容易地生成任意数据集,极大体现了sysGen开发的优势. 设计完成调用xilinx w

利用ZYNQ SOC快速打开算法验证通路(3)——PS端DMA缓存数据到PS端DDR

上篇该系列博文中讲述W5500接收到上位机传输的数据,此后需要将数据缓存起来.当数据量较大或者其他数据带宽较高的情况下,片上缓存(OCM)已无法满足需求,这时需要将大量数据保存在外挂的DDR SDRAM中. 最简单的方式是使用Xilinx的读写地址库函数Xil_In32()和Xil_Out32(),当然不仅支持32bit位宽,还包括8 16和64bit.但这种方式每次读写都要占用CPU,无法在读写的同时接收后续数据或者对之前的数据进一步处理,也就无法形成类似FPGA逻辑设计中的"流水线结构&qu

利用Zynq Soc创建一个嵌入式工程

英文题目:Using the Zynq SoC Processing System,参考自ADI的ug1165文档. 利用Zynq Soc创建一个嵌入式工程,该工程总体上包括五个步骤: 步骤一.新建空白工程 步骤二.创建一个Embedded Processor工程 步骤三.Zynq7 Processing System的管理 步骤四.综合仿真.编译运行.生成二进制文件 步骤五.Exporting Hardware to SDK 步骤一.新建工程 1. 点击Vivado图标启动软件,Create

如何将RTOS添加到ZYNQ SoC设计中

在寻求获得来自处理系统内的赛灵思Zynq?-7000全可编程SoC的最大利益,操作系统将让你更不是一个简单的裸机解决方案.任何开发ZYNQ SoC设计有大量的操作系统可供选择,并根据最终应用程序,你可以选择一个实时版本.一个RTOS是您最好的选择,如果你是在工业,军事,航空航天或在响应时间和可靠的性能要求,以防止生命或伤亡的,或者实现严格的绩效目标等具有挑战性的环境中使用的SoC ZYNQ. 为了得到一个感觉如何最好地实时操作系统添加到我们的ZYNQ SoC系统中,我们将使用最流行的实时操作系统

基于Python的函数回归算法验证

看机器学习看到了回归函数,看了一半看不下去了,看到能用方差进行函数回归,又手痒痒了,自己推公式写代码验证: 常见的最小二乘法是一阶函数回归回归方法就是寻找方差的最小值y = kx + bxi, yiy-yi = kxi+b-yi方差为∑(kxi + b - yi )^2f = k^2∑xi^2 + b^2 + ∑yi^2 +2kb∑xi - 2k∑xi*yi - 2yib求极值需要对其求微分,因为是二元函数,因此使用全微分公式,其极值点应该在两个元的偏微分都为0处δf/δk = 2k∑(xi^2

构建基于CXF的WebService服务(3)-- 利用拦截器实现权限验证

CXF中的拦截器分为in拦截器和out拦截器,又有客户端拦截器和服务端拦截器. 拦截器使用流程:客户端(out)-> 服务端(in)->处理业务->服务端(out)->客户端(in),并不是每一步都需要拦截器.在这里我们用到的是客户端Out拦截器和服务端in拦截器.服务端in拦截器检查用户级权限,客户端out浏览器发送用户信息给服务端. 1.创建服务端验证 JaxWsServerFactoryBean或Endpoint都可以通过getInInterceptors方法,向WebSer

利用朴素贝叶斯算法进行分类-Java代码实现

http://www.crocro.cn/post/286.html 利用朴素贝叶斯算法进行分类-Java代码实现 鳄鱼  3个月前 (12-14)  分类:机器学习  阅读(44)  评论(0) Java package cn.crocro.classifier; import java.util.ArrayList; /** * 朴素贝叶斯分类器,只能针对有限个情况的分类下面是实例代码 * * @author 鳄鱼 * */ public class NaiveBayesClassifier

《BI那点儿事》Microsoft 时序算法——验证神奇的斐波那契数列

斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368斐波那契数列的发明者,是意大利数学家列昂纳多·斐波那契(Leonardo Fibonacci),生于公元1170年,卒于1250年,籍贯是比萨.他被人称作“比萨的列昂纳多”.1202年,他撰写了<算盘全书>(Liber Abacci)一书.他是第一个研究了

HDU 1711 Number Sequence(算法验证)

该怎么做.每一个人的人生都应该自己掌握.你给不了别人一切.你也不懂别人的忧伤. 微笑不代表快乐.哭泣不一定悲伤 不努力怎么让关心你的人幸福.不努力怎么让看不起你的人绝望. 我用生命在奋斗--lx_Zz ------------------------------------------------------------- -------------------------    华丽的切割线    ---------------------------- -------------------