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

1. 创建Vivado自定义IP

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

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中选择更新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值