EZ-USB-FX3 slavefifo调试

本文详细记录了使用FX3 USB 3.0进行SlaveFIFO传输的调试过程,包括从下载SDK、创建工程、硬件连接、程序下载到遇到的死锁、时钟错误、水印设置不当等问题,以及如何逐一解决这些问题,最终实现稳定传输。调试过程中强调了实时查看GPIF状态和理解状态转换图的重要性。
摘要由CSDN通过智能技术生成

最近使用fx3-usb-3.0调试slave fifo的传输,期间遇到许多难以理解的问题。在这里分享给大家,希望可以少走一些弯路,我自己是这样走过来的。

1,首先去官网下载原始的参考设计,并安装所提供的SDK软件:FX3SDKSetup_1.3.4.exe

 2,接着把参考设计文档AN65974阅读一遍,分别创建新的SDK工程和FPGA工程。如果使用的原厂的开发板,那么可以按照文档提示,可以很顺畅的跑完整过测试。否则需要匹配自己的硬件,做针对性的更改和移植,而我走的是后一条路,于是开始了漫长的调试之路。

 

3,创建完SDK和FPGA工程之后,我认为需要把串口打通,再添加一个指示灯,这样便于观察调试信息。于是我做了如下更改。

 

4,编译完毕之后,就是使用control center进行下载调试,下载到FX3 RAM里面去,程序就会自动启动。需要注意把电路板上的boot模式设置为RAM模式,这样才可以看到如下的界面。

 

5,然后下载编译好的FPGA升级文件,去在线查看3014的FLAG标志,很遗憾的是发现没有任何改变,一动不动。通过打印可以看到总传输4次就死掉了,后来知道是因为U2P的buffer数目刚好设置为4个。如下:

 

6,经过一轮排查之后,发现是FPGA的输出时钟引脚不正确,把K15弄错成了L15。改正之后FLAG标志信号终于跳动起来了,但是不论是stream in还是stream out还是无法正常跑起来,如上面的图片所示stream out发送四次就死掉了。于是使用gpif II designer查看配置,发现原厂的demo和自己的引脚顺序不一样,同时自己的板子少了许多连线,例如没有oe使能脚,没有rd管脚,没有flagd管脚。于是进行如下修改,这里反复试错许多次,不断尝试。如下:

 7,拷贝新的配置文件cyfxgpif2config.h到工程目录,编译后调试,发现系统老是容易卡死,只能传输一次,类似于FLAG标志信号没有正常运转起来。后来在网上看到可以实时查看gpif的状态函数,添加之后可以看到实时情况,如下:

8,从打印信息就可以知道目前处于什么状态,以及为什么状态没有改变,其状态定义以及状态转换图是这样定义的。

 

 

9,经过一番鼓捣之后,使用BULT OUT可以传输数据了,但是使用STREAM OUT就会卡死。原来应该把DMA模式设置为AUTO模式,即注释掉MANNUAL宏定义,原因是只有跨过CPU的干预效率才会足以支持高效传输。

 

10,再次编译下载后,stream out可以正常跑起来,但是GPIF模块显示读错误,后来才知道是watermark设置不正确引起的。

 

11,于是专门改用不同的watermark的数值去测试,发现刚好为5的时候,数据传输正常。并且得到一个经验就是这个slavefifo允许读空,也不允许里面有残留的数据内容,如果有残留那么FX3就会死机。例如本本次测试中将水印值设置为4的时候就是读空错误,6的时候就死机了FLAG标志完全错乱。同时将FPGA里面的stream out状态机条件修正一下,运行会更加稳定,在USB2.0接口下面速率可以达到40MB/s。如下:

 

 

 

总结:要做成功一件事情需要花费许多精力,需要克服许多问题,需要走许多弯路。要把一件事情弄死只要干一次就足够了。现在把调试中的错误进行归类:

一类错误
1,将slave fifo的时钟输入管脚接错
2,忽视了和原厂demo板的硬件差异,缺少许多IO
二类错误
3,不了解水印值设置偏大之后会引起FX3死机,以至于带偏了节奏。
4,不会查看GPIF的状态转换图,不知道程序的运行机制,如黑盒子一般。
三类错误
1,原以为FPGA输出的时钟频率偏大;
2,原以为时钟输出额相位不正确;
3,原以为FPGA的逻辑代码有错误;
4,原以为FX3的测试工具没有使用正确

 

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
### 回答1: EZ-USB FX3是Cypress公司推出的高性能USB 3.0控制器,可广泛应用于视频采集、音频录制、医疗成像、工业自动化等领域。EZ-USB FX3中文手册是指其官方提供的EZ-USB FX3相关技术文档,其包含了产品的功能、硬件架构、软件设计方法、指令集以及应用案例等方面的详细描述。该手册不仅方便开发者理解和使用EZ-USB FX3,同时也提供了完整的技术支持文档供用户参考。 基本上,EZ-USB FX3中文手册分为以下几个部分:概述、产品描述、硬件设计、软件设计和附录。概述主要介绍了EZ-USB FX3 USB3.0控制器的一些特性及性能指标。产品描述则详细描述了EZ-USB FX3的架构、接口、功能以及本地和远程的软件支持。硬件设计则介绍了EZ-USB FX3的硬件元器件及其功能,以及如何设计电路板和外围电路。软件设计则讲解了如何使用EZ-USB FX3软件组件和驱动程序来编写相应的设备控制软件,并给出了常见的设计案例和提示。附录则包括了USB协议、数据包格式、数据传输模式和EZ-USB FX3的指令集。 总之,EZ-USB FX3中文手册是开发者进行EZ-USB FX3开发的重要参考资料,其丰富的技术文档和应用案例,不仅方便理解和掌握具体技术,也为EZ-USB FX3的使用和开发提供了强有力的技术支持。 ### 回答2: EZ-USB FX3是Cypress公司生产的一款USB3.0控制器芯片,它被广泛地应用于PC外围设备、工业控制、医疗设备、视频采集等领域。EZ-USB FX3中文手册是介绍这个芯片的技术手册,主要包括芯片的硬件结构、软件开发环境、通信协议、应用案例等方面的内容。通过阅读这个手册,人们可以了解到EZ-USB FX3芯片的主要性能和特点,以及如何使用这款芯片来开发USB3.0设备。同时,手册还提供了详细的软件开发说明和代码示例,方便开发人员快速上手开发工作,提高开发效率。此外,手册还介绍了芯片的系统应用案例,包括USB3.0摄像头、USB3.0数据采集卡、USB3.0外置硬盘等。这些案例可以为用户提供参考和借鉴,帮助用户快速了解如何使用EZ-USB FX3芯片来实现自己的USB3.0应用。总之,EZ-USB FX3中文手册是一本非常实用的技术手册,对于开发USB3.0设备的工程师和研究人员来说,是必不可少的参考资料。 ### 回答3: EZ-USB FX3是一种USB3.0外设控制器芯片,可用于设计和制造具有高速数据传输的USB设备。EZ-USB FX3中文手册详细介绍了这款芯片的基本原理、硬件设计、软件编程等内容,对于开发者来说是非常有价值的参考资料。 手册介绍了使用EZ-USB FX3开发USB设备所需的基本工具和建议,并详细讲述了芯片的硬件设计细节,例如如何选择封装和引脚,如何连接外部器件,以及如何配置与芯片相连接的主机接口等。手册还说明了如何使用EZ-USB FX3软件开发套件,以及如何编写C、C++和Python等编程语言的应用程序来控制芯片。 手册的中文版是为中国市场专门翻译的,对于不熟悉英文的开发者来说非常方便。手册的每章内容都非常详细,同时还配有示意图和代码示例,使得开发者更容易理解和掌握所有的技巧和技术。 总之,EZ-USB FX3中文手册是一本非常实用的参考资料,适用于所有需要设计和制造USB3.0外设的开发者。无论是对于初学者还是有经验的开发者,手册都可以提供全面准确的指导和帮助。
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值