0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用Vivado Block Design设计解决项目继承性问题

OpenFPGA 来源:OpenFPGA 2023-02-13 11:02 次阅读

绪论

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

34d90572-ab49-11ed-bfe3-dac502259ad0.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。

34ee91e4-ab49-11ed-bfe3-dac502259ad0.png35080f2a-ab49-11ed-bfe3-dac502259ad0.png

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

moduleD_flipflop(
inputclk,
inputreset,
inputd_in,
outputregq_out
);

always@(posedgeclk)
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添加到项目中。

3522af1a-ab49-11ed-bfe3-dac502259ad0.png

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

35316b68-ab49-11ed-bfe3-dac502259ad0.png

将 RTL 模块添加到Block Design

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

35316b68-ab49-11ed-bfe3-dac502259ad0.png

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

35b2dd06-ab49-11ed-bfe3-dac502259ad0.png

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

35dc9b82-ab49-11ed-bfe3-dac502259ad0.png

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

35f00c44-ab49-11ed-bfe3-dac502259ad0.png

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

35fd9ac6-ab49-11ed-bfe3-dac502259ad0.png

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

36117604-ab49-11ed-bfe3-dac502259ad0.png

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

36284abe-ab49-11ed-bfe3-dac502259ad0.png

就是这样,OVER~






审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • HDL
    HDL
    +关注

    关注

    8

    文章

    324

    浏览量

    47104
  • RTL
    RTL
    +关注

    关注

    1

    文章

    377

    浏览量

    59076
  • AXI总线
    +关注

    关注

    0

    文章

    65

    浏览量

    14159
  • Vivado
    +关注

    关注

    18

    文章

    790

    浏览量

    65106

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

文章出处:【微信号:Open_FPGA,微信公众号:OpenFPGA】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    求解 validate design时候出现了IP核被lock的问题

    创建项目,然后create block,然后将ad7616核添加之IP核仓库并添加到design中后,开始validate design的时候出现了IP核被lock的问题(错误截图见附
    发表于 07-31 09:47

    place_design phase4.1使用vivado 2017.2.1无法找到存档错误

    vivado 2017.2.1的place_design phase4.1中找不到存档错误。这是日志声明
    发表于 11-07 11:36

    Vivado 2015.2块设计上打开子层次结构弹出一个新的Block Design窗口

    假设我在Vivado 2015.2的Block Design中有三层设计。此块设计看起来像Hierarchy_0(Hierarchy_1(Hierarchy_2))。当我双击
    发表于 12-25 10:58

    无法打开Vivado项目

    我正在尝试打开一个在运行Ubuntu的Linux机器上的Windows机器上创建的Vivado项目。我们购买了ZC706设计板,并正在尝试为该特定板设计一个设计。当我在Linux VM上打开
    发表于 03-28 15:25

    使用VIVADO IDE设计的最有效方法是什么?

    vivado you can now use IP integrator in which it is using IP to create a Block design.What is the most
    发表于 03-29 09:14

    如何使用Vivado IP Block Design

    的是如何使用它或将其转移到普通的Vivado项目,这样我就可以应用测试平台并对其进行测试。从我的角度来看,IP块设计是加载IP和进行互连的好方法。但是,使用它还需要其他步骤。我错了吗?我花了几个星期的时间尝试将
    发表于 03-20 08:52

    VivadoBlock Design如何改名称?

    在一个Demo中找到一个工程叫petalinux_sd,我将它另存为My_Work,可是其中的Block Design仍然叫petalinux_sd,其顶层文件仍然叫
    发表于 08-06 16:04

    Vivado的helloword程序(一):硬件工程部分

    硬件平台:ZedBoard 软件平台:vivado2013.3 本示例通过综合、实现,生成比特流,发送到SDK实现。 启动vivado并且创建一个项目 根据提示操作一步步创建新项目的时
    发表于 02-07 20:42 455次阅读
    <b class='flag-5'>Vivado</b>的helloword程序(一):硬件工程部分

    Vivado Design Suite 2014.4.1 现已推出!

    Vivado® Design Suite 2014.4.1 现已推出,针对 UltraScale™ 器件进行了更新,其中包括对 Kintex® UltraScale XCKU040 生产的支持
    发表于 02-09 09:06 304次阅读

    Block Design中的Bug的解决办法及解决思路

    Block Design 作为VIVADO的一大新神器,给用户设计带来了极大的方便,能够根据用户的定制需求自动选择、组合以及连接不同的IP。然而,其中不可控的Bug也给用户带来了一定的烦恼
    发表于 02-09 09:44 7896次阅读
    <b class='flag-5'>Block</b> <b class='flag-5'>Design</b>中的Bug的解决办法及解决思路

    C++多继承的二义性问题

    在多重继承中,需要解决的主要问题是标识符不唯一,即二义性问题
    的头像 发表于 03-14 15:26 7086次阅读
    C++多<b class='flag-5'>继承</b>的二义<b class='flag-5'>性问题</b>

    Vivado Design Suite设计套件的UltraFast设计方法的介绍

    UltraFast设计方法对您在Vivado Design Suite中的成功至关重要。 介绍UltraFast for Vivado并了解可用的材料,以帮助您在整个设计周期中应用UltraFast方法
    的头像 发表于 11-20 06:48 2322次阅读

    C语言派生类的定义与继承性认识的实验和源代码免费下载

    本文档的主要内容详细介绍的是C语言派生类的定义与继承性认识的实验和源代码免费下载。
    发表于 11-01 15:07 10次下载

    Vivado BDC (Block Design Container)怎么用

    操作。 Vivado早期版本IPI中的“Block”必须是来自于IP Catalog中的IP,所以对于用户的RTL代码就必须先用IP Packager封装为IP,然后才能添加到IPI中。这就带
    的头像 发表于 11-09 09:43 3421次阅读

    将RTL模块添加到Block Design的步骤

    使用Vivado Block Design设计解决了项目继承性问题,但是还有个问题,不知道大家有没有遇到,就是新设计的自定义 RTL 文件无
    的头像 发表于 06-11 16:27 2309次阅读
    将RTL模块添加到<b class='flag-5'>Block</b> <b class='flag-5'>Design</b>的步骤