AXI4 Traffic Generator仿真研究(之三) - minichao9901/TangNano-20k-Zynq-7020 GitHub Wiki

目标:用ATG驱动自定义的breath_ip

block design框图

注意给ip分配的基地址

image image

ip使用的寄存器

可见使用2个寄存器:slv_reg0和slv_reg1

	// Add user logic here
breath_led #(
    .START_FREQ_STEP (START_FREQ_STEP)
    )
    u_breath_led(    
    .sys_clk        (S_AXI_ACLK),
    .sys_rst_n      (S_AXI_ARESETN),
    .sw_ctrl        (slv_reg0[0]),
    .set_en         (slv_reg1[31]),
    .set_freq_step  (slv_reg1[9:0]),
    .led            (led)
    );

制作addr.coe和data.coe

addr.coe

memory_initialization_radix=16;
memory_initialization_vector=
44A00000
44A00004;

data.coe

memory_initialization_radix=16;
memory_initialization_vector=
00000001
800000ef;

添加顶层激励

`timescale 1ns / 1ps

module tb(

    );

reg sys_clk;
reg sys_rst_n;

initial sys_clk=0;
always #20 sys_clk=~sys_clk;

initial begin
sys_rst_n=0;
#1000;
sys_rst_n=1;
end

system_wrapper u_system_wrapper
(
    .sys_clk(sys_clk),
    .sys_rst_n(sys_rst_n)); 
    
      
endmodule

image

仿真波形

image

复位释放后,开始axi写了2个寄存器。

image

之后呼吸灯开始工作。可见宽度逐渐增加。

存在的问题

每次修改addr.coe或data.coe之后,必须要对ATG重新generate output product,仿真结果才能更新。这个使用上有点不爽。