Felix

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

Wishbone总线地址增加突发结束方式

0
阅读(1789)

连载目录篇:http://blog.chinaaet.com/justlxy/p/5100051808 


地址不变突发是一个总线周期,在这个总线周期中完成多次操作,但是地址递增的。地址的单位增加值取决于数据总线的宽度和粒度。对于粒度为8比特的数据总线,当数据总线宽度为8,地址每次增加1;当数据总线宽度为16,地址每次增加2;当数据总线宽度为32,地址每次增加4。地址增加的方式又分为线性增加和折叠增加。在线性增加中,新的地址总是比旧的地址大一个单位增加值。在折叠增加中,新的地址的获得方式为:在旧的地址加一个单位增加值,其后再将地址与折叠尺寸异或。常见的折叠尺寸为4和8,因此Wishbone标准中明确定义了支持叠4和叠8操作,示例如表5所示。折叠操作常见于处理器缓存的读写。典型的SDRAM都支持折叠操作。

image.png

表5 地址增加方式

主设备将CTI()置为3’b010表示地址增加突发操作,若主设备在时钟的某一个上升沿将CTI()置为3’b010,必须同时将BTE_O()置为合适的值,以通知从设备地址的增加方式,且下一个周期的传输必须与本周期相同,SEL_O()信号也不能改变。

图28给出了一个数据总线为32位粒度为8的叠4地址增加突发读操作示例。主设备和从设备之间一共进行了4次传输。

在时钟上升沿0,主设备将地址信号ADR_O()放到总线上,将WE_O置为低表示读操作,将CTI()置为3’b010表示地址增加突发操作,将BTE_O()置为2’b01表示叠4操作,将适当的SEL_O()信号置高通知从设备将数据放在数据总线的适当位置,将CYC_O置高表示操作正在进行,将STB_O置高表示第一次传输开始。从设备根据ADI_O()准备所需数据。

在时钟上升沿1,从设备检测到主设备的读操作,将数据放到DAT_O(),同时置高ACK_O。从设备此时根据CTI()和BTE_O()知道下次主设备操作的地址,并前根据该地址准备第二次操作数据。

在时钟上升沿2,主设备检测到ACK_I为高,将DAT_I()采样完成第一次操作,并发起第二次操作。从设备获得第二次操作的数据并将其放到DAT_O()并开始准备第三次操作的数据。

在时钟上升沿3,主设备检测到ACK_I为高,将DAT_I()采样完成第二次操作,并发起第三次操作。从设备获得第三次操作的数据并将其放到DAT_O()并开始准备第四次操作的数据。

在时钟上升沿4,主设备检测到ACK_I为高,将DAT_I()采样完成第三次操作,并发起第四次操作,并将CTI()置为3’b111表示本次地址增加突发操作即将结束。从设备获得第四次操作的数据并将其放到DAT_O()并开始准备第五次操作的数据。

在时钟上升沿5,主设备检测到ACK_I为高,将DAT_I()采样完成第四次操作。从设备检测到CTI()为3’b111,刚刚获取的为第五次操作准备的数据被抛弃。

image.png

图28 数据总线为32位粒度为8的叠4地址增加突发操作示例