这周fpga这边和dsp联调,fpga这边算法的计算结果需要送到dsp计算,之前由于接口没打通,这条路一直都没测过,只是单纯的看了下chipscope出来的数据,觉得差不多就一直没管它了,因为仿真时的数据是可以完成算法功能的,所以以为没有问题。但是接到dsp之后,发现fpga过来的数据不稳定,跳变很厉害。然后再次用chipscope看,每一帧图计算结果都不一样,而我的输入测试数据是完全一样的。仿真来看,但是数据不变,但是仿真数据与chipscope数据对不上。也找不到代码有什么错误,怀疑是时序跑不上去,但是降低频率后依然如此,只好一步一步倒退回去看每个节点的数据流,最后发现block
ram数据读写不稳定,开始怀疑是组合逻辑产生的控制信号有毛刺造成读写不稳定,具体没看到,但是之后把组合逻辑信号全部打一拍然后去控制,不稳定的问题消失了。
总结来看,存在的问题有1、没有一个完整的流程,没有想办法前期就去测试 2、代码风格的问题,感觉是摸着石头过河,没有人教。3、写代码不要求快、可能后期的调试时间比写代码时间长得多,代码尽量加注释。
后面的问题,CORDIC核的时钟跑不上去,但文档的时钟频率是满足要求的,不知道为什么,换成pipeline有太多级了,不是很好的方法。