Avalon® 接口规范

ID 683091
日期 5/27/2021
Public
文档目录

3.5.5.1. 写突发(Write Bursts)

这些规则应用于一个写突发开始于大于1的burstcount的情况:

  • 当值为<n>burstcount出现在突发的开始时,agent必须接受<n>个连续单元的 writedata以完成突发。host-agent对之间的仲裁保持锁定,直到突发完成。此锁定保证在写突发完成之前没有其他host能够在agent上执行事务。
  • Agent必须在write置位时才能捕获writedata。在突发期间,host通过解除write置位时才能捕获writedata。解除置位write不会终止突发。write解除置位会延迟突发,并且没有其他host可以访问agent,从而降低了传输效率。
  • agent通过置位waitrequest,强制writedatawriteburstcountbyteenable保持不变来延迟一个传输。
  • byteenable信号的功能对于突发和非突发agent是相同的。对一个64-bit agent的32-bit host突发写操作(burst-writing),从字节地址4开始,agent看到的第一个写传输在它的地址0上,byteenable = 8'b11110000byteenables可以根据突发的不同字进行改变。
  • byteenable信号不必都置位。突发host写局部字能够使用byteenable信号识别当前被写入的数据。
  • 将全部为0的byteenable信号的写操作作为有效事务传递到 Avalon® -MM agent。
  • constantBurstBehavior属性指定突发信号的行为。
    • constantBurstBehavior对于一个host为true时,此host在整个突发期间保持addressburstcount稳定。当对一个agent为true时,constantBurstBehavior声明此agent期望addressburstcount在整个突发期间保持稳定。
    • constantBurstBehavior为false时,host仅对突发的第一个事务保持addressburstcount稳定。当constantBurstBehavior为false时,agent仅在突发的第一个事务上采集addressburstcount
图 14. 将Host和Agent的constantBurstBehavio设置为False的写突发下图显示了一个长度为4的agent写突发。在此实例中,agent置位waitrequest两次来延迟突发。 l

此时序图中的编号标识了以下转换:

  1. host置位addressburstcountwrite并驱动writedata的第一个单元。
  2. agent立即置位waitrequest,表明agent尚未准备好继续传输。
  3. waitrequest为低电平。agent捕获addr1burstcountwritedata的第一个单元。在随后的传输周期中,addressburstcount被忽略。
  4. agent在clk的上升沿采集数据的第二个单元。
  5. write解除置位期间突发暂停。
  6. agent在clk的上升沿采集数据的第三个单元。
  7. agent置位waitrequest。作为响应,所有输出在另一个时钟周期内保持不变。
  8. agent在clk的上升沿采集数据的最后一个单元。agent写突发结束。

上图中,beginbursttransfer信号在突发的第一个时钟周期置位,在下一个时钟周期解除置位。即便agent置位waitrequestbeginbursttransfer信号也仅在第一个时钟周期置位。