Avalon 总线是一种将片上处理器和外设连接成片上可编程系统(SOPC)的一种简单总线结构。Avalon总线是一种接口方式,它规定了主从设备之间的接口方式及其通信时序。
Avalon 总线的设计目的在于:
■ 简便:提供了简单易学的协议;
■ 优化总线逻辑的资源利用:节约了可编程器件(PLD)内部的逻辑单元(LE);
■ 同步操作:将PLD 上的其他用户逻辑很好的集成在一起,从而避免了复杂的时序分析;
功 能 简 介
Avalon 也包括很多的功能和约定来支持SOPC Builder 软件自动产生的系统﹑总线和外设:
高于4G 的地址空间-存储器和外设可以被映射为32 位地址空间中的任何地址。同步接口-所有的Avalon信号都被Avalon 总线时钟同步。这样简化了Avalon 总线的相关时序行为并便于高速外设的集成。分离的地址,数据和控制线路-分离的,专用的地址和数据路径更便于与用户逻辑相连接。外设不需要对数据和地址周期进行译码。内置地址译码器-Avalon 总线自动的为所有外设产生片选(Chip Select)信号,大大的简化了Avalon 外设的设计。
多主设备总线结构-在Avalon 总线上可以存在多个主外设。Avalon 总线自动产生仲裁逻辑。基于向导式的配置-方便使用的图形化向导引导用户完成对Avalon 总线的配置(增加外设,确定主/从关系,定义存储器映射)。
Avalon 总线结构的自动产生是由用户在向导界面的输入来决定的。动态总线容量-Avalon 总线自动处理数据位宽不匹配的外设间传送数据的细节,便于在多种不同宽度的设备间接口。
系统模块
考虑在可编程芯片上实现用户自定义系统的结构,其中一部分是由SOPC Builder 自动产生的。在Altera PLD 上实现的完整系统如图1 所示。出于本文的目的,系统模块的一些部分是由SOPC Builder 自动产生的。系统模块应该包括最少一个Avalon 主外设和一个Avalon 从外设,例如UART,定时器或者PIO。系统模块的外部逻辑可以包含用户Avalon 外设及其他的和系统模块不相关的用户逻辑。系统模块必须与设计者的PLD 设计连接起来 。系统模块的端口依赖于其所包括的外设及在SOPCBuilder 中进行的设置,并随其变化。这些端口包括直接到Avalon 总线的接口及在系统模块中的用户自定义的和外设相连的接口。
Avalon 总线模块
图1. Altera PLD 上集成用户逻辑的系统模块
Avalon 总线模块是任何一个系统模块的“脊梁”。它是SOPC 设计中外设通信的主要路径。Avalon 总线模块是所有的控制、数据、地址信号及控制逻辑的总和,是其将外设连接起来并构成了系统模块。Avalon总线模块实现了可配置的总线结构,其可以为设计者外设之间的相互连接而改变。Avalon 总线模块是由SOPC Builder 自动产生的,所以设计师并不用亲自将总线和外设连接起来。Avalon总线模块基本上不会作为分离的单元而单独使用,因为系统设计者总是利用SOPC Builder 将处理器和其他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)来判定中断请求。
■ 延迟传输(Latent Transfer)能力——在主、从设备之间进行带有延迟传输的逻辑包含于Avalon总线模块的内部。
■ 流式读写(Streaming Read and Write)能力——在主、从设备之间进行流传输使能的逻辑包含于Avalon 总线模块的内部。
Avalon 外设
连接于Avalon 总线的Avalon 外设是逻辑器件——无论片上还是片外的——它们进行着某种系统级的任务,并通过Avalon 总线与其他的系统部件相通信。外设是模块化的系统部件,依赖于系统的需要,可以在设计的时候增加或者移除。Avalon 外设可以是存储器、处理器,也可以是传统的外设器件,如UART,PIO,定时器或总线桥。任何的用户逻辑都可以成为Avalon 外设,只要它满足本文所述的提供与Avalon 总线接口的地址、数据及控制信号接口。连接于Avalon 总线的外设将被分配专用的端口。除了连接于Avalon 总线的地址、数据及控制端口之外用户也可以自行定制端口。这些于用户逻辑相连接的信号扩展了系统模块的应用。Avalon 外设要么是主外设,要么是从外设。主外设可以于Avalon 上开启总线传输,其至少有一个连接于Avalon 总线模块的主端口。主外设也可以有一个从端口其允许此设备接受其他连接于Avalon 总线的主设备开启的总线传输。而从设备只能响应Avalon 总线传输,而不能够开启总线传输。像存储器,UART 这样的从设备,通常只有与Avalon总线模块相连接的一个从端口。在SOPC 环境中,,区分以下Avalon 总线主设备/从设备的外设类型是十分重要的。
系统模块内部外设
如果SOPC Builder 在外设库中找到了一个外设,或者设计者指定了一个用户外设的设计文件,SOPC Builder 将自动的将此外设与Avalon 总线模块相连接。这种外设是指系统模块之内的外设,也就是被认为是系统模块的一个部分。与Avalon 总线相连接的地址、数据及控制端口是向用户隐藏的。外设中任何附加的非Avalon 端口将作为系统模块的端口显示于外。这些端口可能与物理管脚直接相连或者可能与片上的其他模块相连。
系统模块外部外设
Avalon 总线外设也可以存在于系统模块之外。设计者选择将模块置于系统模块之外可
能有以下几个原因:
■ 外设在物理上位于PLD 器件之外
■ 外设需要某些粘连逻辑(glue logic)使其与Avalon 总线信号连接
■ 在系统模块产生的时候,外设的设计还没有完成
在这些情况下,相应的Avalon 总线模块信号作为系统模块的端口现于外部(及指定的外设)。
主端口(Master Port)
主端口是主外设上用于开启Avalon 总线传输的一系列端口的集合。主端口于Avalon 总线模块直接相连。实际上,一个主外设可能有一个或多个主端口及一个从端口。这些主端口及从端口的相互依赖关系是由对外设进行设计时决定的。但是,这些主、从端口上的单独的总线传输应该总是遵循本文所述。
本文中所提及的所有主设备传输都是指单独的主端口的Avalon 总线传输。
从端口(Slave Port)
从端口是指在位于某一外设上的,从另一外设主端口接受Avalon 总线传输的一系列端口的集合。从端口也直接与Avalon 总线模块相连接。主外设也可以有一个从端口,通过这个从端口可以使其接受Avalon 总线上其他主设备的传输。本文所提及的所有从设备传输都是指单独的从端口的Avalon 总线传输。
主-从端口对(Master-Slave Pair)
“主-从端口对”是指通过Avalon 总线模块相连接的一个主端口和一个从端口构成的组合。从结构上讲,这些主、从端口与Avalon 总线模块上的相应端口相连接。主端口的控制及数据信号可以有效的通过Avalon 总线模块与从端口相互作用。主、从端口之间的连接(这就构成了主-从端口对)是在SOPC Builder 中所确定的。
PTF 文件、SOPC Builder 参数及开关
Avalon 总线及外设的配置可以利用基于向导的SOPC Builder 图形用户接口(GUI)来完成。通过这个GUI,用户可以设定不同的参数和开关,然后据此产生系统的PTF 文件。PTF 文件是一个文本化的文件,它定义了:
■ 定义Avalon 总线模块结构、功能的参数
■ 定义每个外设定义结构、功能的参数
■ 每个外设的主、从角色
■ 外设端口(如读使能、写使能、写数据等)
■ 通往多主端口的从端口的仲裁机制
然后,PTF 文件通过HDL 产生器创建了系统模块的寄存器传输级(RTL)描述。
avalon总线理解整理如下:
1,一个基于Avalon接口的系统会包含很多功能模块,这些功能模块就是Avalon存储器映射外设,通常简称Avalon外设。所谓存储器映射外设是指外设和存储器使用相同的总线来寻址,并且CPU使用访问存储器的指令也用来访问I/O设备。为了能够使用I/O设备,CPU的地址空间必须为I/O设备保留地址。
2,Avalon外设分为主外设和从外设,能够在Avalon总线上发起总线传输的外设是主外设,从外设只能响应Avalon总线传输,而不能发起总线传输。主外设至少拥有一个连接在Avalon交换架构上的主端口,主外设也可以拥有从端口,使得该外设也可以响应总线上其它主外设发起的总线传输。
3,Avalon交换架构是一种可自动调整的结构,随着设计者不同设计而做出最优的调整。可以看到外设和存储器可以拥有不同的数据宽度,并且这些外设可以工作在不同的时钟频率。Avalon交换架构支持多个主外设,允许多个主外设同时在不同的从外设进行通信,增加了系统的带宽。这些功能的实现都是靠Avalon交换架构中的地址译码、信号复用、仲裁、地址对齐等逻辑实现的。
4,Avalon接口定义了一组信号类型(片选、读使能、写使能、地址、数据等),用于描述主/从外设上基于地址的读写接口。Avalon外设只使用和其内核逻辑进行接口的必需的信号,而省去其他会增加不必要的开销的信号。
5,Avalon的信号类型为其它的总线接口提供了一个超集,例如大多数分离的SRAM、ROM和Flash芯片上的引脚都能映射成Avalon信号类型,样就能使Avalon系统直接与这些芯片相连接。类似地,大多数Wishbone的接口信号也可以映射为Avalon信号类型,使得在Avalon系统中集成Wishbone的内核非常简单。
6,Avalon的主端口和从端口之间没有直接的连接,主、从端口都连接到Avalon交换架构上,由交换架构来完成信号的传递。在传输过程中,主端口和交换架构之间传递的信号与交换架构和从端口之间传递的信号可能有很大的不同。所以,在讨论Avalon传输的时候,必须区分主从端口。
7,avalon主端口和从端口的信号类型说明
从端口信号1
从端口信号2
主端口信号1
主端口信号2
8,表中的信号类型都是高电平有效。Avalon接口也提供每个信号类型的低电平有效的版本,在信号类型名后添加 _n 来表示。例如irq_n、read_n等。这对和那些低电平有效的片外逻辑相接口时非常有用。
9,Avalon接口规范没有对Avalon外设上的信号指定命名的规则,Avalon外设上的信号的名字可以与信号类型名相同,或者也遵循系统级的命名规则。
10,也能够将片外的异步外设,比如片外存储设备,同系统交换架构相接口,但需要一些设计上的考虑。由于Avalon交换架构的同步操作,Avalon信号只在Avalon接口时钟的时间间隔发生翻转。而且,如果异步的信号直接同Avalon交换架构的输入相连,设计者要确保信号在时钟的上升沿是稳定的。
11,Avalon接口没有固定的或者最高的性能。接口是同步的,并且可以被交换架构提供的任意频率的时钟驱动。最高性能取决于外设的设计和系统的实现。 不同于传统的共享总线实现的规范,Avalon接口没有指定任何的物理和电气特性。
12,一个主从端口对中的主端口和从端口可以有不同的传输属性。Avalon交换架构同主/从端口通信时,使用该端口指定的属性,并且必要时要进行从主端口到从端口的属性转换。这样,Avalon外设可以独立于系统中其它的外设属性进行设计。
13,动态地址对齐指的是具有不同数据的主从端口对之间进行传输时,Avalon交换架构动态管理传输的数据的服务。当主端口使用动态地址对齐方式寻址从端口时,所有从端口的数据在主端口的地址空间连续地按字节对齐。 如果主端口数据宽度比从端口宽,主端口的高位字节对应从端口地址空间的下一个地址。例如,32位的主端口使用动态地址对齐方式从16位的从端口读取数据,Avalon交换架构在从端口这侧执行两次读传输,然后提供32位的从端口数据给主端口。 如果主端口的数据宽度比从端口窄,则Avalon交换架构适当地处理从端口的字节段。在主端口读传输时,Avalon交换架构只提供从端口适当的字节段给主端口。在主端口写传输时,Avalon交换架构在从端口这侧,自动地置byteenable信号有效,将数据写到适当的字节段。
14,动态地址对齐的例子
15,当主端口使用本地地址对齐方式寻址从端口,所有从端口数据和主端口地址边界对齐。 当主端口从一个较窄数据宽度的从端口读取数据,从端口的数据比特位映射到主端口数据的低比特位中去,而主端口的数据高比特位补零。在传输时,高比特位被忽略。 例如,16位的主端口读8位的从端口,readdata信号是0x00XX的形式,这里XX代表有效的数据。主端口不能使用本地地址对齐来访问数据宽度比自己宽的从端口。
评论
查看更多