小菜鸟的 Zynq 学习经验分享~
资料来源:黑金 Zynq7035 开发板配套资料,完全适合于 Zynq 学习。
获取方式:【51爱电子】回复【Zynq7000】即可获取资料链接!本资料仅供学习使用,切勿商用。
另外四个是关于 Altera FPGA 的学习资料。
其实很多东西都是相通的,要学会举一反三。
搭建开发环境
1、Windows 下安装 Vivado
Vivado 是 Xilinx FPGA 开发的主要软件(2019年10月,赛灵思推出了Vitis)。
下载软件包后解压缩,安装过程较为简单,自行探索。
问:教程文档里不是有安装步骤吗?
答:这不就是让你们自行探索嘛。
问:我想用高版本的 Vivado 行不行?
答:Vivado> 各版本兼容性不好,资料例程也是 Vivado 2017.4 版本创建,最好一致。
问:都 2023 年了呀
答:你可以试试呀~
注意:软件安装路径不要有中文!Vivado 工程路径不要有中文!
顺便提一下,计算机名、账户名最好也不要是中文,有时会出现一些玄学问题,脑壳痛……
最新发现,某电脑管家软件会拦截 Vivado 某些进程,导致综合失败,所以玩 Vivado 前最好都关掉!
2、虚拟机 + Ubuntu,在 Linux 下安装 Vivado + Petalinux,配置 NFS
Linux 开发环境主要用于 Zynq 平台 Linux 应用、即嵌入式 Linux 开发。
可以先安装 虚拟机 + Ubuntu,熟悉 Linux 基础操作,熟悉常用命令。
Vivado 可以先不装,但是如果你学得快的话……
建议:虚拟机配置时,硬盘设大一点,不然后面存储不够了还得扩容,比较麻烦(PS:我配置了 200G) 。
3、PuTTY - 友情推荐
PuTTY 是一个 Telnet、SSH、rlogin、纯 TCP 以及串行接口连接软件。可用来远程管理 Linux。
这里主要使用 Serial 功能,用来交互、查看输出信息或调试时用来打印 log。
这个可以去官网下载最新版本。
Zynq 开发的四种方式
- 纯 PS 开发,即 ARM 开发
- 纯 PL 开发,即 FPGA 开发
- PS 无操作系统 + PL 开发,即裸机开发
- PS 有操作系统 + PL 开发,即使用 RTOS 或 Linux 开发
当前阶段先从 FPGA 开发学起,然后再去学 ARM 开发,最后再学习联合开发。
Verilog 学习
问:为什么不学 VHDL?
答:因为 Verilog 好学易上手,资料多。
问:C/C++ 还要再学吗?
答:如果玩单片机玩的比较熟的话,基本可以了。
推荐一个 Verilog 练习网站:https://hdlbits.01xz.net/wiki/Main_Page
开始实践
1、PL 开发
- 学习初期
- 内容:熟悉 Verilog 语法,熟练使用 Vivado 软件,熟悉 FPGA 开发流程;
- 建议:根据文档实现简单实验,比如点灯,按键控制 LED、串口通信等;
- 目标:脱离教程与例程,从零独立完成一个综合小项目,具体做啥可以自己找。
- 学习中期
- 内容:常用 IP 核及复杂资源的使用;
- 建议:可以根据需要去学习,有方向更有效率;
- 目标:对于新东西,有手册就要会用。
- 学习后期
- 内容:需要什么就学什么;
- 建议:可以干大事了;
- 目标:干大事。
注:一般 Zynq 开发板板载 UART 接在了 PS 端,PL 端没有设计 UART 接口,但是可以这样:
所以说,只要你想,就没有做不到的事情,没有条件也可以创造条件。
2、PS 开发
Vivado 内置了 ARM 开发用到的 SDK 开发工具,可以根据需求自行探索学习。
对于 ARM 开发,学过 32 的应该会很快上手。
3、PS + PL 开发
学习到这一步,真的可以自行探索了……
强烈建议
- 多动手!多动手!多动手!
- 别光看!别光看!别光看!
- 实践出真知!
- 多学!多练!多思考!
FPGA 相关论坛、资料开源、学习网站推荐:
- 米联客:https://www.uisrc.com/
- 正点原子:http://47.111.11.73/forum.php
- 野火电子:https://www.firebbs.cn/
- 明德扬:http://www.mdy-edu.com/
- 小梅哥:http://www.corecourse.cn/
- 哔哩哔哩:https://www.bilibili.com/
- 待补充……
学会自己去寻找资源、获取资源和利用资源,很重要!!!
注:学习参考资料也不仅仅局限于开发板配套资料,也可参考其他板卡开源资料,比如正点原子、野火电子都推出了 FPGA 板卡,教程文档写的也很不错,实验项目与实现方法也是各不相同,资料也很齐全,建议也都看一看,学习一下设计思路与设计方法,考虑其中的设计特点。
最主要的还是自己多学多练多思考!