十二月 05, 2021
07:19 PM
你好我在做FPGA向FX3写数据的过程中遇到了一些问题想要明确一下:
(缓冲区的大小设置为16kB,数据总线位宽为32位,水印值为6)
1、如果以16kB为单位写,这时候pktend_n信号是否可以一直处于高电平状态,并且我在control center中看到正确的数据。
2、以1024B为单位写,按照已解决:FX3 标记极性和使用部分标记 - 英飞凌开发人员社区 (infineon.com)
所述1024B应该需要再发一个零数据包(ZLP)来包装缓冲区,为此我做了以下几种测试
- 第一种是在slwr_n拉高前的最后一个周期,将pktend_n信号拉低一个周期,按照对如果理解没错的话这是以 短数据包 的形式写入数据,并且观察到在pktend_n信号置位三个周期后flaga信号会拉低一段时间,按照我的理解flaga指示的是缓冲区的状态,我可以肯定这里缓冲区并没有满,想请问flaga是否还具有其他的作用?1024B是否也可以按照短数据包的形式发送?
- 第二种是在slwr_n拉高以后,再将pktend_n信号拉低一个周期,按照对AN65974的理解,这里应该为发送1024B之后再发送一个零数据包(ZLP)来包装缓冲区,这里如果我没有延迟紧跟着将pktend_n信号拉低一个周期,则在control center中就会出现Error Code:997,但是我将pktend_n信号延迟一个周期再拉低,则可以看到正确数据,请问这是为什么?
几种情况,如图所示
已解决! 转到解答。
标签
1 解答
十二月 06, 2021
09:57 PM
- 第一种是在slwr_n拉高前的最后一个周期,将pktend_n信号拉低一个周期,按照对如果理解没错的话这是以 短数据包 的形式写入数据,并且观察到在pktend_n信号置位三个周期后flaga信号会拉低一段时间,按照我的理解flaga指示的是缓冲区的状态,我可以肯定这里缓冲区并没有满,想请问flaga是否还具有其他的作用?1024B是否也可以按照短数据包的形式发送?
=>Flaga的功能在GPIF designer中是可配的,可以配置成相应的第1234个thread的DMA_Ready或者DMA_WaterMark, 或者当前thread的DMA_Ready DMA_WaterMark,要看你配的是哪种。
- 第二种是在slwr_n拉高以后,再将pktend_n信号拉低一个周期,按照对AN65974的理解,这里应该为发送1024B之后再发送一个零数据包(ZLP)来包装缓冲区,这里如果我没有延迟紧跟着将pktend_n信号拉低一个周期,则在control center中就会出现Error Code:997,但是我将pktend_n信号延迟一个周期再拉低,则可以看到正确数据,请问这是为什么?
=>你可以打开我们的GPIF designer, 假设你用的是sync slave fifo这个状态机:
从图中可以看出,write状态是无法直接转到ZLP状态进行commit的,必须要先通过(PKEND&SLWR)|SLCS的状态转回到idle状态,才可以通过SLWR&!SLCS&!PKEND&SLRD的状态转到ZLP状态进行commit。
3 回复数