ZYNQ 作为目前热门的 SOC 类处理器,正在被越来越多的公司选择使用。学习 ZYNQ 的朋友也越来越 多,初学者可能会认为 ZYNQ 很难学,以前只学过 51,或者甚至连 51 都没学过的,一看到 ZYNQ 就懵了。 其实,万事开头难,只要掌握了方法,学好 ZYNQ,还是非常简单的,这里我们总结学习 ZYNQ 的几个要 点:
1.
一款实用的开发板。
这个是实验的基础,有时候软件仿真通过了,在板上并不一定能跑起来,而且有个开发板在手,什么东 西都可以直观的看到,效果不是仿真能比的。但开发板不宜多,多了的话连自己都不知道该学哪个了,觉 得这个也还可以,那个也不错,那就这个学半天,那个学半天,结果学个四不像。倒不如从一终,学完 一个再学另外一个。
2.
掌握方法,勤学慎思。
ZYNQ
不是妖魔鬼怪,不要畏难,
ZYNQ
的学习和普通单片机一样,基本方法就是:
3.
了解
ZYNQ
的基本结构。
学习
ZYNQ
之前需要先对
ZYNQ
的基本结构和其功能有个大概的了解,如
PS
、
AXI
总线、锁相环
PLL
、 FIFO 等。需要知道
PLL
是用来产生不同频率的时钟,如使用
WM8960
(音频编解码芯片)时需要生成
12MHz 的时钟;FIFO
用于数据的缓存和异步时钟域数据的传递等。
4.
了解
Verilog HDL
基本语法
没有软件的硬件就如同行尸走肉一般。软件是硬件的灵魂,硬件是软件的舞台。好的软件设计才能发 挥硬件的性能,而软件的精髓在于代码。学习 FPGA
也是这样,
Verilog HDL 做为一种硬件描述语言,是对数字电路的一种描述,而数字电路是并行工作的,因而在编写 Verilog HDL 时要有并行的思想,不同于软件 设计语言,软件设计语言是由 CPU 统一进行处理,一条指令一条指令的串行运行,所以软件设计语言是基 于串行的设计思想,因而在写 Verilog HDL 代码的时候要注意这种差别。另外对于 Verilog HDL 的基本语法 是务必要掌握的,如一般常用的 module/endmodule、input/output/inout、wire/reg、begin/end、posedge/negedge、 always/assign、if/else、case/default/endcase/parameter/localparam 等关键字要清楚它们的作用和区别。掌握了 Verilog HDL 的基本语法和 Verilog HDL 的并行设计思想后,会觉得 Verilog HDL 和 C 语言一样简单。
5. ZYNQ PS
的学习
学习
ZYNQ PS
首先要了解
C
语言的基本语法。然后了解
PS
端基本的系统框架和外设,例如
PS
端架 构、片内互连、AXI
总线、
DDR
控制器等等。最关键的是
PS
端的
C
程序。软件系统可以被认为是建立于 基于硬件的系统上的一个栈,或者说是一系列层,从底至上依次是基础硬件系统(来自 Vivado
的自定义硬 件)、板级支持包、Operating System
、软件应用。 初学者可以多看看官方的文档和资料,对于 PS
端的软件,
xilinx
提供了丰富的库函数,很多时候用户 直接调用即可,读者要学会利用这些库函数。遇到问题时,读者可以借助 xilinx
的
SDK
开发环境中的各种 调试功能来定位错误,以帮助解决问题。
6.
多思考,多动手。
所谓熟能生巧,先要熟,才能巧。如何熟悉?这就要靠大家自己动手,多多练习了,光看或说是没什 么太多用的。只有在使用 ZYNQ
的过程中,才会一点点的熟悉,也只有动手实练,才能对
FPGA
有切实的 感受。
熟悉了之后,就应该进一步思考,也就是所谓的巧了。我们提供了几十个例程,供大家学习,跟着例程走,无 非就是熟悉ZYNQ
的过程,只有进一步思考,才能更好的掌握
ZYNQ
,也即所谓的举一反三。例程是死的, 人是活的,所以,可以在例程的基础上,自由发挥,实现更多的其他功能,并总结规律,为以后的学习和 使用打下坚实的基础,如此,方能信手拈来。
所以,学习一定要自己动手,光看视频,光看文档,是不行的。举个简单的例子,你看视频,教你如何煮饭, 几分钟估计你就觉得学会了。实际上你可以自己测试下,是否真能煮好?机会总是留给有准备的人,只有 平时多做准备,才可能抓住机会。