亲,“电路城”已合并升级到更全、更大、更强的「新与非网」。点击查看「新与非网」

本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页

入门教程 | TE0802 开发板入门

发布时间:2021-08-19
分享到:

入门教程 | TE0802 开发板入门

发布时间:2021-08-19
分享到:

该项目为使用 Vivado/Vitis 2019.2 启动和运行 TE0802 Zynq UltraScale+ MPSoC 开发板的指南。适用于初学者。

  硬件组件  

  • 特伦兹电子 TE0802×1     
  • Digilent 5V 4000mA 开关电源×1    
  • USB-A 转 Micro-USB 数据线 ×1    
  • 闪存卡、MicroSD 卡×1    

软件应用程序和在线服务

项目背景

TE0802 是 Trenz Electronic 的 FPGA 开发板,用于展示 Zynq UltraScale+ MPSoC FPGA。它配备了多种外围设备,包括千兆以太网 RJ45、2 个 Pmod 连接器、一个Grove连接器、VGA 端口、DisplayPort、4 位 7 段显示器、8 个 LED、5 个按钮、8 位滑动开关、3.5 毫米音频插孔、USB 3.0 主机端口和 Micro-USB JTAG/UART。

在存储方面,TE0802 可以利用其板载 32MB SPI Flash 或通过 MicroSD 卡插槽或 M.2 M-keyed PCIe 插槽(允许相应的 M-keyed M.2 SSD 连接到 TE0802)的外部源。

该项目的目标是在 Vivado 中为 TE0802 设置基础硬件设计,以利用其所有板载外设并运行简单的 Hello World 嵌入式 C 应用程序。这将产生必要的 Vivado 和 Vitis 项目,作为为 TE0802 开发的任何定制 RTL 或裸机嵌入式应用程序的起点。

Vivado 中的硬件设计
TRENZ电子提供的所有设计文件的必要,在TE0802板的一切接口,比如限制的文件,分块设计TCL脚本,IP库,板定义文件等文件被编译成一个zip文件下载区的他们的站点位于每个特定版本的 Vivado/Vitis/PetaLinux 下,他们在其中生成了文件。

目前 TE0802 文件的最新版本适用于 Vivado/Vitis/PetaLinux 2019.2,因此这是我将在本项目教程中使用的版本。我已将 TE0802 2019.2 设计文件的 zip 文件附加到此项目帖子中,因此您可以从此处或 Trenz 网站下载它们:

下载并解压设计文件夹后,首先将 TE0802 板定义文件(位于/test_board/board_files/ )复制到 Vivado 的/<Vivado 安装目录>/data/boards/board_files 下。

~$ sudo cp -R /<extracted directory>/test_board/board_files/* /tools/Xilinx/Vivado/2019.2/data/boards/board_files/

Trenz test_board 文件夹中的board_files目录中有一个 CSV 文件,它只是板定义文件概述的参考,Vivado board_files目录中不需要它,因此将其从那里删除:

~$ sudo rm /tools/Xilinx/Vivado/2019.2/data/boards/board_files/TE0802_board_files.csv

安装 TE0802 板定义文件后,获取 Vivado 工具并启动 Vivado 2019.2:

~$ source /tools/Xilinx/Vivado/2019.2/settings64.sh
~$ vivado

创建一个针对 TE0802 板的新项目:

如前所述,Trenz 为 TE0802 板上的外围设备提供了 IP 的 IP 库。该 IP 库需要可供 Vivado 项目使用。因此,首先将 TE0802 IP 复制到 Vivado 项目目录中:

~$ cp -R /<extracted directory>/test_board/ip_lib/ /home/parallels/te0802_prj/

通过从 Vivado 的 Flow Navigator 窗口中打开“设置”菜单并导航到IP >存储库,将 TE0802 IP 库添加到 Vivado 项目。单击+图标并将其指向复制到 Vivado 项目目录中的 IP 库(名为ip_lib )。

在ip_lib目录上单击Select后,将弹出一个新窗口,显示 Vivado 在文件夹中检测到的 IP 块。单击“确定”,它将返回“设置”菜单。单击应用,然后单击确定以保存并关闭设置菜单。

接下来使用 test_board 文件夹 ( /test_board/block_design/zusys_bd.tcl ) 中的 TCL 脚本为 Vivado 项目创建模块设计。但是在运行 TCL 脚本之前,如果不使用 Trenz 的版本控制,请在 Trenz 块设计 TCL 脚本(zusys_bd.tcl)中注释掉第 4 - 6 行:

从 Vivado 中的 TCL 命令行获取来自 Trenz 的 Block Design TCL 脚本:

这将创建一个新的模块设计,然后从常规 Vivado 存储库和 TE0802 IP 存储库 ( ip_lib )添加所有必要的 IP 模块,然后根据需要进行配置。

重新生成块设计中的布局,使其在视觉上看起来更清晰一些:

验证模块设计以检查任何错误或严重警告:

成功验证块设计后,将其保存。您还可以花点时间探索 Trenz 自定义 IP 模块控制外围设备,例如 7 段显示器和 VGA 端口。       

接下来,为模块设计生成顶级 HDL 包装器,以便在项目中实例化它:  

将 TE0802 的约束文件添加到 Vivado 项目,以指定封装引脚和其他时序/硬件相关约束。单击Flow Navigator 窗口中的Add Sources并选择添加或创建约束的选项。

单击Add Files并从/test_board/constraints下的 test_board 目录中选择三个约束文件:

通过在 Sources 窗口中右键单击vivado_target.xdc并选择Set as Target Constraints File为 Vivado设置目标约束文件:

此时,您可以自由地向 Vivado 项目添加任何其他自定义设计文件或设置,否则设计已准备好进行综合、布局和布线,并为其生成比特流。

运行综合和实现(布局和布线),然后使用工具栏中的图标生成比特流:

成功生成比特流后,您可以打开实现的设计,查看它是如何在 TE0802 的 FPGA 中部署和布局的:

比特流准备就绪后,导出硬件,以便 Vitis 可以导入它,以便在其上生成软件平台。单击文件>导出>导出硬件...

请务必选中该框以在硬件中包含比特流。硬件导出为 Xilinx 专有的.XSA 文件类型,您可以选择所需的目录进行发送。我个人喜欢将它保存在 Vivado 项目目录中。

Vitis 中的软件设计
硬件设计完成并导出以用于 Vitis 后,单击Tools > Launch Vitis 启动 Vitis :

为即将创建的新项目创建一个工作区。我个人喜欢在 Vivado 项目目录中创建一个名为vitis_​​workspace的目录。这将我的每个项目的所有源文件都保存在一个地方。

选择创建平台项目的选项。为其指定所需名称并选择从硬件规范 (XSA) 文件生成它的选项。指向从 Vivado 导出的 XSA 文件,并为 MPSoC 中的独立操作系统和零索引 ARM 处理器保留默认选择。

在最终配置窗口中单击 Finish 后生成平台项目后,使用键盘快捷键 control+B 或单击工具栏中的 Build 图标构建它。

创建和构建的平台项目概述了硬件设计的钩子,现在是创建将在 TE0802 上运行的实际裸机嵌入式应用程序的时候了

通过单击New > Application Project...创建一个新的应用程序项目

为应用程序提供所需的名称并选择平台项目创建的平台作为它的基础。然后选择零索引 ARM 处理器上的独立域和用于编码嵌入式应用程序的所需语言。最后,选择 Hello World 应用程序模板并单击完成。

一旦 Vitis 填充了 Hello World 应用程序,从资源管理器窗口打开 helloworld.c 并进行以下修改,以便我们可以看到不止一个来自 UART 的“Hello World”打印:

int main(){
    init_platform();

    while(1){
        print("Hello World\n\r");
        for(int i=0;i<10000;i++){}
    }

    cleanup_platform();
    return 0;
}

保存 helloworld.c 并通过在资源管理器窗口中右键单击应用程序名称并选择构建项目来构建应用程序:

应用程序现已完全构建完毕,需要将 TE0802 的引导模式设置为 JTAG,因为我们将使用 TCF 系统调试器运行它。

TE0802 使用 DIP 开关(位于 VGA 端口旁边的板上的 S1)设置其启动模式。要将 TE0802 设置为从 JTAG 启动,需要将开关 1 和 2 设置为 OFF 位置:

将 5V 电源的 2.1mm 插孔插入墙壁电源,并将 JTAG/UART Micro-USB 插入您的 PC。

接下来,通过在资源管理器窗口中右键单击应用程序名称并选择 Program FPGA,使用比特流对 TE0802 FPGA 进行编程。Vitis 将自动检测 TE0802 板并自动填充适当的比特流文件,因此您只需单击Program :

编程完成后,通过右键单击资源管理器窗口中的应用程序名称并选择Debug As > Launch on Hardware (Single Application Debug) 在硬件上启动系统调试器。

Vitis 将切换到调试视图并将应用程序运行到已设置断点的 init_platform 函数。

使用 Vitis 串行终端从调试视图底部的窗口连接到 TE0802 的 UART 串​​行接口:

此时,您可以使用顶部工具栏中的图标运行(暂停/播放图标 - F8)或单步执行(U 形箭头图标 - F6)Hello World 应用程序的代码:

您可以看到 Hello World 应用程序正在运行并通过串行终端打印出来:

LED 和 7 段显示器的驱动程序也在 Zynq UltraScale+ MPSoC FPGA 的可编程逻辑中运行,独立于在其 ARM 核处理器之一上运行的 Hello World 应用程序。因此,您还将看到它的小计数例程正在运行,并在 LED 和 7 段显示器上增加一个值:

就是这样!TE0802 已启动并运行!

附1:TE0802 原理图(点击下载)TE0802 TRM(点击下载)

附2:TE0802 测试板项目 v2019.2代码(点击下载)

加入微信技术交流群

技术交流,职业进阶

关注与非网服务号

获取电子工程师福利

加入电路城 QQ 交流群

与技术大牛交朋友

讨论