本人研一,是专攻FPGA还是zynq,FPGA和ARM可以两手抓嘛?
我从2017年正式开始玩zynq;根据我的求学经验和从业经验,给你一些建议吧;玩ZYNQ一定是FPGA和ARM两手抓!通过玩这个片子,你会对计算机体系结构有一个清晰明了的理解;你在实现自己的系统和debug的时候,会发现什么叫理论指导实践,实践与理论统一,芯片手册的重要性,开源社区的伟大,github同性交友社区的无敌!
先来点背景知识吧:
ZYNQ7000这个片子有很久的历史了,没记错的话2013-2014年就有了,大规模量产是2014末期吧;经典器件xc7z20-clg484–1-i,双核A9加FPGA;器件的手册ug585
新一点的zynqmp,经典器件xczu3eg-sfvc784-1-i,4核A53,双核R5加一个资源频率更强的FPGA;大规模在市面上见到是2017年吧;器件的手册ug1085
集成开发工具vitis2022.2,vivado2022.2
集成科研开发工具 vitis HLS 2022.2
嵌入式Linux开发工具:petalinux 2022.2
脱离xilinx集成的开发工具后,你一定会发现一个超级牛逼的Linux开发工具:Yocto !!!
以下建议基础部分主要讲方法,后面的建议主要是给你一些思路;当你水平上来后,需要带着问题在项目中不断学习吧;祝你变得更强,不再迷惘;
建议一:基于ZYNQ进行学习,你需要一块靠谱的开发版,看到你读研去了,强烈推荐ZCU102,或者ZC706;如果条件有限,强推zedboard/mini-zed/pynq-z2,ultra96V2;如果实在条件有限,淘宝Alinx买一块他们家的开发板吧
建议二:根据开发板的提供的手册,把开发板led流水灯点亮,然后一点一点地完成开发板厂商提供的学习资料,尽量做完所有能找到的实验;在这个过程中,熟悉vitis + vivado的设计方法,以及bare-metal C代码的编写和调试;在这里你需要明确boot.bin这个文件到底是怎么生成的;zynq这个器件的启动流程,启动方式的控制;未来工作后你会涉及cyber-security,multi-boot,golden-binaries
建议三:熟读zynq芯片手册,熟练掌握基本的外设控制器,做完外设控制器的实验;学会使用xilinx HAL库操作SPI,I2C等控制器读写adc,eeprom;在这个过程中回味下,HAL库的底层代码逻辑是不是都是用Xil_In32,Xil_Out32函数,采用基地址加寄存器偏移量的策略实现了操作外设控制器的所有HAL函数;由此及彼,uboot,Linux的driver是不是也是这样一步步封装起来的,只不过uboot和Linux有自己的设备模型,得按照各自的框架把函数填完
建议四:FPGA部分需要你学习verilog HDL,以及做很多个点灯,逻辑实验。这个真的很花心思和时间;在这个过程中我想你已经建立起数字电路的基本概念了;LUT,BRAM,FF,DSP slice是什么;vivado设计中什么是IO constraints,Timing constraints,什么是Isolation Design Flow,什么是DRC,VIV;什么是综合和实现;
建议五:以上都是独立的玩PS和PL,现在要把PS和PL连起来了;你需要学习AXI4,AXI4-Lite,AXI-Steam;哪些是memory mapped interface;PL作为slave 外设控制如何被PS访问到,被改变寄存器的值;你要自己设计实验,比如一个频率可变的led外设控制器,PS设置完寄存器后,自动按照频率完成点灯;
建议六:FPGA的逻辑部分如何作为master去ps的内存里主动拿数据;AXI- DMA 或者AXI datamover;
建议七:FPGA部分可以实现两个RISC-V 软核处理器micro blaze,如何实现ring;如何让PS中的处理器和软核处理器实现inter-processor 通讯
建议八:如何让PS的处理器把Linux跑起来;如何让Linux和MB之间实现通讯;对于更复杂的系统架构,软硬件协同设计;zynqmp的ps有2种不同架构的处理器,A53和R5,再加上PL的两个MB,这样有3种型号,共计8个处理器了,4个MPU,4个MCU;可以尝试:a53跑Linux,R5进入split模式,分别跑两个FreeRTOS,一个MB跑FreeRTOS,另一个MB纯裸机,不跑操作系统;这样整个系统是SMP+AMP+AMP;如何搭建这样的系统?如何划分内存?如何实现核间IPC通讯?如何保证各个处理器的启动顺序,如何让Linux与其他处理器通讯上?
建议九:金刚经约:应无所住,而生其心;凡所有相,皆是虚妄,若见诸相非相,即见如来
毕业后进入工业自动化行业,通信行业,汽车行业的头部企业做研发;公司采用ZYNQ作为核心处理器的控制系统产品,自己通过1-2年的项目历练,完成建议八中提到的系统是顺理成章的
手机码字,希望能帮到你