tag 标签: fpga,dsp,交互

相关博文
  • 热度 9
    2015-4-9 11:46
    2162 次阅读|
    2 个评论
    最近遇到一个 dsp 和 fpga 交互的问题,虽然问题已经解决,但是原因还是没弄太懂,先挖一个坑,以后再填,或者看过这篇博文知道的答案的,希望能指教一二。   问题是这样的: dsp 通过 emif 外挂了三个外设: sdram , flash , fpga , dsp 和 fpga 也是通过 emif 进行交互,其中 dsp 是主, fpga 为从处理器,控制 emif 交互的有 CE , AOE , AWE 三根控制线,和 16 跟地址线, 32 根数据线。画个图,好理解一点   那么问题来了,如果 fpga 先把程序下进去的时候, dsp 下程序时刚好下到 sdram 空间时就会报错,如果 fpga 不下程序, dsp 直接下进去程序就没问题。。 观察到的现象:用 fpga 的 signaltap 观察这些交互线,发现 dsp 发数和收数时, AOE 也是大部分为低的,这就不正常了,因为低是有效的。。 这是出现这种错误的一个简单的测试模块,其中AOE 是控制 dsp 读数的(低有效),,但是程序里面没有测试 dsp 读数,只是用 AWE 测试了 dsp 向 fpga 写数。 AOE 没有管,只是在 qsf 中绑定了管脚。。。但是在下载 dsp 时, AOE 未低仍然是不正常的状态对于 dsp 来说   所以最终怀疑到是 fpga 的综合时把 AOE 自动综合为低了,然后改程序把 AOE 接到一个寄存器上,初始化为高,上面出现的问题就解决了。 但是观察 rtl 图综合器是把 AOE 信号线优化掉了的。。。那么此时外部 dsp 管脚接到 AOE 是接到 fpga 哪里去了呢?用 signaltap 观察,为什么在 99% 的情况下为低呢?   (2)另外在这个问题的基础上还测试了一个正确的程序,是不会出现这个问题的。而其 AOE 管脚的 rtl 图是这样的 Dsp 的 AOE 管脚信号直接进来是接 FPGA 的一个或门的,就不会出现这种问题,为什么了? 反正就是当 dsp 没有通过 emif 进行读写操作时, dps 的三个控制 emif 的管脚不能为低。 我认为出错原因可能是 dsp 下载程序到 sdram 或者进行传输等操作时,会检测 dsp 这三个管脚,如果管脚有效,当然 dsp 就认为此时 EMIF 为忙状态。此时再进行 emif 操作当然会报错。。。。