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

绪论

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

02758ccacc004f6b468017bcd431c1c9.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。

ca570e5bc356fb8c85b594fb52974259.png f5ab8608fa2cde3ba98affcd70ef0a4a.png

我们创建一个名为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添加到项目中。

8a2d396bbdcd8827edc44b0bc3cdf65b.png

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

548c58979dbde39065d621bb007410f9.png

将 RTL 模块添加到Block Design

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

87500655657a8fa0d61d98be7cd9168c.png

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

5d05a5f9e923347c6b13833d1b09dd48.png

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

35a01a70b98de074b8883e76e160455e.png

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

8b9b62eed3024e56d56159c88b68917e.png

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

8cb875a2eda3657a1a7153dc65e8eedc.png

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

5df1fed5cc2e84a3f830114284d8b419.png

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

c5daf0a4144bece04591be53d791e925.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使用

### 回答1: Vivado Block Design 是一种用于 FPGA 设计的可视化设计工具,可以通过简单的拖拽和连接操作快速设计出复杂的硬件电路。在 Vivado Block Design 中,用户可以将不同的硬件模块抽象成一个个 IP 核,并将它们拼接在一起构成一个完整的硬件系统。同时,用户还可以通过 Block Design 来进行 RTL 设计和仿真等工作,提高设计效率和设计质量。 ### 回答2: Vivado Block Design 是 Xilinx 公司的一款图形化设计工具,可以用于 FPGA设计和实现。它可以帮助设计人员在不需要编写代码的情况下,通过拖拽和连接各种模块来创建一个完整的 FPGA 设计Block Design 的核心组成部分是 IP(Intellectual Property)模块。这些模块提供了各种功能,比如时钟管理、数据传输等,让设计人员能够轻松地将各种模块打包在一起创建一个完整的设计。 使用 Block Design 进行 FPGA设计有许多优点。首先,它可以加速设计时间,因为设计人员只需要拖放和连接各种 IP 模块,而无需进行繁琐的手动设计。此外,它还可以提高设计的可重用性和可维护性,使得更容易进行调试和功能升级。 当设计人员使用 Vivado Block Design 时,他们可以从 IP 目录中选择不同的 IP 模块。这些 IP 模块既可以是由 Xilinx 公司提供的标准 IP,也可以是用户自己编写的 IP。此外,Block Design 的界面非常简单,任何人都可以在很短的时间内学会如何使用它。 总之,Vivado Block Design 是一款极为强大的 FPGA 设计工具,可以帮助设计人员快速创建高质量的 FPGA 设计。无论是从时间、可重用性还是可维护性来看,它都是一个高效能的工具,值得设计人员掌握和使用。 ### 回答3: Vivado Block Design 是一种基于 IP 核的设计方法,可以在 Vivado 工具中创建和管理复杂的 FPGA 系统。它的主要目的是简化 FPGA 设计流程,并提高设计效率和可重用性。 Vivado Block Design 是一个包含多个 IP 核的设计,这些 IP 核可以通过拖放和连接,用于创建复杂的逻辑系统。在 Vivado Block Design 中,设计人员可以通过 IP Integrator 界面来方便的建立复杂的硬件系统,并在此界面上建立各个 IP 和他们的连接方式。这种方法可以减少硬件设计人员的工作量,也可以增加他们的创作灵活性,进一步优化设计效率。 此外,Vivado Block Design 还具有简单且易于维护的特性。在设计过程中,设计人员可以将设计分成多个模块,从而提高设计的可重用性。这使得修改和维护单个模块成为可能,而不必打破系统整体功能。这也是一种很好的方式,可以使 FPGAs 设计团队更为高效地协作。 总之,Vivado Block设计是一种快速、高效设计FPGA System的方法,它极大地降低了硬件开发周期和成本。通过掌握Vivado Block Design的技术,设计人员可以更好地管理系统设计中的细节,并快速地创建可以满足应用需求的硬件系统。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值