2021-09-11

AHB3_lite总线协议

系统组成

在这里插入图片描述
图中展示了一个具有一个主设备的AHB-Lite系统,包括一个主设备和三个从设备. 总线互联逻辑包括一个地址译码器和一个从设备到主设备的多路选择器. 译码器监 控从主设备输出的地址线,来传输给从设备选择信号;多路器将相应的从设备的输 出数据反馈给主设备

信号描述

主设备
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
从设备
在这里插入图片描述在这里插入图片描述
译码器

在这里插入图片描述
多路选择器
在这里插入图片描述

信号传输

基本传输(不含等待状态)
读
写
地址相位:保持一个HCLK周期除非被前一个传输延长
数据相位:也许需要若干个HCLK周期. Slave用HREADY信号控制完成这个传输的时钟周期数.
一个不含有等待状态的简单传输:

  1. 在HCLK的上升沿,Master驱动地址和控制信号到总线上;
  2. Slave在下一个HCLK上升沿采集到地址和控制信息;
  3. 当Slave采集到地址和控制后,它可以驱动HREADY信号做出相应. Master将在第三个HCLK上升沿采集到响应信号.
    Hready拉低是等待状态
    这个简单的例子阐述了传输中的地址相位和数据相位是怎么在不同的时钟周期发生的. 一个传输的地址相位可以同时也是上一个传输的数据相位. 这种地址相位和数据相位的重叠是总线流水属性的基本原则,由此提高总线操作的性能,还为Slave提供了足够的时间来响应传输. Slave可以给任一个传输插入等待

基本传输(等待状态)
读写当一个传输以这种方式扩展了传输拍数,它将对下一个传输产生副作用.

传输类型

在这里插入图片描述
在正常的传输中一般情况下一包数据的传输中,传输类型以NONSEQ开始,以IDLE结束,因此一包数据的传输Htrans以2’b10开始,以2’b00结束,中间可以插入其他传输状态

使用举例
在这里插入图片描述T0-T1 由一个NONSEQ传输开始一个4拍的读操作.
T1-T2 Master不能立即提供第二拍的数据,插入BUSY传输延迟第二拍的数据,Slave提供第一拍的读数据
T2-T3 Master现在可以开始第二拍的传输,因此发出一个SEQ的传输. Master忽略Slave在读数据总线HRDATA[31:0]提供的任何信息.
T3-T4 Master执行第三拍传输. Slave提供第二拍的读数据.
T4-T5 Master执行最后一拍传输. Slave无法马上提供第三拍的数据,用拉低HREADY插入一拍等待状态.
T5-T6 Slave提供第三拍的读数据.
T6-T7 Slave提供最后一拍的读数据.

BURST操作

本协议定义了长度为4、8、16的Burst,还有未定义长度的Burst和单传输,固定长度Burst支持递增和回卷两种模式:

  1. 递增型Burst访问连续位置,并且每拍传输的地址是前一个地址的递增
  2. 回卷Burst在跨越地址边界的时候回卷。地址边界由传输大小和在这个Burst的拍数计算得出。
    在一个burst启动后,当Master需要更多的时间准备下一拍传输时,它可以插入BUSY传输.

一个未定义长度的burst,INCR,Master可以插入BUSY传输,然后再判断没有更多的数据要传输了. 在这种情况下,Master可以再发起NONSEQ或者IDLE传输来终止未定义长度的burst传输.
协议不允许Master用BUSY传输终止固定长度的Burst传输:
· 递增型burst:INCR4,INCR8和INCR16
· 回卷型burst:WRAP4,WRAP8和WRAP16.
这些固定长度的burst必须由一个SEQ传输终止.
Master不允许在一个单拍burst传输后立刻发起一个BUSY传输. 单拍Burst后必须是一个IDLE或者NONSEQ传输.

等待传输

当Slave需要更多的时间提供数据或采集数据的时候,它用HREADY信号插入等待状态.
在等待期间更改传输类型
在等待期间更改传输地址

IDLE传输

在等待状态期间,Master被允许将传输状态又IDLE更改为NONSEQ. 当HTRANS更改为NONSEQ,Master必须保持HTRANS不变,直到HREADY为高电平.
在这里插入图片描述
T0-T1 Master发起了一个Single传输,地址为A.
T1-T2 Master插入一个IDLE传输,地址为Y.
Slave插入一个等待状态,HREADY为低电平.
T2-T3 Master插入一个IDLE传输,地址为Z.
T3-T4 Master改变传输类型为NONSEQ,并且发起一个INCR4的Burst传输到地址B.
T4-T6 由于HREADY为低电平,Master保持HTRANS不变.
T5-T6 地址A的Single传输完成,HREADY为高电平,Master开始Burst传输地址B的第一拍.
T6-T7 完成INCR4 Burst传输的地址B的传输,Master开始地址为B+4的下一拍传输

BUSY传输,固定长度burst

一个固定长度的Burst插入等待传输期间,Master可以改变传输类型,又BUSY改为SEQ. 当HTRANS传输类型改为SEQ,Master必须保持HTRANS不变,直到HREADY为高电平.
在这里插入图片描述
T0-T1 Master发起了INCR4传输的新的一拍,地址为0x24.
T1-T3 Master插入了一个BUSY传输,地址为0x28.
Slave插入等待状态,HREADY为低电平.
T3-T4 Master改变传输类型为SEQ,发起了下一拍传输,地址为0x28.
T4-T6 Master保持HTRANS不变,直到HREADY为高.
T5-T6 地址为0x24的这一拍传输完成,HREADY为高电平.
T6-T7 第三拍INCR4的传输,地址为0x28的传输完成,Master发起最后一拍传输,地址0x2C.

BUSY传输,未定义长度的Burst

在一个未定义长度的Burst等待传输期间,当HREADY为低电平时,Master允许改变传输类型,从BUSY到其他任何类型. 如果传输类型改为SEQ,Burst继续传输;如果传输类型改为IDLE或者NONSEQ,Burst被终止.
在这里插入图片描述
T0-T1 Master发起了INCR传输的新的一拍,地址为0x64.
T1-T3 Master插入了一个BUSY传输,地址为0x68.
Slave插入等待状态,HREADY为低电平.
T3-T4 Master改变传输类型为NONSEQ,发起了下一拍传输,地址为0x10.
T4-T6 Master保持HTRANS不变,直到HREADY为高.
T5-T6 地址为0x64的这一拍传输完成,HREADY为高电平,未定义长度的Burst 传输完成,Master开始了地址为0x10的新的一拍传输.
T6-T7 第一拍INCR4传输,地址为0x10的传输完成,Master发起下一拍传输,地址0x14.

更改传输地址

IDLE传输
在一个等待状态传输期间,Master可以改变IDLE传输地址. 当HTRANS传输类型改变为NONSEQ,Master必须保持地址不变,直到HREADY为高电平. 在这里插入图片描述
在这里插入图片描述T0-T1 Master发起了SINGLE BURST传输到地址A.
T1-T2 Master插入了一个IDLE传输到地址Y.
Slave插入等待状态,HREADY为低电平.
T2-T3 Master插入了一个IDLE传输到地址Z.
T3-T5 Master改变HTRANS为NONSEQ,指示这是一个INCR4的传输从地址B开始. 直到HREADY为高,不允许再有地址改变.
T5-T6 地址A的SINGLE Burst传输完成,HREADY为高电平,Master开始地址B传输的第一拍.
T6-T7 第一拍INCR4传输,地址为B的传输完成,Master发起下一拍传输,地址B+4.

SLAVE传输响应

传输完成:成功完成传输,通过置位HREADY为高电平并且HRESP状态为OKEY.
传输挂起:通常Slave使用HREADY信号来插入适当数量的等待状态在数据相位中. 等到HREADY信号为高电平并且响应OKAY,指示成功完成了传输. 当Slave在完成响应之前插入若干等待状态,它必须驱动HRESP为OKAY.
错误响应:ERROR响应需要两个. 发起一个ERROR响应,Slave驱动HRESP为高电平指示ERROR,同时驱动HREADY为低将传输扩展一个时钟周期. 在下一个时钟周期,HREADY驱动为高电平来结束传输,HRESP继续驱动为高电平来指示错误
在这里插入图片描述

T1-T2 Slave插入了一个等待状态,提供了一个OKAY响应.
T2-T3 Slave发布一个ERROR响应. 这是ERROR响应两拍机制的第一拍,因为HREADY为低电平.
T3-T4 Slave发布一个ERROR响应. 这是ERROR响应两拍机制的最后一拍,因为HREADY为高电平.
Master改变传输类型为IDLE. 取消了原计划对地址B的传输,这是由于Slave在T2是发布的错误.
T4-T5 Slave回应一个OKAY响应.
如果Master发现错误响应,master进入中断或者直接停止

时钟和复位

时钟:每个AHB-Lite组件使用一个单独的时候信号,HCLK. 所有的输入信号都在HCLK的上升沿采样. 所有的输出信号的改变都必须在HCLK的上升沿后发生.
复位:复位信号,HRESETn,是AHB-Lite系统中仅有的低有效信号. 在复位期间,HTRANS[1:0]类型指示为IDLE,所有的Slave必须确保HREADY为高电平.

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值