转自http://blog.youkuaiyun.com/ce123_zhouwei/article/details/6926425
片上总线Wishbone 学习(一)片上总线综述
1 引言
传统的IC设计方法已无法适应新的SoC设计要求,需要根本的变革,即从以功能设计为基础的传统IC设计流程转变到以功能整合为基础的SoC设计全新流程。SoC设计以IP的设计复用和功能组装、整合来完成。SoC设计的重点为系统功能的分析与划分、软硬件功能的划分、IP 的选择与使用、多层次验证环境和外界设计咨询服务等。随着以IP核复用为基础的SoC设计技术的发展,如何有效地对众多IP供应商提供IP核,在实际设计时进行有效互联的问题日益受到重视。为了使IP核集成更快速、更方便,缩短进入市场的时间,迫切需要一种标准的互联方案。在这一背景下产生的片上总线OCB(on-chip bus)技术,基于IP 核互联标准技术的发展,目前已形成较有影响力的三种总线标准为:IBM公司的CoreConnect,ARM 公司的AMBA(Advanced MicrocontrollerBusArchitecture)和SilicoreCorp公司的Wishbone。2 片上总线与板上总线的差异
①片上总线多采用单向信号线,而板上总线多采用三态信号。片上三态总线无论在功耗、速度、可测性上都存在很大缺陷,而且一旦出现多驱动情况便会损毁芯片(比如若应该输出"Z"的信号实际输出为"1",而另有一个信号输出为"0",就形成一个低电阻通路,导致局部电流过大,热量难以及时释放,从而增加芯片功耗和大大降低芯片寿命)。由于片上布线资源较为丰富,因此片上总线多采用单向信号线。由于电路板上布线资源较为昂贵,因此板上总线多采用三态总线,但是由于三态总线的功耗问题和速度限制,目前板上总线也在向串行和非三态方向发展,如USB 和PCI Express。
②片上总线比板上总线更加简单灵活。首先片上总线结构要简单,这样可以占用较少的逻辑单元;其次时序要简单,以利于提高总线的速度;第三接口要简单,如此可减少与IP 核连接的复杂度。片上系统应用广泛,不同的应用对总线的要求各异,因此片上总线具有较大的灵活性。其一,多数片上总线的数据和地址宽度都可变,其二,部分片上总线的互连结构可变,如Wishbone 总线支持点到点、数据流、共享总线和交叉开关四种互连方式;其三,部分片上总线的仲裁机制灵活可变,如Wishbone 总线的仲裁机制可以完全由用户定制。而板上总线则较为死板,时序也更加苛刻。
②片上总线比板上总线更加简单灵活。首先片上总线结构要简单,这样可以占用较少的逻辑单元;其次时序要简单,以利于提高总线的速度;第三接口要简单,如此可减少与IP 核连接的复杂度。片上系统应用广泛,不同的应用对总线的要求各异,因此片上总线具有较大的灵活性。其一,多数片上总线的数据和地址宽度都可变,其二,部分片上总线的互连结构可变,如Wishbone 总线支持点到点、数据流、共享总线和交叉开关四种互连方式;其三,部分片上总线的仲裁机制灵活可变,如Wishbone 总线的仲裁机制可以完全由用户定制。而板上总线则较为死板,时序也更加苛刻。
3 CoreConnect总线
CoreConnect拥有完备的一整套技术文档,在技术上可行性较强。IBM 公司的CoreConnect连接总线还提供了三种基本类型连接功能块,即处理器内部总线PLB(Processor Local Bus)、片上外围总线OPB(On-ChipPeripheral Bus)和设备控制总线DCR(Device Control Register)。CoreConnect总线的逻辑结构如图1所示,它清楚地定义了所有的系统构成部件以及它们是如何连接的,下面分别介绍PLB 、DCR 和OPB 的主要技术特征。
3.1 PLB
PLB标准是为总线传输的主要发出者和接受者之间提供高带宽、低延迟的连接。其主要特征为:● 高性能处理器内部总线;
● 交叠的读和写功能(最快每周期两次传输);
● 支持分段传输;
● 地址流水(减少延迟);
● 读和写分开;
● 32~64位数据总线;
● 32位地址空间;
● 支持16~64字节突发传输模式;
● 支持字节使能(非对准和3 字节传输);
● 支持仲裁、R E Q、G N T 和L O C K;
● 延迟和隐藏仲裁(减少延迟);
● 4级仲裁优先权;
● 特殊DMA(Direct Memory Access)模式,如快速的从内存到内存;
● 地址和数据状态扼制(Address and data phase throttling);
● 延迟计数器(保证保持延迟到预想的程度)。
3.2 OPB
OPB标准为连接具有不同的总线宽度及时序要求的外设和内存提供了一条途径,并尽量减小对PLB 性能的影响。其主要特性如下:● 片上外围总线;
● 多个主设备;
● 32位地址空间;
● 读和写数据总线分开;
● 8~32位数据总线;
● 动态总线宽度;
● 支持重试模式(如果主设备要求的从设备忙,主设备隔一段时间再次请求);
● 支持突发(burst)传输模式;
● 支持D M A;
● 设备可以是内存映射(支持D M A);
● 检测总线超时功能(在仲裁器中);
● 支持仲裁、R E Q、G N T 和L O C K。
3.3 DCR
设备控制寄存器总线DCR是用来规范CPU通用寄存器设备,控制寄存器之间传输数据。DCR 总线在内存地址映射中取消了配置寄存器,减少取操作,增加处理器内部总线的带宽。其主要特征如下:● 10位地址总线;
● 32位数据总线;
● 同步和异步的传输;
● 分布式结构。
CoreConnect是一套精心设计和构造完整、通用的解决方案,可以应用在类似于工作站这样的高性能系统的连接,对于简单的嵌入式应用来说可能有点太复杂,提供的许多特性无法用到,但可以适应于未来更庞大、更复杂的系统连接。
4 AMBA总线
先进的微控制器总线体系结构AMBA规范定义了三种总线:(1)AHB(Advanced High-performance Bus):用于连接高性能系统模块。它支持突发数据传输方式及单个数据传输方式,所有时序参考同一个时钟沿;
(2)ASB(Advanced System Bus):用于连接高性能系统模块,它支持突发数据传输模式;
(3)APB(Advance Peripheral Bus):是一个简单接口支持低性能的外围接口。
一个典型的基于AMBA 的微控制器同时集成AHB(或ASB )和APB 接口,如图2 所示。A S B总线是旧版的系统的总线,而新版的AHB 总线增强了对性能、综合及时序验证的支持。APB 总线通常用作的局部的第二总线,作为AHB 或ASB 上的单个从属模块。

4.1 AHB
AHB是先进的系统总线。它主要的目的就是连接高性能、高吞吐率的设备,例如CPU、DMA 和DSP。它的主要特性:● 高性能新一代总线;
● 多控制器;
● 分段传输;
● 单周期总线控制权移交;
● 没有三态实现方式;
● 32~128位总线宽;
● 包含一种访问保护机制,用来区别特权访问和无特权访问模式,或指令和数据提取等;
● 突发传输模式最大为16节;
● 访问空间限制在32 位;
● 提供为较慢设备使用而扼制数据流的机制;
● 支持仲裁、R E Q、G N T 和L O C K;
● 支持字节、半字和字传输。
AHB 总线和ASB 总线有下列不同的特点:
● AHB 总线支持分开处理。有很长响应延迟的从机在准备传输的数据时让出总线从事其它传送操作;
● 使用单一时钟沿控制所有操作,有利于综合和设计验证(通过使用静态时序分析和其他相似工具);
● 使用中心多路器总线方案而不是三态驱动的双向总线;
● 支持更宽的64位或128位数据总线配置。
4.2 ASP
ASP是通用系统总线,是一种微处理器和系统外设的高性能互连,主要特征如下:● 多控制器;
● 突发数据传输方式;
● 流水线传送;
● 32-128位总线宽度;
● 包含一种访问保护机制,用来区别特权访问和无特权访问模式,或指令和数据提取等;
● 双向数据总线;
● 提供为较慢设备使用而扼制数据流的机制;
● 仲裁支持REQ 、GNT 和LOCK。
4.3 APB
APB是外围互联总线,重点是最小功耗和易于使用,主要特征如下:● 低性能、低功率外围总线;
● 单控制器;
● 非常简单,只有4 个控制信号(加上时钟和复位);
● 32位地址空间;
● 多达32位数据总线;
● 分开读和写数据总线。
AMBA 是一种基本的SoC 总线,它分成三种总线。根据需要,系统设计者必须选择对接三种总线中的哪一种。一个高性能设备可能选择AHB 或ASP 总线,这将给IP 核集成者带来困难,因为两种总线都试图访问同一类型的设备。还没有明确的办法将设备与AHB 和ASP 总线集成。APB 桥似乎不但不会提供任何好处,而且会限制连接在上面的高性能总线。所有三种总线都包含一个地址状态和一个或多个数据状态。
5 Wishbone总线
Wishbone总线是Silicore公司推出的片上总线协议。它的结构极其简单、灵活,又完全公开、完全免费,获得众多支持。图3 给出了Wishbone总线的逻辑结构:Wishbone 总线的主要特征概括如下:

● 简单、紧凑的体系结构;
● 支持多控制器;
● 64位地址空间;
● 8~64 位数据总线(可扩展);
● 单周期读和写;
● RMW(R E A D - M O D I F Y - W R I T E )周期;
● 事件周期;
● 支持重试;
● 支持内存映射,FIFO(FISRT IN FIRST O U T )和十字互连接口;
● 提供为较慢设备使用而扼制数据流的机制;
● 使用者定义标志为,确定数据传输类型;
● 由终端用户定义仲裁方式。
Wishbone 总线采用握手协议。当MASTER 准备好传输数据时置STB_O 为高,STB_O 将保持高状态直到SLAVE 将ACK_I、ERR_I 或RTY_I 之一置为高, 数据传输周期结束。这种机制下,MASTER 和SLAVE 均可控制数据传输速率。其握手时序如图4。



