Avalon总线规范中文版Word格式文档下载.docx
《Avalon总线规范中文版Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《Avalon总线规范中文版Word格式文档下载.docx(25页珍藏版)》请在冰豆网上搜索。
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总线的一次传输是对数据的一次读/写操作,它可能持续一个或多个总线周期。
总线所支持的传输位宽为:
一个字节(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总线传输的一系列端口的集合。
从端口也直接与Avalon总线模块相连接。
主外设也可以有一个从端口,通过这个从端口可以使其接受Avalon总线上其他主设备的传输。
本文所提及的所有从设备传输都是指单独的从端口的Avalon总线传输。
主-从端口对(Master-SlavePair)
“主-从端口对”是指通过Avalon总线模块相连接的一个主端口和一个从端口构成的组合。
从结构上讲,这些主、从端口与Avalon总线模块上的相应端口相连接。
主端口的控制及数据信号可以有效的通过Avalon总线模块与从端口相互作用。
主、从端口之间的连接(这就构成了主-从端口对)是在SOPCBuilder中所确定的。
PTF文件、SOPCBuilder参数及开关
Avalon总线及外设的配置可以利用基于向导的SOPCBuilder图形用户接口(GUI)来完成。
通过这个GUI,用户可以设定不同的参数和开关,然后据此产生系统的PTF文件。
PTF文件是一个文本化的文件,它定义了:
■定义Avalon总线模块结构、功能的参数
■定义每个外设定义结构、功能的参数
■每个外设的主、从角色
■外设端口(如读使能、写使能、写数据等)
■通往多主端口的从端口的仲裁机制
然后,PTF文件通过HDL产生器创建了系统模块的寄存器传输级(RTL)描述。
更多的关于系统PTF文件的信息请查看“SOPCBuilder数据文档”(SOPCBuilderDataSheet)和“SOPCBuilderPTF文件参考手册”(SOPCBuilderPTFFileReferenceManual)__
1.3Avalon总线传输
Avalon总线规范定义了主端口和从端口之间通过Avalon总线模块传输数据所需要的信号和时序。
构成Avalon总线模块和外设之间接口的信号随着传输模式的不同而不同。
首先,主传输与从传输的接口不同,使用主端口与从端口的信号定义不同。
此外,通过系统PTF文件的设置,所需信号的确切类型与数量也是可变的。
Avalon总线规范提供了各种选项来剪裁总线信号和时序,以满足不同类型外设的需要。
Avalon总线基本传输模式在一个主从端口对之间每次只传送一个单元的数据。
可以通过插入等待周期来延长一次总线传输的时间,以满足低速外设的需要。
流传输模式以及支持并发多主端口传输的能力满足高带宽外设的需要。
所有Avalon从传输的信号时序都源自从端口的基本传输模式。
同样,主端口的基本传输模式是所有Avalon主传输的基础。
1.3.1主端口接口与从端口接口
当讨论Avalon总线传输时,必须注意讨论的是总线的哪一边,是主端口接口还是从端口接口。
由主端口输出的信号与输入到目标外设的从端口的对应信号可能会有较大的差别。
从端口的信号活动总是主外设发起总线传输的结果。
但是,实际的从端口输入信号并非直接来自主端口。
Avalon总线模块传递来自主端口的信号,并对信号进行裁剪,以满足从外设的需要。
由于以上原因,对Avalon总线传输的介绍将分为主传输类型和从传输类型两个部分。
大多数用户只关心从传输,因为他们设计的用户自定义外设一般都是从外设。
边时,用户只需考虑Avalon总线模块和用户自定义外设之间的信号。
只有当用户创建主外设时才涉及到主传输。
1.3.2Avalon总线时序
Avalon总线是一个同步总线接口,由一个Avalon总线主时钟定时,所有总线传输的信号都与Avalon总线时钟同步。
同步总线接口并不意味着所有的Avalon总线信号都是锁存的。
比如,Avalon的chipselect信号便是由组合逻辑产生的,其输入是同步于Avalon总线时钟的寄存器的输出。
因此,外设不能使用Avalon信号的边沿,因为Avalon信号在达到稳定前会变化多次。
就像所有同步设计一样,Avalon总线外设只能在时钟上升沿对稳定的信号作出响应,且必须在时钟上升沿输出稳定的信号。
Avalon总线模块也可以连接异步外设,例如片外异步存储器。
但设计时需要考虑一些额外因素:
由于Avalon总线模块的同步操作,Avalon信号只以Avalon总线时钟周期为间隔变化。
此外,如果异步外设的输出直接连接到Avalon总线模块,用户必须保证输出信号在时钟上升之前达到稳定。
Avalon总线规范并不定义在时钟上升沿之间信号是如何变化的。
信号的变化由Avalon总线时钟触发,信号只要在捕获时钟上升沿之前达到稳定就可以了,因此,总线规范中的Avalon总线时序图中不会描绘精确的时间信息。
类似地,Avalon总线没有规定固有的最高性能。
系统模块在特定的器件上综合布线之后,用户必须对系统模块进行标准的时序分析,以确定Avalon总线传输达到的最高速度。
1.3.3Avalon总线信号
由于Avalon总线是一个由HDL文件综合而来,所以在连接Avalon总线模块和Avalon外设时需要一些特别的考虑。
对于传统的片外总线结构,所有外设都共享一组固定的.预先设计的金属线路,而Avalon总线与此不同:
SOPCBuilder必须准确地了解每个外设提供了哪些Avalon端口,以便连接外设与Avalon总线模块。
它还需要了解每个端口的名称和类型,这些信息定义在系统PTF文件中。
Avalon总线规范不要求Avalon外设必须包含哪些信号。
它只定义了外设可以包含的各种信号类型(例如地址.数据.时钟等)。
外设的每一个信号都要指定一个有效的Avalon信号类型,以确定该信号的作用,一个信号也可以是用户自定义的。
在这种情况下,SOPCBuilder不将该端口与Avalon总线模块连接。
Avalon信号类型首先分为主端口信号和从端口信号两类。
因而,外设使用的信号类型首先由端口的主从角色决定。
每个独立的主端口或从端口使用的信号类型由外设的设计决定。
例如,设计一个只有输出的PIO从外设只需要定义用于写的信号,而不需要定义用于读的信号。
尽管中断请求输出是从端口允许的信号类型,但也不是必须使用。
Avalon总线规范不规定Avalon外设信号的命名规则。
不同信号类型的作用是预先定义的,而信号的名称则是由外设决定。
信号可以按照它的信号类型来命名,也可以遵照系统级的命名规范采用不同的名称。
下面章节中讨论的Avalon总线传输时会涉及到一些Avalon信号,例如readdata信号和irq信号。
在这里信号类型的名称作为信号名称,但外设信号的实际名称可以与此不同。
作为一个例子,表1.1列举了部分Avalon从端口可用的信号类型。
信号的方向是从外设的角度定义的。
例如时钟信号clk(方向为in)对于从外设来说是输入信号,而对于Avalon总线模块来说是输入信号。
表1.1中例举的信号类型都是高电平有效。
Avalon总线还提供了各个信号类型的反向形式。
在
PTF声明中,在信号类型名称加”_n”,便可将对应的端口声明为低电平有效。
这对许多使用低电平有效的片外外设非常有用。
1.3.4并发多主端口的Avalon总线需要考虑的事项
Avalon总线允许多个端口连接到Avalon总线模块。
而且实现Avalon总线的并发多主端口功能时,Avalon总线模块不需要额外的特殊信号。
当多个主外设试图同时访问同一个外设时,Avalon总线模块内部的从端口仲裁逻辑会被用来解决冲突。
仲裁机制对于Avalon总线外设完全是透明的。
因而,不论是否使用了仲裁,应用于主端口和从端口的Avalon总线传输协议是相同的。
换句话说,从端口不会意识到有多个主外设同时请求总线传输。
类似地,被仲裁逻辑强制等待的主外设也不会意识到另一个获胜的主外设的存在。
主端口只是简单地发现它的等待请求信号被置为有效,并一直等待,直到目标外设准备好处理总线传输。
将仲裁的细节隐藏在Avalon总线模块内部极大简化了外设的设计,任何Avalon外设在单主端口和多主端口结构中都可以使
用。
1.4Avalon从端口传输
1.4.1从传输的Avalon总线信号
表2列举了外设的从端口与Avalon总线间接口的信号类型。
信号的方向是以外设的角度定义的。
外设提供的信号由外设的设计和PTF文件中的信号定义决定,不需要提供全部的信号类型。
上述信号如果不加说明都是高电平有效,此外,Avalon总线也提供上述信号的低电平有效版本,在信号名称后加”_n”表示低电平有效,如:
read信号为高电平有效,而read_n为低电平有效。
1.4.2Avalon总线上的从端口读传输
1.4.2.1基本从端口传输模式
基本从端口传输模式是所有Avalon从端口传输的基础。
所有其它的从端口传输使用的信号都包含了基本从端口传输的信号,并扩展了基本从端口操作时序。
基本从端口传输由Avalon总线模块发起,然后从端口向Avalon总线模块传输一个单元的数据。
基本从端口读传输没有延迟。
例4.1显示了一个基本从端口读传输的例子。
在Avalon基本读传输中,总线传输开始于一个时钟上升沿,并在下一个时钟上升沿结束,不插入等待周期。
由于传输在一个时钟周期内完成,目标外设必须能够立即.异步向Avalon总线模块输出相应地址的内容。
在clk的第一个上升沿,Avalon总线向目标外设传递address、byteenable_n和read_n信号。
Avalon总线模块内部对address进行译码,产生片选并驱动从端口的chipselect信号。
一旦chipselect信号有效,从端口在数据有效时应立即驱动readdata输出。
最后,Avalon总线模块在下一个时钟上升沿捕获readdata。
例4.1基本从端口读传输
时序说明:
(A)第一个总线周期开始于clk上升沿;
(B)Address和read_n信号有效;
(C)Avalon总线对address译码,输出有效的chipselect;
(D)片选有效后,从端口在第一个总线周期内必须返回有效数据;
(E)Avalon总线在下一个clk上升沿捕获readdata,读传输到此结束。
另一个总线传输可以在下一个总线周期开始。
无等待周期的基本读传输只适用于完全异步的外设。
目标外设必须在外设被选中或地址变化时立即向Avalon总线提供数据。
为使传输正常工作,readdata的输出必须在一下个时钟上升沿有效且稳定。
锁存输入或输出端口的同步外设不能使用无等待周期的基本从端口读传输。
大部分片上外设都采用同步接口,因此至少需要一个时钟周期来捕获数据。
在读传输中,需要至少一个等待周期,除非该外设是具有延迟的。
外设的从端口还可以使用字节使能信号byteenable_n,对byteenable_n的解释是由外设决定的。
在最简单的情况下,从端口可以忽略byteenable_n,每当read_n有效时总是驱动所有的字节段。
Avalon总线模块在每次读传输中捕获readdata的全部位宽度。
如果在读传输中某个字节未使能,其返回到A