0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何理解AHB_slave中的hready和hready_out以及hready_in

芯片验证日记 来源:芯片验证日记 作者:芯片验证日记 2022-12-17 08:07 次阅读

1.前言

相信很多朋友对AMBA都比较熟悉了,对AHB总线也不陌生,在AHB总线中,hready这个信号是最难理解,最容易搞错,也是系统调试的过程中出问题最多的地方之一,同时也是很多面试官最喜欢问的知识点之一。本文做一个梳理,帮助大家彻底理解这个知识点。

2.理解一下hready和hready_out的含义

我们先看一个简单的场景,就是系统中只有一个AHB Slave的场景

下图是AHB2协议中的一张截图,其中hready作为Slave发给Master的握手信号,它表明AHB总线上该笔传输的完成。AHB Slave的HREADY信号是Slave“延长”AHB传输的数据阶段的指示。如果Slave不能立即响应,通常会发生这种情况,因此该Slave将HREADY信号拉低,以通知Master延长数据阶段,以便Slave有足够的时间响应。这种场景比较简单,根本不需要hready_in信号,我就不仔细分析了,相信大家都能看懂。

写到这里,补充一下,AHB2协议里只有hready的叫法,并没有hready_out这一说法的,到AHB3和AHB5协议里就有了hready_out的叫法。但协议原文中都没有hready_in的称呼,hready_in只是工程项目中比较形象、比较好沟通的一种称呼。这种称呼很流行,甚至很多ip厂商也这么给信号命名。大家对照理解,不要搞混了。下图中的hready就是通常所说的hready_out。到这里,相信你已经理解了hready和hready_out的含义。

pYYBAGOdB0eAVgixAAHm9bLDO20828.png

3.为什么AHB_slave还会有hready_in信号

下面让我们看一个复杂的场景,就是系统中有多个AHB Slave,那么当发生流水操作(pipeline)的时候应该怎么处理呢?关于这个问题,AHB5协议中给出了一个经典的方案,参见下方截图。每个Slave的HREADYOUT都“与”在一起,以给出系统范围的HREADY信号,该信号再作为输入反馈给每个Slave。这意味着每个Slave将具有2个HREADY信号: HREADY_in(系统范围的HREADY信号)和HREADY_out。因此,如果任何Slave将HREADYOUT设为低,则hready_in将变为低电平。因此每个Slave都等该hready_in变为高电平,然后才能做出响应。每个Slave的HREADYOUT用来扩展数据阶段,并且每个Slave必须有hready_in,以便知道系统上是否有任何其他Slave正在请求数据阶段扩展。如果任何Slave的hready_in为低电平,则该Slave必须等待其hready_in变为高电平,然后才能响应任何AHB请求。因此每个Slave都有两个hready信号,一个hready_in信号,一个hready_out信号。建议每个Slave的HREADY信号默认值设为“1”。 感谢关注微信公众号《芯片验证日记

poYBAGOdB5-AcH_9AAIAaf-qHBw434.png

4.hready_in作用示例

即便是pipeline操作,如果AHB连续对同一个Slave进行突发读写,hready_in的作用也体现不出来,只有下边的情况才能体现hready_in的作用:

①AHB流水操作;②AHB连续访问,并且是跨多个Slave访问;③Slave存在反压。如下图所示:

AHB master第二次访问S0时,S0出现反压,但此时访问S1的addr phase已经出现,且此时S1处于ready状态(hready_out_s1=1),但由于此时访问S0的data_phase未结束,S0通过hready_out_s0反压hready_in_s1,因此即便S1处于ready状态也必须hold住。因此在设计AHB slave时,必须hready_out和hready_in同时为高,当次访问才能完成。感谢关注微信公众号《芯片验证日记

poYBAGOdB8CAMKLFAAGduq9Q9Y0753.png

审核编辑 黄昊宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 信号
    +关注

    关注

    11

    文章

    2771

    浏览量

    76525
  • AHB
    AHB
    +关注

    关注

    0

    文章

    18

    浏览量

    9750
收藏 人收藏

    评论

    相关推荐

    AHB总线HREADY和HRESP信号如何处理?

    HREADY信号是slave发出的控制谁的?看有人写的程序HREADY即当了输入又当作输出,看的晕乎乎的。HRESP信号,是和HREADY信号同步吗?两者怎么配合?希望大家用一个等待过
    发表于 01-04 13:58

    请教关于ADE7880快速读取谐波寄存器

    寄存器的谐波计算更新时间同步。将CONFIG寄存器的位2 (CF2DIS)置1便可选择该功能。如果将CF2DIS设为0(默认值),CF2电能频率转换器输出则在CF2/HREADY引脚提供。此信号的默认
    发表于 07-24 08:10

    hpi不稳定 请问是什么原因?

    我把dm6416挂在arm9sam9g45的 外部总线上,使用访问外部地址的方式访问hpi。hpi的状态不稳定,写进dsp一个数据,再读回来,有的时候正确,有的时候读数据的时候hpi的hready
    发表于 08-07 07:41

    USB2.0设备控制器IP核的AHB接口设计实现

    hready_out,等待读数据。因为每个端点只有1个AHB地址,如果SLV一直对同一个端点进行传输,则可以使用预读取数据,保持流水,提高数据传输效率。遇到BUSY周期进入HS_RDBUSY状态,有专门寄存器存储预读数据,等待后面读操作中使用。  
    发表于 05-13 07:00

    如何理解LabVIEWModBus Slave函数的用途?

    Master的函数比如说 读写线圈,读输入等,都是针对PLC的操作,感觉比较好理解。但是ModBus slave的用途是在什么场合啊?如果LabVIEW(电脑)做从机, 里面也有读写线圈vi,这个线圈对电脑
    发表于 03-10 22:14

    【FPGA开发者项目连载】基于高云FPGA的方波发生器

    ,inputwireAHB_HRESETn);//The AHB BUS is always readyassign AHB_HREADY = 1'b1; //ready signal, slave
    发表于 05-15 18:33

    【Sipeed TangNano9K开发板试用体验】+ 可绘画的LCD显示屏

    2bram ahb2bram( .clk_i(clk50), .reset_i(~sys_rstn), .hrdata_o(hrdata), .hresp_o(hresp), .hready_o(hready
    发表于 03-26 16:25

    AHB总线的HLOCK信号和HMASTLOCK信号之间有什么关系

    可能是与HREADY 信号无关的(例如,AHB 的等待状态)。因此HTRANS 信号可以在下一个周期改变为任意合法的值,如,在突发传输需要继续时改为SEQ,在突发传输结束时改为IDLE,在需要发起一个单独
    发表于 06-08 16:20

    Arm AMBA协议集中address phase是必须等到hready有效才结束吗

    Arm AMBA协议集中,ahb-lite协议里面,address phase是必须等到hready有效才结束吗?还是不管hready是否有效,只需要一拍就行?
    发表于 09-14 11:43

    Arm AMBA协议集中ahb2.0和3.0必须要有dummy master和default slave吗?

    Arm AMBA协议集中,ahb2.0和3.0必须要有dummy master和default slave吗?
    发表于 09-27 11:58

    ARM966E-S技术参考手册

    详细描述 AHB 协议,见 AMBA 规格(Rev 2. 0) 。 5.4.1 AHB 结构基于不同的地址和数据周期。访问的地址和控制值在预计数据读或写之前的周期内从HCLK 上升的边缘播放。在这
    发表于 08-02 09:41

    安路FPGA SF1 RISC-V 串口通讯

    ( I_ahb_hresp ), .hready( I_ahb_hready) ); endmodule 在TOP模块调用,SOC模块和PLL模块 module top(
    发表于 09-27 11:10

    AHB Slave Decoder和AHB Slave Interface接口的使用说明

    接口可以访问带有AHB Slave接口的IP模块,但是Fuxi工具没有提供以单个寄存器读写访问方式的IP核。而在实际工程,MCU需要以寄存器的方式访问FPGA资源,本文的在此种背景下,根据A
    发表于 11-11 08:00 15次下载
    <b class='flag-5'>AHB</b> <b class='flag-5'>Slave</b> Decoder和<b class='flag-5'>AHB</b> <b class='flag-5'>Slave</b> Interface接口的使用说明

    如何理解AHB和APB,以及一些有关嵌入式的基础名词术语缩写

    一,有关嵌入式的部分基础名词缩写:AHB        &
    发表于 11-26 19:06 47次下载
    如何<b class='flag-5'>理解</b><b class='flag-5'>AHB</b>和APB,<b class='flag-5'>以及</b>一些有关嵌入式的基础名词术语缩写

    数字IC验证:ARM总线协议AMBAAHB、APB的简介、区别与联系

    , ASB, APB);Qchannel文章目录1 AMBA总线2 AHB2.1 一个典型的基于AHB的微控制器2.2 AHB总线互联结构:中心选择器连接master与slave2.3
    发表于 12-05 15:36 16次下载
    数字IC验证:ARM总线协议AMBA<b class='flag-5'>中</b><b class='flag-5'>AHB</b>、APB的简介、区别与联系