Tronlong创龙 发表于 2024-7-15 16:06

嵌入式HLS 案例开发手册——基于Zynq-7010/20工业开发板(2)

本帖最后由 Tronlong创龙 于 2024-7-21 15:14 编辑

目 录

2 led_flash 案例 19
2.1 HLS 工程说明 19
2.2 编译与仿真 20
2.3 IP 核测试 23
3 key_led_demo 案例 23
3.1 HLS 工程说明 23
3.2 编译与仿真 25
3.3 IP 核测试 27
前 言
本文主要介绍 HLS 案例的使用说明,适用开发环境: Windows 7/10 64bit、Xilinx Vivado
2017.4 、Xilinx Vivado HLS 2017.4 、Xilinx SDK 2017.4。
测试板卡是基于创龙科技Xilinx Zynq-7000系列XC7Z010/XC7Z020高性能低功耗处理器设计的异构多核SoC工业级核心板。
https://p5.itc.cn/images01/20230101/2b47027975f848bab80d16b207ea20d9.jpeg 2 led_flash 案例
案例功能:控制评估底板 LED2 每隔 0.5s 将状态翻转一次。
2.1 HLS 工程说明
(1) 时钟
HLS 工程配置的时钟为 100MHz ,案例将该时钟用于计算 0.5s 间隔时间进行 LED2 亮
灭状态控制,生成的 IP 核亦需接入该时钟。如需修改时钟频率, 请打开 HLS 工程后点击
https://p4.itc.cn/images01/20230101/7ea90c0289134dfba37c37dd60ecf5f2.jpeg ,在弹出的界面中的 Synthesis 栏目进行修改。
https://p1.itc.cn/images01/20230101/41b99bd322da485fa23c8033b3aaef6d.jpeg图 29
(2) 顶层函数
案例顶层函数为 led_flash.cpp 中的 led_flash()。
https://p8.itc.cn/images01/20230101/a5d32d64436a432dbac8d79dba6fa9d2.jpeg图 30
点击
https://p6.itc.cn/images01/20230101/cbe606bed2024105999dfc24483e4626.jpeg 后,可在弹出的界面中的 Synthesis 栏目查看或设置顶层函数。
https://p4.itc.cn/images01/20230101/3cf14def900c4f11a8b91d3b45101336.jpeg图 31
该函数控制评估底板 LED2 每隔 0.5s 将状态翻转一次。工程设置的时钟为 100MHz(周
期 10ns) ,在 for 循环里计数值为 100000000,用时为 10ns x 100000000 = 1s 。
2.2 编译与仿真
请参考本文档 https://p8.itc.cn/images01/20230101/c597dd554ea14a1582ce2b9c24aef31e.jpeg 进行单步运行, HLS 开发流程说明章节,进行编译。编译完成后, 进入仿真界面点击
进入 led_flash()函数。
https://p9.itc.cn/images01/20230101/0f6c1a07f67c4f64b6b74bf0687f30f7.jpeg图 32
https://p5.itc.cn/images01/20230101/53bf54fdfdc24564b52cd62e86334bd4.jpeg图 33
继续点击
https://p9.itc.cn/images01/20230101/bda8d62f174a4e5cbecf9fdddd1a9b1a.jpeg 进入 for 循环,当 i < 50000000 时, *led_o 等于 1(true)。
https://p2.itc.cn/images01/20230101/e726da25dba147b5a0ab237f9fa3d700.jpeg图 34
点击
https://p3.itc.cn/images01/20230101/41338bb03c9b4299a3c4a5909b27b2d7.jpeg 全速运行或修改 i 的值为 50000000,当 i ≥ 50000000 时,*led_o 等于 0(false)。
https://p8.itc.cn/images01/20230101/81346c7fe4fe4c219a2f68a0c2130a89.jpeg图 35
2.3 IP 核测试
请参考本文档 HLS 开发流程说明章节,完成 IP 核测试前的准备工作。
HLS 工程生成的 IP 核为 led_flash_0。
https://p4.itc.cn/images01/20230101/4f90c67e811040068bb468b4e4c5b34e.jpeg图 36
加载 PL 端.bit 格式可执行文件,即可看到评估底板的 LED2 进行闪烁。
3 key_led_demo 案例
案例功能:通过按键 KEY2 控制评估底板的 LED2 状态。
3.1 HLS 工程说明
(1) 时钟
HLS 工程配置的时钟为 100MHz 。案例通过按键 KEY2 控制评估底板的 LED2 状态,实
际没有使用该时钟。 如需修改时钟频率, 请打开 HLS 工程后点击
https://p6.itc.cn/images01/20230101/2bf048c4b78042228fb6ff85ca080dde.jpeg ,在弹出的界面中的 Synthesis 栏目进行修改。
https://p8.itc.cn/images01/20230101/25770b588bef419e9864198f21d5a435.jpeg图 37
(2) 顶层函数
案例顶层函数为 key_led_demo.cpp 中的 key_led_demo()。
https://p5.itc.cn/images01/20230101/1ae6d34cd6194e0f9d6ed05818e34184.jpeg图 38
点击
https://p7.itc.cn/images01/20230101/e89ba855a85a4a3981ae3b2ef1ca4284.jpeg 后,可在弹出的界面中的 Synthesis 栏目查看或设置顶层函数。
https://p4.itc.cn/images01/20230101/8f81ff9800a641c0b9967dadcffea4c8.jpeg图 39
按键所对应的 IO 默认是上拉、高电平。按下按键时, key_i 为 0;松开按键时, key_i 为 1。
普通标量类型参数对应 IP 核的输入接口, 如 key_i 作为输入。指针类型参数可作为输
入输出, 如*led_o 作为输出。
https://p4.itc.cn/images01/20230101/0e3544fb72f444c09efb5b752a6b947f.jpeg图 40
3.2 编译与仿真
请参考本文档
https://p1.itc.cn/images01/20230101/0ddc694a2a23467fa3c138c23fbdb15a.jpeg 进行单步运行,
led_o 的值为 1。
HLS 开发流程说明章节,进行编译。编译完成后, 进入仿真界面点击 可看到 Console 窗口打印 led_o 的值。由于 key_i 默认值为 0 ,因此
https://p5.itc.cn/images01/20230101/2ace46e497e1469981c6bc958a065930.jpeg图 41
修改 key_i 的值为 1,并继续点击
https://p8.itc.cn/images01/20230101/c25f7344120d4489bfa01865f839cf15.jpeg 进行单步运行。


此时可看到 led_o 的值为 0 。
https://p0.itc.cn/images01/20230101/800e6ce105ed4b439106bad233b9ffdc.jpeg图 43
https://p7.itc.cn/images01/20230101/eed02bb5efa94c70a5cc9dc0fc1c4ba4.jpeg 3.3 IP 核测试
请参考本文档 HLS 开发流程说明章节,完成 IP 核测试前的准备工作。
HLS 工程生成的 IP 核为 key_led_demo_0。

加载 PL 端.bit 格式可执行文件,按下 KEY2 则 LED2 点亮,松开 KEY2 则 LED2 熄灭。

yangjiaxu 发表于 2025-1-23 11:22

这种.bit的执行文件,也算是一种二进制文件吗?
页: [1]
查看完整版本: 嵌入式HLS 案例开发手册——基于Zynq-7010/20工业开发板(2)