欢迎各位朋友关注“郝旭帅电子设计团队”公众号,本公众号会定时更新相关技术类资料、软件等等,感兴趣的朋友可以浏览一下本公众号的其他“模块”,希望各位朋友都能在本公众号获得一些自己想要的“东西”。
本篇主要是简要介绍 AMBA AXI 中的时钟、复位和握手过程(三)
axi 时钟
每一个axi接口的电路都会使用这个时钟(aclk)。所有的输入都会在aclk的上升沿被采样,所有的输出都在aclk上升沿之后发生改变。
在主从接口上,输入与输出信号之间不得存在组合逻辑路径(尽量保证,否则可能时序会有问题)。
axi复位
axi协议的复位(aresetn)是一个低电平有效的复位。复位信号在复位时,可以任意位置(尽量多复位几个周期),但是复位释放(由复位变为正常工作)时,要求必须时同步的。
在复位期间,主机必须驱动arvalid、awvalid、wvalid为低电平;从机必须驱动rvalid、bvalid为低电平;其他信号可以为任意值。
复位结束后,主设备最早可以在 ARESETn 变为高电平后的第一个 ACLK 上升沿将 ARVALID、AWVALID 或 WVALID 驱动为高电平。 下图展示了复位后 ARVALID、AWVALID 或 WVALID 可被驱动为高电平的最早时刻。
个人建议:所有的有效信号尽量在复位结束后的多个周期才进行工作。
握手过程
在AXI协议中,握手过程指的是通过VALID和READY信号来控制通道上信息传输的机制。这是AXI所有数据传输的基础。
所有五个事务通道均采用相同的VALID/READY握手过程来传输地址、数据及控制信息。这种双向流控制机制意味着主设备和从设备都能控制信息在二者之间传输的速率。源端(发起方)产生VALID信号以指示地址、数据或控制信息何时可用。目的端(接收方)产生READY信号以指示其能够接收该信息。仅当VALID和READY信号同时为高电平时,传输才会发生。
在T1时刻之后,源端呈现地址、数据或控制信息,并置起VALID信号。目的端在T2时刻之后置起READY信号,而源端必须保持其信息稳定,直到在T3时刻识别到READY信号有效时传输发生。
源端不得等待READY信号置起后才置起VALID信号(源端有数据直接拉高valid即可)。
这是AXI协议防止握手死锁的关键规则:VALID信号的置起必须独立于READY信号的当前状态,只能由源端根据自己的数据准备情况来决定。READY信号仅表示目的端的接收能力,而不应影响源端何时宣布数据有效。
一旦VALID信号被置起,它必须保持置起状态,直到在某个时钟上升沿VALID和READY信号均被置起时握手完成。
下图中目的端在T1时刻之后、地址/数据/控制信息有效之前就置起了READY信号,表明其已准备好接收信息。源端在T2时刻之后呈现信息并置起VALID信号,传输则在T3时刻识别到这一置起时发生。在这种情况下,传输在一个周期内完成。
目的端允许先等待VALID信号置起,再置起对应的READY信号。
即使READY信号已经置起,也允许在VALID信号置起之前将其撤销。
这两条规则明确了AXI协议中目的端行为的灵活性:其READY信号可以基于对VALID信号的观察来决策,且可以随时撤销,这为主从双方都提供了流控制的能力,是防止系统锁死的关键设计。
下图中若源端与目的端恰巧都在 T1 时刻后表明可以传输地址、数据或控制信息,则传输发生在能够识别到 VALID 与 READY 信号均被置起的那个时钟上升沿。这意味着传输发生在 T2 时刻。
总结:
发送端在自己需要发送数据时,拉高valid(不必考虑ready的情况),直到接收ready为高电平,表示接收端收到,此时如果有下一个数据发送,那就直接valid继续为高,更换信息即可。如果没有下一个数据发送,那么拉低valid即可。
接收端在自己可以接收数据时,拉高ready,不必考虑valid的情况。
本篇内容中有部分资源来源于网络,如有侵权,请联系作者。
如果您觉得本公众号还不错的话,可以推给身边的朋友们,感谢并祝好!
587