强烈推荐wb总线Word格式文档下载.docx

上传人:b****1 文档编号:3751805 上传时间:2023-05-02 格式:DOCX 页数:46 大小:45.61KB
下载 相关 举报
强烈推荐wb总线Word格式文档下载.docx_第1页
第1页 / 共46页
强烈推荐wb总线Word格式文档下载.docx_第2页
第2页 / 共46页
强烈推荐wb总线Word格式文档下载.docx_第3页
第3页 / 共46页
强烈推荐wb总线Word格式文档下载.docx_第4页
第4页 / 共46页
强烈推荐wb总线Word格式文档下载.docx_第5页
第5页 / 共46页
强烈推荐wb总线Word格式文档下载.docx_第6页
第6页 / 共46页
强烈推荐wb总线Word格式文档下载.docx_第7页
第7页 / 共46页
强烈推荐wb总线Word格式文档下载.docx_第8页
第8页 / 共46页
强烈推荐wb总线Word格式文档下载.docx_第9页
第9页 / 共46页
强烈推荐wb总线Word格式文档下载.docx_第10页
第10页 / 共46页
强烈推荐wb总线Word格式文档下载.docx_第11页
第11页 / 共46页
强烈推荐wb总线Word格式文档下载.docx_第12页
第12页 / 共46页
强烈推荐wb总线Word格式文档下载.docx_第13页
第13页 / 共46页
强烈推荐wb总线Word格式文档下载.docx_第14页
第14页 / 共46页
强烈推荐wb总线Word格式文档下载.docx_第15页
第15页 / 共46页
强烈推荐wb总线Word格式文档下载.docx_第16页
第16页 / 共46页
强烈推荐wb总线Word格式文档下载.docx_第17页
第17页 / 共46页
强烈推荐wb总线Word格式文档下载.docx_第18页
第18页 / 共46页
强烈推荐wb总线Word格式文档下载.docx_第19页
第19页 / 共46页
强烈推荐wb总线Word格式文档下载.docx_第20页
第20页 / 共46页
亲,该文档总共46页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

强烈推荐wb总线Word格式文档下载.docx

《强烈推荐wb总线Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《强烈推荐wb总线Word格式文档下载.docx(46页珍藏版)》请在冰点文库上搜索。

强烈推荐wb总线Word格式文档下载.docx

1"

,而另有一个信号输出为"

0"

,就形成一个低电阻通路,导致局部电流过大,热量难以及时释放,从而增加芯片功耗和大大降低芯片寿命)。

由于片上布线资源较为丰富,因此片上总线多采用单向信号线。

由于电路板上布线资源较为昂贵,因此板上总线多采用三态总线,但是由于三态总线的功耗问题和速度限制,目前板上总线也在向串行和非三态方向发展,如USB和PCIExpress。

②片上总线比板上总线更加简单灵活。

首先片上总线结构要简单,这样可以占用较少的逻辑单元;

其次时序要简单,以利于提高总线的速度;

第三接口要简单,如此可减少与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总线规范。

需要指出,任何一个总线规范,首先至少支持点对点互联,所以严格意义上讲,国内学术界普遍讲的"

总线规范"

实际上指的是片上系统互联规范,只不过多个IP通过共享总线互联是人们最关心的,也是最广泛使用的,所以常笼统的将片上系统互联规范讲为总线规范。

Wishbone片上总线的基本特点

一般总线规范的共同特点为同时适用于于软核、固核和硬核设计;

对开发工具和目标硬件没有特殊要求,并且几乎兼容已有的所有综合工具;

可以用多种硬件描述语言来实现;

支持结构化设计方法学,以提高大团队的设计效率;

灵活的数据和地址总线宽度,支持大端和小端操作;

支持主从设备接口,支持多主设备,这是片上共享总线通信所必须的,多个主设备同时需要进行总线操作时,由仲裁器决定当前哪个主设备可以使用总线,仲裁逻辑用户可以自行定义。

此外,在作者看来,Wishbone总线规范的特点还包括:

1.支持点到点、共享总线、十字交叉(Crossbar)和基于交换结构(Switchfabric)的互联。

Wishbone总线规范是"

轻量级(Lightweight)"

规范,它实际上更加侧重于点对点互联以及复杂度不高的共享总线片上系统互联。

因此,与其他总线规范相比,Wishbone的接口更加简单紧凑,接口需要的互联逻辑非常少(见本章后续的例子),这是Wishbone的一个重要优势。

熟悉AMBA总线的读者在读完本章后就能够理Wishbone比AMBA总线简单的多,但是两者各有个的优势。

AMBA将所有的外设分为高速设备和低速设备,高速设备连接到系统总线,通常通信的数据量也较大,如SDRAM控制器、NANDFlash控制器、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完全可以采用异步方式,http:

//www.opencores.org上面的很多兼容Wishbone规范的开源IP采用的就是异步复位。

总结以上内容,Wishbone总线规范区别于其他总线规范的两个核心特点是:

(1)是轻量级规范,因此接口更加简单紧凑;

(2)支持支持用户定义的标签。

接口信号定义

所有的Wishbone接口信号都是高电平有效,设计成高电平有效的主要原因是由于低电平有效信号的书写问题,不同的设计者表达低电平有效信号的方式不同,拿最常见的低电平有效的复位信号来说,其表示方法就有_RST_I、N_RST_I、#RST_I和/RST_I,而高电平有效的信号其表达方式通常只有一种。

所有的Wishbone接口信号都以_I或者_O结束。

_I表示输入,_O表示输出。

()表示该信号为总线信号,总线的宽度可以为1,也可以为大于1的任何值。

图1Wishbone总线规范中使用的主要信号(一个点到点互联的例子)

在图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个字节,但是也有一些处理器如CEVATeakLiteDSP的数据总线粒度为2个字节。

一个位宽为32比特、粒度为1个字节的数据总线的地址信号应定义为ADR_O(n…2)/ADR_I(n…2)。

在传送数据时,具体哪些字节有效通过SEL_O()/SEL_I()信号(见下文)控制。

TGD_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信号,就不会提前收回总线使用权。

图1中只有一个主设备和一个从设备,因此没画出仲裁器模块,该模块可以视为是INTERCON的一部分,见本章最后给出的例子。

STB_O/STB_I:

选通信号。

选通有效代表主设备发起一次总线操作。

只有选通信号有效(此时CYC_O/CYC_I也必须为高),ADR_O/ADR_I()、DAT_O()/DAT_I()、SEL_O()/SEL_I()才有意义。

在Wishbone总线规范中,CYC_O/CYC_I是最高层的控制信号,只有该信号有效,STB_O/STB_I信号才有意义。

一个信号有意义是指该信号的当前值是需要主设备或者从设备解释的,0为无效,1为有效,而一个信号没有意义是指该信号的当前值主设备和从设备不必关心,是0还是1都无效。

WE_O/WE_I:

写使能信号,代表当前周期中进行的操作是写操作还是读操作。

1代表写,0代表读。

Wishbone支持的互联类型

Wishbone规范支持的互联类型有四种:

点到点、共享总线、十字交叉(Crossbar)和基于交换结构(Switchfabric)的互联。

这四种互联方式在Wishbone规范中有明确的定义。

如图1(第4页),点到点互联是最简单的互联方式,它允许一个主设备和一个从设备相互通信。

比如,主设备可能是一个处理器IP核,从设备可能是一个串行I/O端口或者存储器。

点对点互联的一个特殊应用就是当数据需要多个步骤顺序进行处理时,多个同时具有主设备接口和从设备接口的模块串接在一起,如图2所示。

这种连接方式也称作数据流连接。

模块A处理完数据后将处理结果送给模块B,模块B处理完模块A送来的数据后再将处理结果送给模块C处理。

数据从一个模块送往另一个模块,常常将这种处理方式称作流水线。

流水线在处理器设计中非常重要,其好处是多个数据可以并行处理,从而提高系统的整体数据处理能力。

图2数据流方式互联

共享总线互联方式如图3所示。

共享总线互联方式适合于系统中有两个或者多个主设备需要与一个或者多个从设备通信的场合,它们通过共享的总线进行通信,其好处是结构紧凑,节省布线资源,缺点是主设备希望与特定从设备通信时可能需要等待。

主设备在需要与一个从设备通信时,需要先向仲裁器(图中没有给出)申请总线占有权,获得允许后开始占用总线并与目标从设备开始通信,通信结束后释放总线。

当多个主设备同时希望占有总线时,仲裁器通过一定的优先级逻辑分配总线使用机会。

共享总线互联方式在片上系统中得到了广泛的使用,几乎成了片上系统的标志技术之一。

共享总线技术在板级系统如PCI总线中也得到了应用。

图3共享总线互联方式

十字交叉互联方式较共享总线互联方式略复杂。

共享总线互联方式在任一时刻只允许最多有一对主设备和从设备通过共享总线进行通信,而十字交叉互联方式最多同时允许超过一对的主设备和从设备对同时进行通信,如图4所示。

当然,在十字交叉互联方式中,一个从设备在任一时刻只能与一个主设备进行通信,两个主设备不能同时访问同一从设备。

图4十字交叉互联方式(图中虚线代表了一种可能的通信方式)

类似的,基于交换结构的互联比十字交叉互联方式的INTERCON模块更复杂,一般的,基于交换结构的互联比十字交叉互联允许同时通信的主从设备对更多。

随着技术的发展,已经出现了比片上总线更复杂的片上网络技术(Networkonchip)。

基于片上网络技术,已经出现了内含几十个32位处理器的芯片,已应用于CISCO的高端路由器中。

Wishbone总线周期

一个总线周期由多个不可分的时钟周期构成,完成单次读/写操作、块读/写操作或者读改写操作。

总线周期也分为单次读/写周期、块读/写周期和读改写周期。

一次块读/写总线周期完成多次数据读/写操作。

一般情况下,一次操作由主设备和从设备控制信号间的一次握手,以及同时进行的地址和数据总线的一次传输构成。

块操作表示整个操作需要完成多次数据传送。

在总线周期中主设备和从设备预先设定好的共同遵守控制信号握手规则,以及地址和数据总线的传输规则称作总线协议。

在下文所给图例中给出的信号均为主设备的输入输出信号。

因此,对操作的描述也从主设备信号的角度展开,以便于读者对照正文理解图例。

比如"

在时钟上升沿1到达之前,从设备检测到主设备发起的操作,将适当的数据放到主设备的输入信号DAT_I()和TGD_I(),将主设备的ACK_I置高作为对主设备STB_O的响应。

"

的等价描述为:

在时钟上升沿1到达之前,从设备检测到主设备发起的操作,将适当的数据放到其输出信号DAT_O()和TGD_O(),将输出信号ACK_O置高作为对主设备STB_O的响应。

一般操作

复位操作

复位是数字系统最基本的操作。

复位后,系统进入预定的状态。

在遵守Wishbone总线规范的系统中,当RST_I信号有效,系统开始复位。

由于Wishbone规范规定的复位是同步复位,因此在复位信号有效后接下来的时钟上升沿,所有信号和寄存器进入预定状态。

因此,Wishbone规范要求RST_I信号有效时间至少要一个时钟周期。

在数字系统中,实际上更多的采用的是异步复位,而且复位信号的长度一般大于系统电平稳定时间和系统时钟频率稳定时间。

如果在Wishbone接口中使用的是异步复位,需要在文档中说明,因为Wishbone接口默认的是同步复位。

图5Wishbone总线的复位操作

在图5中,我们只给出了STB_O和CYC_O这两个信号,而没有给出其它信号。

当这两个信号无效时,所有其他信号没有意义。

操作发起

一个总线周期由至少一次总线操作构成。

操作总是由主设备发起,主设备发起的操作可以是单次读/写、块读/写或者RMW操作。

当主设备将CYC_O置为高时,一个总线周期开始。

总线周期开始后,当主设备将STB_O置为高时,一次总线操作开始。

当主设备将CYC_O置为低时,主设备的所有其他信号没有意义。

从设备只在CYC_I为高时才会对主设备发起的操作进行响应。

CYC_O和STB_O可以同时从无效变为有效表示操作开始,CYC_O持续有效直到操作结束,CYC_O和STB_O可以同时从无效变有效表示同时发起一次总线周期的同时,也发起总线操作,也可以同时从有效变为无效表示操作结束。

因此,在只有一个主设备时,可以将CYC_O和STB_O合并为一个信号,比如在OpenRISC1200的源码中就广泛的使用了这种方式,信号的名字称作CYCSTB_O。

当存在多个主设备时,一个主设备完成操作后必须及时将CYC_O信号置为低,以让出总线给其他主设备。

此时,CYC_O信号等价于为总线占用请求信号。

基本握手协议

由于在整个总线周期,CYC_O必须始终保持有效,因此,此后我们将在给出的图中忽略该信号,只在必要的时候给出。

握手发生在主设备和从设备之间。

握手协议是主设备和从设备在握手时所遵守的共同规则。

如图6,当主设备准备好,它将STB_O信号置高。

STB_O信号一直为高,直到从设备通过置高ACK_O、ERR_O、RTY_O对本次操作发起响应。

在图7中我们以主设备的ACK_I信号作为示例,后文也如此。

通过握手,主设备和从设备不仅可以完成通信,而且可以控制它们之间的通信速率。

图6Wishbone总线的基本握手协议

如果从设备保证能够在主设备发起操作时及时作出操作成功的响应,其ACK_O信号可以设计为STB_I和CYC_I信号的逻辑与,而ERR_O和RTY_O信号也可以不使用。

因此ERR_O和RTY_O信号是可选的,而ACK_O信号是必须的。

在点对点连接中,甚至可以将ACK_I信号直接置高。

当存在ERR_O和RTY_O信号,主设备当发现ERR_O和RTY_O信号之一有效时如何进行响应取决于主设备的设计。

对于从设备,只有STB_I和CYC_I同时为高时,才能发起对主设备的响应。

实际上,对于主设备,其最小配置为只有ACK_I、CLK_I、CYC_O、RST_I和STB_O;

而对于从设备,其最小配置为只有ACK_O、CLK_I、CYC_I、RST_I和STB_I,这里CYC和STB信号可以合并到一起成为一个信号,通常命名为CYCSTB_O/。

在图6中,从STB_O到ACK_I存在一个长组合逻辑路径,在实际系统中很可能成为关键路径。

因此,在设计中应尽量保证STB_O是触发器的直接输出。

如果从STB_O到ACK_I存在一个长组合逻辑路径延迟不能满足设计的时序要求,可将从设备的ACK_O经过触发器寄存后再输出,从而将长组合逻辑打破,但系统的吞吐量也将因此减小。

关于如何即打破长组合逻辑又不影响系统的吞吐量,后文将进行详细讨论。

单次读/写周期

单次读/写操作每次操作只完成一次读或者写,是最基本的总线操作方式。

但是,Wishbone主设备或者从设备也可以不支持单次读/写操作,甚至没有地址和数据总线。

单次读操作如图7。

在时钟上升沿0,主设备将地址信号ADR_O()、TGA_O()放到总线上,将WE_O置为低表示读操作,将适当的SEL_O()信号置高通知从设备将数据放在数据总线的适当位置,将CYC_O和TGC_O置高表示操作正在进行,将STB_O置高表示操作开始。

在时钟上升沿1,主设备发现ACK_I信号为高,将DAT_I(

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 临时分类 > 批量上传

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2