前言:
当前各位老铁们对“硬件描述语言程序设计综合产生”大约比较着重,看官们都需要剖析一些“硬件描述语言程序设计综合产生”的相关资讯。那么小编在网上收集了一些关于“硬件描述语言程序设计综合产生””的相关文章,希望朋友们能喜欢,大家快快来学习一下吧!前 言
本文主要介绍HLS案例的使用说明,适用开发环境:Windows 7/10 64bit、Xilinx Vivado 2017.4、Xilinx Vivado HLS 2017.4、Xilinx SDK 2017.4。
Xilinx Vivado HLS(High-Level Synthesis,高层次综合)工具支持将C、C++等语言转化成硬件描述语言,同时支持基于OpenCL等框架对Xilinx可编程逻辑器件进行开发,可加速算法开发的进程,缩短产品上市时间。
本次案例用到的是创龙科技的TLZ7x-EasyEVM-S开发板,它是一款基于Xilinx Zynq-7000系列XC7Z010/XC7Z020高性能低功耗处理器设计的异构多核SoC评估板,处理器集成PS端双核ARM Cortex-A9 + PL端Artix-7架构28nm可编程逻辑资源,评估板由核心板和评估底板组成。核心板经过专业的PCB Layout和高低温测试验证,稳定可靠,可满足各种工业应用环境。
TLZ7x-EasyEVM-S评估板
TLZ7x-EasyEVM-S评估板评估板接口资源丰富,引出千兆网口、双路CAMERA、USB、Micro SD、CAN、UART等接口,支持LCD显示拓展及Qt图形界面开发,方便快速进行产品方案评估与技术预研。
led_flash案例
案例功能:控制评估底板LED2每隔0.5s将状态翻转一次。
HLS工程说明时钟
HLS工程配置的时钟为100MHz,案例将该时钟用于计算0.5s间隔时间进行LED2亮灭状态控制,生成的IP核亦需接入该时钟。如需修改时钟频率,请打开HLS工程后点击,在弹出的界面中的Synthesis栏目进行修改。
图 26
顶层函数
案例顶层函数为led_flash.cpp中的led_flash()。
图 27
点击然后,可在弹出的界面中的Synthesis栏目查看或设置顶层函数。
图 28
该函数控制评估底板LED2每隔0.5s将状态翻转一次。工程设置的时钟为100MHz(周期10ns),在for循环里计数值为100000000,用时为10ns x 100000000 = 1s。
编译与仿真
请参考本文档HLS开发流程说明章节,进行编译。编译完成后,进入仿真界面点击后进行单步运行,进入led_flash()函数。
图 29
继续点击后进入for循环,当i < 50000000时,*led_o等于1(true)。
图 31
点击后全速运行或修改i的值为50000000,当i ≥ 50000000时,*led_o等于0(false)。
图 32
IP核测试
请参考本文档HLS开发流程说明章节,完成IP核测试前的准备工作。
HLS工程生成的IP核为led_flash_0。
图 33
加载PL端.bit格式可执行文件,即可看到评估底板的LED2进行闪烁。
key_led_demo案例
案例功能:通过按键KEY2控制评估底板的LED2状态。
HLS工程说明时钟
HLS工程配置的时钟为100MHz。案例通过按键KEY2控制评估底板的LED2状态,实际没有使用该时钟。如需修改时钟频率,请打开HLS工程后点击
,在弹出的界面中的Synthesis栏目进行修改。
图 34
顶层函数
案例顶层函数为key_led_demo.cpp中的key_led_demo()。
图 35
点击后,可在弹出的界面中的Synthesis栏目查看或设置顶层函数。
图 36
按键所对应的IO默认是上拉、高电平。按下按键时,key_i为0;松开按键时,key_i为1。
普通标量类型参数对应IP核的输入接口,如key_i作为输入。指针类型参数可作为输入输出,如*led_o作为输出。
图 37
编译与仿真
请参考本文档HLS开发流程说明章节,进行编译。编译完成后,进入仿真界面点击后进行单步运行,可看到Console窗口打印led_o的值。由于key_i默认值为0,因此led_o的值为1。
图 38
修改key_i的值为1,并继续点击进行单步运行。
图 39
此时可看到led_o的值为0。
图 40
IP核测试
请参考本文档HLS开发流程说明章节,完成IP核测试前的准备工作。
HLS工程生成的IP核为key_led_demo_0。
图 41
加载PL端.bit格式可执行文件,按下KEY2则LED2点亮,松开KEY2则LED2熄灭。
标签: #硬件描述语言程序设计综合产生 #xilinxc语言