2229|0

56

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

玩转Zynq连载23——用户自定义IP核的创建与封装 [复制链接]

1概述

         本节以zstar_ex04文件夹下的led_controller_ip工程为例,演示如何创建一个简单的LED闪烁控制模块的IP核。

         创建一个用户自定义IP核,只需要以下3个步骤即可。

 

2 创建IP

         首先我们在文件夹.../project/zstar_ex04/led_controller_ip文件夹下创建一个新的工程,增加一个名为led_controller.vverilog源码文件到这个工程中。源码如下。

module led_controller(

                            input clk,           //时钟信号

                            input rst_n,      //复位信号,低电平有效

                            output sled                //LED指示灯接口 

                   );                                                                                                                      

        

parameter CLK_FREQUENCY                     = 25000;  //clk的时钟频率,KHz

parameter LED_FLASH_FREQUENCY      = 1;            //LED输出的闪烁频率,Hz

 

`define MAX_CNT                       (((CLK_FREQUENCY/LED_FLASH_FREQUENCY)*1000)-1)                 //cnt分频计数最大值

`define MAX_CNT_DIV2  (`MAX_CNT/2-1)                                                                                           //cnt分频计数最大值的一半       

 

//-------------------------------------

reg[31:0] cnt;            //计数器                                                                                                                                   

 

         //cnt计数器进行循环计数

always @ (posedgeclk or negedgerst_n)                                                                                  

         if(!rst_n) cnt<= 32'd0;                                                                                                  

         else if(cnt< `MAX_CNT) cnt<= cnt+1'b1;

         else cnt<= 32'd0;

 

assign sled = (cnt< `MAX_CNT_DIV2) ? 1'b1:1'b0;                   

 

endmodule

         注意这个源码实现在时钟和复位信号下,产生固定频率的1个输出LED指示灯闪烁。时钟频率CLK_FREQUENCYLED闪烁频率LED_FLASH_FREQUENCY都定义为参数(parameter),一会制作IP核的时候都可以配置为GUI供调用IP的用户手动设定。注意,类似的希望让用户可以在GUI上设定的参数,在源码中一定要定义为parameter

         如图所示,该工程中只包含led_controller.v源码文件。创建好工程并添加好工程源码后,建议对工程进行必要的编译,以避免任何的语法错误或者与所支持器件家族有任何不兼容的错误。

只包含led_controller.v源码的工程

         如图所示,点击工程菜单Tools à Create and Package IP…

Create and Package IP菜单

         弹出Create and Package IP的第一个页面,点击Next

         弹出如图所示的Package Options选择对话框,勾选Package your current project选项,然后点击Next

Package your current project选择页面

         如图所示,弹出IP路径设置对话框,IP location路径建议设置和源码所在路径完全一致(通常为工程所在目录下的…/zstar.srcs/source_1/new文件夹)。设置好继续点击 Next

生成IP路径选择页面

         如图所示,点击Finish

New IP Creation页面

         此时,在工程主界面中,如图所示,右侧的Sources à Design Sources下增加了IP-XACT文件夹,展开后,可以看到新增了一个component.xml的文件,该文件就对应了图右侧的Package IP –led_controller页面,它存储当前新创建IP核的相关配置信息。

工程主界面

         如图所示,Package IP –led_controller的第一个配置页面名为Identification,即用户定制IP核相关的配置信息,如IP核供应商(Vendor)、库名称(Library)、IP核名称(Name)、版本号(Version)、IP核显示名称(Display name)、描述(Description)、供应商显示名称(Vendor display name)、公司网址(Company url)等。特别提醒大家别忽略了最下面的Categories项,默认是空白的,若点击右侧的小加号,可以增加一个名称,例如本实例增加了一个名为UserIP的名称选项,将来生成的用户定制IP核在我们的IP核配置面板中将会归类到名为UserIP类别的文件夹下。

Identification配置页面

         如图所示,Compatibility页面其实在我们刚刚创建这个工程选择好器件家族时就已经确定了,即设定该IP核所支持的器件家族(Family)。

Compatibility配置页面

         如图所示,这里可以预览IP核包含的相关源码文件,在源码工程中包含的所有Verilog源码或者仿真测试脚本,也都会出现在这里,被集成到IP核中。

File Groups配置页面

         如图所示,Customization Parameters配置页面罗列源码中所有可配置的参数(parameter所定义的),大家可以双击这些参数进一步配置。

Customization Parameters配置页面

         如我们双击CLK_FREQUENCY参数所在行,弹出如图所示的配置页面。该配置页面中,我们可以配置该参数是否在GUI中可见(Visible in Customization GUI)、是否显示名称(Show Name)等信息,用户可以根据不同参数的实际情况设定。

Edit IP Parameter配置页面

         如图所示,Ports and Interfaces配置页面显示IP核的对外接口。

Ports and Interfaces配置页面

         如图所示,Addressing and Memory配置页面则是针对含有总线接口,并且具有多个寄存器需要寻址的IP核,我们的IP核则不需要,所以是空白的。

Addressing and Memory配置页面

         如图所示,Customization GUI配置页面则显示当前接口在GUI上的layoutpreview信息。

Customization GUI配置页面

         最后,如图所示,这是Review and Package配置页面,可以回顾上面的一些设置,并且回去做相应的修改。点击Package IP可以生成IP

Review and Package配置页面

         至此,IP核已经配置并封装完成。

         如图所示,在Project Manager面板中,若点击Package IP则可以回到IP核的配置页面做修改。若点击IP Catalog则可以添加IP核。

Project Manager面板

         如图所示,打开IP Catalog后,我们可以看到刚刚定义的用户IPled_controller_v1_0已经出现在了UserIP文件夹下面。

IP Catalog页面



此内容由EEWORLD论坛网友ove学习使我快乐原创,如需转载或用于商业用途需征得作者同意并注明出处

此帖出自FPGA/CPLD论坛
点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表