当前位置: 首页 > news >正文

AMBA-AHB的控制信号

控制信号

1、传输类型

        AHB 规范定义了四种传输类型: IDLE BUSY RETRY SPLIT ,由信号 HTRANS[1:0]
定义。

 

​IDLE(HTRANS=00)

​功能​​:

  • 表示主设备已获得总线授权但无需传输数据,总线处于空闲状态。
  • 从设备必须忽略此类传输,并立即返回 ​​HREADY=1​​ 和 ​​HRESP=OKAY​​ 响应。

​应用场景​​:

  • 主设备完成突发传输后释放总线,但需保持总线占用权(如防止其他主设备抢占)。
  • 系统初始化或低功耗模式下主动挂起总线活动。
BUSY(HTRANS=01)

​功能​​:

  • 允许主设备在突发传输中插入空闲周期,延迟下一次传输。
  • 地址和控制信号仍需保持为下一次传输的正确值,但数据段无效。

​应用场景​​:

  • 主设备因内部处理延迟(如缓存未命中)需暂停数据传输。
  • 突发传输中调整数据对齐或等待外设响应。

​示例​​:
在 ​​INCR4突发传输​​ 中,主设备可能在第二拍插入BUSY状态,此时地址仍指向下一拍(如0x04→0x08),但数据段无效。

NONSEQ(HTRANS=10)​

​功能​​:

  • 表示突发传输的​​首拍​​或​​单次独立传输​​,地址与控制信号与前次传输无关。
  • 用于启动新的操作序列或非连续地址访问。

​应用场景​​:

  • 突发传输起始(如 ​​INCR4​​ 的0x00地址)。
  • 单次读写操作(如配置寄存器访问)。

​时序特性​​:
地址按 ​​HSIZE​​ 定义的大小对齐(如 ​​HSIZE=010(32位)​​,地址需4字节对齐)。

SEQ(HTRANS=11)​

​功能​​:

  • 表示突发传输的后续连续传输,地址按前次地址递增或回环。
  • 控制信号与传输大小(​​HSIZE​​)必须与前次一致。

​应用场景​​:

  • 突发传输的后续节拍(如 ​​INCR4​​ 的第2~4拍)。
  • 内存块连续读写(如DMA搬运数据)。

​地址计算​​:

  • ​增量突发(INCR)​​:当前地址 = 前次地址 + HSIZE字节数
  • ​回环突发(WRAP)​​:地址在 ​​HSIZE × 突发长度​​ 边界回环(如 ​​WRAP4​​ 突发中,地址0x3C后回绕至0x30)。

传输类型与突发操作的关系​

​突发类型​​HTRANS序列​​地址行为​
​SINGLE​NONSEQ → IDLE单次独立地址
​INCR4/WRAP4​NONSEQ → SEQ → SEQ → SEQ地址递增或回环
​BUSY插入​NONSEQ → BUSY → SEQ地址保持为下一拍,数据段暂停

关键区别与设计考量​

  1. ​IDLE vs BUSY​​:

    • IDLE为​​主动空闲​​,用于总线保留;BUSY为​​被动等待​​,用于突发内部暂停。
    • BUSY需保持地址连续性,IDLE无此要求。
  2. ​NONSEQ vs SEQ​​:

    • NONSEQ启动新操作,SEQ延续当前操作。
    • 突发传输中,SEQ的地址依赖前次传输,需严格遵循递增或回环规则。
  3. ​错误响应与传输类型的关系​​:

    • ​HRESP[1:0]​​ 信号(如RETRY/SPLIT)用于从设备反馈传输状态,与HTRANS独立。例如,从设备可通过 ​​HRESP=SPLIT​​ 中断当前传输,主设备需重新仲裁总线。

​典型时序示例​

​INCR4突发传输(无等待)​​:

  1. ​T1​​:HTRANS=NONSEQ,地址=0x00,启动传输。
  2. ​T2~T4​​:HTRANS=SEQ,地址依次递增(0x04→0x08→0x0C),数据段连续传输。
  3. ​T5​​:HTRANS=IDLE,释放总线。

    AHB通过 ​​HTRANS[1:0]​​ 实现灵活的时序控制,支持高带宽流水线操作。设计时需注意:

  • ​突发完整性​​:SEQ必须严格延续NONSEQ的地址与控制信号。
  • ​响应分离​​:传输类型(HTRANS)与状态响应(HRESP)需独立处理。
  • ​性能优化​​:合理使用BUSY避免总线带宽浪费,同时通过SEQ最大化突发效率。

 2、Burst传输

         AHB 协议规定了 4816beat 传输,以及未定义长度INCR和 single 传输。其中 beat 数乘以transfer即为burst 的长度。AHB 协议支持incrementingwrap burst,incrementing为递增的, 没有边界;wrap 将地址划分为传输 burst 长度的边界,超过边界部分折返回边界开始处。如传输一笔 wrap4 burst,字长为 4byte,第一笔传输的地址为 0x34,会在16byte绕回,因此4笔传输的地址为 0x340x380x3c0x30。表为 Burst 信号编码说明。

        Burst 不能超过 1K 地址边界,注意未指定长度的 incrementing burst 不能超过这一地址
边界。图七显示了一笔类型为 WRAP4 burst 传输,第一笔传输加入一个等待状态。

       按照上述表格可知AHB协议支持的Burst传输类型由 ​​HBURST[2:0]​​ 信号编码决定,主要分为 ​​增量突发(INCR)​​和 ​​回环突发(WRAP)​​ 两类,具体特征如下:

  1. ​INCR(Incrementing Burst)​

    • 地址递增,无边界限制,每次地址增量由 ​​HSIZE​​ 决定(如HSIZE=32位,增量4字节)。
    • 典型应用:连续内存访问(如DMA搬运数据块)。
    • 示例:INCR4突发起始地址0x1000,地址序列为0x1000→0x1004→0x1008→0x100C。
  2. ​WRAP(Wrapping Burst)​

    • 地址在达到 ​​回环边界​​ 时折返,边界值由 ​​Burst长度(Beat数)​​ × ​​HSIZE​​ 决定。
    • 典型应用:缓存行填充(Cache Line Fill),优化循环数据访问。
    • 示例:WRAP4突发(HSIZE=4字节),起始地址0x34,地址序列为0x34→0x38→0x3C→0x30(16字节边界回绕)。
参数计算​
  • ​回环边界计算​
    公式:边界值 = Burst长度 × HSIZE字节数
    示例:WRAP8突发(HSIZE=16位,即2字节),边界值为8×2=16字节。若起始地址0x48,地址序列为0x48→0x4A→…→0x58→0x40(折返到16字节边界起点)。

  • ​1KB地址边界限制​

    • 所有Burst传输(包括INCR未定义长度)不得跨越1KB(1024字节)边界。
    • 原因:从设备地址空间通常以1KB划分,避免跨设备访问错误。
    • 处理方法:接近边界时拆分Burst(如INCR8在地址0x3FC时拆分为两个INCR4)。
时序与等待状态处理​
  • ​流水线特征​
    地址段与数据段交叠,允许高吞吐量。例如:当前传输的地址段(T1)与上一传输的数据段(T2)并行处理。

  • ​等待状态插入​
    从设备通过拉低 ​​HREADY​​ 延长数据段周期(图七示例):

    1. Master在T1周期发起WRAP4传输(地址0x34,HTRANS=NONSEQ)。
    2. Slave在T2采样地址后因处理延迟拉低HREADY,插入等待周期(T3)。
    3. T3周期地址保持0x34,数据段完成时HREADY恢复,后续传输继续(0x38→0x3C→0x30)。
协议限制与设计考量​
  1. ​Burst完整性​

    • 固定长度Burst(如INCR4/WRAP8)必须完整执行,不可中途终止(除非从设备返回ERROR响应)。
    • 未定义长度INCR突发可通过HTRANS切换为IDLE或NONSEQ提前终止。
  2. ​异常处理​

    • 从设备返回 ​​HRESP=ERROR​​ 时,Master可终止未完成Beat(如WRAP8突发在第二拍出错,后续6拍取消)。
    • 多层总线仲裁中,高优先级请求可抢占当前Burst,从设备需支持中断恢复。

​AHB协议通过 ​​INCR/WRAP Burst​​ 和 ​​流水线机制​​ 实现高效数据传输,其设计核心在于地址计算与时序优化。 ​​1KB边界限制​​ 和 ​​等待状态处理​​ 是确保系统稳定性的关键约束。实际应用中需结合从设备特性(如Cache行大小)选择Burst类型,并通过协议转换桥接兼容不同性能模块(如AXI与AHB协同)。

在AHB总线协议中,​​Burst(突发传输)中的Beat(节拍)​​是核心时序单元,其定义和计算规则如下:

Beat的定义​
  1. ​基础概念​

    • ​Beat​​是Burst传输中的​​单个数据传输单元​​,代表一次地址和数据操作的最小周期。
    • 每个Burst由多个Beat组成,例如:INCR4表示4个Beat的递增突发,WRAP8表示8个Beat的回环突发。
  2. ​Beat与Transfer的关系​

    • ​Transfer(传输)​​与Beat等同,即一个Beat即为一拍数据。在突发操作中,Burst的长度由Beat数决定,例如:Burst长度 = Beat数 × HSIZE字节数
​Beat的计算规则​
​1. Beat数量的确定​
  • ​固定长度Burst​​:直接由HBURST编码决定:

    HBURST编码类型Beat数
    010WRAP44拍
    011INCR44拍
    110WRAP1616拍
  • ​未定义长度Burst(INCR)​​:Beat数由Master动态控制,但需遵循​​1KB地址边界限制​​(突发地址不能跨越1024字节边界,否则需拆分)。

​2. Beat地址的计算​
  • ​增量突发(INCR)​​:

    • 地址按​​HSIZE字节数​​递增。
    • ​示例​​:若HSIZE=32位(4字节)INCR4突发起始地址为0x00,则Beat地址为:
      0x00 → 0x04 → 0x08 → 0x0C  
  • ​回环突发(WRAP)​​:

    • 地址在​​回环边界​​(HSIZE字节数 × Beat数)处折返。
    • ​示例​​:WRAP4突发(HSIZE=4字节)起始地址为0x34,回环边界为4×4=16字节,则地址序列为:
      0x34 → 0x38 → 0x3C → 0x30(回绕到16字节边界起点)  
3.​关键约束与设计考量​
  1. ​地址对齐要求​

    • 起始地址必须与​​HSIZE对齐​​(如HSIZE=32位时,地址需4字节对齐)。
  2. ​1KB地址边界限制​

    • 所有Burst传输(包括未定义长度的INCR)不得跨越1KB边界。例如:若INCR8突发在地址0x3FC时接近边界,需拆分为两个INCR4突发。
  3. ​时序与延迟控制​

    • 从设备可通过​​HREADY信号拉低​​插入等待周期,但Master需保持当前Beat地址和数据直至传输完成。
4.典型应用场景​
  • ​Cache行填充​​:使用WRAP突发优化循环地址访问,例如缓存行大小为16字节时,WRAP4可高效回绕填充。
  • ​DMA数据传输​​:INCR突发适用于连续内存块搬运,通过多Beat减少总线仲裁次数。
5.​​总结

        ​​Beat是AHB协议实现高效突发传输的基础单元,其计算需结合​​HSIZE​​、​​HBURST类型​​和​​地址边界规则​​。设计时需重点关注时序对齐和边界约束,以最大化总线带宽利用率。

3、传输方向

​功能与机制​

  • ​HWRITE信号定义​​:
    • ​高电平(HWRITE=1)​​:表示主设备(Master)发起​​写操作​​,数据通过​​HWDATA总线​​从Master传输到从设备(Slave)。
    • ​低电平(HWRITE=0)​​:表示主设备发起​​读操作​​,数据通过​​HRDATA总线​​从Slave传输到Master。

​关键特性​​:

  1. ​地址与控制阶段锁定​​:
    • HWRITE信号在​​地址阶段​​(Address Phase)被Slave采样,后续数据阶段(Data Phase)方向不可更改。
    • 例如:若地址阶段HWRITE=1,则后续数据阶段必须完成写操作,即使Master后续改变HWRITE值也无效。
  2. ​数据总线隔离​​:
    • AHB协议通过分离的​​HWDATA​​和​​HRDATA​​总线避免读写冲突,确保高带宽并行操作。

​应用示例​​:

  • ​DMA写内存​​:DMA作为Master,HWRITE=1,通过HWDATA总线将数据批量写入内存Slave。
  • ​CPU读外设​​:CPU作为Master,HWRITE=0,通过HRDATA总线读取传感器Slave的数据。

4、传输大小

        HSIZE 信号指定了单次传输的传输大小,从 8bits 1024bits ,它与 HBURST 共同决定 wrapping burst 的地址边界。表给出具体编码信息。

HSIZE与HBURST的协同作用​

  • ​增量突发(INCR)​​:

    • 地址按HSIZE定义的字节数递增(如HSIZE=010时4byte,每次地址+4)。
    • 例如:INCR4突发(HBURST=011)下,若HSIZE=010,地址序列为0x00→0x04→0x08→0x0C。
  • ​回环突发(WRAP)​​:

    • ​地址边界​​由公式:边界值 = HSIZE字节数 × Burst长度 计算。
    • ​示例​​:
      • WRAP4突发(HBURST=010) + HSIZE=010(4字节) → 边界值=4×4=16字节。
      • 起始地址0x34的WRAP4突发地址序列:0x34→0x38→0x3C→0x30(在16字节边界回绕)。

​设计约束​​:

  1. ​地址对齐​​:
    • HSIZE定义的传输宽度需与起始地址对齐(如HSIZE=010时,地址需4字节对齐)。
  2. ​1KB地址边界限制​​:
    • 所有突发传输(包括INCR未定义长度)不得跨越1KB边界,避免访问错误。
典型场景与性能优化​

​场景1:视频帧写入(HSIZE=100 + WRAP8)​

  • ​配置​​:HSIZE=100(128位),HBURST=100(WRAP8)。
  • ​地址计算​​:
    • 边界值=128位(16字节)×8拍=128字节。
    • 起始地址0x120时,地址序列为0x120→0x130→…→0x1E0→0x100(回绕到128字节边界)。

​场景2:高速缓存填充(HSIZE=010 + INCR4)​

  • ​配置​​:HSIZE=010(32位),HBURST=011(INCR4)。
  • ​带宽优化​​:
    • 每次突发传输4个32位数据(共16字节),利用流水线特性隐藏内存延迟。
​Note:AHB协议通过​​HWRITE​​和​​HSIZE​​实现灵活的数据传输控制
  • ​HWRITE​​确保读写操作隔离,支持高并发流水线操作。
  • ​HSIZE与HBURST​​联合定义地址行为,优化内存访问效率,尤其适用于缓存行填充、DMA搬运等场景。
  • 设计时需严格遵循地址对齐与1KB边界限制,确保系统稳定性。

5、保护控制

        保护控制信号 HPROT[3:0]为总线接入提供附加信息,用来为需要的模块提供一定级别 的保护。保护控制信号指定传输是读取操作码或数据,特权模式或用户模式。不是所有的 master 都能够产生精确的保护信息,因此规范建议如非必须 slave 不要使用 HPROT 信号。

AHB协议中HPROT[3:0]保护控制信号详解​

HPROT[3:0]是AHB总线中用于提供访问保护信息的信号,主要面向需要执行特定安全或优化策略的模块。尽管并非所有主设备(Master)都能精确生成这些信号,但其设计初衷是为系统提供以下功能扩展:

​1. HPROT[3:0]的功能定义​

HPROT的每个比特位代表不同的保护属性:

  • ​HPROT[3](Cacheable)​​:
    • ​0​​:数据不可缓存(Non-cacheable),适用于外设寄存器等需直接访问的场景。
    • ​1​​:数据可缓存(Cacheable),适用于频繁访问的内存区域(如CPU指令缓存)。
  • ​HPROT[2](Bufferable)​​:
    • ​0​​:数据不可缓冲(Non-bufferable),要求写操作立即生效。
    • ​1​​:数据可缓冲(Bufferable),允许写入缓冲区后再同步到目标地址,优化性能但可能引入延迟。
  • ​HPROT[1](Privileged/User Mode)​​:
    • ​0​​:用户模式(User Mode),限制对特权资源的访问。
    • ​1​​:特权模式(Privileged Mode),允许访问系统关键资源(如操作系统内核空间)。
  • ​HPROT[0](Data/Opcode)​​:
    • ​0​​:操作码访问(Opcode Fetch),用于指令预取。
    • ​1​​:数据访问(Data Access),用于常规读写操作。
2. 应用场景与设计建议​
  1. ​典型应用场景​​:

    • ​缓存优化​​:CPU通过设置HPROT[3]=1将内存数据缓存至L1/L2 Cache,减少访问延迟。
    • ​外设安全​​:对GPIO或DMA控制器等外设设置HPROT[1]=1(特权模式),防止用户程序越权操作。
    • ​实时性要求​​:对中断控制器等需即时响应的模块,配置HPROT[2]=0(不可缓冲)以确保写操作立即生效。
  2. ​使用限制与默认配置​​:

    • ​非必要不启用​​:若Slave模块无需保护机制,应忽略HPROT信号,避免增加设计复杂度。
    • ​默认设置​​:多数主设备在未明确需求时,将HPROT设为0011(Non-cacheable、Non-bufferable、User Mode、Data Access)以兼容基本操作。
​3. 与系统架构的关联​
  • ​与缓存一致性协议协同​​:HPROT的Cacheable信号需与系统缓存管理单元(如CACHE Controller)配合,确保数据一致性。
  • ​安全扩展​​:在支持TrustZone的SoC中,HPROT还可与安全状态信号(如NS位)结合,实现硬件级安全隔离。

​HPROT[3:0]为AHB总线提供了灵活的保护机制,但其使用需权衡性能、安全性与设计复杂度。在多数场景下,仅需关注关键模块(如Cache、特权外设)的配置,其余情况遵循默认规则即可。

http://www.xdnf.cn/news/700975.html

相关文章:

  • jenkins部署slave动态节点
  • java 开发中 nps的内网穿透 再git 远程访问 以及第三放支付接口本地调试中的作用
  • 使用 find 遍历软链接目录时,为什么必须加 -L
  • 华为OD最新机试真题-按单词下标区间翻转文章内容-OD统一考试(B卷)
  • 【案例95】“小”问题引发的“大”发现---记一次环境修复
  • 十六进制数据转换为对应的字符串
  • Python 如何让自动驾驶的“眼睛”和“大脑”真正融合?——传感器数据融合的关键技术解析
  • Java+POI+EXCEL导出柱形图(多列和单列柱形图)
  • 外骨骼驾驶舱HOMIE——3500元让人形机器人1:1复刻人类动作:类似Mobile ALOHA主从臂的主从分离版
  • 深度学习入门:从零搭建你的第一个神经网络
  • Vue3对接deepseek实现ai对话
  • 系统性学习C语言-第十讲-操作符详讲
  • javascript中运算符的优先级
  • 如何把示例数据0.617、0.229、0.174保留两位小数,并在后面添加%处理,处理后的结果如下:61.7%、22.9%、17.4%
  • Java | 韩顺平 循序渐进学Java自用笔记---OOP高级(二)
  • Kaggle-基于xgboost的销量预测
  • Java基础 Day23
  • ROC和生存曲线的绘制-spss
  • 精准监测,健康无忧--XC3576H工控主板赋能亚健康检测仪
  • 数据库相关面试
  • 74道TypeScript高频题整理(附答案背诵版)
  • Python解析DOC文档表格
  • Ovito建模并正交化方法
  • 删除队列中整数
  • 股票收益率的计算
  • 新能源工厂环境监控系统如何提升电池生产洁净度
  • C# async/await 完全指南:从入门到实践
  • API 与 SPI
  • iframe三方页面嵌入
  • 【深度学习-pytorch篇】3. 优化器实现:momentum,NAG,AdaGrad,RMSProp,Adam