之前博文是对基本设计技巧的总结和一些小设计随笔,内容有点杂,缺乏目的性。本来后续计划设计几个小项目,但导师的任务比较紧,所以为了提高效率,后续博客会涉及到很多算法方面的设计与验证的内容,主要关于OFDM通信系统及聚类算法方面的研究,感兴趣的朋友可以一起交流。

  很多想利用FPGA验证算法的朋友一定会用到MATLAB这个强大的工具,可苦于不知道如何完成两者数据的交互功能。从仿真层面来说,基本流程是:

MATLAB产生待测试数据 -> N bit量化  -> 数据写入txt文件 -> testbench读取txt文件到RAM并送入到UUT中完成运算处理 ->

testbench在将处理后结果保存到另一txt文件内  -> MATLAB读取数据 -> 数据转回双精度浮点型 -> 算法验证分析。

  下面是FPGA设计OFDM中过程中MATLAB与FPGA数据交互部分的代码,供大家参考:

1.MATLAB将数据(支持小数 负数)以二进制补码ASICII字符串形式写入txt文件

  MATLAB将其内部双精度浮点型数据经过归一化和12bit量化后,转为二进制字符串写入文件。此处应该可以写成16进制形式,让代码更简洁些。

2 test bench读取文件数据到memory中

  $readmemb/$readmemh系统函数读取文件数据到memory中,以特定的时序送入uut处理。此处封装成task便于调用和提高代码可读性。

3 test bench将FPGA处理后数据写入另一文件

  $fopen找到并打开文件,通过$fdisplay函数经处理后数据以十进制形式写入文件。

4 MATLAB读取FPGA处理后数据文件,格式转换进一步分析

  MATLAB以类似的方式打开文件,读取数据到FPGA_Data矩阵中。数据的实部和虚部分别逆运算得到正确的浮点型数据(代码中N为量化位数,取12),最后拼接回复数,待MATLAB后续处理分析。

  四个步骤即可通过FPGA进行算法的定点仿真,利用MATLAB强大的数据分析和可视化功能,极大提高算法开发效率。后篇算法验证的内容为算法板级验证,MATLAB提高了以太网通信函数,可以很方便地与FPGA等硬件设备实现真正的数据交互,欢迎各位关注。

FPGA与MATLAB数据交互高效率验证算法——仿真阶段的更多相关文章

  1. 通过文件读写方式实现Matlab和Modelsim的联合仿真

    虽然Modelsim的功能非常强大,仿真的波形可以以多种形式进行显示,但是当涉及到数字信号处理的算法的仿真验证的时候,则显得有点不足.而进行数字信号处理是Matlab的强项,不但有大量的关于数字信号处 ...

  2. X-Plane数据交互

    要用X-Plane进行二次开发,免不了需要进行参数的传递,下面我们来看看与X-Plane进行数据交互都有哪些方式. 与FSX和Flightgear基本一样,X-Plane支持插件,自然也支持通过插件进 ...

  3. Android客户端和服务器端数据交互

    网上有很多例子来演示Android客户端和服务器端数据如何实现交互不过这些例子大多比较繁杂,对于初学者来说这是不利的,现在介绍几种代码简单.逻辑清晰的交互例子,本篇博客介绍第四种: 一.服务器端: 代 ...

  4. 使用Jquery.AJAX方法和PHP后台数据交互小结

    使用jQuery的AJAX方法和后台PHP进行数据交互,交互采用的数据格式JSON格式. 我主要小小的总结了一下,我使用AJAX方法时候遇到一些小小的问题. 第一:在传递数据的时候,传输地址注意是否正 ...

  5. View与Control间的数据交互

    View与Control间的数据交互 1.ViewBag.Name ="Name1" 2.ViewData["VD"] = "view data&qu ...

  6. .net实现与excel的数据交互、导入导出

    应该说,一套成熟的基于web的管理系统,与用户做好的excel表格进行数据交互是一个不可或缺的功能,毕竟,一切以方便客(jin)户(qian)为宗旨. 本人之前从事PHP的开发工作,熟悉PHP的都应该 ...

  7. 无废话ExtJs 入门教程二十[数据交互:AJAX]

    无废话ExtJs 入门教程二十[数据交互:AJAX] extjs技术交流,欢迎加群(521711109) 1.代码如下: 1 <!DOCTYPE html PUBLIC "-//W3C ...

  8. JSP数据交互

    JSP数据交互   一.jsp中java小脚本 1.<% java代码段%> 2.<% =java表达式%>不能有分号 3.<%!成员变量和函数声明%>二.注释 1 ...

  9. Flex数据交互之Remoting

    一 前言 Flex数据交互常用的有三种方式:WebService.HttpService以及Remoting. WebService方式已在这篇文章中给出,这篇文章主要讲解以Remoting方式进行数 ...

随机推荐

  1. Knowledge point

    静态网页的特点:以htm.html.sbtml.xml.js.css等为后缀扩展名. 1)程序在客户浏览器端解析,不需要读取数据库,性能和效率较高: 2)后端没有数据库支持,所以和用户的交互性差,功能 ...

  2. 基于Three.js的360度全景--photo-sphere-viewer--简介

    这个是基于three.js的全景插件  photo-sphere-viewer.js  ---------------------------------------- 1.能添加热点: 2.能调用陀 ...

  3. threejs - uv 映射 简要

    啥也不说先上way+code+demo; https://github.com/Thinkia/threejs_/blob/master/test/test2-%20uv/readme.md 如何理解 ...

  4. 常用到的html页面布局和组件: 自己用

    1. 用div当作圆 <div style="border: 1px solid blue;height: 100px; width: 100px; border-radius: 20 ...

  5. Kotlin——从无到有系列之高级篇(一):Lambda表达式

    如果您对Kotlin很有兴趣,或者很想学好这门语言,可以关注我的掘金,或者进入我的QQ群大家一起学习.进步. 欢迎各位大佬进群共同研究.探索 QQ群号:497071402 进入正题 经过前面一系列对K ...

  6. Algorithm --> 动态规划

    动态规划 出处:http://hawstein.com/posts/dp-novice-to-advanced.html   什么是动态规划? 动态规划算法通常基于一个递推公式及一个或多个初始状态.当 ...

  7. Spring Boot入门教程2-1、使用Spring Boot+MyBatis访问数据库(CURD)注解版

    一.前言 什么是MyBatis?MyBatis是目前Java平台最为流行的ORM框架https://baike.baidu.com/item/MyBatis/2824918 本篇开发环境1.操作系统: ...

  8. java基础笔记(3)----函数

    前言引入函数前,所有的代码都写在main主函数中,代码过多,代码冗余,可读性差. 引入函数后,函数是实现某一特定功能的代码块.一个类中可以定义多个函数,每个函数和main主函数都是并列关系. 函数: ...

  9. python全栈学习--day1

      计算机基础 CPU:中央处理器 内存:4GB,8GB,临时处理事务的地方,供给CPU数据. 硬盘:相当于电脑的数据库,存储着大量的数据,文件,电影等. 操作系统:执行者,支配所有关系 window ...

  10. JavaScript(第二十六天)【表单处理】

    为了分担服务器处理表单的压力,JavaScript提供了一些解决方案,从而大大打破了处处依赖服务器的局面.   一.表单介绍 在HTML中,表单是由<form>元素来表示的,而在JavaS ...