我是靠谱客的博主 感动月亮,最近开发中收集的这篇文章主要介绍(UVM验证学习13) apb和ahb的另外一些笔记AHB协议,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

APB协议

APB slave端的要求比较灵活:

  • 对于总线写入到slave的传输行为,写入的数据data既可以在PSEL为高时,在CLK的上升沿锁存;也可以当PSEL为高时,在PENABLE的上升沿锁存。区别就是前者会早一点,PENABLE要在CLK上升沿后才会被驱动拉高。
  • 对于总线的读slave行为,数据只要在PWRITE=0,然后PSEL和PENABLE都为高时驱动到总线上就可以,不要求在CLK上升沿后立即驱动。

APB特点:

  • APB协议不是流水操作,两个始终周期完成一次读或写操作。
  • APB最大支持32bit位宽
  • APB有两个独立的数据通道:PWDATA和PRDATA,但是两个通道没有自己的握手信号,因此两个信号不会同时使用,即不支持读写并行操作
  • APB3 根据PREADY信号是否为高,可以决定传输是否具有等待周期
  • APB总线没有仲裁器和复杂的译码电路

APB版本改变

  • APB3新增了PREADY和PSLVERR信号,两个端口的来源都是slave端。PREADY信号用于指示APB传输的完成,PSLVERR是从端发送的错误信号,用来指示一次传输的失败,只在ENABLE或是ACCESS状态且PREADY=1时认为有效,即只会在传输的最后一个周期才需要考虑SLVERR信号
  • APB4新增了PPROT(protect signal)和PSTRB(strobe signal)信号。PPROT用来支持APB上的non-secure和secure transaction;PSTRB信号是一个在写总线时为了支持稀疏数据传输的写选通信号。

PPROT:一种保护信号,可支持APB上的非安全传输和安全传输。
PPROT [0]:0:普通;1:特权。一些master使用它来指示其处理模式。特权处理模式通常在系统内具有更高级别的访问权限。
PPROT [1]:0:安全;1:非安全。这用于需要更大程度区分处理模式的系统中。
PPROT [2]:0:数据;1:指令。该位指示事务是数据访问还是指令访问。此指示仅作为提示,并非在所有情况下都是准确的。

PSTRB:一个写选通信号,用于在写数据总线上进行稀疏数据传输.
这个信号位宽为4,每一位代表不同的作用,对应于写数据总线的一个字节的有效与否。

APB3协议通过增加PREADY信号拓展了状态传输情况
在这里插入图片描述原本在APB2协议中,ENABLE状态的次态只能是IDLE或SETUP,APB3通过引入PREADY,只有当PREADY为高时,才能离开ACCESS状态,允许在ACCESS状态停留多个时钟周期。

AHB协议

AHB2: 多master多slave框架,需要仲裁器
AHB3:AHB_Lite,单master多slave框架,没有仲裁器
AHB5:单master多slave,没有仲裁器,扩展了存储器类型
AHB实现了高性能、高频率时钟系统的以下特征要求:

  1. burst transfer
  2. 分块处理(split)和重试(retry)响应给slave端提供了在无法立即进行数据传输时释放总线的机制。
  3. single-cycle bus master handover 单周期总线master端移交
  4. 单时钟沿操作
  5. 无三态
  6. 支持更宽的数据总线架构(64/128…)

AMBA总线采用的是valid和ready进行主从端握手的机制,主端发出valid和data,从端反馈ready。valid是数据有效的指示,ready是可以接收数据的指示,握手成功发生在valid和ready同时为高时。

AHB协议的保护控制
HPROT [0]:0:取操作;1:数据访问。
HPROT [1]:0:用户模式访问;1:特权模式访问。
HPROT [2]:0:无缓冲;1:有缓冲。
HPROT [3]:0:无高速缓存;1:带高速缓存。

AHB协议中,在主机发起传输后,由从机决定传输如何进行。而且只要从机被访问,那么它必会提供一个表示传输状态的响应。其中HREADY信号用来扩展传输,和响应信号HRESP[1:0]结合以表示相应的传输状态。

然后HRESP的可选信号有OKAY,ERROR,RETRY,SPLIT。典型的从机会使用HREADY信号插入一定的等待状态,当传输完成时HREADY拉高并给出OKAY。ERROR表示某种形式的错误条件和相关传输,典型的被用作错误保护,例如写一个只读空间。SPLIT 和 RETRY 响应组合允许从机延长传输完成的时间,但是释放总线给其他主机使用。这些响应组合通常仅由有高访问延时的从机请求并且从机能够利用这些响应编码来确保其他主机在长时间内不被阻止访问总线。仅有 OKAY 响应可以在单个周期里给出,ERROR、SPLIT 和 RETRY 响应需要至少两个周期。 这个周期段一般都是第一到倒数第二个周期HREADY=0,最后一个周期HREADY=1,HRESP在还没能确定时输出OKAY(此时HREADY=0所以没事,不会结束传输),在能确定后输出为ERROR,SPLIT或retry直到HREADY拉高。

在这里插入图片描述上图表示在一个传输中,从机请求一个周期来决定它将要给出的响应(在此期间HRESP为OKAY状态),之后从机用一个双周期的ERROR状态响应结束传输(在第二个ERROR时,HREADY驱动为高电平)。

分块(SPLIT)和重试(RETRY)的不同之处在于仲裁器在发生 SPLIT 和 RETRY 后分配总线的方式:
对于 SPLIT 传输而言,仲裁器将调整优先级方案,以便其他任何主机请求总线都能获得总线访问权,即使是优先级较低的主机。为了完成一个 SPLIT 传输,当从机有可用数据时,从机必须通知仲裁器。
对RETRY而言,仲裁器将继续使用常规优先级方案,因此拥有更高优先级的主机将优先获得总线访问权。
  SPLIT 传输虽然增加了仲裁器和从机的复杂性,但是却有可以完全释放总线给其他主机使用的优点,而在 RETRY(响应)的情况下,就只允许较高优先级的主机使用总线。

仲裁器除了决定将总线访问权限交给哪个master端,还要接收来自slave端的需要完成SPLIT传输的请求。

AHB2的请求总线

  1. master通过HBUSREQx请求总线,仲裁器在clk rise edge采样,使用内部逻辑决定把总线给谁
  2. 通常仲裁只在burst传输完成时授予不同的总线主机,如果需要也可以提前中止burst传输
  3. 主机通过拉高HLOCKx信号请求锁定访问
  4. 当master被授予总线并且正在执行固定长度的突发时,没有必要为了完成突发而继续请求总线。仲裁器监控突发的进程,并使用HBURST[2:0]信号来确定主机需要多少个传输。如果主机希望在当前正在进行的突发之后执行第二个突发,那么它应该在突发期间重新断言请求信号。
  5. 对未定长度的突发主机应该继续断言请求直到已经开始最后一次传输。
  6. 对于主机而言,有可能当它未申请总线时却被授予总线。这可能在没有主机请求总线并且仲裁器将访问(总线)授予一个默认的主机时发生。因此,如果一个主机并没请求访问总线,那么它驱动传输类型 HTRANS 来表示空闲传输显得很重要。

在这里插入图片描述上图的意思是即使某个master被授予了总线,但要是HREADY=0,则刚被授予权限的主机还是不能访问数据总线,此时的数据总线仍然属于上一个master。只有等到HREAY=1后,新的master才能占有数据总线。
在这里插入图片描述上图需要注意的是HGRANTx的信号是在旧的master最后一个传输刚开始放地址的周期里给的,这样新的master就可以在旧的master最后一次传输的下一个时钟上升沿采样到HGRANTx信号。仲裁器在倒数第二个(最后一个之前的)地址被采样时改变 HGRANTx 信号。新的HGRANTx 信息将在突发的最后一个地址被采样的同时被采样。

突发提前终止

如果主机在突发传输中间失去了对总线的所有权那么它必须重新断言总线(请求)以完成突发。主机必须确保 HBURST 和 HTRANS 信号都被更新以反映主机不再执行一个完整的 4、8 或者 16 拍的突发。
  例如,如果一个主机仅能完成一个 8 拍突发的 3 个传输,那么当它重新获得总线时必须使用一个合法的突发编码来完成剩下的 5 个传输。主机可以使用任何合法组合,因此无论是5拍未定长度的突发或者是4拍固定长度的突发然后跟上一个单拍未定长度的突发都是可以接受的。

默认总线主机

每个系统必须包含一个默认总线主机,如果所有其他主机不能使用总线时,该主机被授予总线。当被授予总线时,默认主机必须只能执行空闲(IDLE)传输。
如果没有请求总线,那么仲裁器可以授予默认主机(访问总线),也可以授予从总线低访问延迟中获益最大的主机。。
授予默认主机访问总线还提供了一种有用的机制:确保总线上没有启动新的传输,这是进入低功耗操作模式之前执行的一个有用步骤。。
如果其他所有主机都在等待 SPLIT 传输完成时,则默认主机必须被授予总线。

AHB3(AHB_Lite)

单master多slave。
由于只有一个master,AHB2中的仲裁器被简化的多路选择器替代,然后HRESP变成了1bit,0:OKAY;1:ERROR。HREADY信号的源变为多路选择器,目的是master端和slave端,HREADY=1时告诉master和所有的slave当前的传输完成,可以开始新的传输。新增了HREADYOUT信号(其实就是原本slave的ready信号),源是slave,目的是多路选择器,拉高表示传输完成,拉低实现传输的拓展。

只有AHB2的HRESP是2bit,AHB3和AHB5都是1bit

最后

以上就是感动月亮为你收集整理的(UVM验证学习13) apb和ahb的另外一些笔记AHB协议的全部内容,希望文章能够帮你解决(UVM验证学习13) apb和ahb的另外一些笔记AHB协议所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部