学fpga(hls之系统开发)

Posted 费晓行

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学fpga(hls之系统开发)相关的知识,希望对你有一定的参考价值。

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        对于zynq这样的开发平台,开发方法很多。你可以把它当作fpga,也可以当成是arm,当然也可以当成两者的结合体。此外,因为zynq里面集成了多核a9、a53,所以系统开发的模式就更多了,今天可以好好了解下。不过,因为最近芯片危机,zynq的供应是一个问题,这方面也要做一个好好的考虑。

1、纯pga开发

        这个比较简单,就是把zynq当成纯fpga来开发。

2、纯arm开发

        所谓的纯arm开发,就是忽略zynq中的fpga,并且只使用一个core核,比如一个a9。通过创建一个block design,添加zynq就可以实现这个目标。

3、arm+fpga+裸机系统开发

        本身vivado给用户准备了很多的第三方IP,简单的有gpio、uart、spi这些,复杂的有ethernet mac,大家可以根据自己的需求灵活添加。注意,这里系统没有采用任何的操作系统,基本上就是一个裸循环的形式。当然,这里也仅仅使用一个arm核。

4、arm+fpga+freertos

        和3相比,除了把逻辑系统替换成freertos,其他都是一样的。

5、amp+fpga

        除了正常的rtos之外,zynq还支持amp开发。所谓的amp,就是非对称多处理器开发。比如说,对于zynq双核a9,其中一个core负责和外面的ethernet、串口通信,一个core负责运动控制,这都是可以的。此时,fpga可以帮助core减轻一步分负担,比如负责外面数据的收发和预处理,类似于ad、da这种。

注:

        core0和core1的bsp代码是一样的,但是两者用USE_AMP做了区分,详细的流程可以参考https://blog.csdn.net/lichen_6398/article/details/81660764

6、arm+fpga+linux

        和前面的处理方法相比,这种处理方法也是比较通用的一种方法,它的最大优势就是可以复用linux现有的开源软件平台。当然,构建起来也稍微复杂一起,不过因为有了petalinux这些工具,所以fsbl、bit、uboot、linux kernel、file system这些软件包的构建只要按照流程来一般问题不大。如果希望利用xilinx sdk开发linux应用程序也是可以的。

  

7、arm+fpga+linux+rtos

        到目前为止,这或许是最复杂的一种使用方式了。这种情况下,两个arm core,一般一个跑rtos,一个跑linux,当然这中间也使用到了fpga。fpga可以给mcu作为外设采集信息数据使用,也可以给linux作为算法加速使用,这取决于具体的使用场景。这种使用方法要求使用方自己对os、fpga、linux有深刻的理解,一般要求较高。

注:

        参见链接https://blog.csdn.net/weixin_41922484/article/details/103663289

8、其他

        目前芯片危机下,其实zynq的供应是个很大的问题。方案设计出来了,但是不能及时生产出来也是不足取的。所以在设计zynq的时候,最好有一个备选的方案。比如可以考虑利用分列式的arm+fpga来进行开发板的设计,这些都是可以考虑的。此外,可以观察下,除了xilinx之外,其他fpga有没有类似的方案可以提供。总之一句话,千万不能吊在一棵树上。

开发者涨薪指南 48位大咖的思考法则、工作方式、逻辑体系

以上是关于学fpga(hls之系统开发)的主要内容,如果未能解决你的问题,请参考以下文章

学fpga(hls之BlockDesign)

学fpga(hls之花式led配置)

学fpga(hls之平均值算法编写)

学fpga(hls之unroll的使用)

学fpga(hls之驱动代码)

学fpga(hls之vivadozynq和petalinux)