FPGA应用随笔之一:Vivado自定义IP设计方法

1. 创建Vivado自定义IP

在vivado界面中选择菜单Tools》Create and Package New IP,
FPGA应用随笔之一:Vivado自定义IP设计方法
在向导对话框中选择Create AXI Peripheral,创建基于AXI总线接口的IP模块
FPGA应用随笔之一:Vivado自定义IP设计方法
定义AXI接口类型,这里可以选择Lite类型,可根据实际应用选择Full或者Stream,接口模式这里选择Slave,同时定义数据位宽和寄存器数量。
FPGA应用随笔之一:Vivado自定义IP设计方法
保存该自定义IP至指定路径。在vivado中创建工程,添加刚创建的IP模块和仿真模块axi_vip,
FPGA应用随笔之一:Vivado自定义IP设计方法
自动连接好模块之间的连线,设定slave地址,也可以由软件自动产生。
FPGA应用随笔之一:Vivado自定义IP设计方法

2. 建立仿真

  1. 创建testbench文件,并导入如下axi接口仿真需要的包
import axi_vip_pkg::*;
import design_1_axi_vip_0_1_pkg::*;

所需要支持的文件在安装路径:G:\Xilinx\Vivado\2019.1\data\xilinx_vip\hdl

  1. 将前面创建的IP design模块产生wrapper HDL文件,然后实例化。下面几行代码需要额外注意。
// Declare the agent for the VIP (one agent for one AXI VIP has to be declared). 
// We want the VIP to act as a Master. Thus the type of the agent will be <component_name>_mst_t
design_1_axi_vip_0_1_mst_t master_agent;
// Create an agent
    master_agent = new("master vip agent",DUT.design_1_i.axi_vip_0.inst.IF);
     
// set tag for agents for easy debug
    master_agent.set_agent_tag("Master VIP");
     
// set print out verbosity level.
    master_agent.set_verbosity(400);
     
//Start the agent
    master_agent.start_master();
// Use the tasks AXI4LITE_READ_BURST and AXI4LITE_WRITE_BURST to send read and write commands
 #20ns
 master_agent.AXI4LITE_WRITE_BURST(addr1,prot,data_wr1,resp); 
        
 #20ns
 master_agent.AXI4LITE_WRITE_BURST(addr2,prot,data_wr2,resp); 
  1. 定义模块功能

软件自动产生的verilog文件,实现了axi接口的读写操作,针对实际应用,单独设计外设接口功能,重定义module中的输入输出信号,并更新至IP模块中,在自建的工程中如同Xilinx提供的IP,在ip status中选择更新。

上一篇:Maven提高篇系列之(三)——使用自己的Repository(Nexus)


下一篇:163邮箱登录页面,如何快速登陆163邮箱?