AXI4 Traffic Generator仿真研究(之三) - minichao9901/TangNano-20k-Zynq-7020 GitHub Wiki
目标:用ATG驱动自定义的breath_ip
block design框图
注意给ip分配的基地址
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
仿真波形
复位释放后,开始axi写了2个寄存器。
之后呼吸灯开始工作。可见宽度逐渐增加。
存在的问题
每次修改addr.coe或data.coe之后,必须要对ATG重新generate output product,仿真结果才能更新。这个使用上有点不爽。