【AHB】AHB协议(二) 基本传输规则总结
  • 基本传输
    一个beat(一笔)rw操作,分为addr phase and data phase;

  • hready驱动总线周期的推进

  • AHB的流量控制
    slave靠拉低hready_out在data phase插入wait state;

master靠驱动htrans=busy来插入wait cycle;

  • “一致原则”:在一个burst内除haddr/htrans外的其它addr phase的控制信号都应保持不变;

  • “尽早原则”: master在输出busy trans时,需要把其它addr phase的信号驱动到下一个beat的值;(master在插入busy的时候要把下一笔传输的addr放出来)

  • “诚信原则”: master一但在addr phase发出一个nonseq/seq的transfer,通常需要等slave接收该addr phase的transfer cmd后才能改变addr phase的信号值发送下一个transfer cmd;
    例外:在error response时,有特殊时序可以放弃一个己经发出的transfer cmd;
    举例:
    Master接收到ERROR response,有两种反应:

    1. 无视ERROR response,继续这个burst传输
    2. 终止当前burst传输,在error响应时把htrans先改为idle; (这个要求在AMBA5中明确提出)

Master也可以无视ERROR response,继续这个burst传输:

  • “诚信原则”:如果master没有收到error response,master必须完成一个burst的所有beat传输;

  • “效率原则1”: master发出的idle trans,不管是否被slave接收,可以随时更换所有transfer cmd信息;
    当slave拉低hready来扩展数据传输时,master若没有数据传输则drive IDLE状态,也可以随时由IDLE状态变为NONSEQ状态,这样做可以节省一个周期:

下图是加入没有这条规则的传输波形,每个IDLE状态都必须被Slave接受,那么IDLE状态将持续到hready=1的时钟上升沿。再后一个周期才能传输NONSEQ状态的传输。相对上图,后面的NONSEQ状态晚一周期。

  • “效率原则2” : master发出的busy trans,不管是否被slave接收,可以随时把htrans更换为seq(对于burst中间的busy)或nonseq/idle (对于不定长burst结束后的busy);
    举例:同上面分析一样,如果没有这条原则,那么切换后的那一拍传输将相对慢一个时钟周期。

  • 地址对齐
    haddr需要对齐到hsize指定的byte边界,即:
    8bit transfer,haddr可以从任意byte地址开始;
    16bit transfer,haddr必须从2N byte地址开始;
    32bit transfer,haddr必须从4N byte地址开始;
    64bit transfer,haddr必须从8N byte地址开始;

  • 独占原则
    master发出locked transfer(hmasterlock=1)来保证一串AHB传输的独占性(atomic access) ; locked transfer一般是为了满足SW层面的“semaphore”操作需求,ARM CPU有对应的汇编指令:“SWP”;

在系统中,locked transfer是由bus结构保证的(非master/slave保证);在AMBA5中进一步明确:

  • lock过程开始:
    • master: hmasterlock=1 && hready =1;
    • slave: hmasterlock=1 && hsel =1 && hready =1;lock过程结束:hmasterlock=O & hready = 1;
  • 一个lock过程的头、中间、尾都可以插入IDLE trans;
  • 在一个lock过程中,可以只有locked IDLE trans;
  • 在一个lock过程中,所有的trans都只访问同一个slave;
来自广东
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇