原创:基于Zynq7045的ZC706平台开发指南

基于Zynq7045的ZC706平台开发指南

(注意:本指南适用于有Xilinx SoC平台一定开发基础的设计人员)

文主要介绍Zynq7045 SoC芯片平台的应用,通过Xilinx官方公布的FPGA开发集成环境(Vivado)、嵌入式开发软件平台(Petalinux)和开源SDK(ZYNQ BSP)进行搭建和开发,其中的系统环境主要分布在Ubuntu的桌面发布版与Windows 7专业版之上。

  • 系统环境搭建
    • Linux版本

Linux tub 4.13.0-26-generic #29~16.04.2-Ubuntu SMP Tue Jan 9 22:00:44 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux。

如上版本可以用于安装Petalinux、Vivado和Modelsim系列软件。

1.1 Linux系统分区

序号 分区 大小
1 / 20GB
2 /boot 200MB
3 /tmp 5GB
4 /Swap 2GB
5 /home >30GB
  • 环境依赖库

环境依赖库是根据Linux环境下需求的依赖库。

Ubuntu系统通过管理员权限安装(sudo apt-get install)如下安装包:

sudo apt-get install gcc-multilib build-essential libsdl1.2-dev libglib2.0-dev screen pax gzip

 

  • Windows版本

Windows 7 Pro 64 bit

如上版本可以用于安装Vivado和Modelsim系列软件。

  • Modelsim版本

Modelsim SE-64 10.1

  • 开发软件

开发软件主要是Xilinx官方提供的FPGA SoC集成开发环境Vivado、Petalinux嵌入式开发平台工具集合和开发板的板级支持包BSP等。

2 资源地址列表

资源内容 下载地址
通用资源 https://www.xilinx.com/support/download.html
Vivado https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/vivado-design-tools.html
Petalinux https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-design-tools.html
BSP http://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/petalinux.html
  • Petalinux工具集

Petalinux是嵌入式Linux开发工具集,可以用于Xilinx的FPGA-based系列的SoC嵌入式软件的开发。

  • 组件位置

2.1 开发包SDK组件

组建位置 芯片架构
$PETALINUX/components/yocto/source/aarch64 Zynq® UltraScale+™ MPSoC
$PETALINUX/components/yocto/source/arm Zynq® SoC
  • 配置要求

最低工作站配置要求,在应用环境推荐:

  • 8GB双通道外存资源,推荐16GB;
  • 2GHz CPU多核架构,推荐12核;
  • 100GB的硬盘空间,推荐固态盘;
  • 系统支持(64位系统),推荐Ubuntu发行版:
    1. RHEL 7.2/7.3;
    2. CentOS 7.2/7.3;
    3. Ubuntu 16.04.1;
  • 需要系统root权限,后期获取root用户权限;
  • 需要安装相关Linux系统和Petalinux支持的相关依赖包。
    • 依赖包

Ubuntu系统通过管理员权限安装(sudo apt-get install)如下安装包:

  • 安装Petalinux

将下载的Petalinux安装包通过共享硬盘等方法挂载到Linux之上安装,无需直接考入到Linux系统。安装步骤如下:

  • $ mkdir -p /home/test/petalinux
  • $ ./petalinux-v2017.3-final-installer.run /home/test/petalinux
  • $ chmod 755 -R petalinux
  • Reading and agreeing to the PetaLinux End User License Agreement (EULA) is a required
  • 继续安装PetaLinux Tools installation process
  • 应用Petalinux之前需要在在启动脚本中添加(如图1.2-3)系统环境变量
  • $ petalinux-util –webtalk off

Petalinux Tools将被安装到“/home/test/petalinux”目录之下,并给予整个文件夹“755”继承权限。

  • Petalinux应用开发
    • 配置环境变量
  • 配置系统环境变量

$ source <path-to-installed-PetaLinux>/settings.sh

  • 确认环境变量

$ echo $PETALINUX

/opt/pkg/petalinux

“$PETALINUX”应该要指向的是Petalinux安装包所在的位置。

  • Petalinux BSP安装

下载对应开发板或平台的的官方BSP文件,(2 资源地址列表)中下载。

安装BSP步骤:

  • $ cd /home/test/Documents/Petalinux_prj
  • $ petalinux-create -t project -s <BSP文件位置>
  • 配置成果BSP获得如下提示:

创建一个zc706平台的基础Petalinux工程

创建一个zc706基础工程需要完成如下几个步骤:

  • 建立工程(基于模板的建立);
  • 导入从Vivado导出的硬件描述文件(*.hdf),需要匹配版本。

调试条件:

  • TTC模块(必须) #如果多个TTC都使用了的话,Linux内核将会使用第一个TTC模块;
  • 外部Flash存储空间或SD卡(必须) #用于防止BIN文件和image.ub文件;
  • UART模块(可选,控制台打印信息用) #如果用UART IP模块的话,如AXI UART,需要确保中断信号有连接到PS;
  • 非易失存储器(可选) #如QSPI Flash,SD/MMC;
  • 以太网接口(可选) #若果用Ethernet IP模块或外部PHY的话,需要确保中断信号连接道PS;
  • 交换机(可选) #可用于和host主机之间应用TFTP等模式启动调试方法。
    • 建立工程

命令行如下(可以在非root用户下执行):

$ petalinux-create –type project –template <CPU_TYPE> –name

<PROJECT_NAME>

petalinux-create的参数说明:

  • –type:生成类型,project为工程,app为应用,module为模块;
  • –template:应用的模板类型,可以是zynq等。若选择的是相应的BSP文件,则应该通过“petalinux-config”选择相对应的模板“board configs”,可能的值包括:The possible values are: ac701-full,kc705-lite, zc1751-dc1, zc706, zcu102-revb, zedboard, ac701-lite, kcu105,zc1751-dc2, zcu102-rev1.0, kc705-full, zc702, zcu102-reva, and zcu106-reva.;
  • –name:工程名。

例如:$ petalinux-create –type project –template zynq –name zc706_dut

得到项目工程创建成功的指令答复之后,在相应文件交中应该得到创建的目的文件夹和相应的内容。

  • 添加硬件描述

硬件描述文件位置:输出的文件都在“/<vivado project>/<project name>.sdk/<top module name>_hw_platform_0”文件夹下的“*hdf”文件;添加硬件文件,步骤如下:

  • hdf文件位置:$ petalinux-config –get-hw-description=<path-to-directory-which-containshardwaredescription-file>。例如:~/Documents/Petalinux_prj/HW/zc706_ptp/system.hdf;
  • 导入hdf文件到工程:$ petalinux-config –get-hw-description = ~/Documents/Petalinux_prj/HW/zc706_ptp
  • 得到导入答复:INFO: Getting hardware description…
  • [INFO] generating Kconfig for project
  • 自动进入系统配置目录:/home/test/Documents/Petalinux_prj/zc706_dut/project-spec/configs/config – misc/config Sy;
  • 配置“misc/config System Configuration”
  • 配置完成退出并保存“.config”文件到工程中。需要配置的项目包括:Linux组件、硬件启动、u-boot配置、网络配置和输出镜像配置等。
    • 系统配置

Linux和uboot配置主要包括:FSBL启动、ps7_init、u-boot源文件和Linux kernel源文件位置的配置。

Zynq可以选择通过SDK方式生成FSBL(First Stage Bootloader)和添加AUP7(Auto update ps7_init)文件,而在Petalinux的工程环境中也可以用于自动生成配置,最终生成的文件(fsbl)等,将自动添加到BOOT.BIN文件中。

其中,u-boot和linux-kernel可选项包括:

  • u-boot[Linux kernel]-plnx:xilinx发布u-boot-plnx或linux-xlnx版本;
  • remote:远程版本,可以是xilinxi在官方git发布的tag版本或者公司私有版本,如果是应用远程版本,需要在linux kernel的上一级的配置“Remote linux-kernel settings —>”或u-boot的上一级配置“Remote u-boot settings  —>”目录中配置相应的远程源文件的相应地址;
  • ext-local-src:本地版本,用本地的镜像文件,用于自定义版本加入。需要在linux kernel的上一级的配置“External linux-kernel local source settings —>”或u-boot的上一级配置“External u-boot local source settings  —>”目录中配置相应的本地源文件的相应地址。

 

以本地Linux kernel源码GIT仓库为例(参考所在地址为“/home/test/Documents/Git_sources/linux-xlnx”),配置linux-kernel为本地源码地址,在选择框内填写如源码的绝对地址并确认,具体简易流程,如图(图2.1.5.2.3-6 到图2.1.5.2.3-8)各步流程所示:

 

以远程Xilinx的Linux kernel源码GIT仓库为例(参考所在地址为“https://github.com/Xilinx/linux-xlnx.git”),配置linux-kernel为源码地址,在选择框内填写如源码的GIT地址并确认,具体简易流程,如图(图2.1.5.2.3-9 到图图2.1.5.2.3-11)各步流程所示:

 

  • 启动方式

实验中可采用3种启动方式,分别是QSPI Flash启动、SD卡启动和NFS启动方式。其中,开发板zc706上启动方式配置通过SW11开关进行配置。

 

  • 采用QSPI Flash芯片启动

Flash分区配置(若应用qsip的flash模块启动),文件系统分布如表(2.1.5.2.4-1)所示,需要配置对应的分区大小。

2.1.5.2.4.1-1 嵌入式文件系统

类别 内部结构和包含的文件类型
1 BOOT
BOOT.BIN Devicetree.dtb uImage
FSBL.elf
System_wrapper.bit
u-boot.elf
2 ROOTFS Linux_filesystem

2.1.5.2.4.1-2 QSPI FLASH(128Mbit)区间规划

空间名称 物理起始地址偏移 空间大小
boot.bin 0x0000000 0x1000000
env 0x1000000 0x0020000
image.ub 0x1020000 0x0A80000
其他 0x1AA0000 0x0560000

注意:

  • 目前调试阶段在SD卡上启动,SD卡推荐大于1Gb;
  • 用户空间可以随着app容量增大进行修正,但是需要重新压制ub文件。

QSIP Falsh的系统配置需要根据表(2.1.5.2.4.1-2 QSPI FLASH(128Mbit)区间规划)进行规划和配置,若选择的是SD Flash启动模式,则无需配置本处。但需要确认是否所有配置均从SD中启动,大多数情况下系统的bootloader的环境变量依然需要存储在QSPI的Flash中。

  • 采用SD卡启动

只需要在默认大小的SD Falsh中写入相应的BOOT.BIN和image.ub文件则,通过启动硬件启动为SD卡启动则可以正常启动kernel。配置启动存储器位置如:/home/test/Documents/Petalinux_prj/zc706_dut/project-spec/configs/config – misc/conf→ Subsystem AUTO Hardware Settings → Advanced bootable images storage Settings

SD卡的Flash内容包括:

  • 第一区域:fsbl启动文件、fpga bitstream、u-boot启动文件;
  • 第二区域:ub(Kernel、Flattened Device Tree blob、conf@1)。

这部分为当前区间配置安排,配置位置文件位置:project-spec/meta-plnx-generated/recipes-bsp/u-boot/configs。

配置成功后提示:

  • 添加用户应用程序

通过Petalinux的模板中添加用户程序并加入系统编译。

  • $ cd <plnx-proj-root>
  • $ petalinux-create -t apps [–template TYPE] –name <user-application-name> –enable

例如,添加“helloworld”例程:

  • 普通添加并加入编译:

$ petalinux-create -t apps –name helloworld–enable

  • 模板添加并加入编译:

$ petalinux-create -t apps –template c –name helloworld –enable

  • 添加c++程序:

$ petalinux-create -t apps –template c++ –name helloworld –enable

  • 添加“helloworld”为autoconf application程序:

$ petalinux-create -t apps –template autoconf –name helloworld –enable

  • 添加之后的应用程序存放在目录:

<plnx-proj-root>/project-spec/meta-user/recipes-apps/helloworld/

 

用户可以在目录“~/Documents/Petalinux_prj/zc706_dut/project-spec/meta-user/recipes-apps/helloworld”下对程序进行进一步的修改。

若添加新的头文件,需要在上级Makefile中添加相应的文件内容和参与编译的内容。

参与调试需要在“project-spec/meta-user/conf/petalinuxbsp.conf”文件中添加调试模块开关:RM_WORK_EXCLUDE += “helloworld”

其中,“artifacts”所在目录为:${TMPDIR}/work/aarch64-xilinx-linux/helloworld/1.0-r0/。

  • 添加用户模块

通过Petalinux的模板中添加用户模块并加入系统编译,用户可以通过添加模块模板或仅仅添加模块两种方式来进行添加。

  • 进入相应的工程目录:cd <plnx-proj-root>
  • 添加模块:$ petalinux-create -t modules –name <user-module-name> –enable
  • 模块建立路径:<plnx-proj-root>/project-spec/meta-user/recipes-modules/mymodule

例如,添加helloworld模块,用户可以将模块内容和Makefile修改为特定项目功能,可以之间替换文件和写入makefile:

  • 进入工程目录:cd ~/Documents/Petalinux_prj/zc706_ptp
  • 创建模块:$ petalinux-create -t modules –name helloworld –enable
  • 模块路径:/home/test/Documents/Petalinux_prj/zc706_ptp/project-spec/meta-user/recipes-modules

 

2.1.5.2.6 模块文件

模板 描述
Makefile 编译文件模板
README 模块简易描述
Helloworld.c Helloworld.c模块
<plnx-proj-root>/projectspec/

meta-user/recipes-co

re/images/petalinux-image

.bbappened

模块配置文件所在位置和文件。

 

参与调试需要在“project-spec/meta-user/conf/petalinuxbsp.conf”文件中添加调试模块开关:RM_WORK_EXCLUDE += “helloworld”

其中,“artifacts”所在目录为:${TMPDIR}/work/aarch64-xilinx-linux/helloworld/1.0-r0/。

  • 打包BSP文件

打包BSP文件目的是基于项目合作的支持文件共享。在工程已经完成完整的“petalinux-build”基础上,进行“petalinux-package”操作,具体步骤如下:

  • 退出到工程目录
  • $ petalinux-package –bsp -p <plnx-proj-root> –output xxx.BSP
  • 打包如下组件:
  • <plnx-proj-root>/project-spec/
  • <plnx-proj-root>/config.project
  • <plnx-proj-root>/.petalinux/
  • <plnx-proj-root>/pre-built/
  • All selected components
  • 添加硬件文件

$ petalinux-package –bsp -p <plnx-proj-root> –hwsource <hw-project-root> –output xxx.BSP

  • 添加外源组件到目录“components/ext_sources.”下。
    • 配置固件版本

配置固件版本主要用于项目开发过程中固件软件的版本确定和审核之用,具体步骤如下:

  • 退出到退出到工程目录
  • 进入系统配置目录:$ petalinux-config
  • 选择“Firmware Version Configuration”
  • 选择“Host Name, Product Name, Firmware Version”等加以配置;
  • 退出配置目录,并选择“yes”保存。
    • Qemu调试

必须条件为:完整编译生成BOOT.BIN、uImage.ub镜像。

  • Qemu调试u-boot

调试u-boot启动命令:$ petalinux-boot –qemu –u-boot

Zynq-7000系列启动QEMU包含如下文件:

  • <plnx-proj-root>/images/linux/u-boot.elf

Zynq UltraScale+ MPSoC启动QEMU包含如下文件:

  • <plnx-proj-root>/images/linux/u-boot.elf
  • <plnx-proj-root>/images/linux/bl31.elf

 

  • Qemu调试Linux Kernel

调试linux kernel启动命令:$ petalinux-boot –qemu –kernel

Zynq-7000系列启动QEMU包含如下文件:

  • <plnx-proj-root>/images/linux/zImage

Zynq UltraScale+ MPSoC系列启动QEMU包含如下文件:

  • <plnx-proj-root>/images/linux/Image
  • <plnx-proj-root>/images/linux/bl31.elf

 

  • Qemu退出方式

Qemu的中断退出方式为命令退出步骤:

  • 同时按住:Ctrl+A
  • 释放上步再按:X

 

  • 生成镜像

利用“petalinux-build”生成系统镜像文件,文件生成位于“images/linux/”子目录。生成镜像命令为:$ petalinux-build,其中日志信息统计在“build.log”中。

生成成功后提示:

  • 生成uImage镜像

若重新配置u-boot启动uImage,需要“PetaLinux u-boot config”中作为u-boot的配置目标,修位置为“<plnx-proj-root>/project-spec/meta-user/recipes-bsp/u-boot/files/platform-top.h”,并重CONFIG_EXTRA_ENV_SETTING。

其中生成uImage的命令如下:

$ petalinux-package –image -c kernel –format uImage

例如:

  • 生成Zynq UltraScale+ MPSoC启动镜像

在确认硬件“*.hdf”文件对应平台无误情况下,导入“FSBL”镜像、FPGA“bitstream”文件,并执行如下命令生成镜像:

$ petalinux-package –boot –fsbl <FSBL image> –fpga <FPGA bitstream> –pmufw

<PATH_TO_PMU_FW_ELF> –u-boot

  • 生成Zynq系列启动BIN镜像

生成文件为“BOOT.BIN”,确认硬件“*.hdf”文件对应平台无误情况下,导入“FSBL”镜像、FPGA“bitstream”文件,并执行如下命令生成镜像:

$ petalinux-package –boot –fsbl <FSBL image> –fpga <FPGA bitstream> –u-boot

例如:

  • 编译用户应用程序

生成应用程序流程在原有镜像基础上添加用户程序,例如在“petalinux-build”基础上建立helloworld的用户程序,需要通过如下命令在原有生成镜像中加入已经修改的用户程序到rootfs中。编译之后文件所在位置为“<TMPDIR>/work/aarch64-xilinx-linux/helloworld/1.0-r0/”

具体步骤如下:

  • 进入工程目录:$ cd <plnx-proj-root>
  • 添加sysroot:$ petalinux-build -x do_populate_sysroot
  • 重建rootfs文件系统:$ petalinux-build -c rootfs
  • 打包新用户程序到镜像:$ petalinux-build -x package
  • 清除用户程序命令如下:$ petalinux-build -c helloworld -x do_clean
  • 安装用户程序:$ petalinux-build -c helloworld -x do_install
  • 重建用户程序命令如下:$ petalinux-build -c helloworld
  • 重新打包rootfs:$ petalinux-build -c rootfs
    • 编译用户模块

编译模块在“petalinux-build”基础上建立hellowrold模块,启用特定模块的编译开关,编译以后模块所在位置为“<TMPDIR>/work/{ARCH}-xilinx-linux-gnueabi/helloworld/1.0-r0/”,编译模块步骤:

编译整个完整镜像:$ petalinux-build

在完整镜像中添加模块:

  • 进入工程目录:$ cd <plnx-proj-root>
  • 建立用户rootfs目录:$ petalinux-build -c rootfs
  • 重建镜像文件:$ petalinux-build -x package
  • 清除用户模块helloworld:$ petalinux-build -c helloworld -x do_cleansstate
  • 重编译用户模块helloworld:$ petalinux-build -c helloworld
  • 安装用户模块:$ petalinux-build -c helloworld -x do_install,本命令添加用户命令到rootfs文件“<TMPDIR>/work/plnx_aarch64-xilinx-linux/petalinux-user-image/1.0-r0/rootfs/.”中。
    • 版本控制

控制版本需要控制如下文件内容,可以利用SVN或者GIT进行版本控制,其中“<plnx-proj-root>”代表的是当前工程目录,具体子目录如下:

  • <plnx-proj-root>/.petalinux
  • <plnx-proj-root>/build/
  • <plnx-proj-root>/images/
  • <plnx-proj-root>/pre-built/
  • <plnx-proj-root>/project-spec/meta-plnx-generated/
  • <plnx-proj-root>/components/plnx-workspace/

默认配置情况下,在创建工程过程中,如上文件均已被添加到“.gitignore”中。在共享工程时,建议打包当前工程为BSP包提供。

  • GDB调试

利用GDB调试需要在Qemu中进行,例如在完成工程编译基础上,需要调试kernel镜像和对应的用户app,则有如下步骤:

  • 调试kernel情况下,启动Qemu调试:$ petalinux-boot –qemu –kernel
  • 在Qemu的窗口中获取GDB的TCP端口,如-gdb tcp:<TCP_PORT>
  • 开启另一个命令窗口,并进入项目镜像目录“$ cd “<plnx-proj-root>/images/linux””
  • 在vmlinux kernel镜像上开启,GDB:$ petalinux-util –gdb vmlinux
  • 进入GDB调试模式,并用标准GDB进行调试
  • 在GDB中添加Qemu目标:(gdb) target remote :9000
  • 继续Qemu执行程序:(gdb) continue
  • 退出方法为:control+c
  • 设置断电方式为:b
  • 进步方式为:s
    • 限制条款
      • Petalinux使用限制
        • 环境适配

Petalinux必须和相应的Vivado适配,不适配会出现dhf导出文件无法正常通过get_hw_description导入到相应的项目中或报错等。适配平台,如(实际情况要求不是那么严格,验证过在Vivado2016.4平台配合Petalinux 17.04版本,并可以正常完成项目开发和验证):

  • Petalinux v2017.3必须和Vivado 2017.3配对搭建和应用;
  • Petalinux v2016.4必须和Vivado 2016.4配对搭建和应用;
  • Petalinux v2015.4必须和Vivado 2015.4配对搭建和应用。
    • 文件夹保护

安装完Petalinux之后不能再移动Petalinux的文件夹位置,否则将导致工具链无法启用。

  • Shell环境

Petalinux工具集需要系统的bash shell环境。从Ubuntu 6.10开始,默认使用dash(the Debian Almquist Shell)而不是bash(the GNUBourne-Again Shell)。Login Shell还是bash,原因是dash更快、更高效,而且它符合POSIX规范。Ubuntu在启动的时候会运行很多shell脚本,使用dash可以加快启动速度。

通过如下命令切换默认shell到bash:sudo dpkg-reconfigure dash

将环境通过提示窗口配置到bash环境,如图2.1.12.2-1/2中所示。

 

  • NFS启动方式

若Petalinux工程应用的是在板NFS启动,“petalinux-create”将自动切换TMPDIR到“/tmp/<projname_timestamp>”的位置启动。

  • FIT Image镜像日志

此处记录u-boot启动kernel镜像日志:

  • Vivado
    • 安装Vivado

Vivado系列软件下载、安装、注册和授权,请详细参照《Vivado Design Suite Release Notes, Installation and Licensing Guide》,ug973,官方用户手册。在公司未提供正版License情况下,部分IP需要自行通过Xilinx官方网站申请试用版License。

  • 创建工程

打开Vivado软件,直接在欢迎界面点击Create Project,或在开始菜单中选择File – New Project即可新建工程。

之后配置项目名称、项目路径和开发板或平台选择匹配硬件原理架构之后,即可开展FPGA硬件编码、IP核调用、IP核设计和相关设计。

 

设置项目名称和项目文件位置路径。

 

  • 创建最小系统

创建最小系统,目的是搭建适合于特定工程项目的PS-PL交互开发平台,可以通过源码形式添加IP或者局部通过Block Diagram方式添加IP,基于BD方式设计步骤如下:

  • 最小系统包括创建顶层文件(v),添加用户部分设计文件;
  • 创建内核(通过Block Design方式),通过IP方式添加Zynq ARM核心功能,如图(图2.3-1 通过Bloack Design方式设计),添加必要的Zynq PS功能选项和配置参数;
  • 参数配置部分包括:PS-PL 配置、外围IO配置、MIO配置、时钟配置、DDR配置、SMC时许配置和中断配置等几个部分,具体可以通过添加ZYNQ7 Processing System的官方IP核进行调用,在Block Design图中双击“ZYNQ”,在弹出的Re-customize IP用户对话框中对相应参数进行配置、启用等;
  • 添加用户设计或其他官方IP,不同类型IP需要的许可证或License会有所不同;
  • 针对Block设计选择自动生产代码;
  • 如果有需要,需添加Block设计到顶层v文件中。

 

  • 管脚分配和约束

针对管脚分配需要对非MIO部分的其他用户IO进行相关映射,约束文件服从官方对“*.xdc”文件的规范。“实现”步骤后,系统可用“IO分配”部署,并归一到相关的“*.xdc”文件。例如,添加外部LED的IO、添加SFP的IO和外部时钟IO,设计如下:

  • ILA仿真相关

Zynq系列可以沿用Xilinx对FPGA的片内在线逻辑分析仪(ILA)功能,针对于需要监控和分析的信号可以直接通过在源码上添加仿真标准或者在“Design Diagram”中添加“Debug”标志,而插入仿真。

具体步骤如下:

  • 添加仿真标志位;
  • 配置ILA在线分析仪的“Re-customize IP”配置参数。

图2.2.5-1 在Design Diagram信号上添加仿真标志

System ILA即为用户仿真IP的调用,在ILA“Re-customize IP”配置框内,需要配置信号分析的“Monitor Type”、“Sample Data Depth”、“Trigger”、“Interface”等参数。具体接口类型需要根据信号线或总线类型进行选择,其中普通信号线为Native模式、AXI等总线为Interface模式、同时需要分析普通信号线和标准信号总线则为MIX模式,其中采样深度和时钟需要按需分配,具体应用请参照《LogiCore IP ChipScope Pro Integrated Logic-Analyzer(ILA)1.0.4a》手册。

在具体应用的时候要注意ILA是需要消耗芯片逻辑资源的,具体BRAM Slice使用估计,请在配置完ILA IP之后查看Resource的“Resource Usage”统计,在前综合之前资源统计具备一定的参考价值,具体请考虑具体项目约束。

在线逻辑分析仪在写入FPGA bit流文件之后,在JTAG在线,且写入相应的PS固件并启动内核等用户程序之后,可在线生效并进行相关信号的获取等。

  • 仿真

Vivado的仿真环境具备设计前仿真功能,需要用户自行添加设计的“Test Bench”测试用例框架,对具体的设计和模块进行实现前仿真。也可以导出模型到Modelsim软件中进行具体逻辑和模块的外源仿真和分析。

在“Behavioral Simulation”窗口中的“Scopes”子窗口,根据模块连接关系选中需要查看时许的信号,在右侧“Objects”窗口即可看到选中的所有信号(包括内部信号,即没有写到模块声明语句module(,)括号等)。

右击信号,选择“Add To Wave Window”,可将波形添加到右侧的仿真波形窗口,保存仿真文件,再次仿真时就可以看到该信号的波形。在波形窗口按住Ctrl键并滚动鼠标滚轮,可以横向缩放波形;按住Shift并滚动鼠标滚轮,可以横向平移波形。

对于一些输出数字信号波形的情况,例如让reg [7:0] sina_out输出正弦波,仿真后右击信号,选择“Waveform Style – Analog”,即可以波形的形式查看信号。如图显示的就是正弦波信号(注意这里信号本身还是数字信号,并不是模拟信号,只是用软件显示出了其幅值随时间变化的波形)。

对于多位信号例如wire [7:0]p,默认使用二进制形式显示,可以根据需要修改(十进制/十六进制/八进制等选择)。例如,右击选择“Radix – Unsigned Decimal”即可设置为无符号十进制显示。也可以设计相应信号的色彩等。

  • 导出“*.hdf”文件

导出“*.hdf”文件可以用于将用户设计的硬件架构和FPGA的“bit stream”文件直接添加文件当中,在应用Petalinux设计时候可以应用相应的初始化功能直接生成相应的FSBL文件和映射为对应的设备树文件和寄存器列表等,导出方法见下图所示。

  • 设计IP

用户可以通过如下选项将用户设计的模块或功能直接打包成一个私有IP共其他上层模块导入和应用,可以添加设计和相应的约束,在打包现有设计选项中可以选择“打包现在的工程”、“从项目中打包一个block设计”或者“指定地址项目”三种模式。

 

其中,也可创建带“AXI4”外围总线的用户私有IP,其中创建类型包括带有AXI4总线接口的AXI4IP、驱动、测试软件接口、集成AXI4 VIP的仿真和调试设计模板等。

 

  • Synthesis

Vivado自带综合工具可以对中小规模逻辑进行有效综合和分析,综合部分包括设计综合、时许分析报告、时许约束设置、DRC报告、Noise报告、功耗报告等。其中,时许相关需要关注如下几个报告,并对应于收敛情况进行相应的信号或者模块的时许约束文件和条款的创建。

 

约束类五种主要方式,包括:Clocks相关、IO相关、Assertions相关、Exceptions相关、其他,具体约束类型归总为下表(表2.2.9-1)。

表2.2.9-1 约束类型

序号 类型 子类
1 Clocks Create Clock
Create Generated Clock
Rename Auto-Derived Clock
Set Clock Latency
Set Clock Groups
Set Clock Sense
Set System Jitter
Set Exteranl Delay
2 Inputs/Outputs Set Inputs/Outputs Delay
3 Assertions Set Data Check
Set Bus Skew
4 Exceptions Set Case Analysis
Set False Path
Set Multicycle Path
Set Maximum Delay
Set Minimum Delay
5 Other Group Path
Set Disable Timing

 

  • Implementation

应用模块可以完成“综合之后”对相应设计进行FPGA片上映射估算后得到跟切合实际硬件平台的各类报告,包括时许、网络、时钟、DRC、噪声个、功耗等,同时可以输出逻辑模块的原理图供设计原理分析,具体约束可以应用“Constraints Wizard”约束向导进行设计。

另外,在应用设计结果可以重新对IO进行映射和类型确认,并最终导入到归一化的“*.xdc”文件中。

  • Project Summay

这部分统计了整个项目在指定的约束策略下整体的综合数据,其中包括了“Synthesis”状态和情况、“Implementation”状态和分别在“Post Synthesis”和“Post Implementation”情况、“DRC”、“Timing”、“Utilization”资源使用估计、“Power”片上功耗估计等。

  • Program & Debug

烧写和仿真部分较为简单,主要包括通过JTAG方式或网络方式烧写BIT文件到FPGA或FLASH之中、添加可配置Memory等几个环节,支持在线逻辑分析和XADC监控等。

  • 参考文件

[1] Petalinux Tools Documentation: Workflow Tutorial

[2] Petalinux Tools Documentation: Reference Guide

[3] Petalinux Tools Documentation: Command Line Reference Guide

[4] Xilinx Quick Emulator: User Guide

[5] OpenAMP Framework for Zynq Devices: Getting Started Guide

[6] Vivado Design Suite Release Notes, Installation and Licensing Guide

[7] Vivado Design Suite User Guide: Design Flows Overview

[8] Vivado Design Suite User Guide: Using the Vivado IDE

[9] Vivado Design Suite User Guide: Designing with IP

[10] Vivado Design Suite User Guide: High-Level Synthesis(HLS)

[11] Vivado Design Suite User Guide: Implementation

[12] Vivado Design Suite User Guide: Programming and Debugging