最后更新:2022-07-21 01:56:39 手机定位技术交流文章

AMBA AHB总线协议设计使用中央多路径选择器选择互连,所有在该程序中使用的总线主机设备决定该继电器是与输出地址和控制信号同时连接的。在此基础上,需要一个解码器来控制读取数据和响应多路径选择器。图显示多路径选择器的相互连接:

三个信号分别是地址、读数据和写数据。有几个主人读了一个奴隶,但公共汽车只能由一名主人一次访问一个奴隶,所以你需要仲裁人来仲裁。具体过程是主传输信号,包括HADDR和HWDATA,从主人到奴隶的方向,图中的mux通过arbiter的仲裁选择某一个master上的信号传输到相应的slave,因为每个slave的地址是唯一的所以能进行对应;HRDATA信号的传输方向是由slave到master,通过解码器选择一个奴隶的HRDATA,解码器将解码,返回相应的主机。
前提:AMBA AHB传输开始之前master必须被授予访问总线,这个过程开始于master向仲裁器断言一个请求信号,仲裁器指示master何时能够被授予使用总线。
主机:经授权后,AMBAAHB传送由传送地址和控制信号启动,并包含以下内容:地址、方向、传送宽度和传送类型。
slave:将数据从slave传输到master中,包括:地址、控制周期、数据周期、地址不长期有效,因此奴隶必须在发送地址时采样地址,通过HREADY信号可以延长采样数据的周期,为时候,允许从机有额外的时间进行采样。以下四个响应信号代表机器的状态
| OKAY | 传输正常 |
| ERROR | 传输错误发生,传输失败 |
| RETRY | 传输失败,再次尝试 |
| SPLIT | 传输尚未完成,重新分隔传输 |
AHB 主设备(master) :发起一次读/写操作 某一时刻只允许一个主设备使用总线
AHB从设备(slave) :响应一次读/写操作 通过地址映射来选择使用哪一个从设备
AHB仲裁器(arbiter) :允许某一个主设备控制总线 在AMBA协议中没有定义仲裁算法
AHB译码器(decoder) :通过地址译码来决定选择哪一个从设备


信号的功能:

高速巴士,高性能流线运行
支持多个总线主设备(最大16台)
支持爆破传输总线宽度:8、16、32、64、128位
上升沿触发操作
AHB传输由两个部分组成:地址阶段,只持续一个周期;数据周期,一个或者多个周期,通过HREADY信号实现。下面是没有等待的最简单的传输,有等待的状态,HREADY信号降低相应的部分,使信号持续数周更长。以下是一个简单的,无需等待的转移:

需要 简单 地 传递 两 个 等待 期间 :

流水线传输:

数据类型由HRANS信号表示。
| HTRANS[1:0]表示当前传输状态:IDEL,BUSY,NOSEQ,SEQ(后者没有分离和合并) | ||
| 00 | IDLE | 主设备占有总线,但不能传输主设备可以在两个爆炸传输中发出IDLE |
| 01 | BUSY | 主设备占用总线,但是在burst传输过程中还没有准备好进行下一次传输 一次burst传输中间主设备可发BUSY |
| 10 | NOSEQ | 指示单个数据传输,或爆炸传输的第一个数据 |
| 11 | SEQ | 显示破裂传输接口下的数据 |

第一个传输是突然启动,所以传输类型是不连续的;主机不能立即执行突然的第二个传输,所以主机使用繁忙的传输来延迟下一个传输的开始。在这个例子中,主机只请求一个繁忙的循环,然后它才准备下一个传输的爆发,下一次传输的完成情况并非相同;主机立即执行了突然的第三个传输,但是它不能从机器中完成(传输)并用HREADY插入等待状态;最后的传输是没有等待状态完成的。
Burst 操作支持4 beat(4*4Byte=16Byte)、4 beat、4 beat 、单个字节传输 、未定义字节长度传输,支持increasing和wrapping两种burst传输。下面的图表集中于INCR.
Incrementing burst : 地址是上一次的传输地址加1个传输单位
Wrapping burst : 例:4beat的wrapping burst 字传输(4byte): 0x34 -> 0x38 -> 0x3c -> 0x30 应用场合:Cache填充

根据HSUZE和HBURST地址计算,初始地址为0x48,HSIZE=010(32bits)



对于每个总线上的从机来说使用一个中央地址译码器提供选择信号--HSELx。需要注意的是从机只能在HREADY信号为高时进行采样地址和控制信号以及HSELx,IHISELx为高表示 当前传输已经完成。
最小可分配给一个服务器的地址空间是IKB。 所有总线主机必须设计以避免在1KB地址边界以外进行增量传输,从而确保一个爆炸永远不会超过地址解码边界。

master发起传输以后,slave决定传输该怎么进行。访问的slave必须响应这次传输,AHB是一个握手机制,slave必须发送响应信号HRESP来提供传输状态。
| OKAY | 传输正常 |
| ERROR | 传输错误发生,传输失败 |
| RETRY | 传输失败,再次尝试 |
| SPLIT | 传输尚未完成,重新分隔传输 |
HREADY信号用于扩展AHB传输的数据部分,当HREADY信号代表低时段传输时,它被扩展并完成,当它代表高时段传输时。
只有OKAY响应才能在一个周期内得到。ERROR、SPLIT和RETRY响应至少需要两个周期。
为了完成这些答复,然后,在连续的第二个(最后和第一个)周期中,机器驱动HRESP[1:0]以指示 ERROR, RETRY, or SPLIT,并同时驱动HREAD下以延长一个额外的周期通过。在最后的循环中,HREADY被驱动到高压水平,以终止传动,同时,IRESPI 1:0 保持驱动器以指示错误、试用或失败。图显示了与重试响应的传输:

如果机器需要超过两个周期来提供 ERROR 、 SPLIT 或 RETRY 响应,则在传输开始时可以插入额外的等待状态,在此期间,IRAD信号将同时响应低压水平,并且必须设置为OKAY。
主要区别在于仲裁的方式。RETRY:arbiter会继续使用通常的优先级;SPLIT:arbiter会调整优先级方案以便其他请求总线的主设备可以访问总线。
为了避免使用三状态驱动器和允许执行AHB系统,需要单独的读写数据总线。 最小数据宽为32位,但带宽可以增加。
写字数据总线在写字传输期间由总线主机驱动,如果传输被扩展,总线主机必须保持数据有效,直到传输完成,表示为已完成。
读取数据总线在读取传输过程中由适当的继电器驱动,如果继电器通过HREADY扩展读取传输,那么继电器只能在传输的最后周期中提供有效的数据,由HREADY表达。


仲裁机制被用来确保任意时刻只有一个主机能够访问总线。仲裁器的功能是检测许多不同的使用总线的请求和决定当前请求总线的主机中哪一个的优先级最高。仲裁器也接收来自从机需要完成SPLIT传输的请求。
| HBUSERQx | Master | 主机启动公共汽车请求 |
| HLOCKx | Master | 主锁总线传输 |
| HGRANTx | Aibiter | 艾比特向师长提出的申请结果 |
| HMASTER[3:0] | Aibiter | 主人的数目,最大值为 [3:0] 是16,但这并不意味着只有16个主人,并且可以通过修改带宽来增加主人 |
| HMASTLOCK | Aibiter | 锁定主程序后Aibiter的反馈 |
| HSPLITx[15:0] | Slave | Slave发起Split信号以后,根据Split去调整Master之间的优先级 |
没有等待状态访问,所有传输都是零等待状态,并且HREADY信号是一个高速处理过程。





本文由 在线网速测试 整理编辑,转载请注明出处。