




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Wishbone b3 中文版本文详细介绍了 Wishbone标准,主要参考了 Wishbone标准B.3版本的核 心内容,感兴趣的读者可去下载英文原文。一、片上总线技术综述随着超大规模集成电路的迅速发展,半导体工业进入深亚微米时代,器件 特征尺寸越来越小,芯片规模越来越大,可以在单芯片上集成上百万到数亿只 晶体管。如此密集的集成度使我们现在能够在一小块芯片上把以前山CPU和外 设等数块芯片实现的功能集成起来,山单片集成电路构成功能强大的、完整的 系统,这就是我们通常所说的片上系统。IP复用是片上系统时代的核心技术之一。由于IP核的设计干差万别,它们 要能够直接连接,就要遵守相同的接口标准。在
2、片上系统中,处理器核和所有 外设通过共享总线互通互联,因此这些IP核必须遵守相同的总线规范。总线规 范定义的是IP核之间的通用接口,因此它定义了一套标准的信号和总线周期, 以连接不同的模块,而不是试图去规范IP核的功能和接口如何实现。一个片上 总线规范一般需要定义各个模块之间初始化、仲裁、请求传输、响应、发送接 收等过程中驱动、时序、策略等关系。芯片与电路板的资源和环境的不同,导致片上总线与板上总线存在若干明 显差异,包括: 片上总线多采用单向信号线,而板上总线多采用三态信号。片上三态总 线无论在功耗、速度.可测性上都存在很大缺陷,而且一旦岀现多驱动情况便 会损毁芯片(比如若应该输出吃“的信号
3、实际输出为叫而另有一个信号输出为就形成一个低电阻通路,导致局部电流过大,热量难以及时释放,从而增 加芯片功耗和大大降低芯片寿命)。由于片上布线资源较为丰富,因此片上总 线多采用单向信号线。山于电路板上布线资源较为昂贵,因此板上总线多采用 三态总线,但是山于三态总线的功耗问题和速度限制,口前板上总线也在向串 行和非三态方向发展,如USB和PCI Expresso 片上总线比板上总线更加简单灵活。首先片上总线结构要简单,这样可 以占用较少的逻辑单元;其次时序要简单,以利于提高总线的速度;第三接口 要简单,如此可减少与IP核连接的复杂度。片上系统应用广泛,不同的应用对 总线的要求各异,因此片上总线具
4、有较大的灵活性。其一,多数片上总线的数 据和地址宽度都可变,其二,部分片上总线的互连结构可变,如Wishbone总 线支持点到点、数据流、共享总线和交叉开关四种互连方式;其三,部分片上 总线的仲裁机制灵活可变,如Wishbone总线的仲裁机制可以完全山用户定 制。而板上总线则较为死板,时序也更加苛刻。目前比较常见的片上总线规范有ARM公司的AMBA、Silicore的Wishbone IBM公司的CoreConnect和Altera公司的Avalono三种总线各有特 点,其适用范围也不同。AMBA总线规范因ARM处理器的广泛使用而拥有众多 第三方支持,被ARM公司90%以上的合作伙伴采用,已成
5、为广泛支持的现有互 连标准之一。IBM公司的CoreConnect因为IBM的业界地位也有广泛的应用。 Avalon主要用于Altera公司系列PLD中,最大的优点在于其配置的简单性,可 由EDA工具快速生成。这三种片上总线虽然都是公开标准,但都不是免费的。 而Wishbone则是一个真正开放和免费的规范。它最先是山Silicore公司提出 的,目前111 OpenCores组织维护。由于其开放性,因此0penCores上的免费的 IP核,大多数都采用Wishbone标准。Wishbone的优势除开放、免费、拥有众 多免费IP核外,还有简单、灵活、轻量的特点,特别适合大型IP内部的小型IP 之
6、间的互联。在本书介绍的0penRISC处理器设计中,各个模块间的互联接口中 大量的采用了 Wishbone总线规范。需要指出,任何一个总线规范,首先至少支持点对点互联,所以严格意义 上讲,国内学术界普遍讲的“总线规范“实际上指的是片上系统互联规范,只不 过多个IP通过共享总线互联是人们最关心的,也是最广泛使用的,所以常笼统 的将片上系统互联规范讲为总线规范。二、Wishbone片上总线的基本特点一般总线规范的共同特点为同时适用于于软核、固核和硬核设计;对开发 工具和目标硬件没有特殊要求,并且儿乎兼容已有的所有综合工具;可以用多 种硬件描述语言来实现;支持结构化设计方法学,以提高大团队的设计效率
7、; 灵活的数据和地址总线宽度,支持大端和小端操作;支持主从设备接口,支持 多主设备,这是片上共享总线通信所必须的,多个主设备同时需要进行总线操 作时,山仲裁器决定当前哪个主设备可以使用总线,仲裁逻辑用户可以自行定 义。此外,在作者看来,Wishbone总线规范的特点还包括:1.支持点到点、共享总线、十字交叉(Crossbar)和基于交换结构(Switch fabric)的互联。Wishbone总线规范是,轻量级(Lightweight)11规范,它实际上更 加侧重于点对点互联以及复杂度不高的共享总线片上系统互联。因此,与其他 总线规范相比,Wishbone的接口更加简单紧凑,接口需要的互联逻辑
8、非常少 (见本章后续的例子),这是Wishbone的一个重要优势。熟悉AMBA总线的 读者在读完本章后就能够理Wishbone比AMBA总线简单的多,但是两者各有 个的优势。AMBA将所有的外设分为高速设备和低速设备,高速设备连接到系 统总线,通常通信的数据量也较大,如SDRAM控制器、NAND Flash控制器、 LCD控制器,低速设备连接外设总线,通常通信数据量小,如通用串口、讣时 器等。外设总线与系统总线通过总线桥接器相连。在实际系统中,处理器、系 统总线、外设总线间的时钟频率的典型比值之一是4:2:1,因此整个系统的功耗 被有效降低。另外一个好处是通过在总线桥接器中添加DMA引擎,系统
9、总线和 外设总线可以实现速率解耦。而依照Wishbone规范,Wishbone总线上所有设 备都要连接到同一总线,无论是高速设备还是低速设备。与Wishbone总线相 比,AMBA的缺点是设计较为复杂。但是实际上,Wishbone总线也设计为类似 AMBA总线的架构,但此时系统为双Wishbone总线架构。2. 支持典型的数据操作,包括:单次读/写操作、块读/写操作,读改写 (RMW, Read-Modify- Write,细节见后文)操作。最快情况下一个时钟周期可完成一次操作,操作的结束方式包括:成功、错误和重试(Retry)o 一个总线周 期完成一次操作,一次操作可以是单次读/写操作、块读
10、/写操作或者读改写操 作。操作总是在某一总线周期内完成的,因此操作结束方式也称为总线周期结 束方式,两者说法在后文将视情况使用。成功是操作的正常结束方式,错误表 示操作失败,造成失败的原因可能是地址或者数据校验错误,写操作或者读操 作不支持等。重试表示从设备当前忙,不能及时处理该操作,该操作可以稍后 重新发起。接收到操作失败或者重试后,主设备如何响应取决于主设备的设讣 者。3. 允许从设备进行部分地址解码,有利于减少了冗余地址译码逻辑,提高 地址译码速度。这一点本书将通过实例说明。4. 支持用户定义的标签。这些标签可以用于为地址、数据总线提供额外的 信息如奇偶校验,为总线周期提供额外的信息如中
11、断向量、缓存控制操作的类 型等。Wishbone规范只定义标签的时序,而标签的具体含义用户可自行定义。 支持用户定义的标签是Wishbone规范区别与其他片上总线规范的重要特征之5. 全同步化设计,包括复位方式。但是实际上复位方式采用同步还是异步 并不影响IP的互联互通,因此兼容Wishbone规范的IP完全可以釆用异步方 式,上面的很多兼容Wishbone规范的开源IP采用的就是异步复位。总结以上内容,Wishbone总线规范区别于其他总线规范的两个核心特点 是:(1)是轻量级规范,因此接口更加简单紧凑;(2)支持支持用户定义的 标签。三、接口信号定义所有的Wishbone接口信号都是高电平
12、有效,设计成高电平有效的主要原 因是山于低电平有效信号的书写问题,不同的设计者表达低电平有效信号的方 式不同,拿最常见的低电平有效的复位信号来说,其表示方法就有_RST_I、 N_RST_K #RST_I和/RSTJ,而高电平有效的信号其表达方式通常只有一种。所有的Wishbone接口信号都以或者_0结束。表示输入,_0表示输 出。()表示该信号为总线信号,总義的宽应可以为1,也可以为大扌1的任 何值。图1 Wishbone总线规范中使用的主要信号(一个点到点互联的例子)在图1中,主设备具有遵守Wishbone规范的主设备接口,从设备具有遵 守Wishbone规范的从设备接口 , INTERC
13、ON模块将主设备和从设备的对应数 据、地址和控制线连接起来,SYSCON模块提供时钟和复位信号,这两个信号被 送入主设备和从设备。图1给出了 Wishbone接口的常见信号,这些信号有些 是必须的,有些是可选的。这些信号的基本功能描述如下:CLK_O/CLK_I:时钟信号。时钟信号曲SYSCON模块产生,并送入各个主设 备和从夜备。SYSCON通常内部存在一个锁相环,将来源于芯片外的晶体振荡器 或者时钟输入信号整形、分频或者倍频为芯片内所需要的时钟信号。所有 Wishbone信号都同步到时钟信号上,包括复位信号。RST_O/RST_I:同步复位信号,高电平有效。复位信号山SYSCON模块产 生
14、,并蓬入各圭设备及从设备。DAT_O()/DAT_I():主设备和从设备的之间的数据信号,数据可以由主设备 传送给从设备,免可以山从i殳备传送给主设备。一对主设备和从设备之间最多 存在两条数据总线,一条用于主设备向从设备传输数据,另外一条用于从设备 向主设备传输数据。Wishbone规定数据总线的最大宽度为64位,这一规定实 际上是考虑到LI前商用处理器的最大位数为64,实际上数据总线的宽度可以是 任意值。就笔者看来,在64位处理器以后,处理器将向多核方向发展,总线将 向高速串行方向发展。ADR_O(n.m)/ADR_l(n.m):地址信号,主设备输出地址到从设备。n取决 于IP核俯地址宽度,
15、m取决于数据总线DAT_O()/DAT_I()的宽度和粒度。数据总 线的粒度指的是数据总线能够一次传送的最小比特数,很多处理器如ARM的数 据总线的粒度为1个字节,但是也有一些处理器如CEVA TeakLite DSP的数据总 线粒度为2个字节。一个位宽为32比特、粒度为1个字节的数据总线的地址信 号应定义为ADR_0(n.2)/ADR_l(n.2)o在传送数据时,具体哪些字节有效通过 SEL_O()/SEL_I()信吾(见下文)控制。TGD_O/TGD_I()、TGA_O()/TGA_I(): TGD_O/TGD_I()为数据标签,具体讲是 附加于在数据总线DAT_O()/DAT_I()的标
16、签,该标签奇以用于传送关于数据总线 的额外信息如奇偶校验信息、时间戳信息等。TGA_O/TGA_I()为地址标签,具体 讲是附加于在地址总线ADR_O()/ADR()的标签,应标签可7以用于传送关于地址 总线的额外信息如地址总线諒偶校验信息、存储器保护信息等。Wishbone只规 定了 TGD_O/TGD和TGA_O()/TGA_I()的接口时序,用户可以定义TGD_O/TGD_I 的具体含爻。TGC_O/TGC_I(): TGC_O/TGC_I()为总线周期标签,该标签可以用于传送关于 当前总發周期所建行操作3勺描述帀操作类型(包括单次操作、块操作、RMW操 作)、中断应答类型、缓存操作类型
17、等。类似的,Wishbone只规定了 TGC_O/TGC_I()的接口时序,用户可以定义TGD_O/TGD_I的具体含义。ACK_O/ACK_I、ERR_O/ERR_I、RTY_O/RTY_I:主从设备间的操作结束方式信 号。ACK表示成功,ERR表示错误,RTY表示重试(Retry)。操作总是在某一总线 周期内完成的,因此操作结束方式也称为总线周期结束方式。成功是操作的正 常结束方式,错误表示操作失败,造成失败的原因可能是地址或者数据校验错 误,写操作或者读操作不支持等。重试表示从设备当前忙,不能及时处理该操 作,该操作可以稍后重新发起。接收到操作失败或者重试后,主设备如何响应 取决于主设备
18、的设计者。SEL_O()/SEL_I():有效数据总线选择信号,标识当前操作中数据总线上哪些 比特是看效的,以总线粒度为单位。SEL_O()/SEL_I()的宽度为数据总线宽度除以 数据总线粒度。比如一个具有32位宽、赢度为1个字节的数据总线的选择信号 应定义为SEL_0(3:0)/ SELJ(3:0), SEL(HblOOl)代表当前操作中数据总线的最高和 最低字节有坂。CYC_O/CYC_I、LOCKJD/LOCK、GNT_O()/GNT_I : 总线周 期信号 CYC_O/CYC_I有该攵代表一个主设备请求总线任用权或希正在占有总线,但是不 一定正在址行总线操作(是否正在进行总线操作取决
19、于选通信号STB_O/STB_I 是否有效)。只有该信号有效,Wishbone主设备和从设备接口的其它信号才看 意义。CYC_O/CYC_I信号在一次总线操作过程中必须持续有效,比如一次块读 操作可能需要多个时钟周期,CYC_O/CYC_I信号必须保持持续有效。实际上, 该信号的实际作用等同于其他总疵标准审的仲裁申请信号。当存在多个主设备 时,它们可能希望同时进行总线操作,主设备通过仲裁申请信号向仲裁器申请 总线占有权,仲裁器通过一定的仲裁优先级逻辑向其中一个选定的主设备发送 总线允许信号GNT_O()/GNT表示该主设备可以占用总线。GNT_O()是仲裁器 输岀的允许信号,一般有多个;而对于
20、一个主设备,其允许信号输入GNT却 只有一个。一次总线操作可能需要多个时钟周期,比如一次块操作。在操作过 程中,仲裁器可能会提前将总线占用权收回并分配给其他主设备从而打断当前 主设备的操作,LOCK_O/LOCK_I有效代表本次总线操作是不可打断的。仲裁器 收到LOCK信号,就不会提前收回总线使用权。图1中只有一个主设备和一个 从设备,因此没画出仲裁器模块,该模块可以视为是INTERCOM的一部分,见 本章最后给出的例子。STB_O/STB_I:选通信号。选通有效代表主设备发起一次总线操作。只有选 通信号有效(此时CYC_O/CYC_I也必须为高),ADR_O/ADR_I()、 DAT_O()
21、/DAT_I()、SEL_O()/SELJ()才肴意义。在 Wishbone 总義规范中, CYC_O/CYC_I是最高层的控制宿号,只有该信号有效,STB_O/STB_I信号才有意 义。一个信号有意义是指该信号的当前值是需要主设备应者从夜备解释的,0 为无效,1为有效,而一个信号没有意义是指该信号的当前值主设备和从设备 不必关心,是0还是1都无效。WE_O/WE_I:写使能信号,代表当前周期中进行的操作是写操作还是读操 作。1 写,0代表读。四、Wishbone支持的互联类型Wishbone规范支持的互联类型有四种:点到点、共享总线、十字交叉 (Crossbar )和基于交换结构(Switc
22、h fabric)的互联。这四种互联方式在 Wishbone规范中有明确的定义。如图1 (第4页),点到点互联是最简单的互 联方式,它允许一个主设备和一个从设备相互通信。比如,主设备可能是一个 处理器IP核,从设备可能是一个串行I/O端口或者存储器。点对点互联的一个特殊应用就是当数据需要多个步骤顺序进行处理时,多 个同时具有主设备接口和从设备接口的模块串接在一起,如图2所示。这种连 接方式也称作数据流连接。模块A处理完数据后将处理结果送给模块B,模块 B处理完模块A送来的数据后再将处理结果送给模块C处理。数据从一个模块 送往另一个模块,常常将这种处理方式称作流水线。流水线在处理器设计中非 常重
23、要,其好处是多个数据可以并行处理,从而提高系统的整体数据处理能 力。数据流动的方向图2数据流方式互联共享总线互联方式如图3所示。共享总线互联方式适合于系统中有两个或 者多个主设备需要与一个或者多个从设备通信的场合,它们通过共享的总线进 行通信,其好处是结构紧凑,节省布线资源,缺点是主设备希望与特定从设备 通信时可能需要等待。主设备在需要与一个从设备通信时,需要先向仲裁器(图中没有给出)申请总线占有权,获得允许后开始占用总线并与L1标从设备 开始通信,通信结束后释放总线。当多个主设备同时希望占有总线时,仲裁器 通过一定的优先级逻辑分配总线使用机会。共享总线互联方式在片上系统中得到了广泛的使用,儿
24、乎成了片上系统的 标志技术之一。共享总线技术在板级系统如PCI总线中也得到了应用。图3共享总线互联方式十字交义互联方式较共享总线互联方式略复杂。共享总线互联方式在任一 时刻只允许最多有一对主设备和从设备通过共事总线进行通信,而十字交义互 联方式最多同时允许超过一对的主设备和从设备对同时进行通信,如图4所 示。当然,在十字交义互联方式中,一个从设备在任一时刻只能与一个主设备 进行通信,两个主设备不能同时访问同一从设备。图4十字交叉互联方式(图中虚线代表了一种可能的通信方式)类似的,基于交换结构的互联比十字交义互联方式的INTERCOM模块更复 杂,一般的,基于交换结构的互联比十字交叉互联允许同时
25、通信的主从设备对 更多。随着技术的发展,已经出现了比片上总线更复杂的片上网络技术(Network on chip) o基于片上网络技术,已经出现了内含儿十个32位处理器的芯片,已应用于CISCO的高端路山器中。五、Wishbone总线周期一个总线周期由多个不可分的时钟周期构成,完成单次读/写操作、块读/ 写操作或者读改写操作。总线周期也分为单次读/写周期、块读/写周期和读改 写周期。一次块读/写总线周期完成多次数据读/写操作。一般情况下,一次操 作由主设备和从设备控制信号间的一次握手,以及同时进行的地址和数据总线 的一次传输构成。块操作表示整个操作需要完成多次数据传送。在总线周期中 主设备和从
26、设备预先设定好的共同遵守控制信号握手规则,以及地址和数据总 线的传输规则称作总线协议。在下文所给图例中给出的信号均为主设备的输入输出信号。因此,对操作 的描述也从主设备信号的角度展开,以便于读者对照正文理解图例。比如在时 钟上升沿1到达之前,从设备检测到主设备发起的操作,将适当的数据放到主 设备的输入信号DAT_I()和TGDJ(),将主设备的ACK_I置高作为对主设备STB_O 的响应。啲等价描压为:“在岭钟上升沿1到达之前,从设备检测到主设备玻 起的操作,将适当的数据放到其输出信号DAT_O()和TGD_O(),将输出信号 ACK_O置高作为对主设备STB_O的响应。5.1 一般操作5.1
27、- 1复位操作复位是数字系统最基本的操作。复位后,系统进入预定的状态。在遵守 Wishbone总线规范的系统中,当RST_I信号有效,系统开始复位。山于 Wishbone规范规定的复位是同步复位,因此在复位信号有效后接下来的时钟上 升沿,所有信号和寄存器进入预定状态。因此Wishbone规范要求RST_I信号 有效时间至少要一个时钟周期。在数字系统中,实际上更多的采用的是异步复 位,而且复位信号的长度一般大于系统电平稳定时间和系统时钟频率稳定时 间。如果在Wishbone接口中使用的是异步复位,需要在文档中说明,因为 Wishbone接口默认的是同步复位。图5 Wishbone总线的复位操作在
28、图5中,我们只给出了 STB_0和CYC_0这两个信号,而没有给出其它信 号。当这两个信号无效时,所有其他信号没有意义。5.1.2操作发起一个总线周期山至少一次总线操作构成。操作总是山主设备发起,主设备 发起的操作可以是单次读/写、块读/写或者RMW操作。当主设备将CYC_O置为 高时,一个总线周期开始。总线周期开始后,当主设备将STB_O置为髙时,一 次总线操作开始。当主设备将CYC_O置为低时,主设备的所有其他信号没有意 义。从设备只在CYC_I为高时才会对主设备发起的操作进行响应。CYC-0和STB_O可以同时从无效变为有效表示操作开始,CYC-0持续有效直 到操作结束,CYC.0和ST
29、B.0可以同时从无效变有效表示同时发起一次总线周 期的同时,也发起总线操作,也可以同时从有效变为无效表示操作结束。因 此,在只有一个主设备时,可以将CYC_O和STB_O合并为一个信号,比如在 0penRISC1200的源码中就广泛的使用了这种方式,信号的名字称作CYCSTB_O。当存在多个主设备时,一个主设备完成操作后必须及时将CYC-0信号置为 低,以让岀总线给其他主设备。此时,CYC_O信号等价于为总线占用请求信 号。5-1.3基本握手协议由于在整个总线周期,CYC_O必须始终保持有效,因此,此后我们将在给 出的图中忽略该信号,只在必或的时候给出。握手发生在主设备和从设备之间。握手协议是
30、主设备和从设备在握手时所 遵守的共同规则。如图6,当主设备准备好,它将STB_O信号置高。STB_O信 号一直为高,直到从设备通过置高ACK_O、ERR_O、RTY_O对本次操作疵起响 应。在图7中我们以主设备的ACK信号作为示例,后文也如此。通过握手, 主i殳备和从设备不仅可以完成通信,而且可以控制它们之间的通信速率。CLQSTBJDACLkJ图6 Wishbone总线的基本握手协议如果从设备保证能够在主设备发起操作时及时作出操作成功的响应,其 ACK_O信号可以设计为STB_I和CYC信号的逻辑与,而ERR_O和RTY_O信号 也才以不使用。因此ERR_O和RTY_O信号是可选的,而ACK
31、_O信号是必须 的。在点对点连接中,套至可以将ACK_I信号直接置高。当吞在ERR_O和 RTY_O信号,主设备当发现ERR_O和RTY_O信号之一有效时如何进行响血取决 于壬设备的设计。对于从设备,只有STB和CYC_I同时为高时,才能发起对主设备的响应。实际上,对于主设备,其最小配置为只有ACK、CLK、CYC_O、RST_I和 STB_O:而对于从设备,其最小配置为只有ACK_O、CLK、CYC_I. RST_I和 STB_I,这里CYC和STB信号可以合并到一起晟为一个信号,通常命名为 CYCSTB_O/。在图6中,从STB_O到ACK_I存在一个长组合逻辑路径,在实际系统中很 可能成
32、为关键路径。因了匕 在设计中应尽量保证STB.0是触发器的直接输岀。 如果从STB_O到ACK存在一个长组合逻辑路径込迟不能满足设计的时序要 求,可将从设备的ACK_O经过触发器寄存后再输出,从而将长组合逻辑打破, 但系统的吞吐量也将因i匕减小。关于如何即打破长组合逻辑乂不影响系统的呑 吐量,后文将进行详细讨论。5. 2单次读/写周期单次读/写操作每次操作只完成一次读或者写,是最基本的总线操作方式。 但是,Wishbone主设备或者从设备也可以不支持单次读/写操作,甚至没有地 址和数据总线。单次读操作如图7。在时钟上升沿0,主设备将地址信号ADR_O()、TGA_O() 放到总线上,将WE_O
33、置为低表示读操作,将适当的SEL_O()信号叠高通知庆设 备将数据放在数据总线的适当位置,将CYC_O和TGC.0置高表示操作正在进 行,将STB_O置高表示操作开始。在时钟上升沿1到达之前,从设备检测到主设备发起的操作,将适当的数 据放到主设备的输入信号DAT_I()和TGD_I(),将主设备的ACK_I置高作为对主设 备STB_O的响应。在时钟上升沿1,主设备发现ACK_I信号为高,将DAT_I()和TGDJ0采样, 并将STB_O和CYC_O置为低表示操作完成。从设备发现STB_O置低直 也将主 设备的输入信号ACK置低。在图7中,从设备可以上升沿0和上升沿1之间插入任意多个等待周期。C
34、LKJiADR 00“AT ICAVALIDa| inJDAT 0()J.IL 11/WE 0厂SEL.OOVALIDrSTB OACKJiCYC.O -TGA. COj.rVALIDTGD 1()A74D二 1TGD 00TGC:.。):VALID7C图7 Wishbone总线的单次读操作单次写操作如图8所示。在时钟上升沿0,主设备将地址信号ADR_O()、TGA_O()放到总线上,将数据信号DAT_O()、TGD_O()放到总线上,将WE_O置 高逐写操作,将适当的SEL_O()信号叠高通知从设备数据总线DAT_O()甬哪些 信号是有效的,将CYC_O和TGC.0置高表示操作正在进行,将S
35、TB_O置高表 示操作开始。在时钟上升沿1到达之前,从设备检测到主设备发起的操作,将主设备的 ACK_I置高作为对主设备STB_O的响应。在时钟上升沿1,从设备将DAT_I()和TGD_I()采样;主设备发现ACK信号 为高,将STB_O和CYC_O置为低表示操作完成;从设备发现STB_O置低启,也 将主设备的ACK_I置低。在图8中,从设备可以在上升沿0和上升沿1之间插入任意多个等待周 期。图8 Wishbone总线的单次写操作5. 3块读周期块读/写操作每次读/写数据多次。块读/写操作实际上是山顺序进行的多个 单次读/写操作组合而成的。在同时存在多个主设备时,块读/写操作非常有 用,一个块
36、读写一般是不能打断的,比如一次DMA,如图9所示,在一次块操 作中,CRC_O信号必须保持为高。同时为了保证整个块操作不被打断,L0CK.0 也可以置为高,但是LOCK_O不必须为高。典型地,主设备进行一次DMA屆 传输4个或者8个总线宽应单位的数据,然后主动释放总线,其后乂试图占用 总线重新进行DMA,直到所有的数据都传输完毕。这样做的好处是允许其他优 先级更高的主设备在两次DMA之间插入操作以完成更加紧急的任务。CLKJ11n.A 1L0CK OA CYC O&A STBOiAACKJn图9 Wishbone总线块操作中CYC_0信号的用法块读操作如图10所示。块操作最多能够在每个时钟周期
37、进行一次数据读或 者写,但是主设备和从设备都可以通过插入等待周期控制块操作的速度。一次 块操作包括多次子操作。每一次子操作都是块操作的一个阶段,完成一次数据 读或者写。图10的块操作由五次读操作完成,其过程如下:在时钟上升沿0,主设备将地址信号ADR_O()、TGA_O()放到总线上,将 WE_O置为低表示读操作,将适当的SEL_O()信再置高通知几设备将数据放在数 据直线的适当位置,将CYC_O和TGC_O()置高表示操作正在进行,将STB_O置 高表示一次子操作开始。CYC_O和TGC_O()从无效变为有效可以发生在上弃沿0 以前的任何时刻。在时钟上升沿1到达之前,从设备检测到主设备发起的
38、操作,将适当的数 据放到主设备的DAT_I()和TGD_I(),将主设备的ACK_I置高作为对主设备STB_O 的响应。在时钟上升沿1,主设备发现ACK_I信号为高,将DAT_I()和TGD_I()采样, 完成第一次子操作。主设备将新地址信号ADR_O()、新TGA_O()放到总线上,将 新的SEL_O()信号置高通知从设备将数据放在蛟据总线的适当位置。在时钟上升沿2到达之前,从设备检测到主设备发起的第二次操作,将适 当的数据放到主设备的DAT_I()和TGD_I(),继续将主设备的ACK_I置高。在时钟上升沿2,主设备发现ACK_I信号为高,将DAT_I()和TGD_I()采样, 完成第二次
39、子操作。主设备将STB_O信号置低表示插入等莓周期。在时钟上升沿3到达之前,从设备检测到STB_O信号为低,将ACK_I置 低。在时钟上升沿3,主设备发起第三次操作,将新的地址信号ADR_O()、新的 TGA_O()放到总线上,将WE_O置为低表示读操作,将适当的SEL_O()信号置高 通知从设备将数据放在数据直线的适当位置,将STB_O置高表示示三次子操作 开始。在时钟上升沿4到达之前,从设备检测到主设备发起的第三次子操作,将 适当的数据放到主设备的DAT_I()和TGD_I(),将主设备的ACK_I置高作为对主设 备STB_O的响应。图10 Wishbone总线的块读操作在时钟上升沿4,主
40、设备发现ACK_I信号为高,将DAT_I()和TGD_I()采样, 完成第三次子操作。主设备同时发起示五次子操作,将新龜址信号ADR_O()、 新TGA_O()放到总线上,将新的SEL_O()信号置高通知从设备将数据放在竅据总 线的适当位置。在时钟上升沿5到达之前,从设备检测到主设备发起的第五次子操作,将 适当的数据放到主设备的DAT_I()和TGD_I(),将主设备的ACK_I置高作为对主设 备STB_O的响应。在时钟上升沿5,主设备发现ACK信号为高,将DAT_I()和TGD_I()采样, 完成第五次子操作。主设备同时发起京六次子操作,将新龜址信号ADR_O()、 新TGA_O()放到总线
41、上,将新的SEL_O()信号置高通知从设备将数据放在竅据总 线的适昌位置。在时钟上升沿5过后,从设备检测到主设备发起的第六次子操作,但是由 于数据没有准备好,它在新上升沿到达之前将ACK信号置低表示插入等待周 期。上升沿5和6之间被插入了多个等待周期。当从设备准备好数据,在时钟上升 沿6到达之前,将适当的数据放到主设备的DAT_I()和TGD_I(),将主设备的 ACK_I置高作为对主设备STB_O的响应。在时钟上升沿6,主设备发现ACK_I信号为高,将DAT_I()和TGD_I()采样, 并将STB_O和CYC_O置为低表示整个灰读操作完成。从夜备发现STB_O置低 后,也如王设备的ACK_
42、I置低。5. 4块写周期块写操作的例子如图11所示。图11的一次块写操作山五个相互关联的单 次写操作完成。在时钟上升沿0,主设备将地址信号ADR_O()、TGA_O()放到总线上,将数 据信号DAT_O()、TGD_O()放到总线上,将WE_O置为高襄示写操作,将适当的 SEL_O()信号置高通知从设备将数据总线上哪些信号是有效的,将CYC_O和 TGC_O置高表示操作正在进行,将STB_O置高表示第一次写操作开始。在时钟上升沿1到达之前,从设备检测到主设备发起的操作,将主设备的 ACK_I置高作为对主设备STB_O的响应。在时钟上升沿1,从设备将DAT_I()和TGD_I()采样;主设备发现
43、ACK信号 为高,得知第一次写操作完成,于是新地址信号ADR_O()、新TGA_O()放到总 线上,将新数据信号DAT_O()、新TGD_O()放到总线上,将WE_O置为高表示写 操作,将适当的SEL_O()信号置高通知从设备将数据总线上哪些信号是有效的, 将CYC_O和TGC_O置高表示操作继续在进行,将STB_O置高表示第二次写操 作开始。在时钟上升沿2到达之前,从设备检测到主设备发起的第二次写操作,将 主设备的ACK_I置高作为对主设备STB_O的响应。在时钟上升沿2,从设备将DAT_I()和TGD_I()采样;主设备发现ACK信号 为高,得知第二次写操作完成,发现自己的数确还没有准备好
44、,于是将STB_O 置低表示插入等待周期。在时钟上升沿3到达之前,从设备检测到STB_O为低,也将ACK置低。在时钟上升沿3,主设备发起第三次操作,将新地址信号ADR_O()、新 TGA_O()放到总线上,将新数据信号DAT_O()、新TGD_O()放到总褒上,将 WE_O置为高表示写操作,将适当的SEL_O()信号置髙通疝从设备将数据总线上 哪些信号是有效的,将CYC_O和TGC_O置高表示操作继续进行,将STB_O置 高表示第三次写操作开始。在时钟上升沿4到达之前,从设备检测到主设备发起的第三次写操作,将 主设备的ACK_I置高作为对主设备STB_O的响应。在时钟上升沿4,从设备将DAT_
45、I()和TGD()采样;主设备发现ACK信号 为高,得知第三次写操作完成,于是蒋新地址信号ADR_O()、新TGA_O()放到总 线上,将新数据信号DAT_O()、新TGD_O()放到总线上,将适当的SEL_O()信号 置高通知从设备将数据总班上哪些信号舄有效的,将STB_O继续置高襄示第四 次写操作开始。在时钟上升沿5到达之前,从设备检测到主设备发起的第四次写操作,将 主设备的ACK_I置高作为对主设备STB_O的响应。在时钟上升沿5,从设备将DAT_I()和TGD_I()采样;主设备发现ACK信号 为高,得知第四次写操作完成,于是发也第五次操作,将新地tin言号 ADR_O()、新TGA_
46、O()放到总线上。在时钟上升沿5之后新的时钟上升沿到达之前,从设备发现因为某些原因 暂时无法继续接收数据,因此将ACK信号置低,插入等待。当从设备发现可以继续接收数据,于是在在最后一个等待周期结束且上升 沿5到达之前,将DAT_I()和TGD()采样;主设备发现ACK信号为高,得知第 五次写操作完成。并将STB_O和CYC_O置低表示整个块写義作完成。图11 Wishbone总线的块写操作5. 5 RMW操作在操作系统中,有一种重要的进程间的同步机制称作信号量机制。信号量 即当前可用资源的计数。信号量是一个用来实现同步的整型或记录型(Record)变 量,除了初始化外,对它只能执行等待和释放这
47、两种原子操作。一次对信号量 的等待操作是获得信号量的过程,读取当前信号量的值,如果发现有可利用资 源,则将信号量减1,否则进入等待状态。一次对信号量的释放过程即将信号 量加lo 一个进程对信号的读取、计算新的信号量值、更新信号量的值这三个 步骤是不允许被其他进程打破的,如果被打破,则信号量的值将会发生错误, RMW操作的最大用途在于信号量操作。一次RMW操作对于总线来说,本质上是两次子操作,一次读,一次写, 只不过这两次子操作必须山同一个主设备的完成,且读数据和写数据的地址相 同。“改”是不发生在总线上的,它发生在主设备内部。一个RMW操作的例子如 图13所示,其过程如下:在时钟上升沿0,主设
48、备将地址信号ADR_O()、TGA_O()放到总线上,将 WE_O置为低表示读操作,将适当的SEL_O()信喜置高通知瓜设备将数据放在数 据&线的适当位置,将CYC.0和TGC_O()置高表示操作正在进行,将STB.0置 高表示第一次子操作开始。CYC_O和TGC_O()可以发生在上升沿0以前叨任何 时刻。在时钟上升沿1到达之前,从设备检测到主设备发起的操作,将适当的数 据放到主设备的DAT_I()和TGD_I(),将主设备的ACK_I置高作为对主设备STB_O 的响应。在时钟上升沿1,主设备发现ACK_I信号为高,将DAT_I()和TGDJ0采样, 完成第一次子操作。主设备将STB_O表示插
49、入等待。在时钟上升沿1之后新的上升沿到达之前,从设备检测到主设备将STB_O 置低,于是将ACK_I置低。经过若干等待周期,在上升沿2,主设备将地址信号ADR_O()、TGA_O()放 到总线上,将数据信号DAT_O()、TGD_O()放到总线上,将WE_O置为高襄示写 操作,将适当的SEL_O()信再置高通知几设备将数据总线上哪些信号是有效的, 将STB_O置高表示第二次子操作开始。在时钟上升沿3到达之前,从设备检测到主设备发起的操作,将主设备的 ACK_I置高作为对主设备STB_O的响应。在时钟上升沿3,从设备将DAT_I()和TGD_I()采样;主设备发现ACK_I信号 为高,得知第二次
50、子操作完成,于是蔣STB_O和CYC_0置低表示整个RMW操 作完成。在时钟上升沿之后,从设备发现STB_O为低,于是将ACK置低。图13 Wishbone总线的RMW操作5.6数据组织数据组织是指数据的传送顺序。U前常见的32为处理器的数据总线粒度为 1字节,在传送时,一个32位数据的最高字节可以放在数据总线的最低8位传 送,也可以放在数据总线的最高8位传送,因此出现了大端和小端两种数据组 织方法。大端是指一个数据的最高位放在数据总线的最低位传送或者放在地址 较小的存储器位置存储;小端是指一个数据的最高位放在数据总线的最高位传 送或者放在地址较高的存储器位置存储。Wishbone同时支持大端
51、和小端两者数 据组织方式。当数据总线的粒度和宽度相同时,大端和小端是一样的。这两者数据组织方式在一般文献中都可以找到。总线标准只定义接口的通 信协议,而数据的组织本质上取决于主设备和从设备的设讣。有时需要将大端 和小端的接口互联起来,下图给出了将数据组织为大端的IP A和数据组织为大 端的IP B相连的情形。IP A和IP B的数据总线宽度都是32为,粒度为8位。35 /40SELJ(3)SEL_I(2)SEL_I(1)SEL_I(O)DAT(31.24)DAT(23.16)DAT(15.08)DAT(07.00)IPB从设备输入小端图14大端和小端的接口互联六、Wishbone寄存反馈总线丿
52、6.1周期的同步与异步结束方式之对比为了实现在给定时钟频率下的最大可能祚吐量,Wishbone采用了周期异步 结束方式。这样做的结果是从主设备的STB_O到从设备的ACK_O/ERR_O/RTY_O 再到主设备的ACK_I/ERR_I/RTY_I输入形成了一个异步回路,如图15。在大型 SoC设计中,该回臨往往成为蜒个设计的关键路径,限制系统时钟频率的进一 步提高。在深亚微米时代,由于线延迟往往比门延迟更大,这一异步回路更加 可能成为系统性能的瓶颈。图15 Wishbone总线的异步周期结束路径这一问题的最简单解决方法是插入寄存器将回路断开,但这样做的缺点是 在每一次总线操作中都需要插入一个等
53、待周期,从而制约了总线祚吐量。如图 16所示,在上升沿1主设备发起了一次操作,在上升沿2从设备发起响应将 ACK.0置高,在上升沿3主设备检测到ACK为高完成第一次操作并发起第二 次赫作,但是在上升沿3从设备并不知道主设备会发起第二次操作,因此只能 将ACK.0信号置低。在上升沿4从设备才能对第二次操作发起响应将ACK.0 置高,击上升沿4主设备检测到ACK为高完成第二次操作。图16 Wishbone总线的传统同步周期结束方式在图16中,每一次传输都需要两个时钟周期,一半的带宽被浪费。如果从 设备在上升沿3知道主设备将发起新的操作,它将能够在上升沿3就对主设备 的操作发起响应,从而节省时钟周期
54、提高了系统的吞吐量,利用该思想改进后 的同步时序如图17所示。CLKJ(0) (1) (2) (5)I 1NIN+1STBJJnACk o|1J图17 Wishbone总线改进的同步周期结束方式在图17的上升沿1,主设备发起操作,在上升沿2,从设备将ACK_O置 高,在上升沿3,从设备知道主设备将发起新的操作,于是将ACK.0靈续置 高。因此,3个时钟周期就完成了 2次操作,而不是原来大的4个砧钟周期, 于是呑吐量提高了 25%。一般的,改进后,N次操作需要N+1个时钟周期,而 不是2N个时钟周期,吞吐量改善为(N-1)/N%o改进后的同步周期结束方式具备异步周期结束方式的乔吐量优势,同时具
55、备传统同步结束方式的延迟优势。改进后的同步周期结束方式称作Wishbone 寄存反馈周期结束方式。6. 2 Wishbone寄存反馈周期结束方式在Wishbone寄存反馈周期结束方式中,主设备需要事先通知从设备操作 下一时钟周期是否将发起新的总线操作,这是通过周期类型识别地址标签 CTI_O()/CTI_I()和突发类型扩展地址标签BTE_O()/BTE_I()完成的。主设备和从设 备必须同时支持CTLO0/CTIJ0,Wishbone義口才能以寄存反馈周期结束方式 工作,主设备和从设备如集支持地址增加突发模式,它们必须同时支持 BTE_O()/BTE_I()。如果主设备或者从设备之一不支持这
56、种周期结束方式,它们只 能反传统周劝结束方式工作。周期类型识别地址标签CTI_O()/CTI()提供描述当前操作突发模式的信息, 从设备可以根据该信息确定在卡一时钟鬲期如何进行响应。CTI_O()/CTI_I()的具 体定义如表2。表2周期类型标识符CTI_0(2:0)描述3 bOOO传统总线周期3 bOOl恒定地址突发总线周期3 b010递增突发总线周期3 bOll预留3 blOO预留3 blOl预留3 bllO预留3 bill突发结束不支持CTI_O()的主设备必须将该信号置为3000或者yblll,这两个是 等价的。主设备和从设备可以支持这些突发模式中的一部分,对于不支持的突 发模式,主设备必须将CTI_O()置为MbOOO,从设备必须将CTI_I()理解为 3zb000o为了减少在同步模式下的等待时间,从设备必须对主设备的操作尽快的做 出响应。从设备可利用CTI_I()信号确定在下一周期对主设备的响应,但是山于 此时还不知道STB信号石状态,因此从设备在确定在下一周期对主设备的响 应时只能忽略STB
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 变电所电气施工合同范例
- 医院供应室合同范例
- 代买合同范例
- 公司股转让合同范例5篇
- 公司股购买合同范例
- 买车防坑合同范例
- 南京婚庆酒店合同范例
- 南瓜养殖合同范例
- 上汽大众汽车经销合同范例
- 单位房产赠与子女合同范例
- 非线性弹性本构关系全量型增量型③弹塑性本构课件
- 涉嫌虚假诉讼立案监督申请书
- 通用高考英语答题卡模板word模板
- 外文文献 A SP的网站新闻管理系统的设计与实现 中英文版
- 中国教育简史全书ppt完整版课件最全电子教案正本书教学教程
- 中学生心理健康诊断测验-MHT量表
- 年轻干部教育管理监督调研情况报告
- 三级安全管理标准化评定标准
- 血气分析报告解读PPT课件(PPT 33页)
- 简谱视唱15942
- 民宿设计要点--ppt课件
评论
0/150
提交评论