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

这篇具有很好参考价值的文章主要介绍了[Vivado那些事儿]将自定义 IP (HDL)添加到 Vivado 模块设计(Block Design)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

绪论

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

block design fpga,fpga开发

我目前使用的是 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。

block design fpga,fpga开发block design fpga,fpga开发

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

module D_flipflop(
    input clk,
    input reset,
    input d_in,
    output reg q_out
    );
    
    always @ (posedge clk)
        begin
            if (reset == 1'b1)
                begin
                    q_out <= 1'b0;
                end
            else 
                begin
                    q_out <= d_in;
                end
        end
endmodule

创建Block Design

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

block design fpga,fpga开发

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

block design fpga,fpga开发

将 RTL 模块添加到Block Design

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

block design fpga,fpga开发

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

block design fpga,fpga开发

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

block design fpga,fpga开发

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

block design fpga,fpga开发

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

block design fpga,fpga开发

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

block design fpga,fpga开发

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

block design fpga,fpga开发

就是这样,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使用文章来源地址https://www.toymoban.com/news/detail-783440.html

到了这里,关于[Vivado那些事儿]将自定义 IP (HDL)添加到 Vivado 模块设计(Block Design)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【后端那些事儿】Redis设计与实现(一) 数据结构,耐心看完你比Redis还懂Redis!

    本文章主要为了帮助读者认识Redis的数据结构,并深入了解Redis的数据结构,创作不易,希望得到大家的点赞、收藏、关注!谢谢! 1.1简单动态字符串(SDS)的定义 Redis的简单动态字符串(Simple Dynamic String,SDS)是Redis内部使用的字符串表示方式。SDS是一种可以自动扩展长度的字

    2024年01月22日
    浏览(40)
  • vivado 添加现有IP文件、生成IP

    添加现有IP文件 作为从AMD IP目录添加和自定义IP的替代方案,您可以直接添加XCI或XCIX文件。此过程不同于从按以下方式编目: •XCI或XCIX文件可能是早期版本,也可能是相同或完全自定义的版本AMD IP目录中发现的类似IP。 •XCI或XCIX文件可能包括必要的文件或输出产品,以支持

    2024年02月01日
    浏览(38)
  • Vivado自定义IP核

    在FPGA设计中,使用IP核是提高开发效率的关键,不用重复造轮子。然而,Vivado中自带的IP核并不能满足所有需求。在这种情况下,设计自己的IP核非常有用,因为它可以根据具体需求定制化。本文将介绍如何在Vivado中创建自定义IP核。 IP核是一种可重用的硬件模块,能够在不同

    2024年02月05日
    浏览(35)
  • Vivado进行自定义IP封装

    一. 简介         本篇文章将介绍如何使用Vivado来对上篇文章( FPGA驱动SPI屏幕 )中的代码进行一个IP封装,Vivado自带的IP核应该都使用过,非常方便。         这里将其封装成IP核的目的主要是为了后续项目的调用,否则当我新建一个项目的时候,我需要将其对应的.v文件

    2024年02月14日
    浏览(39)
  • VIVADO 自定义封装ip核(超详细)

    版本:vivado 2018.3 vivado 自定义封装ip核,可以将ip核封装成带AXI总线,也可将ip核封装成不带AXI总线。 本次设计介绍,如何将当前工程封装成ip核(不带AXI总线) 目录 一、工程文件介绍 二、封装IP核步骤 三、将IP核添加到ip核库  一、工程文件介绍 1. 创建如下的工程: 2. 工程

    2024年02月03日
    浏览(59)
  • [apue] 进程控制那些事儿

    在介绍进程的创建、启动与终止之前,首先了解一下进程的唯一标识——进程 ID,它是一个非负整数,在系统范围内唯一,不过这种唯一是相对的,当一个进程消亡后,它的 ID 可能被重用。不过大多数 Unix 系统实现延迟重用算法,防止将新进程误认为是使用同一 ID 的某个已

    2024年04月08日
    浏览(49)
  • HTTP的那些事儿

    超文本传输协议(Hyper Text Transfer Protocol,HTTP),它是 在计算机世界中的两个点之间传递文本,图片,多媒体等超文本文件的协议 。HTTP处在 数据链路层,网络层,传输层,应用层 中的应用层,基于TCP之上。 应用广泛,各大网站,APP都离不开HTTP的身影 无状态,和TCP不同,

    2023年04月15日
    浏览(53)
  • Redis那些事儿(一)

            说到redis大家都不陌生,其中包括:共有16个数据库,默认为第0个数据库;数据以key-value键值的形式存储;数据类型包括String、List、Hash、Set等,其中最常用的是字符串;是单线程的、基于内存的,主要受内存和网络带宽的影响… 这些都是基于Redis的基础理论知识

    2024年02月05日
    浏览(56)
  • Redis那些事儿(三)

            接着上一篇Redis那些事儿(二) ,这一篇主要介绍Redis基于Geo数据结构实现的地理服务,它提供了一种方便的方式来存储和处理与地理位置相关的数据。Geo数据结构是Redis的一种特殊数据类型,用于存储地理位置信息,每个地理位置被表示为经度和纬度的坐标,可

    2024年02月05日
    浏览(61)
  • 【C++11那些事儿(一)】

    在2003年C++标准委员会曾经提交了一份技术勘误表(简称TC1),使得C++03这个名字已经取代了C++98称为C++11之前的最新C++标准名称。不过由于TC1主要是对C++98标准中的漏洞进行修复,语言的核心部分则没有改动,因此人们习惯性的把两个标准合并称为C++98/03标准。从C++0x到C++11,C++标

    2023年04月14日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包