异步周期结束方式单次读操作每次操作只完成一次读或者写,是最基本的总线操作方式。但是,Wishbone主设备或者从设备也可以不支持单次读写
异步周期完毕方法
单次读操作每次操作只完结一次读或许写,是最基本的总线操作方法。可是,Wishbone主设备或许从设备也能够不支持单次读/写操作,乃至没有地址和数据总线。
单次读操作如图1。在时钟上升沿0,主设备将地址信号ADR_O()、TGA_O()放到总线上,将WE_O置为低标明读操作,将恰当的SEL_O()信号置高告诉从设备将数据放在数据总线的恰当方位,将CYC_O和TGC_O置高标明操作正在进行,将STB_O置高标明操作开端。
在时钟上升沿1抵达之前,从设备检测到主设备建议的操作,将恰当的数据放到主设备的输入信号DAT_I()和TGD_I(),将主设备的ACK_I置高作为对主设备STB_O的呼应。
在时钟上升沿1,主设备发现ACK_I信号为高,将DAT_I()和TGD_I()采样,并将STB_O和CYC_O置为低标明操作完结。从设备发现STB_O置低后,也将主设备的输入信号ACK_I置低。
在图1中,从设备能够上升沿0和上升沿1之间刺进恣意多个等候周期。
图1Wishbone总线的单次读操作(周期异步完毕方法)
同步周期完毕方法
图2Wishbone总线的单次读操作(周期同步完毕方法)
在时钟上升沿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]拉低
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/zhishi/shuzi/232831.html