Avalon总线规范参考手册(Avalon从端口传输与流模式从端口传输部分)Avalon总线是一种将片上处理器和外设连接成片上可编程系统(SOPC)的一种简单总线结构。Avalon总线是一种接口方式,它规定了主从设备之间的接口方式及其通信时序。Avalon总线的设计目的在于:■简便:提供了简单易学的协议;■优化总线逻辑的资源利用:节约了可编程器件(PLD)内部的逻辑单元(LE);■同步操作:将PLD上的其他用户逻辑很好的集成在一起,从而避免了复杂的时序分析;基本的Avalon总线事务可以在主﹑从设备之间传送一个字节,半字或字(8,16或32位)。当一次事务处理完成,总线可以迅速的在下一个时钟到来的时候在相同的主从设备之间或其他的主从设备间开始新的事务。Avalon总线也支持一些高级功能,如“延迟型(latency-aware)外设”,“流(streaming)外设”及多总线主设备。这些高级的功能使其允许在一个总线事务中进行外设间的多数据单元的传输。Avalon总线支持多个总线主设备。多主设备的结构为SOPC系统及高带宽外设提供了很大程度上的稳定性。例如,一个主外设可以进行直接存储器访问(DMA),而不需要处理器在数据传输路径上从外设将数据读入存储器。Avalon总线上,主设备和从设备之间的相互作用是基于一种被称为“从设备(slave-side)仲裁”的技术。从设备仲裁决定了当多主设备在同一时刻尝试连接同一个从设备的时候,哪个主设备获得从设备控制权。从设备仲裁具有两个优势:1.仲裁细节内嵌于Avalon总线内部。所以,主设备和从设备的接口具有一致性,不考虑总线上的主设备和从设备的数量。在每一个和Avalon总线相连接的主设备看来,它都是总线上唯一的主设备。2.多个主设备可以同时完成总线事务,就像他们并不是在同一个总线周期连接到同一个从设备一样。Avalon总线的设计是为了配合片上可编程系统(SOPC)的。它是一种由PLD内部逻辑和布线资源的主动片上总线结构。Avalon结构的一些原则如下:1.与外设的接口同步于Avalon时钟。所以,没有复杂的,异步的握手/应答模式。Avalon总线(及整个系统)的性能可以通过使用标准的同步时序分析技术来实现测量。2.所有的信号都是有效“低”和“高”,这样便于总线操作的立即转换。位于Avalon内部的多路复用器(不是三态缓冲器)来决定哪个信号驱动哪个外设。3.地址,数据和控制信号使用分离的,专用端口,这样简化了外设的设计。外设不需要对地址和数据的总线周期进行解码,也不需要在非使能的时候禁止输出。功能简介Avalon也包括很多的功能和约定来支持SOPCBuilder软件自动产生的系统﹑总线和外设:高于4G的地址空间-存储器和外设可以被映射为32位地址空间中的任何地址。同步接口-所有的Avalon信号都被Avalon总线时钟同步。这样简化了Avalon总线的相关时序行为并便于高速外设的集成。分离的地址,数据和控制线路-分离的,专用的地址和数据路径更便于与用户逻辑相连接。外设不需要对数据和地址周期进行译码。内置地址译码器-Avalon总线自动的为所有外设产生片选(ChipSelect)信号,大大的简化了Avalon外设的设计。多主设备总线结构-在Avalon总线上可以存在多个主外设。Avalon总线自动产生仲裁逻辑。基于向导式的配置-方便使用的图形化向导引导用户完成对Avalon总线的配置(增加外设,确定主/从关系,定义存储器映射)。Avalon总线结构的自动产生是由用户在向导界面的输入来决定的。动态总线容量-Avalon总线自动处理数据位宽不匹配的外设间传送数据的细节,便于在多种不同宽度的设备间接口。名词及概念许多与SOPC相关的名词和概念都完全是新的,他们和传统的片外总线结构有着本质的不同。设计者需要懂得这点,以便可以理解Avalon总线规范。下面的名次及概念构成了一个理论化的框架,而Avalon总线规范就是建立在这一框架的基础上的。它们贯穿于整个文档。总线周期总线周期被定义为Avalon主时钟的相邻上升沿之间的时间间隔,它是总线时钟周期的基本单元。总线信号时序参照于总线周期时钟。总线传输Avalon总线的一次传输是对数据的一次读/写操作,它可能持续一个或多个总线周期。Avalon总线所支持的传输位宽为:一个字节(8位),半个字(16位)或一个字(32位)。流传输流传输为“流主设备”和“流从设备”之间的连续性数据传输建立一个开放式的管道。带有延迟的读传输有些同步设备在刚刚开始传输的时候,需要延迟几个时钟周期才能够完成其第一次读数据的过程,而在之后的传输过程中就可以每一个周期返回一个数据。带有延迟的读传输可以增加这些同步设备的带宽利用率。延迟性传输允许一个主设备发出读请求后,转而执行另一个无关任务,过一段时间再接收数据。尽管之前的数据还没有接受到,这个无关的任务也可以发出另一次读请求。这有利于进行连续标准地址的存取的指令存取操作和DMA传输。这样,CPU和DMA主设备可以预读取其需要的数据,所以这使得同步存储器保持活跃状态,并减少了平均存储延时。SOPCBuilder软件及Avalon总线的产生SOPCBuilder是Altera开发的一款系统生成和集成工具。SOPCBuilder所产生的片上电路系统模块包括Avalon总线、主外设和从外设。SOPCBuilder提供了图形化的用户接口,应用这种接口可以实现向系统模块中添加主、从外设,配置外设及配置Avalon总线将外设连接起来。这样,SOPCBuilder自动的创建并连接HDL模块,便可以实现用户PLD设计的每一个部分。系统模块考虑在可编程芯片上实现用户自定义系统的结构,其中一部分是由SOPCBuilder自动产生的。在AlteraPLD上实现的完整系统如图1所示。出于本文的目的,系统模块的一些部分是由SOPCBuilder自动产生的。系统模块应该包括最少一个Avalon主外设和一个Avalon从外设,例如UART,定时器或者PIO。系统模块的外部逻辑可以包含用户Avalon外设及其他的和系统模块不相关的用户逻辑。系统模块必须与设计者的PLD设计连接起来。系统模块的端口依赖于其所包括的外设及在SOPCBuilder中进行的设置,并随其变化。这些端口包括直接到Avalon总线的接口及在系统模块中的用户自定义的和外设相连的接口。Avalon总线模块AlteraPLD上集成用户逻辑的系统模块Avalon总线模块是任何一个系统模块的“脊梁”。它是SOPC设计中外设通信的主要路径。Avalon总线模块是所有的控制、数据、地址信号及控制逻辑的总和,是其将外设连接起来并构成了系统模块。Avalon总线模块实现了可配置的总线结构,其可以为设计者外设之间的相互连接而改变。Avalon总线模块是由SOPCBuilder自动产生的,所以设计师并不用亲自将总线和外设连接起来。Avalon总线模块基本上不会作为分离的单元而单独使用,因为系统设计者总是利用SOPCBuilder将处理器和其他Avalon外设自动地集成于一个系统模块之中。设计者对Avalon总线的注意力通常限于与用户Avalon外设相连接地具体的端口上。Avalon总线模块(一条Avalon总线)是一个主动的逻辑单元,它取代了PCB板上的被动的,金属总线。(见图2)这就是说,Avalon总线模块的端口可以被看作是所有连接到被动总线的引脚连接。本手册只是定义了包含于Avalon总线模块接口中的端口,逻辑行为和信号顺序,而没有提及物理总线的电气或物理的性能。图2.Avalon总线模块框图-范例系统Avalon总线模块为连接到总线的Avalon外设提供了以下的服务:■数据通道多路转换——Avalon总线模块的多路复用器从被选择的从外设向相关主外设传输数据。■地址译码——地址译码逻辑为每一个外设提供片选信号。这样,单独的外设不需要对地址线译码以产生片选信号,从而简化了外设的设计。■产生等待状态(Wait-State)——等待状态的产生拓展了一个或多个周期的总线传输,这有利于满足某些特殊的同步外设的需要。当从外设无法在一个时钟周期内应答的时候,产生的等待状态可以使主外设进入等待状态。在读使能及写使能信号需要一定的建立时间/保持时间要求的时候也可以产生等待状态。■动态总线宽度——动态总线宽度隐藏了窄带宽外设与较宽的Avalon总线(或者Avalon总线与更高带宽的外设)相接口的细节问题。举例来说,一个32位的主设备从一个16位的存储器中读数据的时候,动态总线宽度可以自动的对16位的存储器进行两次读操作,从而传输32位的数据。这便减少了主设备的逻辑及软件的复杂程度,因为主设备不需要关心外设的物理特性。■中断优先级(Interrupt-Priority)分配——当一个或者多个从外设产生中断的时候,Avalon总线模块根据相应的中断请求号(IRQ)来判定中断请求。■延迟传输(LatentTransfer)能力——在主、从设备之间进行带有延迟传输的逻辑包含于Avalon总线模块的内部。■流式读写(StreamingReadandWrite)能力——在主、从设备之间进行流传输使能的逻辑包含于Avalon总线模块的内部。Avalon外设连接于Avalon总线的Avalon外设是逻辑器件——无论片上还是片外的——它们进行着某种系统级的任务,并通过Avalon总线与其他的系统部件相通信。外设是模块化的系统部件,依赖于系统的需要,可以在设计的时候增加或者移除。Avalon外设可以是存储器、处理器,也可以是传统的外设器件,如UART,PIO,定时器或总线桥。任何的用户逻辑都可以成为Avalon外设,只要它满足本文所述的提供与Avalon总线接口的地址、数据及控制信号接口。连接于Avalon总线的外设将被分配专用的端口。除了连接于Avalon总线的地址、数据及控制端口之外用户也可以自行定制端口。这些于用户逻辑相连接的信号扩展了系统模块的应用。Avalon外设要么是主外设,要么是从外设。主外设可以于Avalon上开启总线传输,其至少有一个连接于Avalon总线模块的主端口。主外设也可以有一个从端口其允许此设备接受其他连接于Avalon总线的主设备开启的总线传输。而从设备只能响应Avalon总线传输,而不能够开启总线传输。像存储器,UART这样的从设备,通常只有与Avalon总线模块相连接的一个从端口。在SOPC环境中,区分以下Avalon总线主设备/从设备的外设类型是十分重要的。系统模块内部外设如果SOPCBuilder在外设库中找到了一个外设,或者设计者指定了一个用户外设的设计文件,SOPCBuilder将自动的将此外设与Avalon总线模块相连接。这种外设是指系统模块之内的外设,也就是被认为是系统模块的一个部分。与Avalon总线相连接的地址、数据及控制端口是向用户隐藏的。外设中任何附加的非Avalon端口将作为系统模块的端口显示于外。这些端口可能与物理管脚直接相连或者可能与片上的其他模块相连。系统模块外部外设Avalon总线外设也可以存在于系统模块之外。设计者选择将模块置于系统模块之外可能有以下几个原因:■外设在物理上位于PLD器件之外■外设需要某些粘连逻辑(gluelogic)使其与Avalon总线信号连接■在系统模块产生的时候,外设的设计还没有完成在这些情况下,相应的Avalon总线模块信号作为系统模块的端口现于外部(及指定的外设)。主端口(MasterPort)主端口是主外设上用于开启Avalon总线传输的一系列端口的集合。主端口与Avalon总线模块直接相连。实际上,一个主外设可能有一个或多个主端口及一个从端口。这些主端口及从端口的相互依赖关系是由对外设进行设计时决定的。但是,这些主、从端口上的单独的总线传输应该总是遵循本文所述。本文中所提及的所有主设备传输都是指单独的主端口的Avalon总线传输。从端口(SlavePort)从端口是指在位于某一外设上的,从另一外设主端口接受Avalon总线传输的一系列端口的集合。