现在的位置: 首页 > 综合 > 正文

片上总线Wishbone 学习(九)总线周期之单次读操作

2013年10月16日 ⁄ 综合 ⁄ 共 1016字 ⁄ 字号 评论关闭

片上总线Wishbone 学习(九)总线周期之单次读操作

异步周期结束方式

              单次读操作每次操作只完成一次读或者写,是最基本的总线操作方式。但是,Wishbone主设备或者从设备也可以不支持单次读/写操作,甚至没有地址和数据总线。 

              单次读操作如图1在时钟上升沿0,主设备将地址信号ADR_O()TGA_O()放到总线上,将WE_O置为低表示读操作,将适当的SEL_O()信号置高通知从设备将数据放在数据总线的适当位置,将CYC_OTGC_O置高表示操作正在进行,将STB_O置高表示操作开始。 

              在时钟上升沿1到达之前,从设备检测到主设备发起的操作,将适当的数据放到主设备的输入信号DAT_I()TGD_I(),将主设备的ACK_I置高作为对主设备STB_O的响应。 

            在时钟上升沿1,主设备发现ACK_I信号为高,将DAT_I()TGD_I()采样,并将STB_OCYC_O置为低表示操作完成。从设备发现STB_O置低后,也将主设备的输入信号ACK_I置低。 

             在图1中,从设备可以上升沿0和上升沿1之间插入任意多个等待周期。 



图1 Wishbone总线的单次读操作(周期异步结束方式)

同步周期结束方式

图2 Wishbone总线的单次读操作(周期同步结束方式)
在时钟上升沿0
  • Master在[ADR_O()]和[TGA_O()]发出有效的地址
  • Master拉低[WE_O],表明是一个读周期
  • Master发出有效数据选择信号[SEL_O()]表明哪些数据是有效的
  • Master发出[CYC_O]和[TGC_O()]表明总线周期的开始
  • Master发出[STB_O]表明操作的开始

在时钟上升沿1
  • Slave检测到主设备发起的操作,准备发出[ACK_I]
  • Slave在[DAT_O]和[TGD_O()]发出有效的数据
  • Slave发出[ACK_I]应答[STB_O],表明数据有效,可以读取数据了
  • Master发现[ACK_I],准备锁存[DAT_I]和[TGD_I()]
注意:Slave可以在发出[ACK_I]前插入等待周期(-WSS-),以控制传速度。可以插入任意多个等待周期。

在时钟上升沿2
  • Master锁存[DAT_I]和[TGD_I()]
  • Master拉低[STB_O]和[CYC_O],表明总线周期的结束
  • Slave发现Master拉低[STB_O],也将[ACK_I]拉低

抱歉!评论已关闭.