FPGA与MATLAB数据交互高效率验证算法——仿真阶段
之前博文是对基本设计技巧的总结和一些小设计随笔,内容有点杂,缺乏目的性。本来后续计划设计几个小项目,但导师的任务比较紧,所以为了提高效率,后续博客会涉及到很多算法方面的设计与验证的内容,主要关于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数据交互高效率验证算法——仿真阶段的更多相关文章
- 通过文件读写方式实现Matlab和Modelsim的联合仿真
虽然Modelsim的功能非常强大,仿真的波形可以以多种形式进行显示,但是当涉及到数字信号处理的算法的仿真验证的时候,则显得有点不足.而进行数字信号处理是Matlab的强项,不但有大量的关于数字信号处 ...
- X-Plane数据交互
要用X-Plane进行二次开发,免不了需要进行参数的传递,下面我们来看看与X-Plane进行数据交互都有哪些方式. 与FSX和Flightgear基本一样,X-Plane支持插件,自然也支持通过插件进 ...
- Android客户端和服务器端数据交互
网上有很多例子来演示Android客户端和服务器端数据如何实现交互不过这些例子大多比较繁杂,对于初学者来说这是不利的,现在介绍几种代码简单.逻辑清晰的交互例子,本篇博客介绍第四种: 一.服务器端: 代 ...
- 使用Jquery.AJAX方法和PHP后台数据交互小结
使用jQuery的AJAX方法和后台PHP进行数据交互,交互采用的数据格式JSON格式. 我主要小小的总结了一下,我使用AJAX方法时候遇到一些小小的问题. 第一:在传递数据的时候,传输地址注意是否正 ...
- View与Control间的数据交互
View与Control间的数据交互 1.ViewBag.Name ="Name1" 2.ViewData["VD"] = "view data&qu ...
- .net实现与excel的数据交互、导入导出
应该说,一套成熟的基于web的管理系统,与用户做好的excel表格进行数据交互是一个不可或缺的功能,毕竟,一切以方便客(jin)户(qian)为宗旨. 本人之前从事PHP的开发工作,熟悉PHP的都应该 ...
- 无废话ExtJs 入门教程二十[数据交互:AJAX]
无废话ExtJs 入门教程二十[数据交互:AJAX] extjs技术交流,欢迎加群(521711109) 1.代码如下: 1 <!DOCTYPE html PUBLIC "-//W3C ...
- JSP数据交互
JSP数据交互 一.jsp中java小脚本 1.<% java代码段%> 2.<% =java表达式%>不能有分号 3.<%!成员变量和函数声明%>二.注释 1 ...
- Flex数据交互之Remoting
一 前言 Flex数据交互常用的有三种方式:WebService.HttpService以及Remoting. WebService方式已在这篇文章中给出,这篇文章主要讲解以Remoting方式进行数 ...
随机推荐
- 【.NetCore】基于jenkins以及gitlab的持续编译及发布
前沿 其实本来是想把标题叫做持续集成的,只是后来看看研究出的内容,就只有发布这一个动作,自动化测试等内容也未涉及到,所以改名叫持续编译及发布应该更加贴切吧? 问题背景 其实目前我们传统方式上的发布方式 ...
- 使用uiautomation自动化重命名pdf书签,使全大写字母变成首字母大写
今天下载了一个英文pdf书籍,但书签全是大写英文字母,看上去有点别扭,于是想办法用自动化重命名pdf书签, 使书签全部变成首字母大写. pdf原始书签如下图: 重命名后的pdf书签 自动化动态效果图, ...
- Java虚拟机运行时栈帧结构--《深入理解Java虚拟机》学习笔记及个人理解(二)
Java虚拟机运行时栈帧结构(周志明书上P237页) 栈帧是什么? 栈帧是一种数据结构,用于虚拟机进行方法的调用和执行. 栈帧是虚拟机栈的栈元素,也就是入栈和出栈的一个单元. 2018.1.2更新(在 ...
- mybatis返回list
1 Model类 public class Vo { /** * this is used for receive data partly from table user_question_secti ...
- java swing 下拉框与文本框
import java.awt.*; import javax.swing.*; import javax.swing.border.*; import java.awt.event.*; publi ...
- 用golang 实现一个代理池
背景 写爬虫的时候总会遇到爬取速度过快而被封IP的情况,这个时候就需要使用代理了.在https://github.com/henson/ProxyPool 的启发下,决定自己实现一个代理池.项目已经开 ...
- react开发
webpack.config.js var webpack=require("webpack"); var htmlWebpackPlugin=require('html-webp ...
- Java 泛型进阶
擦除 在泛型代码内部,无法获得任何有关泛型参数类型的信息. 例子1: //这个例子表明编译过程中并没有根据参数生成新的类型 public class Main2 { public static voi ...
- javascript中的null,对象系统还是非对象系统?
1.一直以来的认知 在我学习js的过程中,爱民老师的绿皮书里将js的类型系统分成了两类: 其一是元类型系统:由typeof运算来检测 其二是对象类型系统:是元类型的object的一个分支 而null这 ...
- Find The Multiply
Find The Multiply poj-1426 题目大意:给你一个正整数n,求任意一个正整数m,使得n|m且m在十进制下的每一位都是0或1. 注释:n<=200. 想法:看网上的题解全是b ...