当前位置:首页 >> 信息与通信 >>

Wishbone简介(完整板)


Wishbone 简介
一、背景介绍 随着以 IP 核复用为基础的 SoC 设计技术的发展,工业界及研究组织积极从事相关 IP 互 联 标 准 方 案 的 制 定 工 作 , 从 目 前 的 研 究 和 发 展 看 , 影 响 力 较 大 的 有 IBM 公 司 的 CoreConnect、ARM 公司的 AMBA 和 Silicore Corp 公司的 Wishbon

e。 Wishbone 现在由 OpenCores 组织维护,是 OpenCores 建议的片上总线标准,目前已有 大量开源的 IP Core 使用 Wishbone 总线作为互连标准。Wishbone 总线只定义了信号和信号 间的时序关系,因此可用于软核、固核和硬核,对硬件描述语言、综合工具和实现手段没有 特殊要求。与其他片上总线相比,Wishbone 总线结构简单,互连灵活,对用户定制的支持 良好,与其他片上总线的互连也较简单,因此随着 SOPC 技术的发展,有着广泛应用前景。 二、 总线的整体结构 图 1 给出了 Wishbone 总线的逻辑结构:

图1 Wishbone 总线的主要特征概括如下: ● 所有应用使用一个总线体系结构; ● 简单、紧凑的体系结构; ● 支持多控制器; ● 64 位地址空间; ● 8~64 位数据总线(可扩展) ; ● 单周期读和写; ● RMW(READ-MODIFY-WRITE)周期; ● 事件周期; ● 支持重试; ● 支持内存映射,FIFO(FISRT IN FIRST OUT)和十字互连接口; ● 提供为较慢设备使用而扼制数据流的机制; ● 使用者定义标志为,确定数据传输类型; ● 由终端用户定义仲裁方式。 三、Wishbone 的信号 Wishbone 有三种模块分别为 SYSCON、MASTER、和 SLAVE 模块。 1、 SYSCON 模块信号

CLK_O:系统时钟的输出, 同步了 Wishbone 连接的所有模块, INTERCON 模块将 CLK_O 输出与 MASTER 和 SLAVE 的 CLK_I 信号相连。 RST_O:系统的复位输出,它强制将与 Wishbone 相连的模块重启,将自启动的状态机复 位到初始状态, INTERCON 模块将 RST_O 输出与 MASTER 和 SLAVE 的 RST_I 相连 2、 MASTER 和 SLAVE 共有的信号 CLK_I:模块的系统时钟输入 DAT_I():数据输入,最大位宽到 64 位 DAT_O():数据输出,最大位宽 64 位 RST_I():模块的复位输入 TGD_I():在 MASTER 和 SLAVE 接口中使用,它包含了与数据输入 DAT_I()相关的 信息,STB_I 标记其有效 TGD_O():同上,包含了与数据输出 DAT_O()相关的信息,STB_O 标记其有效 3、 MASTER 模块的信号 ACK_I:确认信号输入,当有效时表示一个正常的总线周期的结束 ADR_O():二进制地址输出,如果它是以字节为粒度数的,当数据总线是 32 位时的 它的最大地址数就是 ADR_O(n..2), 最大为 63。 n 如果它是以 WORD 为粒 度数的,当数据总线为 32 位是它的最大地址数是 ADR_O(n..1),n 最大为 63。 CYC_O:当其有效时表示一个有效的总线周期正在进行。该信号在整个总线传输中 都有效,比如:BLOCK 传输时就有一次多个数据的传输,CYC_O 就从第 一个数据开始标记有效直到最后一个数据。 ERR_I:当其有效时表示一个非正常的总线周期的结束。 LOCK_O:当其有效时,表示当前的总线传输是不可中断的,LOCK_O 有效时表示 完全占有总线, 一旦开始 INTERCON 就不能将总线交给其他的 MASTER, 直到当前 MASTER 将 LOCK_O 或者 CYC_O 置为无效。 RTY_I:当其有效时,表示当前访问的接口没有准备好接收或者发送数据,这次传输 需要重新开始 SEL_O():选通信号,比如,当一个 8 位的模块访问一个 64 位的端口时就需要 8 个 SEL_O 信号来标记数据。 STB_O:有效时,表示一个有效的数据传输周期。 TGA_O():与 ADR_O()一起使用包含了与 ADR_O()相关的信息。 TGC_O():与 CYC_O 一起使用包含了 CYC_O 相关的信息。 WE_O:输出信号,表示当前的总线是处在读还是写周期 4、 SLAVE 模块的信号 ACK_O:确认输出,当其有效时表示一个正常总线周期的结束 ADR_I():地址输入,与 ADR_O()相对应使用 CYC_I:与 CYC_O 相对应使用 ERR_O:表示一个非正常的总线周期的结束 LOCK_I:与 LOCK_O 相对应使用 RTY_O:表示当前模块没有准备好接收和发送数据 SEL_I():与 SEL_O()对应使用 STB_I: 与 SEL_O()对应使用 TGA_I():与 ADR_I()一起使用包含了与 ADR_I()相关的信息。

TGC_I():与 CYC_I 一起使用包含了 CYC_I 相关的信息。 WE_I: 输入信号,表示当前的总线是处在读还是写周期 四、总线的基本操作 1、 复位操作

图2 I、 wishbone 的复位都是同步复位的方式 II、 Reset 的时间可以任意长度 III、 对于主器件来说在复位时 STB_O 和 CYC_O 信号必须都无效 IV、 复位信号无效后 STB_O 和 CYC_O 才可以置为有效 2、 传输初始化 主器件接口通过置 CYC_O 有效来初始化传输的开始,当 CYC_O 无效时,主器件 的其他信号都不起作用。 3、 握手

图3 I、 当主器件要传输数据时将 STB_O 信号置为有效 II、 STB_O 一直有效直到从器件回复 ACK_I 或者 ERR_I、RTY_I 信号 III、 当 CLK_I 时钟发现传输终止后将 STB_O 置为无效 4、 [STB_O]的使用 主器件接口在使 STB_O 有效时,同时有效 ADR_O、DAT_O、SEL_O、WE_O、和 TAGN_O 信号。 5、 [ACK_O], [ERR_O], [RTY_O]的使用

对于从器件上面三个信号之一有效时,必须同时有效 DAT_O,另外三个信号不能 同时有效。 6、 TAG 类型的使用

表中表示的是 TAG 信号的各种类型,以及他们分别伴随什么信号使用。 五、总线的连接方式 Wishbone 总线有四种将 MASTER 与 SLAVE 连接在一起方式,分别为: 1、 点对点:可以最简单地将一个 MASTER 与一个 SLAVE 相连; 2、 数据流:可以实现数据传输的流水; 3、 共享总线: 将多个 MAS TER 和 SLAVE 相连, 不过任何时刻只能有一个 MASTER 占据总线; 4、 十字互连:可实现多个 MASTER 和多个 SLAVE 之间同时传输数据。 图 4 给出了采用点对点互联方式的 Wishbone 总线主从接口。

图4 六、总线的传输方式 Wishbone 有三种数据传输方式,分别为 1、单读写 单读写为最简单,图 5 给出了单读周期的时序。

图5 CLOCK EDGE0:主器件先有效地址 ADR_O()和 TGA_O() 主器件使 WE_O 为低,表示要进行读操作 主器件使能 SEL_O,选通要写的器件 主器件有效 CYC_O 和 TGC_O 初始化传输 主器件有效 STB_O 标记开始传输 SETUP,EDGE1:从器件解码输入的信号,同时给出 ACK_I 回应信号 从器件将有效数据通过 DAT_I()和 TGD_I()输出 从器件通过 ACK_I 与 STB_O 握手表明数据有效 主器件监视 ACK_I 信号,准备将 DAT_I()和 TGD_I()数据锁存 注:从器件可能在有效 ACK_I 之前加入等待(-WSS-)。

CLOCK EDGE1:主器件将 DAT_I()和 TGD_I()数据锁存 主器件将 STB_O 和和 CYC_O 置为无效表明本次传输结束 从器件作为 STB_O 无效的响应将 ACK_I 置为无效 2、块读写 块传输是用来完成多数据的传输,这项功能常用在有多主器件连接时。 如图所示,CYC_O 信号在整个 BLOCK 传输中都有效,这个信号可以用来向总线仲裁 提出对一个共享的资源的申请,为了保证这个传输 LOCK_O 这个信号必须在传输期间一直 有效,同时在传输时 STB_O 和 ACK_I 这两个信号的握手时序还是没有改变。

图 在块传输中使 CYC_O 一直有效 下面以块传输读为例, 说明块传输的过程。 对于块传输来说每个时钟都可以进行数据的传 输, 但在本次块读传输中体现的是在块传输的主器件和从器件通过加入等待周期来终止总线 传输的过程。图中整个传输可以分为 5 个阶段,在第二个传输阶段完成后主加入一个等待, 在第四个传输阶段完成后从又加入一个等待,整个传输过程在第五个阶段完成后结束。 CLOCK EDGE 0: 主器件将 ADR_O 和 TGA_O 置为有效 主器件将 WE_O 置低,表明为读操作 主器件将 SEL_O 有效,表明它将从哪获取数据 主器件将 CYC_O 和 TGC_O 有效表明传输开始 主器件有效 STB_O 表明开始第一阶段的传输 SETUP, EDGE 1: 从器件解码输入,然后有效 ACK_I 信号 从器件将有效数据放到 DAT_I 和 TGD_I 上 主器件监视 ACK_I 信号,准备锁存 DAT_I 和 TGD_I CLOCK EDGE 1: 主器件锁存在 DAT_I 和 TGD_I 的数据 主器件处理新的 ADR_O 和 TGA_O 主器件设置新的 SEL_O 来表明它将从哪获取数据 SETUP, EDGE 2: 从器件解码输入,然后有效 ACK_I 信号 从器件将有效数据放到 DAT_I 和 TGD_I 上 主器件监视 ACK_I 信号,准备锁存 DAT_I 和 TGD_I CLOCK EDGE 2: 主器件锁存在 DAT_I 和 TGD_I 的数据 主器件将 STB_O 置为无效,引进一个等待 SETUP, EDGE 3: 从器件将 ACK_I 置为无效响应 STB_O 的无效信号 CLOCK EDGE 3: 主器件处理新的 ADR_O 和 TGA_O 主器件设置新的 SEL_O 来表明它将从哪获取数据 主器件有效 STB_O

SETUP, EDGE 4: 从器件解码输入,然后有效 ACK_I 信号 从器件将有效数据放到 DAT_I 和 TGD_I 上 主器件监视 ACK_I 信号,准备锁存 DAT_I 和 TGD_I CLOCK EDGE 4: 主器件锁存在 DAT_I 和 TGD_I 的数据 主器件处理新的 ADR_O 和 TGA_O 主器件设置新的 SEL_O 来表明它将从哪获取数据 SETUP, EDGE 5: 从器件解码输入,然后有效 ACK_I 信号 从器件将有效数据放到 DAT_I 和 TGD_I 上 主器件监视 ACK_I 信号,准备锁存 DAT_I 和 TGD_I CLOCK EDGE 5: 主器件锁存在 DAT_I 和 TGD_I 的数据 从器件将 ACK_I 置为无效,引入一个等待 SETUP, EDGE 6: 从器件解码输入,然后有效 ACK_I 信号 从器件将有效数据放到 DAT_I 和 TGD_I 上 主器件监视 ACK_I 信号,准备锁存 DAT_I 和 TGD_I CLOCK EDGE 6: 主器件锁存在 DAT_I 和 TGD_I 的数据 主器件通过将 STB_O 和 CYC_O 置为无效来表明传输结束

图 块读传输 3、RMW(READ-MODIFY-WRITE) RMW(读转写)用来完成不可分割的旗语操作,在上半周期中是一个单周期的读数据传 输,在下半周期中是单一的写操作,CYC_O 信号在两个半周期中都有效 图中表示的是一个 RMW 操作,RMW 操作中数据可以在每个时钟都进行传输,但是在

本例中体现的是主和从器件都可以通过加入等待来控制数据的传输。 CLOCK EDGE 0: 主器件将 ADR_O 和 TGA_O 置为有效 主器件将 WE_O 置低,表明为读操作 主器件将 SEL_O 有效,表明它将从哪获取数据 主器件将 CYC_O 和 TGC_O 有效表明传输开始 主器件有效 STB_O 表明传输开始 SETUP, EDGE 1: 从器件解码输入,然后有效 ACK_I 信号 从器件将有效数据放到 DAT_I 和 TGD_I 上 主器件监视 ACK_I 信号,准备锁存 DAT_I 和 TGD_I CLOCK EDGE 1: 主器件锁存在 DAT_I 和 TGD_I 的数据 主器件将 STB_O 置为无效,引进一个等待 SETUP, EDGE 2: 从器件将 ACK_I 置为无效,作为 STB_O 的无效信号的响应 主器件将 WE_O 置为有效,发起一次写操作 CLOCK EDGE 2: 主器件将要写的数据放到 DAT_O 和 TGD_O 上 主器件设定 SEL_O 选择要写入的地方 SETUP, EDGE 3: 从器件解码输入,然后有效 ACK_I 信号 从器件准备将 DAT_O 和 TGD_O 的数据锁存 主器件监视 ACK_I,准备终止数据传输 CLOCK EDGE 3: 从器件将 DAT_O 和 TGD_O 的数据锁存 主器件将 STB_O 和 CYC_O 信号置为无效表明传输结束 从器件将 ACK_I 信号置低,作为 STB_O 无效后的响应

参考文献: 1、http://www.fpgastation.cn/modules.php?name=News&file=article&sid=79 2、WISHBONE System-on-Chip (SoC)Interconnection Architecturefor Portable IP Cores

Revision: B.3, Released: September 7, 2002
3、http://techcenter.dicder.com/2006/0116/content_108.html 初学且写的仓促,不对地方还请多多批评 Written By [BUS]leexiaofat 2008-3-31


相关文章:
王玉萍毕业设计论文完整版
王玉萍毕业设计论文完整版 - 河北工业大学城市学院 2011 届毕业设计说明书(论文) 河北工业大学城市学院 毕业设计论文 学生姓名: 学院: 刘 国 萍 学 ...
操控与舒适的关键 汽车悬吊系统简介
操控与舒适的关键 汽车悬吊系统简介由 Bin Chen 於...(Double A-arm/Double Wishbone)、多连杆式悬吊系统...非独立式悬吊系统有叶(板)片弹簧式悬吊系统(Leaf ...
更多相关标签: