你好我在做FPGA向FX3写数据的过程中遇到了一些问题想要明确一下:
(缓冲区的大小设置为16kB,数据总线位宽为32位,水印值为6)
1、如果以16kB为单位写,这时候pktend_n信号是否可以一直处于高电平状态,并且我在control center中看到正确的数据。
2、以1024B为单位写,按照已解决:FX3 标记极性和使用部分标记 - 英飞凌开发人员社区 (infineon.com)
所述1024B应该需要再发一个零数据包(ZLP)来包装缓冲区,为此我做了以下几种测试
几种情况,如图所示
短数据包
零长度数据包
error:997
Solved! Go to Solution.
=>Flaga的功能在GPIF designer中是可配的,可以配置成相应的第1234个thread的DMA_Ready或者DMA_WaterMark, 或者当前thread的DMA_Ready DMA_WaterMark,要看你配的是哪种。
=>你可以打开我们的GPIF designer, 假设你用的是sync slave fifo这个状态机:
从图中可以看出,write状态是无法直接转到ZLP状态进行commit的,必须要先通过(PKEND&SLWR)|SLCS的状态转回到idle状态,才可以通过SLWR&!SLCS&!PKEND&SLRD的状态转到ZLP状态进行commit。
=>Flaga的功能在GPIF designer中是可配的,可以配置成相应的第1234个thread的DMA_Ready或者DMA_WaterMark, 或者当前thread的DMA_Ready DMA_WaterMark,要看你配的是哪种。
=>你可以打开我们的GPIF designer, 假设你用的是sync slave fifo这个状态机:
从图中可以看出,write状态是无法直接转到ZLP状态进行commit的,必须要先通过(PKEND&SLWR)|SLCS的状态转回到idle状态,才可以通过SLWR&!SLCS&!PKEND&SLRD的状态转到ZLP状态进行commit。
十分感谢您的解答
1、关于FLAGA,我设置为Thread_0_DMA_Ready,为上行指示线程的专用标志,按照理解它表示缓冲区的状态,若FLAGA为1则表明缓冲区未满,为0则表示缓冲区已满。想请问一下为什么我们在通过短数据包或者零长度数据包发送数据的时候FLAGA会拉低一段时间,可以肯定这时候缓冲区并没有满,这是否是正常的现象?
2、同样的,当数据的大小为1024B时,通过我观察到的现象,同样可以通过短数据包的形式发送。请问这是正常现象吗?
那你这个DMA都去commit当然不会出于Ready的状态,thread是需要时间切换DMA buffer的。
只要满足状态机的条件跳转到ZLP状态,都会commit