` 今天继续与大家分享一下使用TcL脚本生成Vivado工程及编译的开发体验。创龙提供了丰富的入门教程与Demo程序,帮助我们快速熟悉
FPGA开发流程。先来了解一下什么是Tcl呢?Tcl是“Tool Command Language”的简称,是一种简单高效可移植性好的脚本语言,目前已经广泛应用在几乎所有的EDA工具中。而在Xilinx最新的FPGA设计工具Vivado中,Tcl成为唯一支持的脚本。
Tcl拥有强大的功能,使用了它无需走复杂的流程,一般使用Vivado工具设计一个hello world工程的流程:①新建一个Vivado工程→②新建Block Design→③添加IP核并配置→④生成综合文件→⑤生成FPGA顶层文件→⑥生成bit文件→⑦导出硬件配置文件→⑧启动SDK,新建f***l→⑨新建一个hello_world工程→⑩生成BOOT.bin文件。由此可见流程相当复杂吧。使用Tcl能快速生成Vivado工程及编译工程,生成工程所需要的PL端bit文件。生成工程之后,根据自己的需要,可手动创建Block Design,或者在脚本添加IP、实现自动连接等功能。使用脚本可以快速的在shell终端窗口执行Tcl脚本命令,无需打开Vivado软件就进行编译生成bit 文件,变得更高效了。如果需要修改工程的Block Design文件,可以打开Vivado进行修改或者直接修改Block Design Tcl脚本,所有的Block Design设计,Vivado都会自动保存成Tcl脚本文件。
此次用到Xilinx Vivado 2017.4版本的软件,如果没有安装好的,参考请移步到本人之前发的帖子:
https://bbs.elecfans.com/jishu_1943727_1_1.html,安装好Vivado软件后,打开Vivado软件,点击菜单栏"Window->Tcl Consonle"打开Tcl控制台窗口
调出的Tcl控制台窗口如下
然后输入“cd H:/Board/TLZ7x-EasyEVM/Demo/FPGA-HDL-demos/tl-led-flash/src/scripts/”回车,这里需要注意的是反斜杠方向哦。接着再输入“vivado -mode batch -source tl_led_flash_project.tcl -tclargs tlz7x easyevm xc7z010clg400-2”
Tcl脚本执行过程中出现如下警告信息,可以忽略不计
Tcl脚本执行完成后,Tcl控制台窗口打印信息如下图所示,同时在工程源码"src
uns"目录下生成对应开发平台的Vivado工程。本次生成了配套于创龙TLZ7x-EasyEVM
开发板的tl_led_flash工程。
双击Vivado工程"src
uns l_led_flash.xpr"文件,打开新生成的Vivado工程如下图所示
点击左边栏PROGRAM AND DEBUG下的Generate Bitsteam选项,弹出对话框中选择Yes选项,如下图所示:
在弹出的Launch Runs对话框中,点击OK开始编译Vivado工程,如下图所示:
稍等片刻,Vivado工程即可完成编译。在弹出以下对话框中,点击Cancel完成编译步骤。
编译完后会在Vivado工程"H:BoardTLZ7x-EasyEVMDemoFPGA-HDL-demos l-led-flashsrc
uns l_led_flash.runsimpl_1"目录下生成可执行文件tl_led_flash.bit和tl_led_flash.bin,如下图所示。其中tl_led_flash.bit文件内包含head informa
tion,可以通过下载器解析后加载到FPGA核,tl_led_flash.bin文件为可执行文件。
其实创龙官方已经提供由Vivado工程编译生成的可行文件,位于bin目录下。该目录下包含了适用于创龙全部开发平台的可执行文件,将其下载到对应型号的开发板中即可运行测试。
将所需文件拷贝到TF卡中,然后根据《基于SD卡启动裸机程序》文档指引,测试一下编译的工程文件。
基于SD卡启动的裸机程序主要包含两类,一是
ARM(PS端)+FPGA(PL端)的All-Programmable-SoC-demos例程,二是纯PS(不依赖PL端)的Baremetal(NoOS)裸机例程。两类裸机程序的运行都需要依赖FSBL的BOOT.BIN文件和U-Boot的u-boot.bin文件引导,主要区别在于Baremetal(NoOS)裸机例程不包含PL端tl_led_flash.bin程序。
首先设置u-boot环境变量,将开发板拨码开关拨到101001(1~6),此模式为SD卡启动模式。开发板上电启动,快速按任意键进入U-Boot命令行修改环境变量等。此次分享体验就到这里,后续有新的进展再更新咯。
`