基于ARM联合ZYNQ的设计小结
1、硬件设计
硬件设计就是使用PS的自带硬核,外接其他可以连接AXI的IP核,构成一个自定义的硬件平台。如果简单理解,可以把这些操作统称为底层。这部分的设计还是比较方便的。vivoda中有丰富的可以利用的IP核来使用。在使用官方的IP核时有一种比较轻松的感觉,因为官方的IP是没有问题的(至少目前是没有遇到过)。但是,对于自定义的AXI的IP设计,则是比较困难的。由于需要仿真,每次测试都需要完整地走完整个流程。有ZYNQ的设计的测试文件也不会编写呀。这使得一次验证的成本变得非常高。前面一个设计我验证了两次就不想再验证了。尽管发现了一个小问题,也不愿意去尝试能否成功。这使得设计的复杂性受到限制。
纯FPGA的编写则是另外的一套体系,直接通过顶层文件挂载就行。这可以在FPGA环境验证通过后在挂在顶层,问题不会很突出。
2、软件设计
软件设计主要是根据提供的系统库中的函数调用来提高设计的可靠性。自定义的函数也是可以的(带参数的函数尝试过,但是失败了,主要对这个编译器的声明还是不是很了解)。设计基本上和C语言差不多。如果只是想用简单C语言来制作硬件的测试的话,这个部分还是比较好理解的。
3、配合设计
两个部分配合使用的话,需要考虑到PS对PL部分的通信,也就是AXI的联系问题。一般采用AXI设计的软件是可以通过地址来读取和写入数据的。还有问题就是硬件需要明确位宽和从地址,方便后面的调用。
4、总结
ZYNQ的设计还是需要学习很多设计的知识的。FPGA和ARM配合的灵活性还是比较高的。对于某个设计,最好分多个小工程依次验证。宁可多做几次,也不要一次加入过多的未知数。否则每次检测错误都需要走一遍,有多个错误时可能顾此失彼,导致不断在调试中而失败。考虑到vivado的效率,每次实验都是一次巨大的时间投入。