第4章 Avalon总线规范.ppt
第第4章章 Avalon总线规范总线规范4.1 Avalon总线简介总线简介 Avalon总线由总线由ALTERA公司提出,用于在基于公司提出,用于在基于FPGA的片上系统中连接片内处理器和片内外设的总线的片上系统中连接片内处理器和片内外设的总线结构。结构。连接到连接到Avalon总线的设备分为主从设备,并各总线的设备分为主从设备,并各有其工作模式。有其工作模式。v简单性,易于理解、易于使用。简单性,易于理解、易于使用。v占用资源少,减少对占用资源少,减少对FPGA片内资源的占用。片内资源的占用。v高性能,高性能,Avalon总线可以在每一个总线时钟周期总线可以在每一个总线时钟周期完成一次数据传输。完成一次数据传输。v专用的地址总线、数据总线和控制总线:这样专用的地址总线、数据总线和控制总线:这样Avalon总线模块和片上逻辑之间的接口的得以简化,总线模块和片上逻辑之间的接口的得以简化,Avalon外设不需要识别数据和地址周期。外设不需要识别数据和地址周期。continuev支持高达支持高达1024位的数据宽度,支持不是位的数据宽度,支持不是2的偶数幂的的偶数幂的数据宽度。数据宽度。v支持同步操作,所有支持同步操作,所有Avalon外设的接口与外设的接口与Avalon交交换架构的时钟同步,不需要复杂的握手换架构的时钟同步,不需要复杂的握手/应答机制。应答机制。简化了简化了Avalon接口的时序行为,而且便于集成高速接口的时序行为,而且便于集成高速外设。外设。v支持动态地址对齐,可以处理具有不同数据宽度的支持动态地址对齐,可以处理具有不同数据宽度的外设间的数据传输,外设间的数据传输,Avalon总线的自动地址对齐功总线的自动地址对齐功能将自动解决数据宽度不匹配的问题,不需要设计能将自动解决数据宽度不匹配的问题,不需要设计者的干预。者的干预。vAvalon总线规范是一个开放的标准,用户可以在未总线规范是一个开放的标准,用户可以在未经授权的情况下使用经授权的情况下使用Avalon总线接口来自定义外设。总线接口来自定义外设。Avalon总线结构采用交换式的总线结构。总线结构采用交换式的总线结构。SOPC Builder利用最少的利用最少的FPGA资源,产生新的最佳资源,产生新的最佳Avalon交交换架构。换架构。4.2 Avalon总线基本概念总线基本概念4.2.1 Avalon外设和交换架构外设和交换架构v一个基于一个基于Avalon接口的系统会包含很多功能接口的系统会包含很多功能模块,这些功能模块就是模块,这些功能模块就是Avalon存储器映射存储器映射外设,通常简称外设,通常简称Avalon外设。所谓存储器映外设。所谓存储器映射外设是指外设和存储器使用相同的总线来射外设是指外设和存储器使用相同的总线来寻址,并且寻址,并且CPU使用访问存储器的指令也用使用访问存储器的指令也用来访问来访问I/O设备。为了能够使用设备。为了能够使用I/O设备,设备,CPU的地址空间必须为的地址空间必须为I/O设备保留地址。设备保留地址。vAvalon外设包括存储器,处理器、外设包括存储器,处理器、UART、PIO、定时器和总线桥等。还可以有用户自定、定时器和总线桥等。还可以有用户自定义的义的Avalon外设,用户自定义的外设能称之外设,用户自定义的外设能称之为为Avalon外设,要有连接到外设,要有连接到Avalon结构的结构的Avalon信号。信号。vAvalon外设分为主外设和从外设,能够在外设分为主外设和从外设,能够在Avalon总线上发起总线传输的外设是主外设,总线上发起总线传输的外设是主外设,从外设只能响应从外设只能响应Avalon总线传输,而不能发总线传输,而不能发起总线传输。主外设至少拥有一个连接在起总线传输。主外设至少拥有一个连接在Avalon交换架构上的主端口,主外设也可以交换架构上的主端口,主外设也可以拥有从端口,使得该外设也可以响应总线上其拥有从端口,使得该外设也可以响应总线上其它主外设发起的总线传输。它主外设发起的总线传输。v将将Avalon外设连接起来,构成一个大的系统的片上外设连接起来,构成一个大的系统的片上互连逻辑就是互连逻辑就是Avalon交换架构交换架构。vAvalon交换架构是一种可自动调整的结构,交换架构是一种可自动调整的结构,随着设计者不同设计而做出最优的调整。可以随着设计者不同设计而做出最优的调整。可以看到外设和存储器可以拥有不同的数据宽度,看到外设和存储器可以拥有不同的数据宽度,并且这些外设可以工作在不同的时钟频率。并且这些外设可以工作在不同的时钟频率。Avalon交换架构支持多个主外设,允许多个交换架构支持多个主外设,允许多个主外设同时在不同的从外设进行通信,增加了主外设同时在不同的从外设进行通信,增加了系统的带宽。这些功能的实现都是靠系统的带宽。这些功能的实现都是靠Avalon交换架构中的地址译码、信号复用、仲裁、地交换架构中的地址译码、信号复用、仲裁、地址对齐等逻辑实现的。址对齐等逻辑实现的。v本章重点讨论本章重点讨论Avalon外设和外设和Avalon交换架构交换架构之间的互连,主要研究接口级的行为,不关注之间的互连,主要研究接口级的行为,不关注其内部实现。其内部实现。4.2.2 Avalon信号信号vAvalon接接口口定定义义了了一一组组信信号号类类型型(片片选选、读读使使能能、写写使使能能、地地址址、数数据据等等),用用于于描描述述主主/从从外外设设上上基基于地址的读写接口。于地址的读写接口。vAvalon信信号号的的可可配配置置特特性性是是Avalon接接口口与与传传统统总总线线接接口口的的主主要要区区别别之之一一。Avalon外外设设可可以以使使用用一一小小组组信信号号来来实实现现简简单单的的数数据据传传输输,或或者者使使用用更更多多的的信信号号来来实实现现复复杂杂的的传传输输类类型型。例例如如ROM接接口口只只需需要要地地址址、数数据据和和和和片片信信号号就就可可以以了了,而而高高速速的的存存储储控控制制器可能需要更多的信号来支持流水线的突发传输。器可能需要更多的信号来支持流水线的突发传输。4.2.3 主端口和从端口主端口和从端口vAvalon端口就是完成通信传输的接口所包含的一组端口就是完成通信传输的接口所包含的一组Avalon信号。信号。Avalon端口分为主端口和从端口,主端口可以在端口分为主端口和从端口,主端口可以在Avalon总线上发起数据传输,目标从端口在总线上发起数据传输,目标从端口在Avalon总线上总线上响应主端口发起的数据传输。一个响应主端口发起的数据传输。一个Avalon外设可能有一个或外设可能有一个或多个主端口,一个或多个从端口,也可能既有多个主端口,多个主端口,一个或多个从端口,也可能既有多个主端口,又有多个从端口。又有多个从端口。vAvalon的主端口和从端口之间没有直接的连接,主、从端口的主端口和从端口之间没有直接的连接,主、从端口都连接到都连接到Avalon交换架构上,由交换架构来完成信号的传递交换架构上,由交换架构来完成信号的传递。在传输过程中,主端口和交换架构之间传递的信号与交换。在传输过程中,主端口和交换架构之间传递的信号与交换架构和从端口之间传递的信号可能有很大的不同。所以,在架构和从端口之间传递的信号可能有很大的不同。所以,在讨论讨论Avalon传输的时候,必须区分主从端口。传输的时候,必须区分主从端口。4.2.4 传输传输v传输是指在传输是指在Avalon端口和端口和Avalon交换架构之间的交换架构之间的数据单元的读数据单元的读/写操作。写操作。Avalon传输一次可以传输传输一次可以传输高达高达1024位的数据,需要一个或多个时钟周期来完位的数据,需要一个或多个时钟周期来完成。在一次传输完成之后,成。在一次传输完成之后,Avalon端口在下一个时端口在下一个时钟周期可以进行下一次的传输。钟周期可以进行下一次的传输。vAvalon的传输分成两个基本的类别:主传输和从传的传输分成两个基本的类别:主传输和从传输。输。Avalon主端口发起对交换架构的主传输。主端口发起对交换架构的主传输。Avalon从端口响应来自交换架构的传输请求。传输从端口响应来自交换架构的传输请求。传输是和端口相关的:主端口只能执行主传输,从端口是和端口相关的:主端口只能执行主传输,从端口只能执行从传输。只能执行从传输。4.2.5 主从端口对主从端口对v主从端口对是指在数据传输过程中,通过主从端口对是指在数据传输过程中,通过Avalon交换架构相连接起来的主端口和从端交换架构相连接起来的主端口和从端口。口。v在传输过程中,主端口的控制和数据信号通在传输过程中,主端口的控制和数据信号通过过Avalon交换架构和从端口相交互。交换架构和从端口相交互。4.2.6 周期周期v周期是时钟的基本单位,定义为特定端口的周期是时钟的基本单位,定义为特定端口的时钟信号的一个上升沿到下一个上升沿之间时钟信号的一个上升沿到下一个上升沿之间的时间。完成一次传输最少要一个时钟周期。的时间。完成一次传输最少要一个时钟周期。4.3 Avalon信号信号vAvalon接口规范定义了接口规范定义了Avalon外设使用的信号类型,如地外设使用的信号类型,如地址、数据、片选信号等等。根据外设逻辑接口的需求,址、数据、片选信号等等。根据外设逻辑接口的需求,Avalon外设可以使用任何类型的外设可以使用任何类型的Avalon信号。信号。vAvalon接口规范还定义了每种信号类型的行为。接口规范还定义了每种信号类型的行为。Avalon端端口上的信号和信号类型是一一对应的,口上的信号和信号类型是一一对应的,Avalon主主/从端口的从端口的每一个信号必定属于某类的每一个信号必定属于某类的Avalon信号类型。一个信号类型。一个Avalon端口每一种信号类型只能有一个信号实例。端口每一种信号类型只能有一个信号实例。v根据端口的属性,可以将根据端口的属性,可以将Avalon信号类型分为主信号或者从信号类型分为主信号或者从信号。有些信号在主端口和从端口的接口上都存在,但是信信号。有些信号在主端口和从端口的接口上都存在,但是信号的行为是不相同的。号的行为是不相同的。4.3.1 信号类型的完整列表信号类型的完整列表每一类型的信号的说明包括:每一类型的信号的说明包括:v信号类型;信号类型;v信号可能的宽度;信号可能的宽度;v信号的方向(从外设的角度看);信号的方向(从外设的角度看);v该信号在端口上是否必不可少(必需性);该信号在端口上是否必不可少(必需性);v各种类型的信号的功能和特殊的使用要求的简单描各种类型的信号的功能和特殊的使用要求的简单描述述。4.3 Avalon信号信号Avalon从端口信号类型从端口信号类型信号类型信号宽度方向必需功能及使用描述基本信号类型clk1InNoAvalon从端口的同步时钟,所有的信号必须与clk同步,异步外设可以忽略clk信号。chipselect1InNoAvalon从端口的片选信号。在chipselect信号无效的情况下,Avalon从端口忽略所有其它的信号。address132InNo连接Avalon交换架构和从端口的地址线,指定了从外设地址空间的一个字的地址偏移。read1InNo读从端口的请求信号。当从端口不输出数据时不需要使用该信号,如果使用了该信号,则readdata或data信号也必须使用。readdata8,16,32,64,128,256,512,1024 OutNo读传输时,输出到Avalon交换架构的数据线。当从端口不输出数据时,不需要该信号。如果使用了该信号,则data信号不能使用。write1InNo写从端口的请求信号。当从端口不从主端口接收数据,不需要该信号。如果使用了该信号,writedata或data信号必须使用,writebyteenable信号不能使用。writedata8,16,32,64,128,256,512,1024 InNo写传输时,来自Avalon交换架构的数据线。当从端口不接收数据时,不需要该信号。如果使用了该信号,write或writebyteenable信号必须使用,data信号不能使用。byteenable1,2,4,6,8,16,32,64,128InNo字节使能信号。在对宽度大于8位的存储器进行写传输时,该信号用于选择特定的字节段。如果使用了该信号,writedata信号页必须要使用,writebyteenable信号不能使用。信号类型信号宽度方向必需功能及使用描述writebyteenable2,4,6,8,16,32,64,128InNo相当于byteenable信号和write信号的逻辑与操作,如果使用了该信号,writedata信号必须使用,write和byteenable信号不能使用。begintransfer1InNo在每次传输的第一个周期内有效。使用用法取决于具体的外设。等待周期信号waitrequest1OutNo如果从端口不能立即响应Avalon交换架构,用该信号来暂停Avalon交换架构。流水线信号readdatavalid1OutNo用于具有可变读延迟的流水线读传输。该信号用于标记从端口发出有效readdata时的时钟上升沿。突发信号burstcount111InNo用于突发传输。用来指示每一次突发传输中数据传输的次数。当使用burstcount信号时,waitrequest信号必须一并使用。beginbursttransfer1InNo在突发数据传输的第一个时钟周期有效,标志突发数据传输开始。其用法取决于外设。流控制信号redyfordata1OutNo用于具有流控制的传输。表示外设准备好一次写传输。dataavailable1OutNo用于具有流控制的传输。表示外设准备好一次读传输。endofpacket1OutNo用于具有流控制的传输。向Avalon交换架构指示包结束的状态。实现取决于外设。三态信号data8,16,32,64,128,256,512,1024 Bi-directionalNo三态从端口的双向数据读/写。如果使用了该信号,readdata和writedata不能使用。outputenable1InNodata信号的输出使能信号。如果该信号无效,三态从端口不能驱动自身的dataxinhao。如果使用了该信号,data信号必须使用。其它信号irq1OutNo中断请求信号。当从端口需要主端口服务时,它将发出irq信号。reset1InNo外设复位信号。该信号有效时,从外设必须进入确定的复位状态。resetrequest1OutNo允许外设将整个Avalon系统复位。复位操作立即执行。注:(1)如果从端口使用动态地址对齐,信号宽度必须是2的幂。(2)如果从端口同时使用readdata和writedata信号,这两个信号的宽度必须相等。Avalon从端口信号类型从端口信号类型Avalon主端口信号类型主端口信号类型信号类型信号宽度方向必需功能及使用描述基本信号类型Clk1InYesAvalon主端口的同步时钟,所有的信号必须与clk同步。Waitrequest1InYes迫使主端口等待,知道Avalon交换架构准备好处理传输。address132OutYes从Avalon主端口到Avalon交换架构的地址线。该信号表示的是一个字节的地址,但主端口只发出的字边界的地址。read1OutNo主端口的读请求信号。主端口不执行读传输时不需要该信号。如果使用了该信号,readdata或data信号线也必须使用。readdata8,16,32,64,128,256,512,1024 InNo读传输时,来自Avalon交换架构的数据线。当主端口不执行读传输时,不需要该信号。如果使用了该信号,则read信号必须使用,data信号不能使用。write1OutNo主端口的写请求信号。不执行写传输时不需要该信号。如果使用该信号,writedata或data信号也必须使用。writedata8,16,32,64,128,256,512,1024 OutNo写传输时,到Avalon交换架构的数据线。当主端口不执行写传输时,不需要该信号。如果使用了该信号,write信号必须使用,data信号不能使用。byteenable1,2,4,6,8,16,32,64,128OutNo字节使能信号。在对宽度大于8位的存储器进行写传输时,该信号用于选择特定的字节段。读传输时,主端口必须置所有的byteenable信号线有效。流水线信号readdatavalid1InNo用于具有延迟的流水线读传输。该信号表示来自Avalon交换架构的有效数据出现在readdata数据线上。如果主端口采用流水线传输,就要求使用该信号。flush1OutNo用于流水线读传输操作。主端口置flush信号有效,以清除所有挂起的传输操作。突发信号burstcount111OutNo用于突发传输。用来指示每一次突发传输中数据传输的次数。流控制信号endofpacket1OutNo用于控制流模式的数据传输。标志一个数据包的结束状态。实现取决于外设。三态信号data8,16,32,64,128,256,512,1024Bi-directionalNo三态主端口的双向数据读/写信号。如果使用了该信号,readdata和writedata不能使用。其它信号Irq1,32InNo中断请求信号。如果Irq信号是一个32位的矢量信号,那么它的每一位直接对应一个从端口上的中断信号,它与中断优先级没有任何的联系;如果Irq是一个单比特信号,那么它是所有从外设的Irq信号的逻辑或,中断优先级由irqnumber信号确定。irqnumber6InNo只有在irq信号为单比特信号时,才使用irqnumber信号来确定外设的中断优先级。Irqnumber的值越小,所代表的中断优先级越高。reset1InNo全局复位信号。实现跟外设相关。resetrequest1OutNo允许外设将整个Avalon系统复位。复位操作立即执行。注:(1)如果主端口同时使用readdata和writedata信号,这两个信号的宽度必须相等。Avalon主端口信号类型主端口信号类型4.3.2 信号极性信号极性 表中的信号类型都是高电平有效。表中的信号类型都是高电平有效。Avalon接接口也提供每个信号类型的低电平有效的版本,口也提供每个信号类型的低电平有效的版本,在信号类型名后添加在信号类型名后添加 _n 来表示。例如来表示。例如irq_n、read_n等。这对和那些低电平有效的片外逻等。这对和那些低电平有效的片外逻辑相接口时非常有用。辑相接口时非常有用。4.4 从端口传输从端口传输v4.4.1 从端口信号详述从端口信号详述 所有从端口传输都很重要的信号所有从端口传输都很重要的信号 1.address信号信号 2.readdata和和writedata信号信号 3.chipselect、read和和write信号信号 4.byteenable和和writebyteenable 5.begintransfer信号信号32位的从端口使能信号byteenable3.0写操作1111全32位写操作00112个低字节的写操作11002个高字节的写操作0001字节0的写操作0010字节1的写操作0100字节2的写操作1000字节3的写操作4.4.2从端口读传输从端口读传输从端口基本读传输从端口基本读传输具有固定等待周期的从端口读传输具有固定等待周期的从端口读传输具有可变等待周期的从端口读传输具有可变等待周期的从端口读传输(A)第一个周期在第一个周期在clk的上升沿开始。的上升沿开始。(B)Avalon交换架构发出地址和交换架构发出地址和read信号。信号。(C)Avalon交换架构对地址进行译码,然后驱动交换架构对地址进行译码,然后驱动chipselect信号。信号。(D)从端口在下一个从端口在下一个clk的上升沿置的上升沿置waitrequest信号有效。信号有效。(E)Avalon交换架构在交换架构在clk的上升沿采样的上升沿采样waitrequest,waitrequest是有效的,所以是有效的,所以在此时钟沿在此时钟沿 readdata没被捕获。没被捕获。(F)waitrequest可能会持续一个不确定数目的周期。可能会持续一个不确定数目的周期。(G)从端口提供有效的从端口提供有效的readdata。(H)从端口置从端口置waitrequest无效。无效。(I)Avalon交换架构在下一个交换架构在下一个clk的上升沿捕获的上升沿捕获readdata,读传输就此结束。下一个,读传输就此结束。下一个周期在此开始,另一次传输也可由此开始。周期在此开始,另一次传输也可由此开始。4.4.3 从端口写传输从端口写传输从端口基本写传输从端口基本写传输 (A)第一个周期在第一个周期在clk的上升沿开始。的上升沿开始。(B)Avalon交换架构发出有效的交换架构发出有效的writedata、address、byteenable和和write信号。信号。(C)Avalon交换架构对地址译码,并且发送交换架构对地址译码,并且发送chipselect给从端口。给从端口。(D)从端口在从端口在clk的上升沿捕获的上升沿捕获writedata、address、write、byteenable和和chipselect。写传输结束。下一个周期开始,另一次传输。写传输结束。下一个周期开始,另一次传输也可以开始。也可以开始。具有固定等待周期的从端口写传输具有固定等待周期的从端口写传输(A)第一个周期在第一个周期在clk的上升沿开始。的上升沿开始。(B)来自来自Avalon交换架构的交换架构的writedata、address、byteenable和和write有效。有效。.(C)Avalon交换架构对地址译码,发出交换架构对地址译码,发出chipselect。(D)第一个等待周期在第一个等待周期在clk的上升沿结束,所有来自的上升沿结束,所有来自Avalon交换架构的交换架构的信号保持不变。信号保持不变。(E)从端口在从端口在clk的上升沿或上升沿之前捕获的上升沿或上升沿之前捕获writedata、address、byteenable、write和和chipselect,写传输结束。下一个周期开始,写传输结束。下一个周期开始,另一次传输也可开始。另一次传输也可开始。具有可变等待周期的从端口写传输具有可变等待周期的从端口写传输(A)第一个周期在第一个周期在clk的上升沿开始。的上升沿开始。(B)来自来自Avalon交换架构的交换架构的address、writedata、byteenable和和write 信号有效。信号有效。(C)Avalon交换架构对地址译码,然后发出交换架构对地址译码,然后发出chipselect。(D)外设在下一个外设在下一个clk的上升沿之前置的上升沿之前置waitrequest有效。有效。(E)Avalon交换架构在交换架构在clk的上升沿采样的上升沿采样waitrequest,如果,如果waitrequest有效,周期成为有效,周期成为等待周期,等待周期,address、writedata、byteenable、write和和chipselect保持不变。保持不变。(F)waitrequest可能保持任意多个周期有效。可能保持任意多个周期有效。(G)从端口捕获数据。从端口捕获数据。(H)从端口置从端口置waitrequest无效。无效。(I)写传输在下一个写传输在下一个clk的上升沿结束。下一个周期可进行另一次的传输。的上升沿结束。下一个周期可进行另一次的传输。4.5 主端口传输主端口传输 所有主端口传输都很重要的信号所有主端口传输都很重要的信号 waitrequest信号信号 address信号信号 readdata和和writedata信号信号 read和和write信号信号 byteenable信号信号 主端口基本读传输主端口基本读传输(A)第一个周期在第一个周期在clk的上升沿开始。的上升沿开始。(B)主端口发出有效的主端口发出有效的address、byteenable和和read信号。信号。(C)在第一个周期内从在第一个周期内从Avalon交换架构返回有效的交换架构返回有效的readdata(D)主端口在下一个主端口在下一个clk的上升沿捕获的上升沿捕获readdata,并且置它的所有输出无效。,并且置它的所有输出无效。主端口的读传输结束。另一次传输可在下一个周期开始。主端口的读传输结束。另一次传输可在下一个周期开始。(A)第一个周期在第一个周期在clk的上升沿开始。的上升沿开始。(B)主端口发出有效的主端口发出有效的address、byteenable和和read信号。信号。(C)Avalon交换架构在下一个交换架构在下一个clk的上升沿置的上升沿置waitrequest有效。有效。(D)主端口在主端口在clk的上升沿接受的上升沿接受waitrequest。这个周期称为等待周期。这个周期称为等待周期。(E)只要只要waitrequest有效,主端口保持其所有输出不变。有效,主端口保持其所有输出不变。(F)Avalon交换架构返回有效的交换架构返回有效的readdata。(G)Avalon交换架构置交换架构置waitrequest无效。无效。(H)主端口在下一个主端口在下一个clk的上升沿捕获的上升沿捕获readdata,并且置其所有的输出无效。读,并且置其所有的输出无效。读传输结束。另一次传输可以在下一个周期开始。传输结束。另一次传输可以在下一个周期开始。具有等待周期的主端口读传输具有等待周期的主端口读传输(A)写传输在写传输在clk的上升沿开始。的上升沿开始。(B)主端口发出有效的主端口发出有效的address、byteenable、writedata和和write信号。信号。(C)在在clk的上升沿的上升沿waitrequest是无效的,所以写传输结束。是无效的,所以写传输结束。另一次传输可以在下一个周期接着开始。另一次传输可以在下一个周期接着开始。主端口基本写传输主端口基本写传输 (A)第一个周期在第一个周期在clk的上升沿开始。的上升沿开始。(B)主端口发出有效的主端口发出有效的address、writedata和和write信号。信号。(C)waitrequest在在clk的上升沿被置为有效,所以该周期变成第一个等待周期。主端口保持所的上升沿被置为有效,所以该周期变成第一个等待周期。主端口保持所有的输出不变。有的输出不变。(D)waitrequest在在clk的上升沿再次被置为有效,所以该周期成为第二个等待周期。主端口保的上升沿再次被置为有效,所以该周期成为第二个等待周期。主端口保持所有的输出不变。持所有的输出不变。(E)Avalon交换架构置交换架构置waitrequest无效。无效。(F)在在clk的上升沿的上升沿waitrequest 是无效的,所以主端口置所有的输出无效,写传输结束。另一是无效的,所以主端口置所有的输出无效,写传输结束。另一个读或写传输可以在下一个周期开始。个读或写传输可以在下一个周期开始。具有等待周期的主端口写传输具有等待周期的主端口写传输4.6 流水线传输属性流水线传输属性vAvalon流水线读传输可以增加流水线读传输可以增加Avalon同步从同步从外设的带宽,在第一次访问从外设时需要好外设的带宽,在第一次访问从外设时需要好几个周期才能返回数据,但是此后每个周期几个周期才能返回数据,但是此后每个周期都能返回数据。使用流水线读传输,一个端都能返回数据。使用流水线读传输,一个端口可以在上一次传输的口可以在上一次传输的readdata返回之前,返回之前,开始新的传输。只有流水线的读传输,因为开始新的传输。只有流水线的读传输,因为Avalon写传输不需要由从端口返回确认信号,写传输不需要由从端口返回确认信号,所以没有流水线的写传输,所以没有流水线的写传输,Avalon写传输不写传输不会受益于流水线。会受益于流水线。(A)Avalon交换架构通过提供新传输的地址阶段的交换架构通过提供新传输的地址阶段的chipselect、read和和address信信号,发起一次读传输。号,发起一次读传输。(B)从端口已经置从端口已经置waitrequest有效,所以前一个周期称为等待周期。有效,所以前一个周期称为等待周期。Avalon交换架交换架构保持构保持chipselect、read和和 address不变。不变。(C)从端口在从端口在clk的上升沿置的上升沿置waitrequest无效,并且捕获无效,并且捕获address。地址阶段结束,。地址阶段结束,数据阶段开始。数据阶段开始。(D)第一个延迟周期在第一个延迟周期在clk的上升沿结束。的上升沿结束。(E)第二个延迟周期在第二个延迟周期在clk的上升沿结束。从端口提供有效的的上升沿结束。从端口提供有效的readdata,传输结束。,传输结束。这个这个clk的上升沿也标志着新的读传输的开始。的上升沿也标志着新的读传输的开始。(F)Avalon交换架构发出新传输的交换架构发出新传输的address、read和和chipselect信号。信号。(G)Avalon交换架构在下一个周期发内,在前一次的传输的数据返回之前发起另一交换架构在下一个周期发内,在前一次的传输的数据返回之前发起另一次的读传输。次的读传输。(H)Avalon交换架构在两个延迟周期之后捕获交换架构在两个延迟周期之后捕获readdata。(I)Avalon交换架构在两个延迟周期之后捕获交换架构在两个延迟周期之后捕获readdata。具有固定延迟的从端口流水线读传输具有固定延迟的从端口流水线读传输 具有可变延迟的从端口流水线读传输具有可变延迟的从端口流水线读传输 4.6.3 主端口流水线传输主端口流水线传输 v流水线主外设可以在它接收到前一次传输的流水线主外设可以在它接收到前一次传输的有效数据之前发起一次新的读传输。使用有效数据之前发起一次新的读传输。使用1位位的输入信号的输入信号readdatavalid来定义一个流水线来定义一个流水线主端口。主端口。Avalon交换架构发出交换架构发出readdatavalid信号给主端口来指示信号给主端口来指示readdata信号正在提供有效的数据。信号正在提供有效的数据。v流水线主端口能够有选择地使用流水线主端口能够有选择地使用flush信号,当主外信号,当主外设决定它不再需要当前挂起的读传输的数据的情况设决定它不再需要当前挂起的读传输的数据的情况下,可以使用这个信号。例如,对于不知道指令是下,可以使用这个信号。例如,对于不知道指令是否有效之前预取指令的流水线否有效之前预取指令的流水线CPU来说,清除流水来说,清除流水线的功能是一个基本的要求。当主端口在线的功能是一个基本的要求。当主端口在clk的上升的上升沿发出沿发出flush,readdatavalid直到下一次新的读传直到下一次新的读传输的数据在输的数据在readdata端口上有效之前,一直是无效端口上有效之前,一直是无效的。主端口可以在其发出的。主端口可以在其发出flush信号的同一个周期内信号的同一个周期内发起一次新传输。在这种情况下,这次新传输的数发起一次新传输。在这种情况下,这次新传输的数据将是据将是readdata上的下一个有效数据。上的下一个有效数据。主端口流水线读传输主端口流水线读传输 4.7 突发传输突发传输vAvalon接口支持突发传输。突发模式下,多接口支持突发传输。突发模式下,多个传输作为一个单元来处理,而不是每个数个传输作为一个单元来处理,而不是每个数据单元作为一个独立的传输。突发传输最大据单元作为一个独立的传输。突发传输最大化从端口的吞吐量,在从端口处理来自一个化从端口的吞吐量,在从端口处理来自一个主端口的多个数据单元的时候可以达到最高主端口的多个数据单元的时候可以达到最高的效率。的效率。v突发传输保证了主端口在突发传输的期间内突发传输保证了主端口在突发传输的期间内对目标从端口的访问不会被打断。一旦一个对目标从端口的访问不会被打断。一旦一个主从端口对之间的突发传输开始,直到突发主从端口对之间的突发传输开始,直到突发传输结束,传输结束,Avalon交换架构不再允许任何其交换架构不再允许任何其它的主端口访问该从端口。它的主端口访问该从端口。Avalon主主/从端口通过包含信号从端口通过包含信号burstcount来支持突发传输。来支持突发传输。下面是主从端口的下面是主从端口的burstcount信号的特性:信号的特性:v在突发传输的开始,在突发传输的开始,burstcount信号提供一个编码的值,指信号提供一个编码的值,指示当前的突发传输中包含有多少个连续的传输。示当前的突发传输中包含有多少个连续的传输。vburstcount的最小值是的最小值是1。vburstcount值为值为1的突发传输等同于一个单独的非突发的传的突发传输等同于一个单独的非突发的传输。输。v对于对于burstcount宽度为宽度为N的情况,最大突发长度为的情况,最大突发长度为2N-1.此此时,时,burstcount的最高位为的最高位为1,所有其它位是,所有其它位是0。vAvalon突发传输不能保证主端口或从端口每个时钟周期进行突发传输不能保证主端口或从端口每个时钟周期进行一次传输。突发传输能够保证在突发传输期间主从端口对的一次传输。突发传输能够保证在突发传输期间主从端口对的仲裁是锁定的。突发传输需要的时间是不确定的,取决于主仲裁是锁定的。突发传输需要的时间是不确定的,取决于主从端口的外设逻辑。从端口的外设逻辑。4.7.1 限制限制v支持突发传输的端口面临如下的限制:支持突发传输的端口面临如下的限制:v为了支持主端口的突发读传输,主端口必须支持流为了支持主端口的突发读传输,主端口必须支持流水线传输。水线传输。v为了支持从端口突发读传输,从端口必须支持:为了支持从端口突发读传输,从端口必须支持:l 可变的等待周期,即该端口必须包含可变的等待周期,即该端口必须包含waitrequest。l具有可变的延迟的流水线传输,即该端口必须包含具有可变的延迟的流水线传输,即该端口必须包含readdatavalid信号。因此,从端口不能使用三态属性,信号。因此,从端口不能使用三态属性,三态属性在具有可变延迟的流水线端口中是不允许的。三态属性在具有可变延迟的流水线端口中是不允许的。4.7.2 主端口突发传输主端口突发传输v对对Avalon主端口来说,主端口来说,burstcount信号是输出信号。信号是输出信号。除了除了burstcount信号,突发传输还影响信号,突发传输还影响address、read、readdata、eaddatavalid、write、writedata和和byteenable信号的行为。信号的行为。v突发传输开始时,主端口在突发传输开始时,主端口在address上发出有效的上发出有效的地址,在地址,在burstcount发出突发传输的长度。每一次发出突发传输的长度。每一次突发传输主端口只发出一个地址值,对于突发传输突发传输主端口只发出一个地址值,对于突发传输中所有传输的地址由中所有传输的地址由Avalon交换架构自动地推断。交换架构自动地推断。v当主端口开始地址为当主端口开始地址为A,burstcount值为值为B的突发的突发传输,该主端口提交了从地址传输,该主端口提交了从地址A开始的开始的B个连续的传个连续的传输。突发传输直到主端口传输了输。突发传输直到主端口传输了B个单元的数据才个单元的数据才完成。在当前的突发传输完成之前,主端口不能终完成。在当前的突发传输完成之前,主端口不能终止该突发传输,或者给出一个新地址。止该突发传输,或者给出一个新地址。4.7.2.1.主端口突发写传输主端口突发写传输v主端口突发写传输的开始和主端口基本写传输是相主端口突发写传输的开始和主端口基本写传输是相似