zynq开发遇到的相关问题

来源:互联网 发布:mac word转pdf 超链接 编辑:程序博客网 时间:2024/06/05 12:02

问题1:使用第三方平台提供的开发板,核心版未提供管教说明,而IP开发时,需要用外部复位,因此无法分管脚。

解决方法: 1、用VIO,VIO可以固定初始值

                   2、自己做一个上电复位模块,reg初始值固定时0或者1,在始终稳定后,计数达到特定值后,拉高或者拉低(根据复位信号极性确定),从而实现复位


问题2: 在某些自己定制的IP中,添加了VIO或者xilinx提供的IP,但是在IP添加到总工程中时,综合时,被告知缺少文件。

解决方案: 1、以vio为例,假如,我自己设计的ip名字叫做myip,myip中有vio或者ila,那么我在myip中首先需要添加这两个ip的xci文件。

                         其次,在总工程中也添加ila和vio的xci文件,双保险,综合一定没有问题。

问题3: VDMA的出现status异常

解决方案: 1、读取vmdaSR的状态值,初步判断时由什么造成其异常,以我的工程为例,我读到0x1c000,很明显,每一行的计数超过了hsize设定的值,因此我判断时tlast没有收到。虽然VMDA的sync全部配置称none,且没有Enable同步,但是VDMA还是需要tlast信号,因此我在自己的ip接口出加了tlast信号,从而使IP正常。


问题4: VDMA取数据异常

       硬件配置: VDMA配置未全自由模式,读写通道全部配置称none对齐模式,且都配置称master

       软件配置: 配置称单帧模式,不循环。

       异常: 取数据有问题。 我设置的VDMA从DDR取数据的起始地址是0x22000000,并将0x22000000附近地址的内容全部设定为0x55555555,我通过vivado抓取AXImater口读通道的数据,地址通道第一个取的地址是0x22000000,达到预期,但是data通道的数据不对,不是0x55555555,并且去了多个值后,才是0x55555555。我一直怀疑时系统未配置好,不是VDMA的问题,因为VDMA取的地址时正确的,只是回的数据有问题。找了好久没有找到解决之道。后来没办法,在VDMA中加入同步信号,自己的IP也产生同步信号给VDMA,后期一切正常。目前问题虽然绕过去了,但是还未解决正在分析。

       后续实验分析:怀疑是一帧结束后,加设我自己的IP已经停止要数据了,但是中间路径上的fifo依然要数据,而VDMA会单帧循环向外界灌数据,因此会继续向fifo写数据知道fifo满了,整个系统才会不动。后面我复位一下整个系统,但是PS AXI总线的outstanding状态不会改变,因此即使我重新从0x22000000开始发数据,收到的数据也不是0x22000000. 而是将前面的outstanding的数据补齐后再发送0x22000000地址内的内容。

     事情总结是: 1、凡是做事,一开始就应该用最完善的方法,而不是简陋的方法,会留下很多坑。

                            2、踩在巨人的肩膀上会省很多事,可以借鉴别人的设计和软件环境,配置和软件都一样,先搭建一套平台出来。这样效率会比从0开始高很多。











原创粉丝点击