【博文连载】Wishbone总线周期之握手协议

握手发生在主设备和从设备之间。握手协议是主设备和从设备在握手时所遵守的共同规则。除了,B3版中的标准模式之外,B4版的Wishbone官方手册中还新增了流水线模式。下面将依次进行介绍。

标准Wishbone协议

如图7所示,当主机准备传输数据时,应将STB_O置位,直到从机将以下任一信号(周期结束信号)置位:ACK_I、ERR_I或者RTY_I。在每一个时钟(CLK_I)上升沿,系统都会对周期结束信号进行采样。当任一周期结束信号被置位时,STB_O信号就会被复位。这就让主机和从机接口都有机会来控制数据的传输速率。

图7 标准总线握手协议,异步从机

图8 标准总线握手协议,同步从机

允许3.10:在标准模式下,如果从设备保证能够在主设备发起操作时及时做出操作成功的响应,此时ERR_I和RTY_I信号可以不使用,ACK_O信号可以设计为STB_I和CYC_I信号的逻辑与。因此ERR_O和RTY_O信号是可选的,而ACK_O信号是必须的。在点对点连接中,甚至可以将ACK_I信号直接置高。当存在ERR_O和RTY_O信号,主设备当发现ERR_O和RTY_O信号之一有效时如何进行响应取决于主设备的设计。

注意3.25:在标准模式下,从机接口会置位一个周期结束信号来响应STB_I。然而,STB_I信号只有在CYC_I信号有效地时候才有效。

注意3.30:在总线周期期间置位ERR_I信号,会立即结束该周期,意味着从机通知主机在该周期期间发生了错误。当从机逻辑电路检测到错误,便会置位ERR_I信号。例如,如果从机使用了奇偶校检,当发生错误时,从机便会通过ERR_I做出反应。

在总线周期期间置位RTY_I信号,也会立即结束该周期,意味着从机通知主机在该周期期间发生了故障(Aborted)。该信号一般用于共享内存或者总线桥接。当本地资源处于忙状态时,从机电路便会置位RTY_I信号。应当注意,Wishbone规范并未强制要求主机何时对RTY_I信号做出相应。

规则3.40:实际上,对于主设备,其最小配置为ACK_I、CLK_I、CYC_O、RST_I和STB_O。所有的其他信号都是可选的(optional)。

允许3.20:主机和从机接口之间可以被设计成支持ERR_I/ERR_O信号。但是Wishbone规范并未要求主机对ERR_I信号做出什么响应,用于可以根据自己的需求设计。

允许3.25:主机和从机接口之间可以被设计成支持TRY_I/TRY_O信号。但是Wishbone规范并未要求主机对TRY_I信号做出什么响应,用于可以根据自己的需求设计。

规则3.45:当从机支持ERR_O和TRY_O信号时,应保证从机同一时刻只能将三个周期结束信号的其中之一置位。

注意3.35:如果从机支持了ERR_O和RTY_O信号,而主机不支持这些信号,可能会造成系统的死锁。

推荐3.10:通过设计INTERCON模块可以阻止死锁的情况发生。其中一种解决方法就是,设计一个看门狗定时器用来监控STB_O信号。当ERR_I或者RTY_I信号周期技术超出了预定义的限制时,INTERCON模块可以被设计成将Wishbone总线连接断开。

推荐3.15:在图7中,从STB_O到ACK_I存在一个长组合逻辑路径,在实际系统中很可能成为关键路径。因此,在设计中应尽量保证STB_O是触发器的直接输出。如果从STB_O到ACK_I存在一个长组合逻辑路径延迟不能满足设计的时序要求,可将从设备的ACK_O经过触发器寄存后再输出,从而将长组合逻辑打破,但系统的吞吐量也将因此减小。

规则3.50:从机接口必须被设计成ACK_O、ERR_O和RTY_O信号的置位或复位与STB_I信号的置位或复位有关。

允许3.30:ACK_O、ERR_O和RTY_O信号的置位允许被设计成异步逻辑(例如,STB_I与ACK_O之间的组合逻辑路径)。

注意3.40:ACK_O、ERR_O和RTY_O信号的异步置位可以保证每一个时钟周期可以完成一次数据传输。进一步来说,可以简化多主机情况下的仲裁器设计。

注意3.45:在某些场合,ACK_O、ERR_O和RTY_O信号的异步置位可能不能实现。例如,从机等待状态早于用寄存器实现的ACK_O信号。

注意3.50:在部分高速设计场合,ACK_O、ERR_O和RTY_O信号的异步置位可能会导致不可接受的延时时间,一般是由于主机和从机之间的回路延时导致的。使用寄存器实现ACK_O、ERR_O和RTY_O信号可以显著地减少这种回路延时。

允许3.35:在特定情况下,从机接口可能被设计成保持ACK_O信号一直处于置位状态。例如,一个单从机,单主机,点对点的接口,从机操作根本不需要等待时间。

规则3.55:当从机接口保持ACK_I信号为置位状态时,主机接口应当被设计为正常操作模式。

流水线Wishbone协议

在流水线模式下,握手协议主要有以下差异:

·主机在输出下一个地址/数据 字到总线上之前,不能等待ACK_I信号;

·主机接口上的STALL_I信号用于表示从机流水线此时可以接受另一个请求。总线仲裁器应该选择目标从机STALL_O信号,并将其告知主机。这种路径应当被设计成非寄存式的(non-registered)。

·主机当STALL_I信号为低电平时,输出请求。当STALL_I信号被置位时,则处于等待状态。即,当STALL_I信号被置位,流水线不能够产生任何请求。

·如果总线周期由N个转换构成,则最后一个ACK_I表示转换的终止。当接收到最后的ACK_I脉冲后,主机结束总线周期。

·只有当ACK_I信号为高电平时,读取数据操作才是有效的。

图9 流水线模式 单次访问

规则3.57:在流水线模式下,当CYC_I和STB_I信号被置位后,紧接着STALL_I和WE_I信号被复位时,一个读转换操作开始。

规则3.58:在流水线模式下,当CYC_I、STB_I和WE_I信号被置位后,紧接着STALL_I信号被复位时,一个写转换操作开始。

规则3.59:在流水线模式下,完成转换初始化后,主机必须能在任意时间接受ACK_I信号。

 

(0)

相关推荐

  • IIC详解,包括原理、过程,最后一步步教你实现IIC

    IIC详解 1.I2C总线具有两根双向信号线,一根是数据线SDA,另一根是时钟线SCL 2.IIC总线上可以挂很多设备:多个主设备,多个从设备(外围 设备).上图中主设备是两个单片机,剩下的都是从设备 ...

  • IIC总线知多少?

    注:本文转载自公众号"记得诚" ❝ IIC是串行总线,只用到两个线,应用非常广泛,本文介绍IIC的软件协议及硬件相关知识. ❞ 一.IIC概述 1. IIC定义 IIC总线是由Ph ...

  • IIC原理超详细讲解

    文章目录 IIC 简介 IIC的物理层 IIC的高阻态 IIC物理层总结: IIC的协议层 IIC 总线时序图 初始(空闲)状态 开始信号: 停止信号 数据有效性 应答信号 IIC数据传送 数据传送格 ...

  • UC头条:嵌入式基础1: I2C

    UC头条:嵌入式基础1: I2C

  • I2C 波形读取方法

    I2c信息读取指南 一. 基本信号判断   1 总线空闲判断   SCL 和  SDA 全为高   2 开始信号判断  :SCL 为高时 SDA 产生一个下跳沿  3 地址.数据.应答,读写标示电平的 ...

  • 【博文连载】Wishbone总线周期之数据组织

    说明:B.4版的Wishbone手册本节内容写的比较繁琐,因此没有像前文一样继续翻译.数据组织是指数据的传送顺序.目前常见的32为处理器的数据总线粒度为1字节,在传送时,一个32位数据的最高字节可以放 ...

  • 【博文连载】Wishbone总线周期之RMW操作

    在操作系统中,有一种重要的进程间的同步机制称作信号量机制.信号量即当前可用资源的计数.信号量是一个用来实现同步的整型或记录型(Record)变量,除了初始化外,对它只能执行等待和释放这两种原子操作.一 ...

  • 【博文连载】Wishbone总线周期之块写操作

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

  • 【博文连载】Wishbone总线周期之单次写操作

    标准单次写周期 图12显示的是标准单次写周期的时序图. 图12 标准单次写周期 总线协议的执行流程如下: 时钟上升沿0: ·主机将有效地址置于ADR_O()和TGA_O()上: ·主机将有效数据置于D ...

  • 【博文连载】Wishbone总线周期之单次读操作

    单次读/写操作每次操作只完成一次读或者写,是最基本的Wishbone总线操作方式. 规则3.75:所有支持单次读或者单次写周期的,主机和从机接口都应满足下文给出的相关时序要求. 允许3.50:Wish ...

  • 【博文连载】Wishbone总线周期之复位操作

    一个总线周期由多个不可分的时钟周期构成,完成单次读/写操作.块读/写操作或者读改写操作.总线周期也分为单次读/写周期.块读/写周期和读改写周期.一次块读/写总线周期完成多次数据读/写操作.一般情况下, ...

  • 【博文连载】Wishbone总线寄存反馈周期结束方式

    在Wishbone寄存反馈周期结束方式中,主设备需要事先通知从设备操作下一时钟周期是否将发起新的总线操作,这是通过周期类型识别地址标签CTI_O()/CTI_I()和突发类型扩展地址标签BTE_O() ...

  • 【博文连载】奔跑吧,SOC(三)——互联总线协议

    之前,说了片上互联总线,但是光有总线可是不行的,还需要片上总线协议支持才行,因为有了协议,才能对寄存器准确无误的进行操作. 说到片上总线协议,那可就多了,如ARM公司所用的AMBA总线,Silicor ...

  • ​【博文连载】Wishbone总线介绍

    图29 Wishbone总线结构图 ● 所有应用使用一个总线体系结构: ● 简单.紧凑的体系结构: ● 支持多控制器: ● 64位地址空间: ● 8-64 位数据总线(可扩展): ● 单周期读和写: ...