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

news/2024/11/8 23:05:51/

当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

 

 


http://www.ppmy.cn/news/172058.html

相关文章

File does not exist or is not accessible:‘c:/Users/Administrator/Desktop/FX2_Stream_IN/FX2_Str

当使用vivado编译时,如果是从其他地方拷贝过来,并且是更换了器件类型的,那么可能ip核会出现错误,编译不成功。错误提示如下: File does not exist or is not accessible:c:/Users/Administrator/Desktop/FX2_Stream_IN…

xilinx FPGA usb模块的使用(VHDL)

此次实例中,使用的是小梅哥的xilinx a7系列200t的开发板,其中自带一个usb2.0模块,然后根据他的基于slave fifo的fpga数据回环实验改编,主要是小梅哥的例程是基于verilog的,以及是自己编写的一个fifo模块,然…

基于EZ-USB FX2 CY7C68013A模块的应用(一)——FX2 芯片片上回环测试

在 Cypress Suite USB 3.4.7\Firmware 目录下,提供了一个基于 FX2 芯片的片上回环固件,名为 Bulkloop。 官方说明中写道: this bulk loopback firmware based on the firmware frameworks. Loops back EP2OUT to EP6IN and EP4OUT to EP8IN. …

利用FPGA实现外设通信接口之:利用FPGA实现USB 2.0通信接口

10.3 利用FPGA实现USB 2.0通信接口 10.3.1 USB 2.0接口的实现方式 利用FPGA来实现USB 2.0接口的方式一般有两种,一是借助外围的USB接口芯片,二是FPGA内部实现USB协议控制器,外部通过USB的PHY芯片来实现接口。 对于第一种方式,…

Java002——JDK的安装以及配置环境变量

为什么要安装jdk 1、JDK 全称 Java Development Kit,意为 Java 开发工具。,要想开发java程序就必须安装JDK。没有JDK的话,无法编译运行Java程序。 2、JDK包含的基本组件包括以下文件:   javac.exe,用于编译java文件&#xff0c…

Mybatis-Plus实战

文章目录 #简介#特性#支持数据库总结1、Mybatis-Plus常用注解2、[条件构造器](https://www.baomidou.com/pages/10c804/#abstractwrapper)2.1 介绍2.2 条件 3、Mybatis-Plus属性配置3.1 Mybatis-Plus常用配置项3.2 mybatis-plus.configuration. 下配置项3.3 配置小结 4、CRUD实…

宋宝华:为什么numactl内存绑定对代码段不起作用

本文目录 阅读本文大约需要10分钟 numactl内存绑定中代码段的问题代码段为什么没有进入指定的numa节点内核内存管理一个改进方向建议 numactl内存绑定中代码段的问题 在一个典型的NUMA架构Linux服务器中,我们常常使用类似 numactl -N 1 -m 1 ./a.out类似的命令来绑定…

科普:什么是小米刷机中的FASTBOOT

目录 1. 什么是手机上的FASTBOOT模式?2. 如何进入与退出FASTBOOT模式?2.1 进入方式2.2 退出方式 3. 如何在PC端安装FASTBOOT驱动?4. 怎么开启FASTBOOT命令提示符?5. 目前FASTBOOT命令有哪些类型?6. 常用的FASTBOOT命令…