Xilinx官方AXI4_LITE_slave源码解析,little white的自我认知

Xilinx官方AXI4_LITE源码解析,little white的自我认知
AXI4_LITE是一个简单协议,用来配置一些寄存器,官方给出了源码,获取方式如下:
Xilinx官方AXI4_LITE_slave源码解析,little white的自我认知_第1张图片
Xilinx官方AXI4_LITE_slave源码解析,little white的自我认知_第2张图片
Xilinx官方AXI4_LITE_slave源码解析,little white的自我认知_第3张图片
Xilinx官方AXI4_LITE_slave源码解析,little white的自我认知_第4张图片
Xilinx官方AXI4_LITE_slave源码解析,little white的自我认知_第5张图片
总线包括Master和Slave两种模式,这里选择Slave模式
Xilinx官方AXI4_LITE_slave源码解析,little white的自我认知_第6张图片
这里选择Verify Peripheral IP using AXI4 VIP 可以对AXI4-Lite快速验证

Xilinx官方AXI4_LITE_slave源码解析,little white的自我认知_第7张图片
单击Finish 后展开VIVADO自动产生的demo,单击Block Design的工程,可以看到如下2个IP。其中saxi_lite_0就是我们自定义的IP,另外一个master_0是用来读写我们自定义的saxi_lite_0,以此验证我们的IP正确性。

Xilinx官方AXI4_LITE_slave源码解析,little white的自我认知_第8张图片
继续站看代码看看里面有什么东西
Xilinx官方AXI4_LITE_slave源码解析,little white的自我认知_第9张图片
右击Generate Output Products

Xilinx官方AXI4_LITE_slave源码解析,little white的自我认知_第10张图片
源码的存储路径
下面重头戏来了,分析源码,只分析重点部分;
Xilinx官方AXI4_LITE_slave源码解析,little white的自我认知_第11张图片
Xilinx官方AXI4_LITE_slave源码解析,little white的自我认知_第12张图片
记住这个参数,后面有用的
Xilinx官方AXI4_LITE_slave源码解析,little white的自我认知_第13张图片
Xilinx官方AXI4_LITE_slave源码解析,little white的自我认知_第14张图片
我们可以结合仿真波形加以验证
Xilinx官方AXI4_LITE_slave源码解析,little white的自我认知_第15张图片
时刻0:地址1和数据1被同时写入地址总线和数据总线;
时刻1:地址4和数据8被同时写入地址总线和数据总线;
时刻2:地址8和数据3被同时写入地址总线和数据总线;
时刻4:地址12和数据4被同时写入地址总线和数据总线;
这里解释一下:为何写完一次数据后,地址要加4呢?(0–>4–>8–>12)
这是因为,数据总线是32位的,也就是说每个寄存器也是32位的,也就是4个字节,那么,一个寄存器就占了4个字节的地址,如果首地址是0,那么:
slv_reg0的首地址就是0;
slv_reg1的首地址就是4–>(0+4);
slv_reg2的首地址就是8–>(0+4+4);
slv_reg3的首地址就是12–>(0+4+4+4);
这点很重要,因为后面关键代码的理解需要这里。。。
Xilinx官方AXI4_LITE_slave源码解析,little white的自我认知_第16张图片
Xilinx官方AXI4_LITE_slave源码解析,little white的自我认知_第17张图片
Xilinx官方AXI4_LITE_slave源码解析,little white的自我认知_第18张图片
Xilinx官方AXI4_LITE_slave源码解析,little white的自我认知_第19张图片
Xilinx官方AXI4_LITE_slave源码解析,little white的自我认知_第20张图片

最后,整个工程我已经打包好了,可以直接仿真,想要的兄弟可以加我WX(staticJKN)

你可能感兴趣的:(arm,嵌入式硬件)