当前位置: 首页 > 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使用

http://www.lryc.cn/news/6365.html

相关文章:

  • 开学必备数码清单,大学生开学必备数码好物分享
  • 【面试题】常见前端基础面试题(HTML,CSS,JS)
  • Vue (4)
  • 静态库和动态库的制作
  • Oracle实现高可用性的工具(负载均衡/故障切换)
  • 图解经典电路之OCL差分功放-三极管分立器件电路分析
  • thymeleaf模板注入学习与研究--查找与防御
  • 第七章:Linux最小化搭建环境解说2
  • 两道链表经典算法题---链表有无环(基础+进阶)
  • 2023/1/14总结
  • Python 之 NumPy 统计函数、数据类型和文件操作
  • 互联网新时代要到来了(一)什么是Web3.0?
  • [Yocto] 直接向deploy/images目录部署binary
  • HarmonyOS Connect原子化服务功能开发(Wi-Fi/Combo)设备控制开发与实现(二)
  • 浅析 Makefile
  • 保护品牌线上声誉的5种方法
  • Java多重选择结构,超详细整理,适合新手入门
  • SCI写作,一定要避开这些“雷点”!
  • 3GPP-NR Band14标准定义频点和信道(3GPP V17.7.0 (2022-12))
  • 分库分表索引设计:分布式环境下的 主键索引、二级索引、全局索引的最佳设计实践
  • 2023年全国最新保安员精选真题及答案
  • 计算机网络之http07 http2,http3
  • 内网渗透(二十五)之Windows协议认证和密码抓取-使用Hashcat和在线工具破解NTLM Hash
  • TongWeb8防止System.exit代码导致的进程停止
  • PMP每年考几次,费用如何?
  • 【Kubernetes】【一】Kubernetes介绍
  • C语言:结构体
  • 搭建pclpy环境与读取pandaset数据并转换为pkl格式为pcd格式
  • 别在用scroll去做懒加载了,交叉观察器轻松搞定
  • 工欲善其事,必先利其器,分享5款Windows效率软件