码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Linux环境下Vivado和HLS功能测试


    一. 简介

    针对已经完成的Vivado在Linux下的安装与运行,本文主要通过一个LED灯闪烁的案例对Vivado和HLS在Linux操作系统下的运行流程进行介绍,并对已安装软件功能进行一个简单的测试。
    HLS将C代码的编译综合为Verilog或VHDL代码,本文对HLS生成的代码进行简单的分析,同时也对编译过程中可能出现的报错 “Failed to generate IP”进行解决。

    二. Vivado_HLS生成IP核

    1. 运行Vivado_HLS:
      Vivado_HLS的运行过程在Vivado在Linux下的安装与运行中已做介绍,运行以下命令shell脚本即可打开HLS:
    	source /opt/Xilinx/Vivado/2017.4/settings64.sh  ##Vivado在Linux下的安装路径
    	vivado_hls
    
    • 1
    • 2

    请添加图片描述

    打开界面如下图所示:

    请添加图片描述

    1. 创建新工程 Create New Project,将工程建立在Documents下的workplace工作文件夹内以便查找:

    请添加图片描述

    1. 顶层模块命名 Top Function:

    请添加图片描述

    1. 选择FPGA型号 Part Selection,与选用的型号保持一致即可:

    请添加图片描述

    1. 新建.cpp文件,代码内容很简单,即每隔50M个时钟周期LED灯闪烁一次,编译生成IP核:

    请添加图片描述

    IP核如图所示:

    在这里插入图片描述

    三. Vivado工程调用IP核

    1. 运行Vivado:
      Vivado的运行过程在Vivado在Linux下的安装与运行中已做介绍,运行以下命令shell脚本即可打开Vivado:
    	source /opt/Xilinx/Vivado/2017.4/settings64.sh  ##Vivado在Linux下的安装路径
    	vivado
    
    • 1
    • 2
    1. 新建工程后,在IP Catalog中增加HLS工程所在路径,可以看到HLS生成的IP核成功导入:

    请添加图片描述

    1. 新建bd(Block Design)工程,导入IP核,ap_rst始终拉低,ap_clk和led_V接口外接:

    请添加图片描述

    1. ap_clk和led_V分别约束到晶振时钟输出和LED接口:

    请添加图片描述

    1. 综合成功后生成bit流文件:

    请添加图片描述

    1. 由于采用时钟为50MHz,因此program device后可以看到LED每秒闪烁一次:

    在这里插入图片描述

    请添加图片描述

    四. HLS生成Verilog代码分析

    将HLS生成的IP核打开可以看到编译后的Verilog代码如下图:

    请添加图片描述
    其中命名较为复杂混乱,但由LED灯的工作原理,可以从输入输出接口入手简单分析:

    计数器i_reg_39与i_1_fu_56_p2基本等价,相互赋值完成依赖于输入时钟的计数器功能,通过与25M比较完成led_V输出接口的翻转,实现每50M个时钟周期完成一次闪烁的功能;

    五. HLS运行过程出现的问题与解决

    出现问题:

    HLS在编译综合工程生成IP核的过程中可能会出现“Failed to generate IP”的报错,如下图所示:

    在这里插入图片描述

    解决方法:

    这一问题通常是由于HLS版本较早导致,例如本工程使用的是2017.4版本的HLS,因此需要将系统时间改到2018年之前即可成功生成IP核:

    在这里插入图片描述

  • 相关阅读:
    corosync-qdevice使用
    搭建私有仓库Nexus的流程以及npm包的开发和发布
    BigDecimal 类型的计算方法
    pandas使用drop函数基于行索引、或者行索引名称删除指定的数据行(drop rows use row index or index label)
    【C++】狗屁不通文章生成器2.0
    C++八股记录
    华为Mate60低调发布,你所不知道的高调真相?
    uniapp接口请求api封装,规范化调用
    新版本idea中使用springboot 国际化 Resource Bundle不显示
    MyBatis - 一旦执行到打印日志 Parameter 就卡死的原因探索
  • 原文地址:https://blog.csdn.net/weixin_43361652/article/details/128169909
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号