1. 从“一拍”到“一串”:理解AXI突发传输的核心价值
搞了这么多年芯片和IP设计,我发现很多刚接触AXI协议的朋友,对“突发传输”(Burst)这个概念总有点隔靴搔痒的感觉。手册上那些术语——Transfer、Burst、Transaction——绕来绕去,其实背后是一个非常直观的设计哲学:效率。你可以把AXI总线想象成一条高速公路,单个数据传输(Transfer)就像一辆辆零散的小轿车,而突发传输(Burst)就是把这些小轿车组织成一个车队,由一辆引导车(携带起始地址和控制信息)带头,后面的车按既定规则自动跟随。这样做的最大好处,就是极大地减少了“收费站”(地址通道)的交互开销,让数据这条“货流”跑得更顺畅。
让我用个更生活的例子来说。假设你要从仓库(比如DDR内存)搬10箱书到办公室(比如处理器缓存)。最笨的办法是:跑回仓库管理员(Slave)那里一次,说“我要搬第一箱”,搬走;再跑回去一次,说“我要搬第二箱”,再搬走……来回十次,腿都跑细了。而AXI的突发传输机制,相当于你第一次去就跟管理员说:“我要从A号货架开始,连续搬10箱,箱子大小是标准尺寸(Size),按顺序搬(INCR类型)。” 管理员一听就明白了,他内部自己会算好接下来9箱的位置,你只需要埋头搬箱子(传输数据)就行,中间不用再反复沟通地址。这个“连续搬10箱”的指令,就是一个Burst。
所以,我们常说的AXI是“Burst-based”协议,精髓就在这里。它把控制信息(去哪搬、搬多少、怎么搬)和实际搬运动作解耦了。一次传输事务(Transaction)可以包含一个或多个Burst,比如你可能需要从内存两个不连续的区域搬数据,那就发起两个Burst。而每个Burst内部,则包含1到256个数据传输(Transfer),每个Transfer占用总线一个时钟周期,也就是“一拍”(Beat)。理解了这个层次关系,再看地址计算,就不会觉得它是一堆冰冷的公式,而是让这个“自动搬运”流程高效、准确运转的核心算法。接下来,我们就深入这个算法的细节,看看AXI是怎么聪明地“算地址”的。
2. 三大“搬运模式”:FIXED、INCR、WRAP的地址生成逻辑
地址计算完全由突发类型(Burst Type)决定,也就是ARBURST或AWBURST信号。它只有三种模式,但用对了地方,性能提升立竿见影;用错了,可能就会掉进坑里。这三种模式就像是三种不同的搬运策略。
2.1 FIXED模式:原地踏步的“深耕者”
FIXED模式的规则最简单粗暴:Burst中所有的Transfer,都使用同一个地址,也就是起始地址。这听起来有点反直觉,地址不变怎么传多个数据?它的应用场景非常特定。想象一下你有一个FIFO(先进先出队列)或者一个硬件寄存器。你写FIFO时,数据端口地址是固定的;你读一个状态寄存器时,地址也是固定的。在这种场景下,你本来就需要反复读写同一个位置。
在FIXED模式下,尽管地址不变,但数据总线上的数据每个周期都可以更新。主机(Master)通过写选通信号WSTRB来控制哪些字节是有效的。这对于需要连续更新同一存储

:深入解析AXI突发传输的地址计算与优化策略&spm=1001.2101.3001.5002&articleId=154765453&d=1&t=3&u=306b4b85cafb4462b349d6b382324634)
407

被折叠的 条评论
为什么被折叠?



