DSP与FPGA通过XINTF并行通信的实验过程

DSP与FPGA通过XINTF并行通信的实验过程(FPGA是小梅哥家XILINX的A7系列,DSP是普中家的C28335系列)

DSP和FPGA都是用的开发板,用的普通的杜邦线连接(16bit),然后在VIVADO当中用ila观察信号,在DSP当中用仿真器观察变量数值,对于XINTF的读写,其实是先要定义一段zone当中的地址,然后定义某一个信号在该地址,当对该变量进行赋值时,就会产生写时序,当把该变量赋值给另一个变量或者用DMA进行搬运时,就会自动产生读时序。要注意的是,地址线以及数据线在读写时序当中的有效时间段,要根据该时间段才能进行正确的数据传输。

DSP发送数据时,测试了三种情况,发送全0,发送全1,或者发送0——1024的序列,通过改变DSP当中XINTF的写时序,在数据有效阶段,在FPGA当中进行读取,是完全正确的。

但是在FPGA像DSP当中发送数据时,刚开始时用时序逻辑,通过判断DSP的rd信号,来变化XDATA,但是结果不理想,后来就是直接用组合逻辑进行测试,也就是在FPGA的程序当中,直接使用组合逻辑赋值,使其=X"0000",此时在DSP当中是可以收到全部0000的。然后开始测试全1,也就是发送FFFF,DSP收到的就非常杂,只是偶尔会是FFFF(因为在DSP当中是使用一个一维数组来产生读写的)。一直不知道什么原因,然后我就一次次试,后来发现只有在000F的时候,收到全部正确,后面高12位再为1时,误差会更大。可能是因为FPGA当中的输出IO不是很稳定,听了老师建议,在VIVADO当中将输出IO配置成上拉模式,但这个只能是默认配置一个50欧姆的上拉电阻,结果还是不理想。

总结就是:因为是两个开发板之间做验证工作,可能因为硬件问题,还存在一些问题

-------------------------------------------------------------20230417-------------------------------------------------------测了一下两个开发板之间是存在压差的,也就是两个gnd之间也存在压差,这也是一个问题,两个开发板直接工地还是有风险,所以如果真滴打算两个一起使用,最好是画在一个板子上共同电源共地。

-------------------------------------------------------------20230420-------------------------------------------------------普中开发板的xintf管脚是连接了一个sram的芯片的,它的片选引脚是关联到了zone7的选通信号,因此当xintf引脚发送数据的时候,没有什么问题,就算fpga也连接了那个数据线,也是可以读回相应的管脚状态的;但是当dsp从这些管脚读数据的时候,这个管脚就会冲突,因为在fpga发数据的同时,sram的芯片也被相应使能,也会像dsp发数据,所以才有会后面的实验现象,其实一直读的都是原先寄存器的状态。

所以改变的方法就是,就是重新配置xintf接口初始化,不使用zone7区域,那么xzcs7就不会产生低电平,就会禁止sram芯片的使用,我们可以zone6或者zone0区域。

后面实验结果正常,至少是可以正常接收来自fpga的数据,有一点时序不对的,就是fpga和dsp之前的时序问题,再调整一下就行。

猜你喜欢

转载自blog.csdn.net/qq_43811597/article/details/130101877