学fpga(hls之vivado、zynq和petalinux)

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

        很多同学学习了fpga,也用到xilinx的vivado,当然也用到了zynq。可是没有弄清楚这里面之间的关系,趁着这个机会正好可以好好梳理一下。

1、vivado

        vivado是开发fpga的工具。一般人谈到vivado都是说用它来开发数字ip,不管是进行功能验证,还是功能开发,大体都是这个思路。

2、zynq

        zynq是arm和fpga的结合体。xilinx设计zynq的目的,一方面是想利用arm来获取现有的linux软件生态果实,另外一方面又可以利用fpga搭建个性化的应用场景,一举两得。

3、vivado sdk

        除了fpga之外,vivado还提供了sdk软件。这个软件主要就是提供各种裸机系统的开发和验证,当然ip的验证也是少不了的。等裸机系统验证没问题之后,就可以port到linux了。

4、vivado hls

        一般熟悉硬件开发的同学都是用vivado开发ip,但是对于软件开发的同学来说,他们对数字电路未必那么熟悉。所以Xilinx的同学希望软件同学也可以用hls来开发对应的ip内核。这部分的开发工作和vivado并不冲突,因为vivado hls更侧重于算法的实现和优化,而vivado侧重于硬件协议的开发。一个block design里面既有hls的ip,也有vivado的ip,这都是很正常的事情。不过有一点需要注意下,vivado的ip软件驱动需要自己写,而hls的软件驱动可以自动生成。

5、petalinux

        petalinux是xilinx给zynq等soc提供的linux平台,一般需要借助于ubuntu来开发底层软件,并不能完全用vivado sdk来开发。不过用xilinx做上层app的开发倒是可以的,vivado sdk本身也支持交叉编译、makefile和linkfile的编写。涉及到uboot、kernel、fs和device tree的部分,最好还是在ubuntu下面来完成。

7、裸机系统开发的思路

        如果把zynq当然裸机使用也是可以的。通常先用vivado或者vivado hls构建好ip之后,再设计block design,将个性ip嵌入在block design里面。等到block design设计结束后,就可以用vivado sdk开发软件程序了。

8、linux开发的思路

        除了裸机系统外,另外一种开发方法就是linux开发了。通常,用vivado和vivado hls构建好ip之后,再搭建block design。这部分和裸机开发一样。等block design完成之后,下面就是用petalinux工具创建完整的linux bsp平台(包含linux启动的一切必要代码)。在bsp全部构建好之后,就可以用vivado sdk或者ubuntu开发上层程序了,主要是linux程序。

9、异构软件平台开发

        除了纯裸机系统和linux开发之外,鉴于zynq有双核arm,还可以构建rtos+linux的开发架构。这部分的工作主要是软件设计的更改,和ip无关。至于ip在裸机系统里面被调用,还是在linux里面被调用,这个也看需求了。不过,这种模式比较适合那些需要复用linux平台和实时运动控制的场合,有点类似于arm+mpu的场景,整体来说也是非常合适的,再加上ip做硬件加速、拓展,只要设计得当,效果应该是非常不错的。

猜你喜欢

转载自blog.csdn.net/feixiaoxing/article/details/124679757