Felix

技术源于积累,成功始于执着! 个人邮箱:justlxy@mail.dhu.edu.cn QQ:1576109464

3.11、 Wishbone总线周期之块写操作

0
阅读(416) 评论(3)

连载目录篇:

http://blog.chinaaet.com/justlxy/p/5100051808#content

标准块写操作

图17显示的是一个标准的块写周期时序图。块写周期可以在每一个时钟周期完成一次数据传输。但是,本例中显示了主机和从机插入等待状态以控制数据传输速率的情况。图中一共显示了5个传输。第二次传输后,主机插入了一个等待状态。第四次传输后,从机插入了一个等待状态。整个周期在第五次传输之后结束。

image.png

图17 标准块写周期

总线协议的执行流程如下:

时钟上升沿0:

·主机将有效地址置于ADR_O()和TGA_O();

·主机将WE_O置位,以表明进入写周期;

·主机输出SEL_O()(bank select)表明其操作的数据地址;

·主机将CYC_O和TGC_O()置位,以表明周期的开始;

·主机将STB_O置位,以表明第一个段(phase)的开始;

注意:主机可以在时钟上升沿1之前的任意时间,将CYC_O和TGC_O()置位。

时钟上升沿1:

·从机解码输入,并作出从机响应(ACK_I)。

时钟上升沿2:

·主机将监控ACK_I信号;

·主机将STB_O复位,以插入一个等待状态(-WSW-)。

时钟上升沿3:

·主机将有效地址置于ADR_O()和TGA_O();

·主机将WE_O置位,以表明进入写周期;

·主机输出SEL_O()(bank select)表明其操作的数据地址;

·主机将CYC_O和TGC_O()置位,以表明周期的开始;

·主机将STB_O置位,以表明第二个段(phase)的开始。

时钟上升沿4:

·主机将有效地址置于ADR_O()和TGA_O()

·主机将WE_O复位,以表明进入读周期;

·主机输出SEL_O()(bank select)表明其操作的数据地址;

·主机将STB_O置位。

·从机解码输入,并对ACK_I做出相应。

时钟上升沿5:

·主机监控ACK_I信号;

·主机将STB_O和CYC_O复位,以结束本次块读周期。

流水线块写操作

流水线块写模式的时序图如图18所示。


image.png

图18 流水线块写周期

总线协议的执行流程如下:

时钟上升沿0:

·主机将有效地址置于ADR_O()和TGA_O();

·主机将WE_O置位,以表明进入写周期;

·主机输出SEL_O()(bank select)表明其操作的数据地址;

·主机将CYC_O和TGC_O()置位,以表明周期的开始;

·主机将STB_O置位,以表明第一个段(phase)的开始;

·主机监控ACK_I信号,并准备锁存DAT_I()和TGD_I()信号。

时钟上升沿1:

·从机解码输入,并作出从机响应(ACK_I);

·主机将有效地址置于ADR_O()和TGA_O();

·主机将WE_O置位,以表明进入写周期;

·主机输出SEL_O()(bank select)表明其操作的数据地址;

·主机将STB_O置位,以表明第二个段(phase)的开始。

时钟上升沿2:

时钟上升沿3:

·从机解码输入,并作出从机响应(ACK_I);

·当STALL_I为低电平时(inactive),主机将STB_O信号复位。

时钟上升沿4:

·主机将CYC_O信号复位,当接受到第二个ACK_O信号时。


  1. @hard_01   

    主机 不需要将数据放入 DAT_O吗

    当然要放了,看图片!

  2. 主机 不需要将数据放入 DAT_O吗

  3. 好,不错,讲解的挺细