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

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值