【博文连载】Wishbone总线周期之单次写操作
标准单次写周期
图12显示的是标准单次写周期的时序图。
图12 标准单次写周期
总线协议的执行流程如下:
时钟上升沿0:
·主机将有效地址置于ADR_O()和TGA_O()上;
·主机将有效数据置于DAT_O()和TGD_O()上;
·主机将WE_O置位,以表明进去写周期;
·主机输出SEL_O()(bank select)表明其操作的数据地址;
·主机将CYC_O和TCG_O置位,以表明写周期开始;
·主机将STB_O信号置位,以表明操作开始(start of phase)。
时钟上升沿1:
·从机解码输入(检测STB_O,数据被锁存),并将ACK_I置位,以做出响应;
·从机准备锁存DAT_O()和TGD_O()上的数据;
·主机将STB_O信号复位,以表明数据传输的结束(end of data phase);
·主机监控ACK_I信号,并准备终止周期;
注意:从机可能会在置位ACK_I信号之前插入多个(数量任意)等待状态(-WSS-),因此允许其限制周期速度。
时钟上升沿2:
·从机锁存DAT_O()和TCG_O()上的数据;
·主机将STB_O和CYC_O复位,以表明周期的结束;
·从机将ACK_I信号复位以响应STB_O信号的复位。
流水线单次写周期
图13显示的是流水线单次写周期的时序图。
总线协议的执行流程如下:
时钟上升沿0:
·主机将有效地址输出到ADR_O()和TGA_O();
·主机将有效数据置于DAT_O()和TGD_O();
·主机将WE_O置位,表示进入写周期;
·主机输出SEL_O()(bank select)表明其操作的数据地址;
·主机将CYC_O和TCG_O置位,以表明写周期开始;
·主机将STB_O信号置位,以表明操作开始(start of phase)。
时钟上升沿1:
·从机解码输入(检测STB_O,数据被锁存),并将ACK_I置位,以做出响应;
·从机准备将DAT_O()和TGD_I()上的数据锁存;
·主机将STB_O信号复位,以表明数据传输的结束(end of data phase);
·主机监控ACK_I信号,并准备终止周期;
注意:从机可能会在置位ACK_I信号之前插入多个(数量任意)等待状态(-WSS-),因此允许其限制周期速度。
时钟上升沿2:
·主机锁存DAT_O()和TCG_O()上的数据;
·主机将STB_O和CYC_O复位,以表明周期的结束;
·从机将ACK_I信号复位以响应STB_O信号的复位。
图13 流水线单次写周期