• ZYNQ之HLS学习----开篇实验


    1 Vivado HLS简介

    Xilinx 推出的 Vivado HLS 工具可以直接使用C、C++或 System C 来对 Xilinx 系列的 FPGA 进行编程

    FPGA 设计中从底层向上一共存在着四种抽象层级,依次为:结构性的、RTL、行为性的和高层

    Vivado HLS 的功能简单地来说就是把 C、C++ 或 SystemC 的设计转换成 RTL 实现,然后就可以在 Xilinx FPGA 或 Zynq 芯片的可编程逻辑中综合并实现了

    2 开篇实验

    实验任务是使领航者底板上的 PL LED0 和 PL LED1 以固定的频率交替闪烁,要求使用 C 或C++语言完成设计,然后综合得到 RTL 级实现并进行验证

    2.1 HLS设计

    打开 Vivado HLS 工具,界面如图所示:

    在这里插入图片描述

    如下图,创建一个新的工程,输入工程名和路径,点击Next:

    在这里插入图片描述

    如下图,继续点击Next:

    在这里插入图片描述

    进入如下界面,继续点击Next:

    在这里插入图片描述

    选择芯片型号,如图所示:

    在这里插入图片描述

    创建工程完成,界面如下:

    在这里插入图片描述

    按下步骤新建源文件:

    在这里插入图片描述

    将源文件保存在工程目录下新建的名为src的文件下:

    在这里插入图片描述

    本次试验代码如下:

    #include 
    
    #define DELAY 50000000
    
    void led_twinkle(uint2 *led ){
          int i = 0;
          for(i = 0; i < DELAY; i++){
               if(i < DELAY/2)
                 *led = 1;
               else
                 *led = 2;
         }
     }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    输入代码,进行综合,如图所示:

    在这里插入图片描述

    综合结果的报告,如图所示:

    在这里插入图片描述

    打开 Directive 标签页,右击 led_twinkle ,选择Insert Directive,如图所示:

    在这里插入图片描述

    弹出界面,作如下配置:

    在这里插入图片描述

    然后,源代码多出语句如下:

    在这里插入图片描述

    Directive 标签页,右击 led ,然后选择Insert Directive,如图所示:

    在这里插入图片描述

    进行如下配置:

    在这里插入图片描述

    源码如下:

    在这里插入图片描述

    再次进行综合,综合报告如下:

    在这里插入图片描述

    进行如下操作,导出RTL:

    在这里插入图片描述

    弹出如下窗口,点击OK:

    在这里插入图片描述

    IP核如图所示:

    在这里插入图片描述

    2.2 IP验证

    创建工程,如图所示:

    在这里插入图片描述

    输入工程名和工程路径,该路径与HLS工程路径保持一致:

    在这里插入图片描述

    按如下操作:

    在这里插入图片描述

    选择芯片型号:

    在这里插入图片描述

    工程创建完成:

    在这里插入图片描述

    将 HLS 设计过程中导出的 IP 核拷贝到 Vivado 工程目录下,在 Vivado 工
    程目录下新建一个名为ip_repo的文件夹,然后拷贝并解压IP核压缩包:

    在这里插入图片描述

    将IP添加到工程的IP库,按如下操作:

    在这里插入图片描述

    点击IP中的Repository,然后点击+,添加IP核,如图所示:

    在这里插入图片描述

    如图所示,点击OK:

    在这里插入图片描述

    点击OK,完成IP核添加:

    在这里插入图片描述

    创建Block Design,名字为system,如图所示:

    在这里插入图片描述

    如图操作,添加IP:

    在这里插入图片描述

    添加Utility Vector Logic IP核:

    在这里插入图片描述

    进行如下IP核配置:

    在这里插入图片描述

    创建Port,如图所示:

    在这里插入图片描述

    sys_clk Port类型选择Clock:

    在这里插入图片描述

    Reset类型的Port重命名为sys_rst_n:

    在这里插入图片描述

    led设置为Other:

    在这里插入图片描述

    验证设计,如图所示:

    在这里插入图片描述

    验证成功,点击OK:

    在这里插入图片描述

    生成输入,操作如下:

    在这里插入图片描述

    选择Global,点击Generate:

    在这里插入图片描述

    成功后,点击OK:

    在这里插入图片描述

    创建HDL,如图操作:

    在这里插入图片描述

    弹出如下窗口,点击OK:

    在这里插入图片描述

    创建约束文件,操作如下:

    在这里插入图片描述

    输入名字,点击OK:

    在这里插入图片描述

    完成约束创建:

    在这里插入图片描述

    管脚约束代码:

    set_property -dict {PACKAGE_PIN U18 IOSTANDARD LVCMOS33} [get_ports sys_clk] 
    set_property -dict {PACKAGE_PIN J15 IOSTANDARD LVCMOS33} [get_ports sys_rst_n] 
    set_property -dict {PACKAGE_PIN J18 IOSTANDARD LVCMOS33} [get_ports {led[0]}] 
    set_property -dict {PACKAGE_PIN H18 IOSTANDARD LVCMOS33} [get_ports {led[1]}] 
    
    • 1
    • 2
    • 3
    • 4

    添加管脚约束信息:

    在这里插入图片描述

    生成比特流文件:

    在这里插入图片描述

    点击OK:

    在这里插入图片描述

    点击Cancel即可:

    在这里插入图片描述

    2.3 下载验证

    由于疫情,一直无法去实验室,故ZYNQ开发板不在身边,该步骤内容待更新

    致谢领航者ZYNQ开发板,开启ZYNQ学习之路!

    希望本文对大家有帮助,上文若有不妥之处,欢迎指正

    分享决定高度,学习拉开差距

  • 相关阅读:
    Anaconda+PytorchGPU版本+CUDA+CUNN的下载与安装使用
    【代码+详解】算法题 : 最大公约数
    3.4 设置环境变量MAKEFILES
    CentOS7.6安装docker
    黑马程序员RabbitMQ入门到实战教程【高级篇】学习笔记
    使用 SQL 加密函数实现数据列的加解密
    从MBD到MBE的战略转型路径
    【介绍下LeetCode的使用方法】
    Ceres学习笔记002--使用Ceres求解Powell方程
    jsp+servlet+mysql实现的学生成绩管理系统源码+运行教程
  • 原文地址:https://blog.csdn.net/qq_42078934/article/details/127892220