通过状态机来对axi_lite总线进行操作

感谢网友沉默的改良者,原文链接:https://www.cnblogs.com/chensimin1990/p/8526921.html

通过状态机来对axi_lite总写进行读写操作,分析得很好。

为进一步掌握AXI_Lite,在原文基础上进行功能仿真,因此这里先贴出原文,下一篇给出仿真工程及波形。

通过状态机来对axi_lite总线进行操作

状态跳转:

1.初始状态

将axi_lite读写两个信道分开进行控制,在初始状态,就根据读,写信号来判断应该跳转到那一个状态。

2.写状态

在写状态中不需要跳转条件,即写状态只需要消耗一个时钟周期,然后自动跳转到下一个状态。

3.写有效状态

当接收到slave端的awready 和 wready 即地址写准备和数据写准备信号后,跳转到write_ready状态。

4.write_ready状态

在write_ready状态中,等到slave端bvalid信号的到来,然后跳转到write_bready状态。

5.write_bready状态

WRITE_BREADY 状态不需要状态跳转条件,只需要消耗一个时钟周期,同时在这个状态中,也没有相关信号需要输出。

6.write_end状态

write_end状态也不需要状态跳转条件,写完数据之后,直接回到初始状态。

7.read_start状态

类比write_start状态

8.read_valid状态

类比write_valid信号,只是读数据的过程中不需要接收数据准备信号,在read_valid状态中,当接收到slave端的读地址准备信号后,跳转到read_ready状态。

9.read_ready

当slave端传回来读数据有效信号后,状态机跳转进read_finish状态。

10.read_finish状态

类比write_finish状态

11.read_end状态

类比write_end状态

总结axi_lite读写时序:

写:首先准备好访问地址,和需要写入的数据同时给出地址有效,数据有效,bready信号,

当接收到slave端的地址ready和数据ready信号后,表示可以进行下一写操作了,同时,还需要等待slave端的bvalid信号到来,表示一次写完成了,即slave端的一个写反馈过程

读:首先准备好访问地址,和地址有效信号先拉高,当接收到slave端的地址ready信号后,表示可以进行下一次读操作了,同时,当slave端传过来valid信号的同时,才可以接受axi_lite上读取的数据。

状态机输出控制:

1.在完成一次完整的状态后,必须对相关信号进行清除

 2.初始状态不需要数据信号,write_start信号输出结果如下:

3.write_valid状态输出结果:

4.write_ready状态输出结果:

5.write_bready状态无需输出信号,write_end状态数据结果:

6.read_start状态输出结果:

7.read_valid状态输出结果:

8.read_ready状态中不需要输出,read_finish输出结果:

9.read_end状态中输出结果:

 

 

 

 

 

 

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值