1. 最简单的自定义IP封装

1.1实验任务

将PL端控制LED灯每隔1s进行闪烁的IP核进行简单的封装,然后与ARM A9处理器连接,A9处理器给该LED IP核提供clk和rst_n信号

1.2实验过程

首先将Zynq_Uart工程另存为,在此工程上修改,避免重复性工作。首先需要显示FCLK,并将频率设置为100MHz,双击Zynq模块

Zynq自定义IP

显示clk_rst_n信号

Zynq自定义IP

Zynq自定义IP

显示之后的效果如下

Zynq自定义IP

下面编写驱动PL端LED灯的代码,如下

  1. `timescale 1ns / 1ps  
  2. module led(  
  3.     input clk,   // 100MHz  
  4.     input rst_n,  
  5.   
  6.     output reg[3:0] led  
  7.     );  
  8.   
  9.     reg[31:0] cnt;  
  10.     always @(posedge clk, negedge rst_n) begin  
  11.         if(!rst_n)  
  12.             cnt <= 32'd0;  
  13.         else begin  
  14.             if(cnt == 32'd999_999_99)  
  15.                 cnt <= 32'd0;  
  16.             else   
  17.                 cnt <= cnt + 1'b1;  
  18.         end  
  19.     end  
  20.   
  21.     //define led  
  22.     always @(posedge clk, negedge rst_n) begin  
  23.         if(!rst_n)  
  24.             led <= 4'b0;  
  25.         else if(cnt == 32'd499_999_99)  
  26.             led <= 4'b1111;  
  27.         else if(cnt == 32'd0)  
  28.             led <= 4'b0;  
  29.         else   
  30.             led <= led;  
  31.     end  
  32.   
  33. endmodule  

该模块共三个信号,100MHz的clk,复位信号 rst_n,以及输出的led信号

代码没有错误后,进行封装

Zynq自定义IP

Zynq自定义IP

点击next

Zynq自定义IP

选择Package a specified directory,再点击next

Zynq自定义IP

定位到IP核对应的verilog文件,点击next

Zynq自定义IP

点击finish,此时会打开IP封装的工程界面

 

 

Zynq自定义IP

Zynq自定义IP

点击 Re-Package IP,成功后会弹出如下对话框,提示用户关闭IP核封装工程界面

Zynq自定义IP

点击Yes,关闭IP核封装工程界面。

回到工程界面,由于自定义的IP核的存放路径软件是不知道的,所以需要先在vivado软件中指定自定义IP核文件的路径,方法如下(软件为vivado 2018.3)

Zynq自定义IP

点击Setting

Zynq自定义IP

点击IP

Zynq自定义IP

点击+号,定位到自定义IP核文件目录

Zynq自定义IP

添加完成后,在Block Design中就可以添加自定义的led IP核了

Zynq自定义IP

添加后,连接clk与rst_n信号,效果如下

Zynq自定义IP

将led信号引出(Ctrl + T快捷键)

Zynq自定义IP

引出的信号,在属性窗口下可以修改属性

Zynq自定义IP

修改名称

Zynq自定义IP

下面是创建约束文件,约束引脚与对应的电平标准

Zynq自定义IP

下面是Generate Output Products(如果没有这一步,Running Multiple Blocks这个过程持续的时间会很长)

Zynq自定义IP

上述步骤完成后,就是running multiple blocks, 综合,布局布线,生成比特流文件,然后导出硬件,需要添加比特流文件

Zynq自定义IP

启动SDK,创建Application,

主程序如下

Zynq自定义IP

由于ARM与led IP核之间只有clk核rst_n之间的连接,所以两者之间是无法通信的,实验现象为,板子上PL端LED灯每间隔1s闪烁,PS端每间隔1s通过uart打印一串字符。

相关文章:

  • 2021-09-02
  • 2021-08-25
  • 2022-01-08
  • 2022-12-23
  • 2022-12-23
  • 2021-11-27
  • 2022-12-23
  • 2021-05-26
猜你喜欢
  • 2022-12-23
  • 2021-10-17
  • 2021-07-29
  • 2021-04-25
  • 2022-12-23
  • 2021-11-15
  • 2021-04-28
相关资源
相似解决方案