荐读解惑 | 求求你,不要胡乱“归属”ZYNQ,其实并不是所谓的FPGA!
今天给大侠带来求求你,不要胡乱“归属”ZYNQ,其实并不是所谓的FPGA!话不多说,上货。
最近真是太多人来问我学FPGA,这都不是重点,重点是上来就要学ZYNQ。我听这口气,看来学了一段时间了,然后简单的聊了几句,发现是个小白,HDL语言都没整明白,就是想要学点高端的。这里并没有看不起的意思,这里只是想要说明一点,要清楚的抓准自己的定位,看清需求,然后选择性学习。
这里就简单的和大家聊聊为什么要说不要胡乱“归属”ZYNQ,其实并不是所谓的FPGA!
深入接触过ZYNQ的大侠们应该都知道,ZYNQ并不能说是一个嵌入ARM核的FPGA。从它的启动过程就可以发现,绝对是ARM主导的,因此称它为以高性能FPGA为外设的双核ARM或许更为合适。
举个例子,ZYNQ-7000系列,ZYNQ-7000包括PS和PL两部分,其中你可以只使用PS部分,而不用PL部分,这样可以认为你在单纯的使用一个ARM Cortex A9 MPore芯片。
如果只用PS部分,简单的设计流程为:先在PlanAhead里面建立工程,然后在这个工程中建立一个处理器系统工程,建好后,会自动打开XPS。在XPS中,配置处理器系统,也可以直接调用模板,配置好以后,重新回到PlanAhead中,创建顶层的HDL文件,然后整个硬件平台就搭建完了。
将这个硬件平台导出到SDK中,就可以在SDK中利用这个硬件平台进行应用开发了。这样看来,不用PL部分,也即FPGA部分并没有使用,可以说是与FPGA半毛钱关系没有。
但是实际上更多情况下,我们会将PS和PL部分联合使用,不然也就失去了使用ZYNQ芯片的意义。但是,再次反转,一般刚开始学习ZYNQ,为了更好的理解和学习,会先讲只使用PS部分的例子,这样可以更快的掌握工具的使用和开发流程。
除此之外,你也可以从ZYNQ的优劣势看出来一些端倪,以下是ZYNQ优劣势的一些介绍,我们先来看看。
优势部分:
1、开发环境的大集成。
从HLS到Vivado到SDK,对于一个不熟悉FPGA的嵌入式软件工程师来说,完全可以把它当做简单的双核ARM,使用例程中搭建好的硬件环境,在SDK中开发。软件调试后发现某些算法太慢,速度上不去,可以用HLS把这部分进行优化,由工具直接生成电路,甩到Vivado中。一般情况下快个一二十倍是没问题的。所以,整个开发可以完全在Xilinx自家的开发环境里切换。
2、xi4标准总线互联。
这部分涉及内容太多,暂不介绍。
3、各种免费的ip随便用。
不懂硬件,没关系,连线即可完成设计。什么,连线也不会,那把需要哪些模块放进去,让软件帮自行完成!
4、PS和PL两部分共用内存。
加个免费的DMA、VDMA,数据交换秒秒钟的事情。
5、降低了软件开发的难度。
不用费很大的力气就能用上ARM,而且Xilinx在自己的工具中对IP驱动以及Linux内核等等做好了软件支持,一站式起Linux,方便地融入ARM的软件生态系统。传统方式用 ARM 的 RTL级的 IP 的话,工作量巨大,而且性能还上不去。
6、集成度高、通讯更简便。
省一个ARM的面积,省掉通讯总线的资源消耗,省掉CPU与FPGA之间的通讯总线,通讯速度更快,信息传递结构更简单。一般来说比FPGA CPU便宜,具体实际应用看情况,也得看厂商、分销商。
劣势部分:
FPGA可用管脚数量下降,可用资源数不如同等面积FPGA,功耗远大于同等处理器的CPU,开发人员要求高,开发成本高等等。
从上面的优劣势,大家也能看出来,ZYNQ真的不是所谓的FPGA,现在所说的FPGA开发,是基于底层驱动,用HDL硬件描述语言做开发,而ZYNQ更多的是集成、调用,ZYNQ之所以高端,是因为开发人员懂得不仅仅是FPGA,还要懂Linux的开发,Linux的话说白了就是应用层面的开发,其实已经脱离了底层,不需要你再去研究什么电路原理图什么的了。
之前也提到过,为什么不推荐零基础或者初学者直接学ZYNQ,这里就不过多讨论了,至于FPGA初学者怎么学,这里也不多说,超链接一篇实用性的文章,之前发的,后续还会再整理更新,仅供各位参考。
新谈:为什么你觉得FPGA难学?如何入门?
以上为本人一些拙见,仅供参考,希望对各位大侠学习有点帮助。
完
后续会持续更新,带来Vivado、 ISE、Quartus II 、candence等安装相关设计教程,学习资源、项目资源、好文推荐等,希望大侠持续关注。
江湖偌大,继续闯荡,愿大侠一切安好,有缘再见!