1
Avalon 总线最新接口标准综述
杨鑫 徐伟俊 陈先勇 夏宇闻
[摘要]:随着片上系统(SOC)的快速发展,高速片上数据传输对片上总线的要求越来越高,
各种片上总线标准不断升级,以应对片内日益膨胀的数据吞吐量要求。本文针对Altera 公
司推出的Avalon 总线,将其最新版与早期版本进行比较,重点分析了新版标准的新特性,
同时也对Avalon 总线的全系列进行了综述性的回顾。论文可以为研究Avalon 总线标准的
学者以及SOC 总线选型设计者提供有价值的参考。
关键词: Avalon,SOC, 片上总线, Nios
1. 前言:
Avalon 总线是Altera 公司专门为可编程芯片片上系统(System-On-a-Programmable-Chip, 以
下简称SOPC)而推出的一套片内总线系统,与Nios 系列的处理器软核一起,二者构成了
Altera 公司SOPC 解决方案中的核心部分。在最近的一次版本更新中,Altera 将原来的Avalon
接口规范升级到最新的3.2 版,并将其改名为Avalon-MM(Avalon Memory Mapped Interface,
以下均简称Avalon-MM)接口规范,同时推出新的Avalon-ST(Avalon Streaming Interface)
接口规范,因此最新的Avalon 总线标准成成为一套拥有Avalon-MM 和Avalon-ST 两套分支
标准的SOPC 总线规范。在最近的几次升级中,Avalon 总线标准每次都添加了一些非常有
用的高级特性,同时对应的开发工具SOPC Builder 也做了较大的升级改动。在下文的讨论
中,将会提及这些高级特性。
2. Avalon 总线简介
2.1 版本历史
2000 年Altera 推出了以Nios 处理器为核心的SOPC 解决方案,同时提供的片上总线标准即
是Avalon 1.0,到2004 年,伴随着第二代Nios 处理器Nios II 的发布,Avalon 总线标准也升
级到了较为完善的3.0 版。在此之后,Avalon 总线标准又分别在2005 年5 月和2006 年10
月经历了两次升级。每次总线标准升级后SOPC Builder 也会推出新的版本,以支持新的总
线特性。如下表所示是Avalon 总线与Nios 处理器以及SOPC Builder 的重要升级历史:
2
Avalon 总线
Avalon-MM Avalon-ST
SOPC Builder Nios 处理器
2007.05:
升级至7.1 版
2006.10:
升级至3.2 版
更名为Avalon-MM
2006.10:
推出1.0 版
2006.05:
升级至6.0 版
2005.05:
升级至3.1 版
2005.05:
升级至5.0 版
2004.09:
升级至3.0 版
2004.09:
升级至Nios II
表1 Avalon 总线及相关工具升级历史纪要
在2006 年10 月的升级中, 之前既有的Avalon 总线规范的文档更名为:Avalon
Memory-Mapped Interface Specification Reference Manual,总线接口的名称也从Avalon
interface 变为Avalon Memory-Mapped Interface,简称Avalon-MM 接口。同时Avalon 总线规
范家族加入了新的Avalon Streaming Interface,简称Avalon-ST 接口。在Avalon-MM 接口规
范的历史版本中,其标准规范文档标题最初是:Avalon Bus Specification Reference Manual,
在3.0 版的升级时曾更名为Avalon Interface Specification Reference Manual,而最新更名为
Avalon-MM 接口是在3.2 版推出之时。这是为了与Avalon-ST 接口相区分。
在下文中,将统一使用Avalon-MM 接口标准来称呼该接口标准的所有版本,而Avalon 总线
这一称呼则同时包括Avalon-MM 接口标准和Avalon-ST 接口标准。需要注意的是,在很多
其他地方,包括Altera 公司提供的一些工具当中,仍使用Avalon 一词来表示Avalon-MM 接
口及其所有历史版本。
2.2 重要历史沿革
在3.0 到3.1 版的升级中,Avalon-MM 接口标准主要增加或修订了如下高级特性:
1、 增加了对Burst 传输的支持
2、 增加了Master 端的Tri-State 传输支持
3、 增加writebyteenable 信号,及相关的位使能支持
4、 Master 端地址一律修改为以Byte 为单位
5、 修改了select、write、read 信号不同组合的意义;
其中以Burst 传输的增加和Master 端地址意义的修订最为关键。Burst 传输成为Avalon-MM
接口带宽最大的传输方式,在连续传输的理想状态可以达到每时钟周期完成一个传输节拍。
而对Master 端地址意义的修订简化了Avalon-MM 接口组件的设计,解决了一些地址含义混
乱造成的不兼容问题。
而在最新的3.1 版到3.2 版的升级中,Avalon-MM 接口标准的主要修订如下:
1、 将总线位宽的最大限制提高到1024 位;
2、 增加了读传输时的位使能;
3、 伴随总线接口文档命名的改变,所有相关名词的修改。
在这次升级中,Avalon-ST 接口标准1.0 版被引入Avalon 总线家族。
2.3 SOPC Builder 简介
SOPC Builder 是Altera 公司针对SOPC 开发提供的一套开发工具,其主要功能是向用户提供一个友好的界面,便于用户设计组件和集成组件,并根据用户设定的互联关系自动生成
Avalon 总线的HDL 实现。
在SOPC Builder 中,可以方便地建立SOPC 系统,能够灵活地调用和配置包括Nios II 软核
处理器在内的各种具有Avalon 总线接口的组件,以及配置这些组件之间的互联关系,并据
此生成SOPC 设计的HDL 设计文件。
同时SOPC Builder 提供了相关工具用于用户向SOPC Builder 添加自定义的组件。借助于该
工具,用户可以方便地将自行开发的具有Avalon 接口的组件集成到SOPC 环境中去,以便
于标准化的开发和组件复用。
此外SOPC Builder 还提供了一些板级工具,用于管脚分配或其他电气信号的连接等。
SOPC Builder 与Avalon 总线系统是密不可分的,在Avalon 总线标准的历次升级时添加的新特性,都是由SOPC Builder 所推出相应版本来体现和支持的。
3. Avalon 总线特性
在最新的Avalon 总线家族中,包含Avalon-MM 接口和Avalon-ST 接口两大接口标准,在
Altera 提出的SOPC 设计概念当中,两者将分别用于不同的数据应用,因此两者的基本结构
差异很大:Avalon-MM 接口是一套互联式总线接口,主要用于多节点的互联,而Avalon-ST
接口是一种单向点对点的接口,主要用于单向高速数据流的传输。在SOPC 设计中,可以针
对不同需求将二者结合起来使用,以提高设计的工作性能。
3.1 Avalon-MM 的基本特性
Avalon-MM 接口的总线模块是一种交换(switch)式的总线,具有较好的数据交换特性和很
高的总线带宽,由于是针对SOPC 设计的,Avalon-MM 总线模块具有结构简单,采用全同
步时序,以及可以灵活地配置等特点,其运行时钟、总线位宽、各个接口位宽以及各个外设
之间的互联特性等都可以灵活地配置。在3.0 版之后,Avalon-MM 接口标准的基本特性已经
趋于完善,以下基本特性描述适用于3.0 、3.1 以及3.2 三个版本。
Avalon-MM 总线的传输方式是一种主从式的传输方式,即由一个主控端外设发起并控制传
输过程,而从属端外设响应经由总线模块发来的信号完成整个传输。一个典型的Avalon-MM
互联系统包含有若干Avalon-MM 主控外设、若干Avalon-MM 从属外设以及Avalon-MM 总
线互联模块(System Interconnect Fabric)。一个典型系统如下图所示:
与共享式的总线结构相比,Avalon-MM 总线所采用的交换(switch)式结构具有更高总线带
宽。共享式总线只有一个总线数据通路,在任何时刻只由一个主控端占有总线模块,其他主
控端必须等待该主控端放弃总线后才能获取总线控制权并发起传输,而交换式总线则是在任
意的一个主控端和一个从属端之间都可以有一条数据通路,只要访问的从属端不同,多个主
控端可以同时进行数据传输。Avalon-MM 总线模块内部的数据通路连接结构如下图所示:
在这种交换式结构中,在总线的每个Slave 端(Slave Port)具有一个仲裁单元,当连接到该Slave 端的多个Master 端(Master Port)同时发起针对该Slave 端的传输时,由这个仲裁模块来决定Master 端获取Slave 端传输控制权的情况。
3.2 Avalon-MM 传输
Avalon-MM 的传输定义为外设(peripheral)与Avalon-MM 总线模块间的数据传输,分为
Master 端传输和Slave 端传输两类,每类传输又分为 基本(fundamental)传输、流水线
(pipelined)传输、突发(burst)传输,以及带有流控制(Flow control)的传输和专门针对片外端口的三态(Tri-State)传输。一个Master 端传输和一个对应的Slave 端传输即可完成两个外设通过总线模块进行的一次数据传输,但Master 端传输与Slave 端传输的模式并不要求一致,两端传输模式可以随意搭配。同种类型的Master 端传输与Slave 端传输在时序上基本是一致的,其区别仅在于Master 端传输是由Master 端外设驱动总线模块,而Slave 端传输是由总线模块驱动Slave 端外设,以下对Avalon-MM 传输进行简单介绍是以Slave 端传输为例,所有要点都可应用于Master 端传输。
所有的Avalon-MM 传输都基于基本(fundamental)传输,其他传输形式都是在该传输模式
下加以改进或增加某些特性以适应不同需要。
如下图所示,这是Slave 端一次典型的基本(fundamental)读传输时序:
注解:
(A) 从某个时钟的上升沿开始计算第一个时钟周期;
(B) 总线模块给出稳定的地址(address)和字节使能(byteenable);
(C) 总线模块给出由地址解析得到的片选(chipselect)信号;
(D) 在下一个时钟上升沿之前,slave 端驱动等待请求(waitrequest);
(E) 总线模块在时钟上升沿对等待请求(waitrequest)进行采样,由于等待请求
(waitrequest)被驱动,当前的数据被视为无效;
(F) 总线模块等待若干时钟周期,直至G
(G) 总线模块等待若干时钟周期,直至G
(H) Slave 端给出有效的数据;
(I) Slave 端撤销等待请求(waitrequest);
(J) 总线模块在接下来的时钟上升沿对等待请求(waitrequest)进行采样,由于等待
请求(waitrequest)被撤销,当前的数据被视为有效,总线模块将采集该数据,
结束此次传输;
在此基础上,增加若干特性即构成了Avalon-MM 总线Slave 端的其他传输模式,例如在流
水线(pipelined)传输允许总线模块在等待有效数据时连续发起多个传输,Slave 端将依次满足所需传输,突发传输允许总线模块在发起传输时给定一个突发传输次数(burscount),
之后Slave 端将完成相应次数的传输等。对于任何一个传输,使用流控制(Flow control)可以让Master 端与Slave 端绕过总线模块自行通信,以满足某些特殊要求。而Tri-State 传输则是针对片外信号专门设计的。Master 端的传输与此非常相似。只是交互双方换成了Master端和总线模块。
3.3 Avalon-ST 的特性
Avalon Streaming Interface 简称Avalon-ST 接口,源于Altera 的Atlantic I 接口标准,是一种
单向点对点的高速接口,主要针对的是高速数据流的传输。由于其同样是针对SOPC 开放而
设计的,以此也具有灵活的可配置性。Avalon-ST 接口与Avalon-MM 接口的区别非常明显,
Avalon-MM 接口用于SOPC 控制流传输或者简单的数据流传输,而Avalon-ST 接口则用于
SOPC 设计中高速数据流的传输,二者搭配使用可以清晰地分离系统内的控制流和数据流,
显著地提高系统整体的可靠性和运行效率。
Avalon-ST 接口包括两种端口,Src 端口和Sink 端口,数据传输方向是从Src 到Sink 的单向
传输。一个使用了Avalon-ST 的系统如下图所示:
3.4 Avalon-ST 传输
Avalon-ST 传输分为基本( fundamental ) 传输、包( packet ) 传输以及元件指定的
(component-specific)传输等三种,其中基本传输是其他传输的基础,通过增加若干控制信号,包传输可以允许更高级别的传输控制,而元件指定的传输则可以按照组件自身的需求来自定义传输的过程。在基本传输中,不同的子模式对控制信号的也有着不同的处理,如下图所示,这是一次典型的基本传输:
在该传输中:
(A) clk 信号的方向是从Src 到Sink,所有其他信号均要与clk 同步
(B) ready 信号的方向是从Sink 到Src,表明Sink 端可以接收数据。Src 端应在ready
信号有效的时候传输数据,但在某些子模式下,Src 端可以不关注该信号。
(C) valid 信号的方向是从Src 到Sink,表明当前数据信号是有效数据。Sink 端应在
valid 信号有效的时候对数据信号进行采样保存。
(D) channel 信号的方向是从Src 到Sink,表明当前数据所属的channel 号。
(E) error 信号的方向是从Sink 到Src,表明当前是否有错及错误代码。
(F) data 信号的方向是从Src 到Sink,是数据信号。
3.5 Avalon-MM 与Avalon-ST 相结合
如上文所述,Avalon-MM 接口与Avalon-ST 接口的结合使用,可以有效地分离系统的控制
流和数据流,这样做不仅可以使系统结构界面明晰,简化系统设计,增强系统可靠性,而且
可以有效地提高系统的数据吞吐能力,从而提高系统的整体效率。如下图所示,这是一个典
型的复合系统:
图4 Avalon-MM 与Avalon-ST 相结合使用的典型系统示例
4. 对应工具
随着Avalon 总线升级到3.1 版,SOPC Builder 进行了两次升级(5.0 版和6.0 版)。5.0 版的SOPC Builder 在Avalon 总线模块的具体实现中支持了burst 传输、新的地址解析模式等新特性,但此时组件添加向导并未向用户自定义组件开放burst 传输,如果用户需要在自定义组件中实现burst 传输,则必须手动修改组件的ptf 描述文件(Tcl 脚本)。而在6.0 版的SOPCBuilder 中,则是进一步完善了对Avalon 总线的支持,例如在组件添加向导中向用户自定义组件开放burst 传输,用户可以在组件生成向导中方便地添加burst 接口信号。此外该版本的SOPC Builder 还大幅度地修改了Avalon 总线模块的实现结构,以实现更高的运行速度等。随着Avalon-ST 总线的推出,Quartus II 升级到了7.x 版,新版的SOPC Builder 加入了对Avalon-ST 接口的支持,并对开发工具的一些细节特性做出了新的改进。虽然目前最新的SOPC Builder 7.1 版对Avalon-ST 接口的支持仍不够完善,例如组件生成向导并不支持Avalon-ST 接口的组件的引入,但它已经可以支持Avalon-ST 接口的配置和互联生成。如下图所示,7.1 版的SOPC Builder 已经可以调用已有的Avalon-ST 接口的组件,并方便地对其
进行连接配置:
调用Avalon-ST 接口的组件:
图6 在SOPC Builder 中调用Avalon-ST 组件
对Avalon-ST 接口的组件进行连接配置:
5. 总结
Avalon 总线是一套针对SOPC 设计而指定的完整的高性能片上总线,非常适合SOPC 系统
设计。Altera 公司致力于Avalon 总线的不断完善与升级,不断地推进SOPC 设计技术的进
步,尤其是Avalon-ST 接口与Avalon-MM 接口的并立,充分体现了SOPC 系统控制流与数
据流相分离的设计思路,这在Altera 的SOPC 设计思想中无疑是一次革命性的进步。了解和
掌握这些新特性,将使设计者显著地提高工作效率,更快地设计出性能更优越的系统。
[参考资料]
[1]《Avalon Memory Mapped Interface Specification》2006.10 Altera Corporation
[2]《Avalon Streaming Interface Specification》2006.10 Altera Corporation
[3]《Avalon Interface Specification Reference Manual》2004.9 Altera Corporation
[4]《Avalon Bus Specification Reference Manual》2003.7 Altera Corporation
[5]《Quartus II Version 7.1 HandBook》Volume 4:SOPC Builder 2007.5 Altera Corporation
[6] 夏宇闻 《Verilog 数字设计教程》北京航空航天大学出版社 2003
__