wishbone协议中文版

本文详细介绍了Wishbone标准,主要参考了Wishbone标准B.3版本的核心内容,感兴趣的读者可去下载英文原文。
一、片上总线技术综述
随着超大规模集成电路的迅速发展,半导体工业进入深亚微米时代,器件特征尺寸越来越小,芯片规模越来越大,可以在单芯片上集成上百万到数亿只晶体管。如此密集的集成度使我们现在能够在一小块芯片上把以前由CPU和外设等数块芯片实现的功能集成起来,由单片集成电路构成功能强大的、完整的系统,这就是我们通常所说的片上系统。
IP复用是片上系统时代的核心技术之一。由于IP核的设计千差万别,它们要能够直接连接,就要遵守相同的接口标准。在片上系统中,处理器核和所有外设通过共享总线互通互联,因此这些IP核必须遵守相同的总线规范。总线规范定义的是IP核之间的通用接口,因此它定义了一套标准的信号和总线周期,以连接不同的模块,而不是试图去规范IP核的功能和接口如何实现。一个片上总线规范一般需要定义各个模块之间初始化、仲裁、请求传输、响应、发送接收等过程中驱动、时序、策略等关系。
芯片与电路板的资源和环境的不同,导致片上总线与板上总线存在若干明显差异,包括:
①片上总线多采用单向信号线,而板上总线多采用三态信号。片上三态总线无论在功耗、速度、可测性
上都存在很大缺陷,而且一旦出现多驱动情况便会损毁芯片(比如若应该输出"Z"的信号实际输出为"1",而另有一个信号输出为"0",就形成一个低电阻通路,导致局部电流过大,热量难以及时释放,从而增加芯片功耗和大大降低芯片寿命)。由于片上布线资源较为丰富,因此片上总线多采用单向信号线。由于电路板上布线资源较为昂贵,因此板上总线多采用三态总线,但是由于三态总线的功耗问题和速度限制,目前板上总线也在向串行和非三态方向发展,如USB和PCI Express。
②片上总线比板上总线更加简单灵活。首先片上总线结构要简单,这样可以占用较少的逻辑单元;其次时序要简单,以利于提高总线的速度;第三接口要简单,如此可减少与IP核连接的复杂度。片上系统应用广泛,不同的应用对总线的要求各异,因此片上总线具有较大的灵活性。其一,多数片上总线的数据和地址宽度都可变,其二,部分片上总线的互连结构可变,如Wishbone总线支持点到点、数据流、共享总线和交叉开关四种互连方式;其三,部分片上总线的仲裁机制灵活可变,如Wishbone总线的仲裁机制可以完全由用户定制。而板上总线则较为死板,时序也更加苛刻。
目前比较常见的片上总线规范有ARM公司的AMBA、Silicore的Wishbone、IBM公司的CoreConnect和Altera公司的Avalon。三种总线各有特点,其适用范围也不同。AMBA 总线规范因ARM处理器的广泛使用而拥有众多第三方支持,被ARM公司90%以上的合作伙伴采用,已成为广泛支持的现有互连标准之一。IBM公司的CoreConnect因为IBM的业界地位也有广泛的应用。Avalon主要用于
Altera公司系列PLD中,最大的优点在于其配置的简单性,可由EDA工具快速生成。这三种片上总线虽然都是公开标准,但都不是免费的。而Wishbone则是一个真正开放和免费的规范。它最先是由Silicore公司提出的,目前由OpenCores 组织维护。由于其开放性,因此OpenCores上的免费的IP核,大多数都采用Wishbone标准。Wishbone的优势除开放、免费、拥有众多免费IP核外,还有简单、灵活、轻量的特点,特别适合大型IP内部的小型IP之间的互联。在本书介绍的OpenRISC处理器设计中,各个模块间的互联接口中大量的采用了Wishbone 总线规范。212资源
需要指出,任何一个总线规范,首先至少支持点对点互联,所以严格意义上讲,国内学术界普遍讲的"总线规范"实际上指的是片上系统互联规范,只不过多个IP通过共享总线互联是人们最关心的,也是最广泛使用的,所以常笼统的将片上系统互联规范讲为总线规范。
二、Wishbone片上总线的基本特点
一般总线规范的共同特点为同时适用于于软核、固核和硬核设计;对开发工具和目标硬件没有特殊要求,并且几乎兼容已有的所有综合工具;可以用多种硬件描述语言来实现;支持结构化设计方法学,以提高大团队的设计效率;灵活的数据和地址总线宽度,支持大端和小端操作;支持主从设备接口,支持多主设备,这是片上共享总线通信所必须的,多个主设备同时需要进行总线操作时,由仲裁器决定当前哪个主设备可以使用总线,仲裁逻辑用户可以自行定义。此外,在作者看来,Wishbone总线规范的特点还包括:
1. 支持点到点、共享总线、十字交叉(Crossbar)和基于交换结构(Switch fabric)的互联。Wishbone总线规范是"轻量级(Lightweight)"规范,它实际上更加侧重于点对点互联以及复杂度不高的共享总线片上系统互联。因此,与其他总线规范相比,Wishbone的接口更加简单紧凑,接口需要的互联逻辑非常少(见本章后续的例子),这是Wishbone的一个重要优势。熟悉AMBA总线的读者在读完本章后就能够理Wishbone比AMBA总线简单的多,但是两者各有个的优势。AMBA 将所有的外设分为高速设备和低速设备,高速设备连接到系统总线,通常通信的数据量也较大,如SDRAM控制器、NAND Flash控制器、LCD控制器,低速设备连接外设总线,通常通信数据量小,如通用串口、计时器等。外设总线与系统总线通过总线桥接器相连。在实际系统中,处理器、系统总线、外设总线间的时钟频率的典型比值之一是4:2:1,因此整个系统的功耗被有效降低。另外一个好处是通过在总线桥接器中添加DMA引擎,系统总线和外设总线可以实现速率解耦。而依照Wishbone规范,Wishbone总线上所有设备都要连接到同一总线,无论是高速设备还是低速设备。与Wishbone总线相比,AMBA的缺点是设计较为复杂。但是实际上,Wishbone总线也设计为类似AMBA总线的架构,但此时系统为双Wishbone总线架构。
2. 支持典型的数据操作,包括:单次读/写操作、块读/写操作,读改写(RMW,Read-Modify- Write,细节见后文)操作。最快情况下一个时钟周期可完成一次操作,操作的结束方式包括:成功、错误和重试(Retry)。一个总线周期完成一次操作,一次操作可以是单次读/写操作、块读/写操作或者读改写操作。操作总是在
某一总线周期内完成的,因此操作结束方式也称为总线周期结束方式,两者说法在后文将视情况使用。成功是操作的正常结束方式,错误表示操作失败,造成失败的原因可能是地址或者数据校验错误,写操作或者读操作不支持等。重试表示从设备当前忙,不能及时处理该操作,该操作可以稍后重新发起。接收到操作失败或者重试后,主设备如何响应取决于主设备的设计者。
组挂网3. 允许从设备进行部分地址解码,有利于减少了冗余地址译码逻辑,提高地址译码速度。这一点本书将通过实例说明。
碳氟化钾
4. 支持用户定义的标签。这些标签可以用于为地址、数据总线提供额外的信息如奇偶校验,为总线周期提供额外的信息如中断向量、缓存控制操作的类型等。Wishbone规范只定义标签的时序,而标签的具体含义用户可自行定义。支持用户定义的标签是Wishbone规范区别与其他片上总线规范的重要特征之一。
5. 全同步化设计,包括复位方式。但是实际上复位方式采用同步还是异步并不影响IP的互联互通,因此兼容Wishbone规范的IP完全可以采用异步方式,总结以上内容,Wishbone总线规范区别于其他总线规范的两个核心特点是:(1)是轻量级规范,因此接口更加简单紧凑;(2)支持支持用户定义的标签。
三、接口信号定义
所有的Wishbone接口信号都是高电平有效,设计成高电平有效的主要原因是由于低电平有效信号的书写问题,不同的设计者表达低电平有效信号的方式不同,拿最常见的低电平有效的复位信号来说,其表示方法就有_RST_I、N_RST_I、#RST_I和/RST_I,而高电平有效的信号其表达方式通常只有一种。
所有的Wishbone接口信号都以_I或者_O结束。_I表示输入,_O表示输出。()表示该信号为总线信号,总线的宽度可以为1,也可以为大于1的任何值。
图1 Wishbone总线规范中使用的主要信号(一个点到点互联的例子)
在图1中,主设备具有遵守Wishbone规范的主设备接口,从设备具有遵守Wishbone规范的从设备接口,INTERCON模块将主设备和从设备的对应数据、地址和控制线连接起来,SYSCON模块提供时钟和复位信号,这两个信号被送入主设备和从设备。图1给出了Wishbone接口的常见信号,这些信号有些是必须的,有些是可选的。这些信号的基本功能描述如下:
CLK_O/CLK_I:时钟信号。时钟信号由SYSCON模块产生,并送入各个主设备和从设备。SYSCON通常内部存在一个锁相环,将来源于芯片外的晶体振荡器或者时钟输入信号整形、分频或者倍频为芯片内所需要的时钟信号。所有Wishbone 信号都同步到时钟信号上,包括复位信号。
RST_O/RST_I:同步复位信号,高电平有效。复位信号由SYSCON模块产生,并送入各主设备及从设备。
DAT_O()/DAT_I():主设备和从设备的之间的数据信号,数据可以由主设备传送给从设备,也可以由从设备传送给主设备。一对主设备和从设备之间最多存在两条数据总线,一条用于主设备向从设备传输数据,另外一条用于从设备向主设备传输数据。Wishbone规定数据总线的最大宽度为64位,这一规定实际上是考虑到目前商用处理器的最大位数为64,实际上数据总线的宽度可以是任意值。就笔者看来,在64位处理器以后,处理器将向多核方向发展,总线将向高速串行方向发展。
测试探针
ADR_O(n…m)/ADR_I(n…m):地址信号,主设备输出地址到从设备。n取决于IP核的地址宽度,m取决于数据总线DAT_O()/DAT_I()的宽度和粒度。数据总线的粒度指的是数据总线能够一次传送的最小比特数,很多处理器如ARM的数据
总线的粒度为1个字节,但是也有一些处理器如CEVA TeakLite DSP的数据总线粒度为2个字节。一个位宽为32比特、粒度为1个字节的数据总线的地址信号应定义为ADR_O(n…2)/ADR_I(n…2)。在传送数据时,具体哪些字节有效通过SEL_O()/SEL_I()信号(见下文)控制。
tbaseTGD_O/TGD_I()、TGA_O()/TGA_I():TGD_O/TGD_I()为数据标签,具体讲是附加于在数据总线DAT_O()/DAT_I()的标签,该标签可以用于传送关于数据总线的额外信息如奇偶校验信息、时间戳信息等。TGA_O/TGA_I()为地址标签,具体讲是附加于在地址总线ADR_O()/ADR_I()的标签,该标签可以用于传送关于地址总线的额外信息如地址总线奇偶校验信息、存储器保护信息等。Wishbone只规定了TGD_O/TGD_I和TGA_O()/TGA_I()的接口时序,用户可以定义TGD_O/TGD_I的具体含义。
TGC_O/TGC_I():TGC_O/TGC_I()为总线周期标签,该标签可以用于传送关于当前总线周期所进行操作的描述如操作类型(包括单次操作、块操作、RMW操作)、中断应答类型、缓存操作类型等。类似的,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)。操作总是在某一总线周期内完成的,因此操作结束方式也称为总线周期结束方式。成功是操作的正常结束方式,错误表示操作失败,造成失败的原因可能是地址或者数据校验错误,写操作或者读操作不支持等。重试表示从设备当前忙,不能及时处理该操作,该操作可以稍后重新发起。接收到操作失败或者重试后,主设备如何响应取决于主设备的设计者。
空调挡风板SEL_O()/SEL_I():有效数据总线选择信号,标识当前操作中数据总线上哪些比特是有效的,以总线粒度为单位。SEL_O()/SEL_I()的宽度为数据总线宽度除以数据总线粒度。比如一个具有32位宽、粒度为1个字节的数据总线的选择信号应定义为SEL_O(3:0)/ SEL_I(3:0),SEL(4’b1001)代表当前操作中数据总线的最高和最低字节有效。
CYC_O/CYC_I、LOCK_O/LOCK_I、GNT_O()/GNT_I:总线周期信号CYC_O/CYC_I 有效代表一个主设备请求总线使用权或者正在占有总线,但是不一定正在进行总线操作(是否正在进行总线操作取决于选通信号STB_O/STB_I是否有效)。只有该信号有效,Wishbone主设备和从设备接口的其它信号才有意义。CYC_O/CYC_I 信号在一次总线操作过程中必须持续有效,比如一次块读操作可能需要多个时钟周期,CYC_O/CYC_I信号必须保持持续有效。实际上,该信号的实际作用等同于其他总线标准中的仲裁申请信号。当存在多个主设备时,它们可能希望同时进行总线操作,主设备通过仲裁申请信号向仲裁器申请总线占有权,仲裁器通过一定的仲裁优先级逻辑向其中一个选定的主设备发送总线允许信号GNT_O()/GNT_I,表示该主设备可以占用总线。GNT_O()是仲裁器输出的允许信号,一般
有多个;而对于一个主设备,其允许信号输入GNT_I却只有一个。一次总线操作可能需要多个时钟周期,比如一次块操作。在操作过程中,仲裁器可能会提前将总线占用权收回并分配给其他主设备从而打断当前主设备的操作,LOCK_O/LOCK_I有效代表本次总线操作是不可打断的。仲裁器收到LOCK_I信号,就不会提前收回总线

本文发布于:2024-09-22 00:55:45,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/145329.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:总线   设备   操作   信号
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议