完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
我正在开发一个 UVC 应用程序,它使用 32 位总线 GPIF 状态机来管理从 FPGA 向 USB 主机发送数据。 我们目前已将其设置为 FPGA 将向 FX3 写入与精确缓冲区大小相等的字节数。 我们希望更新这一点,以便 FPGA 一直写入直到它看到 WATERMARK DMA 标志置位,然后它停止发送数据。
目前FX3 FW设置插槽水印如下。 我们发现,如果值为 2,则在主写入状态 (WRITE_0) 之后需要 1 个额外的写入状态 (图中的 DECIDE_0)。 CyU3PGpifSocketConfigure( CY_FX_VID_THREAD_0, /* Thread to configure */ CY_FX_VIDEO_PROD_SOCKET_0, /* Socket to associate with this thread */ 2 ,/* Watermark value in 4-byte words. */ CyFalse, /* Whether watermark set */ 1 /* Burst size (X * 2 words). Affects how often flags are updated */);为了更新 FX3 并允许 FPGA 在看到 WATERMARK 标志置位时停止,我们需要考虑 2 个因素: (1)写入操作使缓冲区内容达到设定的水印级别和 WATERMARK 标志外部置位之间存在延迟。 由于上述值为 2,并且需要 GPIF 中 1 个额外的写入状态,我认为这个值是 1,但我不确定。 (2) FPGA 需要 WATERMARK 标志来提前声明一定数量的周期,以便 FX3 缓冲区有足够的空间容纳所有正在传输的数据。 该值取决于 FX3 和 FPGA 之间的步骤。 为了确定上面(1)的值,我们查看了 AN65974 表 4,其中列出了达到水印级别时以及实际外部断言时的延迟。 我们正在查看“Thread_n_DMA_Watermark”,当我们查看跨越水印级别的写入需要多长时间才能导致外部 WATERMARK 标志发生变化时,它显示“取决于水印级别”。 我们如何确定这个值? 缓冲区写入超过水印级别和 WATERMARK 标志置位之间的周期延迟是多少? 为了解释上述(1)和(2),我们还需要将这些状态纳入我们的状态机,以便仍然捕获所有飞行中数据。 我们可以将 GPIF 状态的“重复计数”用于此目的吗? 我的理解是,这个值要求状态重复一定次数,直到评估任何退出转换。 这样,如果我们确定 (1) 是 X 且 (2) 是 Y,则重复计数将为 X + Y?我附上了一张如何定义写入状态的图片。 |
|
相关推荐
1个回答
|
|
|
针对您在使用FX3 GPIF DMA时遇到的水印标志延迟和重复计数问题,以下分步骤分析并提供优化建议: 1. 水印标志(WATERMARK)延迟的根本原因
2. 关键参数解析
3. 优化水印检测逻辑状态机优化(伪代码)
调整水印值4. DMA和GPIF配置建议
5. FPGA端逻辑调整
6. 调试与验证
总结通过增大水印值补偿延迟、优化状态机跳转逻辑、校准Repeat Count与FPGA突发传输长度,可有效消除额外写入周期。建议将水印值设为3-4,并在GPIF状态机的 |
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2353 浏览 0 评论
1425 浏览 0 评论
1874 浏览 0 评论
CYUSB3014烧录失败Cypress Benicia USB Boot Device
7868 浏览 1 评论
11294 浏览 0 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 19:41 , Processed in 0.444231 second(s), Total 42, Slave 35 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1895