【ZYNQ】教你用 Vivado HLS 快速设计一个 IP

Xilinx 推出的 Vivado HLS 工具可以直接使用 C、C++或 System C 来对 Xilinx 系列的 FPGA 进行编程,从而提高抽象的层级,大大减少了使用传统 RTL 描述进行 FPGA 开发所需的时间。

Vivado HLS 的功能简单地来说就是把 C、C++ 或 SystemC 的设计转换成 RTL 实现,这样就可以在 Xilinx FPGA 或 Zynq 芯片的可编程逻辑中综合并实现,我们仍然是在进行硬件设计,只不过使用的不再是硬件描述语言

以实现 LED 闪烁为例,通过使用 HLS 生成一个 LED 闪烁 IP,并导入到 Vivado 中验证,学习掌握使用 HLS 快速设计 IP 的方法。

  • 开发环境:Windows

  • 软件版本:Vivado 2017.4

  • 验证平台:黑金 ZYNQ 7035

HLS 设计

  • 打开 HLS,点击 Create New Project

  • 填写工程名字,选择工程保存路径,注意不可包含中文,点击 Next

  • 填写顶层函数名字,点击 Next

  • 暂时不添加文件,点击 Next

  • Clock Period 为运行时钟的周期,默认是 10ns,Clock Uncertainty 默认为时钟周期的 12.5%。点击 ... 选择芯片类型:

  • 我们使用的验证板卡为黑金的 ZYNQ7035 开发板,搜索选中 xc7z035fbg676,点击 OK

  • 点击 Finsh,工程配置完成:

  • 等待工程创建完毕,如图所示:

  • 添加源文件,右键 Source-->New File

  • 在工程目录下新建 src 文件夹,创建 .c 文件,文件命名和顶层函数一致:

  • 在源文件中添加源代码,代码功能是实现一个 LED 的闪烁:
#include <ap_cint.h>#define DELAY 50000000void led_ctrl(uint1 *led)
{int i = 0;for(i = 0; i < DELAY; i++){if(i < DELAY / 2){*led = 1;}else{*led = 0;}}
}
  • 如下图所示:

  • 点击 Run C synthesis 对代码进行综合:

  • 综合完成后可以查看综合报告:

  • 重点关注生成的接口信息,如图所示:

  • 此次我们实现的功能相对比较简单,采用更为简单的 ap_ctrl_none 和 ap_none 协议来综合,在源代码中添加两行指令:
#pragma HLS INTERFACE ap_none port=led
#pragma HLS INTERFACE ap_ctrl_none port=return

  • 保存后再次进行综合:

  • 综合完成后查看综合报告,端口简化了许多:

  • 点击 Export RTL 导出 IP:

  • 保持默认设置,点击 OK

  • 等待导出完成:

  • 在目录下可以看到导出的 IP:

  • 如果在导出 RTL 时报如下错误:

  • 参考解决方案:HLS 2017.4 导出 RTL 报错:ERROR: [IMPL 213-28] Failed to generate IP.

IP 验证

  • 创建 Vidado 基础工程,在工程目录下创建 ip_repo 文件夹,将 HLS 创建的 IP 复制过来并解压缩:

  • 在 Vivado 中导入创建的 IP,点击菜单栏 Tool-->Settings

  • 点击 IP --> Repository,点击右侧 + 号:

  • 找到 IP 存放路径,点击 Select

  • 在弹出的界面中可以看到已经识别出来的 IP,点击 OK

  • 创建 Block Design,首先导入一个 Utility Vector Logic

  • 将其配置成 1 位位宽的非门:

  • 导入我们创建的 IP:

  • 如图连接两个 IP 并创建外部端口:

  • 选择 Validate Design 验证设计,验证无误后保存设计:

  • 执行 Generate Output ProductsCreate HDL Wrapper

  • 由于验证板卡时钟为差分输入,这里将 wrapper 文件稍作修改:

  • 添加约束文件:

  • 点击 Generate Bitstream,对设计进行综合、实现、并生成 Bitstream 文件。

板级验证

  • 将比特流文件下载到开发板中,实现效果:

参考来源

  • 正点原子领航者
  • 黑金 ZYNQ7035

更多内容

  • CSDN博客:@Hello阿尔法
  • 哔哩哔哩:@Hello阿尔法
  • 知乎:@Hello阿尔法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/305311.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分布式事务的8种解决方案(荣耀典藏版)

大家好&#xff0c;我是月夜枫&#xff0c;在上篇文章中&#xff0c;我们已经谈到了分布式中至关重要的两个理论&#xff1a;CAP 理论和 BASE 理论。 今天将带大家探讨分布式事务里的“八奇技”&#xff0c;帮助大家在实际的分布式系统中更好地运用事务。 时光穿梭机&#xff…

Redis缓存雪崩、缓存击穿、缓存穿透

1. 什么是缓存雪崩 当我们提到缓存系统中的问题&#xff0c;缓存雪崩是一个经常被讨论的话题。缓存雪崩是指在某一时刻发生大量的缓存失效&#xff0c;导致瞬间大量的请求直接打到了数据库&#xff0c;可能会导致数据库瞬间压力过大甚至宕机。尤其在高并发的系统中&#xff0c;…

CodeWhisperer——轻松使用一个超级强大的工具

CodeWhisperer 简介 CodeWhisperer是亚⻢逊云科技出品的一款基于机器学习的通用代码生成器&#xff0c;可实时提供代码建议。 CodeWhisperer有以下几个主要用途&#xff1a; 解决编程问题&#xff0c;提供代码建议&#xff0c;学习编程知识等等&#xff0c;并且CodeWhisper…

第一节 初始化项目

系列文章目录 第一节 初始化项目 文章目录 操作步骤 总结 操作步骤 打开cmd 输入 vue ui 在打开的网页中点击“创建”&#xff0c;复制文件夹路径并粘贴点击“在此创建新项目” 输入项目名称 点击下一步选择手动配置 选择babel、router、vuex、css pre-processors、 linter建…

大数据与人工智能|万物皆算法(第三节)

要点一&#xff1a;数据与智能的关系 1. 一切的核心都是数据&#xff0c;数据和智能之间是密切相关的。 数据是对客观现实的描述&#xff0c;而信息是数据转化而来的。 例如&#xff0c;24是数据&#xff0c;但说“今天的气温是24摄氏度”是信息&#xff0c;而说“班可以分成24…

Unity TextMeshPro中文字体的转换与显示

Unity TextMeshPro功能非常强大&#xff0c;但是我们用默认的字体格式却无法显示中文&#xff0c;必须把字体转换之后才能正常显示中文。 具体转换方法&#xff1a; 1、准备好字体&#xff0c;ttf或otf格式都可以&#xff0c;如&#xff1a;SOURCEHANSANSCN-NORMAL.OTF 2、准…

Elasticsearch8.x结合OpenAI CLIP模型实现图搜图及文搜图功能

前言 在当今大数据时代&#xff0c;搜索引擎已经是许多应用的核心组件之一&#xff0c;近年随着大模型以及AI技术&#xff08;如&#xff1a;自然语言处理NLP&#xff09;的流行&#xff0c;这些技术的结合将会创造出更多的应用场景&#xff0c;比如&#xff1a;电商商品搜索、…

数据驱动与数据安全,自动驾驶看得见的门槛和看不见的天花板

作者 |田水 编辑 |德新 尽管心理有所准备&#xff0c;2023年智能驾驶赛道的内卷程度还是超出了大多数人的预期。 这一年&#xff0c;汽车价格战突然开打&#xff0c;主机厂将来自销售终端的价格压力&#xff0c;传导到下游智驾供应商&#xff0c;于是&#xff0c;市面上出现…

100V降压芯片H6603 外围简洁无过冲 12V 24V 36V 48V 60V 转5V 3.3V

H6603是一款优秀的降压恒压电源芯片&#xff0c;具有外围元器件少、电路简单、效率高、发热量低等特点。 H6603 是一款内置功率 MOSFET降压开关转换器。在宽输入范围内&#xff0c;其峰值输出电流可达到 0.8A&#xff0c;具有极好的负载和线性调整率。 电流控制模式提供了快速瞬…

网工内推 | 网络服务工程师,HCIE认证优先,带薪年假,年终奖

01 高凌信息 招聘岗位&#xff1a;服务工程师&#xff08;珠海&#xff09; 职责描述&#xff1a; 1、负责华为数通&#xff08;交换机、路由器&#xff09;、IT&#xff08;服务器、存储&#xff09;等任一或多个产品领域的项目实施交付&#xff1b; 2、独立完成华为数通&…

什么是https证书?

HTTPS证书&#xff0c;也称为SSL&#xff08;Secure Sockets Layer&#xff09;证书或TLS&#xff08;Transport Layer Security&#xff09;证书&#xff0c;是一种数字证书&#xff0c;用于在网络上建立安全的加密连接。它的主要目的是确保在互联网上进行的数据传输的安全性和…

【MySQL学习笔记008】多表查询及案例实战

1、多表关系 概述&#xff1a;项目开发中&#xff0c;在进行数据库表结构设计时&#xff0c;会根据业务需求及业务模块之间的关系&#xff0c;分析并设计表结构&#xff0c;由于业务之间相互关联&#xff0c;所以各个表结构之间也存在着各种联系&#xff0c;基本上可分为三种&a…