13 / 24 · 概念
接收事件与停顿期间的稳定性
分配源端与接收端的职责,并保持停顿期间的有效载荷。
课时内容可免费阅读,选课后可保存学习进度。
时钟沿上两个信号都有效才发生传送
Valid 表示源端承诺有一份有效载荷可供传送。Ready 表示接收端承诺可在当前时钟沿接收一份载荷。两个信号都为高的上升沿恰好传送一个事务。有效载荷包含所有伴随字段,例如标签、操作码或地址。持续为高的 valid 可能表示一个停顿中的数据项,也可能表示在连续 ready 时钟沿传送的一系列数据项。
valid 为高且 ready 为低时,保持 valid 和完整载荷稳定。本课程只允许通过复位或明确的清空操作取消这项义务。如果源端等待 ready 才置位 valid,而接收端等待 valid 才置位 ready,两者可能永远等待。准备好的数据项应独立于 ready 提供。这些握手和稳定性原则见 Arm AMBA AXI 规格的 A3 节。这个小型数据流并非完整 AXI 接口的实现。
| 时钟沿 | valid | ready | 有效载荷 | 传送 |
|---|---|---|---|---|
| 0 | 1 | 0 | tag4,y9 | 无 |
| 1 | 1 | 0 | tag4,y9 | 无 |
| 2 | 1 | 1 | tag4,y9 | tag4 一次 |
| 3 | 1 | 1 | tag5,y12 | tag5 一次 |
| 4 | 0 | 1 | 无关 | 无 |
Tag4 在整个停顿期间必须保持不变。时钟沿 2 传送之后,源端可以呈现 tag5。时钟沿 4 只有 ready,不会产生事务。只统计 valid 可能丢失输入;只读取数据可能重复输出。
这些规则假定只有一个时钟域,不能解决跨时钟域或亚稳态问题。分别根据输入与输出的握手统计已接收输入和已交付输出。没有复位时,已接收数减去已交付数必须等于内部尚未完成的事务数。将已接收标签排入队列,仅在交付时移除。把这种计数与停顿载荷检查结合,即使算术值碰巧相同,也能检测丢失、重复和身份变化。
自己试试
表中四个时钟沿的 valid 为高。发生了多少次传送,传送的是哪些标签?如果时钟沿 1 的 y 变成 10,违反了哪条规则?
阅读解释
发生两次传送:标签 4 和 5 分别在时钟沿 2 和 3 传送。时钟沿 1 改变 y,违反了从时钟沿 0 开始停顿的事务所要求的载荷稳定性。