当前位置: 首页 > news >正文

[Vivado那些事儿]将自定义 IP (HDL)添加到 Vivado 模块设计(Block Design)

绪论

使用Vivado Block Design设计解决了项目继承性问题,但是还有个问题,不知道大家有没有遇到,就是新设计的自定义 RTL 文件无法快速的添加到Block Design中,一种方式是通过自定义IP,但是一旦设计的文件有问题就需要重新修改,同时需要控制接口时候还需要在AXI总线模板基础上进行修改,再同时繁琐的步骤也让人“望而却步”。下面介绍一种简单的方式。

1f5e6af0ddf78150b303121215aecd08.png

我目前使用的是 Vivado 2019.1、2020.2,但据我所知,此功能几乎适用于 Vivado 的所有版本(如果不正确,请随时在后台更正)。

创建 Vivado 项目

为了开始这个例子,我创建了一个基于 Zynq 的新 Vivado 项目(这只是我的例子,但这个项目的内容并不特定于任何特定的 FPGA 开发板),同时这个项目中包括一个通过AXI-Lite控制的自定义RTL。

添加设计文件并编写自定义 RTL

不用于仿真目的的自定义 RTL(即测试文件)都被视为 Vivado 中的设计源。使用 Flow Navigator 中的Add Sources选项并选择Add or create design sources ,然后单击 Next。

0c2a83d7b6f0f6c68b3d5ba7b12fad0e.pnge3d2d551301c6f6e4d99f7c120709656.png

我们创建一个名为D_flipflop的新文件并添加了以下逻辑:

module D_flipflop(input clk,input reset,input d_in,output reg q_out);always @ (posedge clk)beginif (reset == 1'b1)beginq_out <= 1'b0;endelse beginq_out <= d_in;endend
endmodule

创建Block Design

使用 Flow Navigator 窗口中的Create Block Design选项,将新的Block Design添加到项目中。

0f5c5794dd0b16172afaf230cacc1416.png

将 Zynq 处理系统 IP 块添加到设计中,并运行自动设置或者自动连线。

8381957cd971deb67e8a969e3ab015a3.png

将 RTL 模块添加到Block Design

要添加我们在上一步中创建的 D 触发器的 RTL 模块,右键单击 Diagram 窗口空白处的任意位置,然后选择Add Module...选项。

c9d7dd70e5ebd1c1cac5228c469da331.png

Vivado 将自动显示它在当前项目中找到的所有有效 RTL 模块。由于写入或导入到当前项目中的模块是我们刚刚设计的 D 触发器,因此它是本例中的唯一选项。

953bcff702c92b6c512d2ccc22eba3b3.png

为了给触发器提供源,我添加了一个 AXI GPIO IP ,其中第一个通道作为输出,第二个通道作为输入。自动连接即可。

cf960d63ac50d0d3261621dafab1575a.png

为 AXI GPIO 模块运行自动连接后,将输出 GPIO 通道连接到触发器的 d_in,将触发器的 q_out 连接到输入 GPIO 通道。

3ad9d1511337a541fe680f3c050b342d.png

全部连接好后,点击那个勾勾进行验证。

3fbbb4d0870755b39f1c10969bb4f232.png

Block Design完成后,为Block Design生成顶层文件。

05100d9bb1e3b45061e39c6053ba5800.png

完成后可以看下整个项目的文件层次结构。

3d5903d64f515403586b11db28e93c63.png

就是这样,OVER~

往期推荐

Vivado那些事】OOC综合方式

Vivado那些事】Xilinx FPGA普通IO能不能直接接入PLL作为时钟输入

Vivado那些事】Force Up-to-Date功能

Vivado那些事】Xilinx 7系列时钟结构详解

Vivado那些事Vivado两种生成、固化烧录文件

Vivado那些事】FPGA的配置方式

Vivado那些事】Force Up-to-Date功能

Vivado那些事】FPGA配置失败,无法启动怎么办

Vivado那些事】如何查找官网例程及如何使用官网例程

Vivado那些事】关于reset_project和reset_project -exclude ip使用

相关文章:

[Vivado那些事儿]将自定义 IP (HDL)添加到 Vivado 模块设计(Block Design)

绪论使用Vivado Block Design设计解决了项目继承性问题&#xff0c;但是还有个问题&#xff0c;不知道大家有没有遇到&#xff0c;就是新设计的自定义 RTL 文件无法快速的添加到Block Design中&#xff0c;一种方式是通过自定义IP&#xff0c;但是一旦设计的文件有问题就需要重…...

开学必备数码清单,大学生开学必备数码好物分享

还有很多小伙伴不知道开学应该准备什么&#xff0c;在学校当中需要用到的数码产品&#xff0c;在宿舍娱乐使用的音箱、学习当中使用到的笔记本&#xff0c;这些都是我们可以准备的&#xff0c;还有一个小众的好物&#xff0c;能够让我们在学校当中提升生活的幸福感&#xff0c;…...

【面试题】常见前端基础面试题(HTML,CSS,JS)

大厂面试题分享 面试题库后端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★地址&#xff1a;前端面试题库html语义化的理解代码结构: 使页面在没有css的情况下,也能够呈现出好的内容结构有利于SEO: 爬虫根据标签来分配关键字的权重,因此可以和搜索引擎…...

Vue (4)

文章目录1. 绑定样式1.1 绑定 class 样式1.2 绑定 style 样式2. 条件渲染2.1 v-show2.2 v-if3. 列表渲染3.1 v-for3.2 key 的作用与原理3.3 列表过滤3.4 列表排序1. 绑定样式 说 绑定样式 前&#xff0c;先准备好 以下几个 样式 : <style>.basic {width: 400px;height: 1…...

静态库和动态库的制作

一、什么叫做库&#xff1a; 库&#xff1a;二进制的程序&#xff0c;能被操作系统载入内存中执行 二、Linux下的库有两种&#xff1a;静态库和共享库(动态库)&#xff0c;二者的不同点在于代码载入的时刻不同。 A、静态库在程序编译的时候并会被连接到目标代码中&#xff0c;程…...

Oracle实现高可用性的工具(负载均衡/故障切换)

Oracle实现高可用性的工具&#xff08;负载均衡/故障切换&#xff09;1 Oracle RAC故障转移负载均衡2 Data Guard负载均衡-读写分离Data Guard Broker3 GDSGSM&#xff1a;连接管理工具主要功能Data Guard Broker功能是监控Data Guard状态&#xff0c;当主库异常时自动切换角色…...

图解经典电路之OCL差分功放-三极管分立器件电路分析

下面从简到繁,从框架到细节的顺序讲解电路。即先讲框架,然后逐渐添加电路细节,所以大家跟上思路。 1、第一步,尽可能的抽象这个电路,等效如下: 图二 OCL等效电路 整个OCL电路,可以等效为一个大功率的运放,加上几个电阻电容构成了一个同向放大器,就是这么简单。 为了便…...

thymeleaf模板注入学习与研究--查找与防御

一、日常编码中常见的两种漏洞场景 1.1 模板参数外部可控 RequestMapping("/path")public String path(RequestParam String lang) {return lang ;}实际开发过程中 依靠我丰富的想象力只能想出 换主题 这种场景下可能会出现 大佬们自行脑补吧。 1.2 使用GetMappin…...

第七章:Linux最小化搭建环境解说2

配置IP地址&#xff1a;我们先要到网卡配置文件夹里&#xff0c;路径是/etc/sysconfig/network-scripts/&#xff0c;有点长&#xff0c;不过没事&#xff0c;我们要学会习惯&#xff0c;这还是经常用的。然后就是用ls命令查看下面有什么&#xff0c;只有一个文件ifcfg-ens160&…...

两道链表经典算法题---链表有无环(基础+进阶)

生活就像一盒巧克力&#xff0c;你永远不知道你会得到什么。——《阿甘正传》目前自己粗略的学完数据结构&#xff0c;正在开始刷算法题目。个人觉得算法是一个积累&#xff0c;循序渐进的的过程&#xff0c;需要不断加量&#xff0c;进而达到所谓的质。链表作为数据结构一个重…...

2023/1/14总结

今天学习的是c语法知识。 容器arry&#xff1a; 通俗来说这个容器就i是c语言的数组&#xff0c;和C中vevtor不同&#xff0c;arry是定长度的&#xff0c;而vector是动态数组。头文件为&#xff1a;<arry> 初始化&#xff1a; arry<数据类型&#xff0c;你所要声明…...

Python 之 NumPy 统计函数、数据类型和文件操作

文章目录一、统计函数1. 求平均值 mean()2. 中位数 np.median3. 标准差 ndarray.std4. 方差 ndarray.var()5. 最大值 ndarray.max()6. 最小值 ndarray.min()7. 求和 ndarray.sum()8. 加权平均值 numpy.average()二、数据类型1. 数据存储2. 定义结构化数据3. 结构化数据操作三、…...

互联网新时代要到来了(一)什么是Web3.0?

什么是Web3.0? tips&#xff1a;内容来自百度百科、知乎、搜狐新闻、李留白公众号、CSDN「Meta.Qing」博客等网页 什么是Web3.0?1.什么是Web3.0&#xff08;概念介绍&#xff09;&#xff1f;2.Web3.0简单理解3.Web3.0的技术特点4.Web3.0项目1.什么是Web3.0&#xff08;概念…...

[Yocto] 直接向deploy/images目录部署binary

最近用yocto的时候碰到一个问题,有一些IP的FW binary是从别的地方直接拿来的,没有source code,有一个需求就是需要把它用wks script的方式把它们打包到最后的image里,这篇文章就是来谈谈这个问题。 yocto patch/deploy等做了什么 首先,虽然我们的code,bbfile,或者说pa…...

HarmonyOS Connect原子化服务功能开发(Wi-Fi/Combo)设备控制开发与实现(二)

规设备控制 在“device”目录下的“DeviceApplication.java”文件中&#xff0c;在onInitialize函数中初始化应用。示例代码如下&#xff1a; Override public void onInitialize() {AiLifeServiceHelper.initApplication(this);DeviceHandlerAbility.register(this, "&qu…...

浅析 Makefile

Makefile逻辑 Makefile就是将一系列的工作流串在一起自动执行&#xff0c;构成Makefile最基本的要素是目标、依赖、命令。也就是为了实现目标需要哪些依赖并执行什么样的命令。 target: dependences1 dependences2 ... command1 command2 ...其中&#xff0c;target表示要生…...

保护品牌线上声誉的5种方法

我们如今生活在一个搜索便捷的世界&#xff0c;对于一个企业和个人来说&#xff0c;品牌的线上声誉也尤为重要。在客户考虑与您的公司开展业务之前&#xff0c;他们理所当然会先使用众多软件和平台搜索相关信息&#xff0c;以帮助他们了解和做决定。 因此&#xff0c;您的品牌…...

Java多重选择结构,超详细整理,适合新手入门

目录 一、什么是多重选择结构&#xff1f; 二、if 语句的语法 1、什么是嵌套if语句&#xff1f; 2、if 语句循环基本用法&#xff1a; 3、案例&#xff1a; 二、if...else多重选择结构语法 1、什么是if-else语句&#xff1f; 2、if...else 循环基本用法 3、案例&#…...

SCI写作,一定要避开这些“雷点”!

SCI论文写作中&#xff0c;除了要符合各部分的写作要求&#xff0c;还有许多细节问题需要我们注意&#xff0c;不然可能一不小心就会“踩雷”。 今天我们就来和大家分享SCI各个部分写作时的注意事项。 下面就进入正题&#xff01; SCI写作注意事项 01 标题的拟定 1.避免使用无…...

3GPP-NR Band14标准定义频点和信道(3GPP V17.7.0 (2022-12))

Reference test frequencies for NR operating band n14 Table 4.3.1.1.1.14-1: Test frequencies for NRoperating band n14 and SCS 15 kHz CBW [MHz]carrierBandwidth...

ssm基于Java的试题库管理系统(10030)

有需要的同学&#xff0c;源代码和配套文档领取&#xff0c;加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码&#xff08;前后端源代码SQL脚本&#xff09;配套文档&#xff08;LWPPT开题报告/任务书&#xff09;远程调试控屏包运行一键启动项目&…...

GPT-Image 2 对标竞争者研发?——理性看待“对手传闻”的技术路径(2026 观察)

深度观察&#xff1a;OpenAI 是否在暗中加速 GPT-Image 2 对标竞争者研发&#xff1f;——理性看待“对手传闻”的技术路径&#xff08;2026 观察&#xff09;“竞争对手是否在秘密被研发&#xff1f;”“OpenAI 背后是不是在悄悄做某种 GPT-Image 2 的替代方案&#xff1f;”这…...

开源机械爪资源宝库:从入门到进阶的完整实践指南

1. 项目概述&#xff1a;一个为开源“机械爪”而生的资源宝库如果你对机器人、自动化或者开源硬件感兴趣&#xff0c;最近又在琢磨着给自己的项目加个能抓取、能操作的“手”&#xff0c;那么你很可能已经听说过或者正在寻找“OpenClaw”相关的资料。vincentkoc/awesome-opencl…...

i.MX6Q高温满负载压力测试:从散热原理到嵌入式产品可靠性设计

1. 项目概述与测试背景 在嵌入式产品的研发过程中&#xff0c;尤其是在工业控制、车载电子、户外设备等严苛应用场景下&#xff0c;系统的长期稳定性和可靠性是衡量产品成败的关键。其中&#xff0c;处理器作为系统的“大脑”&#xff0c;其在高负载、高温环境下的表现&#xf…...

在高校科研项目中采用 Taotoken 实现多模型对比实验的便捷方案

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 在高校科研项目中采用 Taotoken 实现多模型对比实验的便捷方案 高校科研团队在进行大模型相关的对比实验时&#xff0c;常常面临一…...

HBuilderX网站打包APP

下载HBuilderX安装包官网地址&#xff1a;https://www.dcloud.io/ 选择HBuilderX极客开发工具 点击DOWNLOAD 点击历史版本&#xff0c;这里为什么不下载最新的版本&#xff0c;是因为我一开始下载的最新版本&#xff0c;打包一直提示cannot find module babel-core 将HBuilder…...

【ElevenLabs意大利文语音实战指南】:20年AI语音工程师亲授7大避坑要点与本地化发音优化秘技

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;ElevenLabs意大利文语音技术全景概览 ElevenLabs 的意大利文语音合成&#xff08;TTS&#xff09;能力已覆盖标准托斯卡纳发音、自然语调建模与多情感适配&#xff0c;支持从新闻播报到戏剧旁白的多样化…...

Windows 10/11打印服务总罢工?别急着重装,试试这几招修复Print Spooler自动停止

Windows 10/11打印服务罢工&#xff1f;5种专业修复方案拯救Print Spooler 办公室里最令人抓狂的时刻之一&#xff0c;就是当你急需打印文件时&#xff0c;发现打印机毫无反应。你检查服务管理器&#xff0c;发现那个关键的Print Spooler服务又自动停止了。这种情况在Windows …...

智能定时任务管理:用自然语言替代Crontab,TickGPTick项目实践

1. 项目概述&#xff1a;一个能“听懂”你需求的定时任务管理器最近在折腾一个自动化脚本项目时&#xff0c;我又一次陷入了“定时任务”的泥潭。相信很多开发者都有同感&#xff1a;写个脚本容易&#xff0c;但想让它定时、可靠、有状态地跑起来&#xff0c;总得和 crontab、s…...

开发者必备:从聊天记录到结构化知识库的自动化工具实践

1. 项目概述&#xff1a;一个面向开发者的轻量级对话记录工具最近在整理几个开源项目的技术讨论记录时&#xff0c;我又一次陷入了混乱。Slack、Discord、Telegram、微信……不同平台的聊天记录散落各处&#xff0c;格式五花八门&#xff0c;想回溯一个关键的技术决策或一个报错…...