crazybird

【原创】vivado之IP定制封装(三)

1
阅读(7899)

    接着上一篇博文继续写,上篇博文地址:http://blog.chinaaet.com/crazybird/p/5100000567 。

一、端口和接口选项卡(Ports and Interfaces)

    端口和接口选项卡如图1所示,我们可以定制接口、端口映射到接口、设置端口参数等。这里举一个使能复位引脚的例子,其他的以后有时间再进行相关的介绍。

端口和接口选项卡.png

图1  端口和接口选项卡

    在定制参数选项卡中点击右键并选择“Add Parameter...”,在弹出的对话框中输入参数名称“C_RESET_EN”,如图2所示。点击OK。

添加一个参数.png

图2  添加一个参数

    在弹出的对话框中设置相应的参数,如图3所示。其中,参数在图形界面的显示名称为Reset_En;该参数可编辑;数据类型为bool型;参数默认值为false,即在图形界面中不勾选。点击OK完成参数的设置。

复位使能参数设置.png

图3  设置相应的参数

    然后在端口和接口选项卡中双击复位端口rst_n,在弹出的对话框中填写参数,如图4所示。当复位端口rst_n没有连接时,其驱动值为逻辑1,即复位无效;当参数C_RESET_EN为逻辑0时,复位端口不隐藏,否则复位端口隐藏,且默认驱动值为逻辑1。点击OK完成复位端口的参数设置。

复位端口参数设置.png

图4  复位端口参数设置

    IP封装后,当定制IP时,如果不使能复位端口,则复位端口显示,驱动值由外部决定,如图5所示。如果使能复位端口,则复位端口隐藏,且驱动值为逻辑1,如图6所示。

不使能复位端口.png

图5  不使能复位端口

使能复位端口.png

图6  使能复位端口

二、地址分配和储存映射选项卡(Addressing and Memory)

    地址分配和储存映射选项卡如图7所示,可通过点击“Addressing and Memory Map Wizard”向导完成地址分配和储存映射。由于本设计没有涉及到这一块,所以这里就不作介绍了。

地址分配和储存映射选项卡.png

图7  地址分配和储存映射选项卡

三、定制图形界面选项卡(Customization GUI)

    定制图形界面选项卡如图8所示,可以在layout选项卡中添加选项卡page、组group、参数parameter和文本text,并通过排列这些元素的顺序等来组织用户个性化的IP图形界面,就不作详细的介绍了。太困了,想早点睡觉。

定制图形界面选项卡.png

图8  定制图形界面选项卡

四、总结和封装IP选项卡(Review and Package)

    总结和封装IP选项卡如图9所示,在这里我们设置IP封装后的属性,如IP封装后产生存档压缩文件,其设置为vivado菜单“Tools”——>“Project Settings...”或在流程导航器中点击Project Settings按钮,弹出的对话框中切换到IP选项卡,并勾选“Create archive of IP”,点击OK完成参数设置,如图10所示。

总结和封装IP选项卡.png

图9  总结和封装IP选项卡

设置产生IP压缩包参数.png

图10  设置产生IP压缩包参数

     在定制图形界面选项卡中点击Package IP按钮开始封装IP(一次封装之后该按钮变为Re-Package IP,再点击该按钮则进行IP重新封装)。IP封装之后,则在工程路径中产生IP文件,如图11所示。其中,CrazyBird_user_counter_1.0.zip为IP压缩包。将封装好的IP解压并存放IP仓库中,如图12所示。关于IP仓库的设置,请参考博文http://blog.chinaaet.com/crazybird/p/5100000515 。

IP封装后产生的文件.png

图11  IP封装后产生的文件

将封装好的IP解压并存放IP仓库中.png

图12  将封装好的IP解压并存放IP仓库中

五、定制IP的功能验证

    计数器IP核封装后,现在对它的功能进行测试。新建一个新的工程,具体步骤可参考博文:http://blog.chinaaet.com/crazybird/p/5100000477 。然后点击流程向导中的“IP Catalog”按钮,如图13所示。

点击IP.png

图13  点击“IP Catalog”按钮

    在弹出的IP目录中,双击UserIP分类下的counter_v1_0 IP核,如图14所示。

双击counter.png

图14  双击counter_v1_0 IP核

    在弹出的对话框中配置参数,如图15所示,为27进制计数器并不使能复位信号。

定制IP参数1.png

图15  定制IP参数1

    点击OK,弹出的对话框中点击Generate按钮生成输出文件,如图16所示。然后,点击OK。

点击Generate1.png

图16  点击Generate按钮生成输出文件

    建立一个顶层源文件,具体步骤可参考博文:http://blog.chinaaet.com/crazybird/p/5100000477 。顶层模块的代码如下所示:

`timescale 1ns / 1ps
module counter_top
(
    input           rst_n,
    input           clk,
    output  [4:0]   cnt
);

counter_0 u_counter_0 (
    .rst_n  (rst_n  ),  
    .clk    (clk    ),  
    .cnt    (cnt    )   
);
    
endmodule

    仿真结果如图17所示:

仿真波形.png

图17  仿真结果1

    重新配置IP参数,如图18所示,为14进制计数器并使能复位信号。

2.png

图18  定制IP参数2

    点击OK,弹出的对话框中点击Generate按钮生成输出文件,如图19所示。然后,点击OK。

点击Generate2.png

图19  点击Generate按钮生成输出文件

    顶层模块的代码如下所示:

`timescale 1ns / 1ps
module counter_top
(
    input           clk,
    output  [3:0]   cnt
);

counter_0 u_counter_0 (  
    .clk    (clk    ),  
    .cnt    (cnt    )   
);
    
endmodule

    仿真结果如图20所示:

仿真波形2.png

图20 仿真结果2

    从图17和图20的仿真结果可以看出,自定义封装IP的功能是正确的。终于搞定了,终于可以睡觉了~~~