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

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

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

    利用ZYNQ验证算法的一大优势在于,可以在上位机发送指令借助CPU的控制能力和C语言易开发特点,实时配置算法模块的工作模式.参数等对来对其算法模块性能进行全面的评估.最重要的是无需重新综合硬件模块. ...

  2. 利用ZYNQ SOC快速打开算法验证通路(4)——AXI DMA使用解析及环路测试

    一.AXI DMA介绍 本篇博文讲述AXI DMA的一些使用总结,硬件IP子系统搭建与SDK C代码封装参考米联客ZYNQ教程.若想让ZYNQ的PS与PL两部分高速数据传输,需要利用PS的HP(高性能 ...

  3. 利用ZYNQ SOC快速打开算法验证通路(6)——LWIP实现千兆TCP/IP网络传输

    一.前言 之前ZYNQ与PC之间的网络连接依赖于外接硬件协议栈芯片,虽然C驱动非常简单,但网络带宽受限.现采用LWIP+PS端MAC控制器+PHY芯片的通用架构.关于LWIP库,已经有很多现成的资料和 ...

  4. 利用ZYNQ SOC快速打开算法验证通路(5)——system generator算法IP导入IP integrator

    一.前言 利用FPGA设计算法一直以来都是热点,同样也是难点.将复杂的数学公式 模型通过硬件系统来搭建,在低延时 高并行性等优势背后极大提高了设计难度和开发周期.Xilinx公司的sysGen(sys ...

  5. 利用ZYNQ SOC快速打开算法验证通路(2)——数据传输最简方案:网络调试助手+W5500协议栈芯片

    在上一篇该系列博文中讲解了MATLAB待处理数据写入.bin二进制数据文件的过程,接下来需要将数据通过以太网发送到ZYNQ验证平台.之前了解过Xilinx公司面向DSP开发的System Genera ...

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

    上篇该系列博文中讲述W5500接收到上位机传输的数据,此后需要将数据缓存起来.当数据量较大或者其他数据带宽较高的情况下,片上缓存(OCM)已无法满足需求,这时需要将大量数据保存在外挂的DDR SDRA ...

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

    英文题目:Using the Zynq SoC Processing System,参考自ADI的ug1165文档. 利用Zynq Soc创建一个嵌入式工程,该工程总体上包括五个步骤: 步骤一.新建空 ...

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

    看机器学习看到了回归函数,看了一半看不下去了,看到能用方差进行函数回归,又手痒痒了,自己推公式写代码验证: 常见的最小二乘法是一阶函数回归回归方法就是寻找方差的最小值y = kx + bxi, yiy ...

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

    http://www.crocro.cn/post/286.html 利用朴素贝叶斯算法进行分类-Java代码实现  鳄鱼  3个月前 (12-14)  分类:机器学习  阅读(44)  评论(0) ...

随机推荐

  1. 【mysql】Date和String的互相转换(DATE_FORMAT & STR_TO_DATE)

    1.Date  ——>  String 使用的函数:DATE_FORMAT(date,format)     date:需要转换的日期       format:格式化的样式 format样式整 ...

  2. Kubernetes因限制内存配置引发的错误

    今天对一个pod进行内存资源调整后, 一直卡在ContainerCreating的状态, 执行describe命令查看该 Pod 详细信息后发现如下 . [root@master-01 ~]# kub ...

  3. .NET Core实战项目之CMS 第六章 入门篇-Vue的快速入门及其使用

    写在前面 上面文章我给大家介绍了Dapper这个ORM框架的简单使用,大伙会用了嘛!本来今天这篇文章是要讲Vue的快速入门的,原因是想在后面的文章中使用Vue进行这个CMS系统的后台管理界面的实现.但 ...

  4. 通过案例了解Hystrix的各种基本使用方式

    1 通过一些算术题了解系统发生错误的概率 我们一般用每秒查询率(Query Per Second,简称QPS)来衡量一个网站的流量,QPS是指一台服务器在一秒里能处理的查询次数,它可以被用来衡量服务器 ...

  5. influxdb使用说明

    前言 influxdb是目前比较流行的时间序列数据库. 何谓时间序列数据库?什么是时间序列数据库,最简单的定义就是数据格式里包含Timestamp字段的数据,比如某一时间环境的温度,CPU的使用率等. ...

  6. SQL数据库连接语句

    一般的远程访问的写成这样: Data Source=IP ;Initial Catalog=数据库名 ;UserID= 用户名 ;Password=密码 本地访问的写成这样: Data Source= ...

  7. 为什么使用JDBC操作MySQL需要添加Class.forName("com.mysql.jdbc.Driver")

    引言 如果熟悉使用JDBC来连接数据库的同学一定很清楚连接数据库的代码中一定会有依据Class.forName("com.mysql.jdbc.Driver"); public s ...

  8. 构造方法、封装、关键字(this、static)和代码块的介绍

    1.构造方法 1.1 构造方法与成员方法的区别 构造方法分为无参构造和有参构造,其中有参构造方法和无参构造方法为方法的重载关系. 构造方法在初始化一个类的对象时进行调用,它没有返回值,方法名与类名相同 ...

  9. logback配置信息

    <?xml version="1.0" encoding="UTF-8"?> <configuration scan="true&q ...

  10. leetcode — reverse-linked-list

    /** * Source : https://leetcode.com/problems/reverse-linked-list/ * * * Reverse a singly linked list ...