ZYNQ学习笔记(三)---Xilinx软件工具介绍与FPGA开发流程

有了先前两节的基础,我们对Zynq-7000系列芯片的一些片上资源就有了一些初步的知悉,那么现在我们就要开始对这款芯片进行设计和开发了。

由于我之前也没有接触过这类芯片,对FPGA以及Verilog HDL语言也只有一些粗浅的了解,我也是摸着石头过河,慢慢来。我打算先从片上的PL部分下手,先学习FPGA部分,所以今天我要重点介绍的是关于Xilinx软件工具集和FPGA设计与开发的基本流程,当然对于整个Zynq的开发流程我也会作简单的介绍。

目录

1.Xilinx软件工具简介

2.Zynq片上系统开发流程

3.FPGA设计开发流程


1.Xilinx软件工具简介

以下,我对最核心的四种工具进行了简单的介绍。

  • Vivado IDE——硬件系统开发有 Xilinx 的 Vivado IDE 开发套件承担。即FPGA 部分的设计和开发,管脚和时序的约束,编译和仿真,实现 RTL 到比特流的设计。开发者可以从 IP 库中选 出模块来组成所期望的系统的框图,配置模块参数,以及设计合适的内部连接和外部接口。具体的使用中还有许多细节,我们以后再详细介绍。
  • SDK(Software Development Kit)——SDK可以理解成是 Xilinx Vivado IDE的一部分,也可以是独立的应用。在 Vivado 硬件设备的基础上,配置工具和库路径,编译器选 项,JTAG 和闪存设置,调试器连接,裸板支持包,提供所支持的 Xilinx IP 硬核提 供了驱动程序,SDK 支持 IP 硬核和处理器软件协同调试。可以使用高级 C 或者 C++语言开发调试 ARM 和 FPGA 系统。
  • 用于软件开发的 GNU 编译链接编译器(GNU Compiler Connection, GCC)。
  • 用于验证的 Vivado 仿真器——可以采用vivado自带的仿真器,也可以使用Modelsim(我用的是Modelsim)。

值得一提的是,Vivado中还有许多开发组件,下表中进行了列举(与旧版的ISE开发套件进行了比较)。

ZYNQ学习笔记(三)---Xilinx软件工具介绍与FPGA开发流程_第1张图片

ZYNQ学习笔记(三)---Xilinx软件工具介绍与FPGA开发流程_第2张图片

2.Zynq片上系统开发流程 

ZYNQ学习笔记(三)---Xilinx软件工具介绍与FPGA开发流程_第3张图片

图 2.1 Zynq片上系统开发流程图

通常 Vivado IDE 作为设计起点, 会在顶层设计的创建过程中起到 “ 驾驶舱 ” 一样的作用。套件内工具和其他部分(特别是 System Generator 和 Vivado HLS)的集成支持多种功能设计不同的子系统。当硬件设计完成后,它就会被导出到 SDK 进行软件开发,如果需要的话,还可以在 SDK 和 VivadoIDE 之间进行设计上的迭代

上述开发流程是先硬后软的流程: (以下摘自微相开发板开发指南。)

  1. Vivado 中创建项目,添加一个嵌入式的源文件;
  2. 硬件系统搭建,包括添加 PS 系统和外设,添加 PL 接口,IP;
  3. Vivado 创建顶层 HDL,编写必要的逻辑程序;
  4. 添加约束,综合和编译生成.bit 文件;
  5. 导出硬件到 SDK;
  6. 在 SDK 里创建 FSBL 文件;
  7. 在虚拟机中生成 uboot.elf, bootloader 镜像;
  8. 由 FSBL, System.bit, uboot 生成 boot.bin;
  9. 生成 Ubuntu 的内核镜像文件 Zimage 和 Unbuntu 的文件系统 ramdisk, 有时候还需要对接口驱动进行编写;
  10. 将 Boot, 设备树,内核镜像文件,根文件系统放入 SD 卡启动板卡。

以上是 Zynq 的通常使用开发流程,实际使用中可能 有些步骤是用不上,比如纯 PL 开发,就不涉及 PS 以及 Linux 部分,纯 ARM裸机跑不太涉 PL 以及及 Linux 部分,总之用户根据自己的实际情况来做开发。

 3.FPGA设计开发流程

ZYNQ学习笔记(三)---Xilinx软件工具介绍与FPGA开发流程_第4张图片

  1. 系统功能设计:根据用户需求自顶向下将系统划分成各个单元;
  2. 编写RTL级(Register Transfer Level,寄存器传输级)HDL代码;
  3. 编写TestBench后在Modelsim里观察波形,如果有bug就进行分析修改;
  4. 在debug结束后,即可在Vivado中新建工程,通过逻辑综合工具得到门级网表;
  5. 门级功能验证,同样的,如果有bug就分析修改并重复之前的步骤;
  6. Debug结束后可以对模块的端口进行管脚约束,并启动Vivado的布局布线工具;
  7. 最终可以生成比特流下载到FPGA板上观察现象,进行板级的验证。

你可能感兴趣的:(fpga,arm)