当前位置: 首页 > news >正文

xilinx FPGA FX2 usb通信模块之上位机发送的数据格式

当rom向fpga传输数据时,可以发送coe文件,规定数据进制,以及用逗号可以分开不同的数据,但是通过上位机经过usb向fpga传输数据时,就不能是简单的txt文件,要转换成纯二进制文件,才可以保证数据的准确性。

在rom实验过程中,只需要通过文本文将,写成这样的coe文件格式,就可以将相应的数据传输到fpga当中,只需要在建立romip时,设置数据位宽和数据个数(深度)就可以了。

 但是如果通过上位机经过usb传输时,如果传输这样的文件,就会把对应的ascii码传输给fpga,当然如果我们只是进行回环实验,然后把数据通过文件方式读取到文本文件中,就可以得到跟输入文件一样的数据了。这是因为fpga没有对数据进行处理,而fpga usb通信整个传输过程就是上位机将要发送的文件,将该符号对应的ascii码发送到fx2 usb的  模拟fifo当中(而小梅哥的开发板当中使用的fx2 usb模块,是规定为16位的数据格式),然后就传输到fpga的接收端口,当然如果fpga不做任何处理,就将该数据传输给usb的fifo当中,然后传输到上位机,并解析成对应的符号(ascii码),当然得到的数据就跟上位机发送的一样。但是,如果我们fpga要对数据进行处理,再发送,可想而知,上位机发送时,并不能识别出该进制,所以我认为应该先把数据进行严格的预处理,变成纯二进制文件,规定该数据的位数。而且,该通信过程是按照16进制传输的,所以传输纯二进制文件,就可以保证fpga收到的数据就是我们发送的数据的16进制。

比如,我要发送如下文件,就必须把数据进行二进制格式化,把这些数据复制,因为我在rom当中设置的数据位宽是10,但是在fpga usb传输当中,规定的是16位,所以在这里我也设置为16(当然如果数据小一点,可以设置成8位,然后在接收数据时,就把高八位和低八位进行分开就好了)

 测试:

 对比一下,我们直接发上面的10进制文件,fpga会收到的数据:注意看ila里面的fifo datain,这是我们fpga收到的实际数据,可以看到并不是我们想收到的63,二是6和3对应的ascii码

 

 在16进制编辑器当中,将编辑器位数设置为16位,然后新建文件,将数据显示格式设置为10进制,然后把这些数据复制进去即可。

在设置当中,选择words(16位)(bytes(8位)),然后点击应用即可:

 新建文件:

 

 ​​​​​​数据显示格式设置为10进制

 复制的时候,把鼠标放在第一位那,不要双击,直接右键复制就好,一定一定不要双击去编辑,直接右键复制

 点击继续就好了

 复制完成

 然后改成16进制就可以看到

 然后保存文件,再进行传输,就可以看到上位机收到的和fpga当中的数据是一致的

对于hex editor neo这个软件,我是直接在电脑管家里面下载的,看了一下网上的教程比较少,就自己摸索了一下,还有很多功能不太清楚。

对于这部分,是因为我想要通过把大量输入数据传输到fpga,然后运算出来,再通过上位机去读取,会比较方便,所以要对数据进行预处理而发现的一些方法,希望大家批评指正。

同时,也在小破站录了一个视频,需要的朋友可以看一下:xilinx FPGA FX2 usb通信模块之上位机发送的数据格式_哔哩哔哩_bilibili

 

 

相关文章:

  • 阿里云对象存储OSS存储照片
  • AES、RSA、DH加密解密
  • 高效的操作符使用剖析
  • CVE-2017-12615 Tomcat任意文件上传漏洞详解
  • 10.2国庆作业(PWM实验)
  • Java开发环境基础配置
  • 基于springboot和ftp实现的网盘文件系统
  • Maven创建聚合项目
  • ASP.NET MVC--视图
  • java基础巩固-宇宙第一AiYWM:为了维持生计,虽然咱没机会经历双11这种技术阅兵场,但是看看人家写的阅兵场日记,先xiao习xiao习一下嘛~整起
  • Mybatis配置详解 | 深入理解 『带上CSDN一起玩转国庆』
  • 断断续续学习算法的5年
  • Qt 精确定时器
  • mysql中int(11)与int(1)的区别与联系
  • 【Vue】Vue的v-for指令
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • 《Java编程思想》读书笔记-对象导论
  • 【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用
  • Angular 4.x 动态创建组件
  • bearychat的java client
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • iOS 系统授权开发
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • Laravel 中的一个后期静态绑定
  • Laravel5.4 Queues队列学习
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • linux学习笔记
  • Netty源码解析1-Buffer
  • Python 基础起步 (十) 什么叫函数?
  • Redux 中间件分析
  • Web Storage相关
  • Webpack入门之遇到的那些坑,系列示例Demo
  • 大快搜索数据爬虫技术实例安装教学篇
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • 如何进阶一名有竞争力的程序员?
  • 三栏布局总结
  • 小程序开发中的那些坑
  • 译有关态射的一切
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • ​你们这样子,耽误我的工作进度怎么办?
  • ‌U盘闪一下就没了?‌如何有效恢复数据
  • # Redis 入门到精通(七)-- redis 删除策略
  • #Linux(帮助手册)
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (1)STL算法之遍历容器
  • (ibm)Java 语言的 XPath API
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (poj1.2.1)1970(筛选法模拟)
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (笔试题)分解质因式
  • (二)hibernate配置管理
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100