ZYNQ(四)封装User IP

用户同样可以自己编写硬件描述语言(HDL),然后封装成IP来使用。
本节的内容即自己封装一个IP,再使用SDK进行debug
(1)创建vivado工程
(加入led.v 流水灯代码)

module led(
input clk_100MHZ,
input rst_n,
output reg [3:0] led
    );
reg [31:0] cnt;
always@(posedge clk_100MHZ or negedge rst_n)
begin
    if(!rst_n)
    begin
        led<=4'b0001;
        cnt<=32'h0000_0000;
    end
    else if(cnt==32'd5000_0000-1'b1)
    begin
        led<={led[2:0],led[3]};
        cnt<=32'h0000_0000;
    end
    else
    begin
        cnt<=cnt+1'b1;
    end
 end
endmodule

(2)将代码作为自定义IP进行封装(tools ->create and package IP)
1、通过IP的“Packager”,设置自己的IP核的库名核目录
ZYNQ(四)封装User IP_第1张图片
2、Create and Package New IP
ZYNQ(四)封装User IP_第2张图片
在工作区弹出如下界面,包含了IP核的一些信息
ZYNQ(四)封装User IP_第3张图片
“compatibility"给出这个IP所支持的FPGA系列,默认所有均支持
“File Groups"中可以看到这个IP包含的文件,可以为这个IP添加一个仿真文件来验证其功能。
”Customization Parameters”,即显示在源程序使用parameter参数。
“ports and interfaces",即显示IP的接口
“Customization GUI”,可以看到IP核的原理图图形
“Review and Package” ->点击”package IP"会生成IP核

(3)调用自定义IP
1、另外新建一个vivado工程,配置开发板和芯片型号。
2、选中“IP”的"Repository",添加刚才封装IP核的目录
ZYNQ(四)封装User IP_第4张图片
3、创建Block Design ,并且进行PS端配置,连接Block Design,并将引脚引出作为外部引脚
ZYNQ(四)封装User IP_第5张图片
4、Generate the Output products ->create HDL wrapper ->添加.xdc约束文件->生成bit文件
导入到SDK(由于自定义的IP的时钟输入来自于ZYNQ PS端,所以需要启动SDK 整个系统才能启动,而自定义IP不需要SDK进行配置,可以在SDK端建立一个Hello World工程就可以自定义IP跑起来
注意:如果工程使用源时钟是PS时钟,需要启动SDK系统才能正常工作(若是系统使用到ZYNQ Processing System,则系统使用的是PS时钟)
5、Export Hardward->launch SDK
6、创建application->创建一个helloworld工程
7、run as->run configuration
8、debug as->debug configuration
即开发板就可以跑流水灯IP

你可能感兴趣的:(ZYNQ(四)封装User IP)