通过HPI读取DSP数据,我发现当数据的低16位出现很多1时传输发生错误。比如现在我要读取的数位0x0010FFFF,HPI读操作时的波形如下图所示:
HRDY变低时表示数据准备好,可以进行读取,可见0xFFFF这个16位数只持续了非常短的时间,而后变成了高16位0x0010。HSTROBE高电平时采样数据,可见读取的第一个16位数其实是0x0010,第二个16位数为0。读出来的最后结果变成了0x00000010。请问这种数据被冲掉的现象是什么引起的,有什么解决办法么?
Tony Tang:
首先HPI的问题基本都是时序问题。
写HPIA为什么只有HWIL为高,低没写,只写了一半。必需要写全,不然HPI状态机会出错的。
Hao Wang5:
回复 Tony Tang:
您好,请仔细看下截图,HCNTL[1:0]=2'b10时为写HPIA操作,这段时间内HHWIL先低后高,HSTRB两次上升沿分别写高低半字。时序没有问题。这种情况是偶尔出现的,我们的HPI是通过板间连线与FPGA连的,发现线比较长时这种错误出现频率很高。