您的位置 首页 电路

片上总线Wishbone 学习(十一)总线周期之块写操作

异步周期结束方式块写操作的例子如图1所示。图1的一次块写操作由五个相互关联的单次写操作完成。在时钟上升沿0,主设备将地址信号ADR_O()、

异步周期完毕方法

块写操作的比如如图1所示。图1的一次块写操作由五个彼此相关的单次写操作完结。

在时钟上升沿0,主设备将地址信号ADR_O()、TGA_O()放到总线上,将数据信号DAT_O()、TGD_O()放到总线上,将WE_O置为高标明写操作,将恰当的SEL_O()信号置高告诉从设备将数据总线上哪些信号是有用的,将CYC_O和TGC_O置高标明操作正在进行,将STB_O置高标明第一次写操作开端。

在时钟上升沿1抵达之前,从设备检测到主设备建议的操作,将主设备的ACK_I置高作为对主设备STB_O的呼应。

在时钟上升沿1,从设备将DAT_I()和TGD_I()采样;主设备发现ACK_I信号为高,得知第一次写操作完结,所以将新地址信号ADR_O()、新TGA_O()放到总线上,将新数据信号DAT_O()、新TGD_O()放到总线上,将WE_O置为高标明写操作,将恰当的SEL_O()信号置高告诉从设备将数据总线上哪些信号是有用的,将CYC_O和TGC_O置高标明操作持续在进行,将STB_O置高标明第2次写操作开端。

在时钟上升沿2抵达之前,从设备检测到主设备建议的第2次写操作,将主设备的ACK_I置高作为对主设备STB_O的呼应。

在时钟上升沿2,从设备将DAT_I()和TGD_I()采样;主设备发现ACK_I信号为高,得知第2次写操作完结,发现自己的数据还没有预备好,所以将STB_O置低标明刺进等候周期。

在时钟上升沿3抵达之前,从设备检测到STB_O为低,也将ACK_I置低。

在时钟上升沿3,主设备建议第三次操作,将新地址信号ADR_O()、新TGA_O()放到总线上,将新数据信号DAT_O()、新TGD_O()放到总线上,将WE_O置为高标明写操作,将恰当的SEL_O()信号置高告诉从设备将数据总线上哪些信号是有用的,将CYC_O和TGC_O置高标明操作持续进行,将STB_O置高标明第三次写操作开端。

在时钟上升沿4抵达之前,从设备检测到主设备建议的第三次写操作,将主设备的ACK_I置高作为对主设备STB_O的呼应。

在时钟上升沿4,从设备将DAT_I()和TGD_I()采样;主设备发现ACK_I信号为高,得知第三次写操作完结,所以将新地址信号ADR_O()、新TGA_O()放到总线上,将新数据信号DAT_O()、新TGD_O()放到总线上,将恰当的SEL_O()信号置高告诉从设备将数据总线上哪些信号是有用的,将STB_O持续置高标明第四次写操作开端。

在时钟上升沿5抵达之前,从设备检测到主设备建议的第四次写操作,将主设备的ACK_I置高作为对主设备STB_O的呼应。

在时钟上升沿5,从设备将DAT_I()和TGD_I()采样;主设备发现ACK_I信号为高,得知第四次写操作完结,所以建议第五次操作,将新地址信号ADR_O()、新TGA_O()放到总线上。

在时钟上升沿5之后新的时钟上升沿抵达之前,从设备发现由于某些原因暂时无法持续接纳数据,因而将ACK_I信号置低,刺进等候。

在时钟上升沿6,当从设备发现能够持续接纳数据,所以在在最终一个等候周期完毕且上升沿5抵达之前,将DAT_I()和TGD_I()采样;主设备发现ACK_I信号为高,得知第五次写操作完结。并将STB_O和CYC_O置低标明整个块写操作完结。

图1 Wishbone总线的块写操作(异步周期完毕方法)

同步周期完毕方法

图2 Wishbone总线的块写操作(同步周期完毕方法)

在时钟上升沿0:
  • Master在[ADR_O()]和[TGA_O()]宣布有用的地址
  • Master在[DAT_O()]和[TGD_O()]宣布数据
  • Master宣布[WE_O],标明是一个写周期
  • Master宣布有用数据挑选信号[SEL_O()]标明哪些数据是有用的
  • Master宣布[CYC_O]和[TGC_O()]标明总线周期的开端
  • Master宣布[STB_O]标明操作的开端

留意:Mater必须在时钟上升沿1或之前宣布[CYC_O]和/或[TGC_O()]

在时钟上升沿1:

  • Slave检测到主设备建议的操作,预备宣布[ACK_I]
  • Slave预备锁存[DAT_O]和[TGD_O()]
  • Slave宣布[ACK_I]应对[STB_O]

在时钟上升沿2:

  • Slave锁存[DAT_I]和[TGD_I()]
  • Master拉低[STB_O]刺进等候周期(-WSS-)

在时钟上升沿3:

  • Master在[ADR_O()]和[TGA_O()]宣布有用的地址
  • Master在[DAT_O()]和[TGD_O()]宣布数据
  • Master宣布[WE_O],标明是一个写周期
  • Master宣布有用数据挑选信号[SEL_O()]标明哪些数据是有用的
  • Master宣布[CYC_O]和[TGC_O()]标明总线周期的开端
  • Master宣布[STB_O]标明第2次操作的开端

在时钟上升沿4:

  • Slave检测到主设备建议的操作,预备宣布[ACK_I]
  • Slave预备锁存[DAT_O]和[TGD_O()]

在时钟上升沿5:

  • Master监督[ACK_I]
  • Master拉低[STB_O]和[CYC_O],完毕总线周期

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/dianlu/232807.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部