交换架构三态主端口Avalon三态属性允许基于Avalon的系统与片外的设备直接相连,比如存储器芯片或外部的处理器。使用三态属性,可以使Avalon端口同许多标准的存储器和处理器的总线接口相匹配。如果Avalon信号的子集能够描述一个芯片的接口,则该芯片实际上具有一个Avalon的三态端口,Avalon交换架构可以通过三态传输和该芯片相接口。4.8.1三态从端口传输Avalon三态从端口允许Avalon交换架构和片外的共享PCB板上的地址和数据总线的设备进行接口。Avalon三态从端口可以用来将Avalon交换架构与同步及异步的存储芯片连接起来,如ROM、flashmemory、SRAM、SSRAM和ZBTRAM。三态从端口使用双向的信号data,而不是分离的、单向的信号readdata和writedata。data信号是有三态属性的,这样能使多个三态的外设连接到数据总线而不引起信号竞争。三态从端口还必须使用outputenable信号。三态从端口使用data信号,不可以再使用readdata或writedata信号。其它的所有Avalon信号的行为同其它非三态端口的相同。Avalon三态从端口普遍使用低电平有效的信号,如read_n、chipselect_n和outputenable_n,这样做是为了和存储器芯片的信号约定保持一致。Avalon三态从端口面临下面的限制:Avalon三态从端口不支持可变延迟的流水线传输,但支持固定延迟的流水线传输。Avalon三态从端口不能使用流控制信号。Avalon三态从端口不支持突发属性。1.data信号的行为在写传输的过程中,Avalon交换架构驱动data信号线,向外设提供数据。在读传输的过程中,从外设驱动data线,Avalon交换架构捕获data信号。当Avalon交换架构置outputenable信号有效,三态从端口必须驱动它的data信号线。当Avalon交换架构置outputenable无效,Avalon三态从端口必须将其信号线置为高阻状态,如果不这样做,将可能发生信号竞争,从而可能会对连接到三态端口的器件造成损坏。2.address信号行为对Avalon三态从端口来说,address信号表示字节的地址,这是和非三态从端口不同的地方,非三态从端口使用字地址。对三态从端口来说,address信号可被多个片外设备共享,而这些设备可能有不同的数据宽度。如果Avalon三态从端口数据宽度大于一个字节,那么有必要将Avalon交换架构的地址信号正确地映射到从设备的地址信号线上去。下表说明在所有可能的数据宽度的情况下,哪根地址线对应着A0(外部器件的地址最低有效位)。3.outputenable和read信号行为Avalon交换架构只在读传输过程中发出outputenable信号,当端口的outputenable无效,data用于写传输的信号传输,或者用于共享data信号线的其他外设的信号传输。因此,在outputenable无效时,将data线置于高阻态就很重要。outputenable行为因三态从端口有无流水线属性而有所不同:对于没有流水线属性的三态从端口来说,outputenable和read信号是作用一样的。因此,Avalon的read_n信号能够直接连接到外部器件的输出使能引脚和(例如OEn)和读使能引脚(例如READn)。对于具有流水线属性的三态从端口来说,Avalon交换架构只在地址阶段发出read信号,在数据阶段置其为无效,然后,在最后的clk上升沿之前,Avalon交换架构发出outputenable,从而让外设驱动它的数据引脚。当没有挂起的传输时,Avalon交换架构将outputenable置为无效。4.write_n和writebyteenable信号行为有些存储器件使用组合的combinedR/Wn引脚(即高电平时读,低电平时写)。Avalon的write_n信号行为就是如此,能够将其连接到R/Wn引脚。write_n只在写传输时置为有效。在其它时刻置为无效(即读模式)。这样,Avalon的outputenable_n信号连接到片外设备的输出使能引脚,write_n信号连接到R/Wn引脚。一些同步的存储设备为每个字节段使用单独的写使能信号(例如,BWn1,BWn2,BWn3,andBWn4)。Avalon端口的writebyteenable是write和byteenable信号的逻辑与,并且可以直接连到上述的这些BWn引脚上去。与异步存储芯片的连接6.chipselect信号和Chipselect-Through-Read-Latency属性对于典型的存储芯片,Avalonchipselect_n信号可以直接和存储芯片的芯片选择或芯片使能引脚相连(如CSn或CEn)。有些使用固定延迟的流水线传输的同步存储芯片要求芯片选择信号只在地址阶段有效,而其它的存储芯片要求芯片选择信号直到整个的传输结束都有效。Avalon三态从端口通过使用chipselect-through-read-latency属性支持以上两种需要。三态从端口必须声明它支持哪种chipselect时序:当端口使用chipselect-through-read-latency属性时,Avalon交换架构在读传输的地址和数据阶段都置chipselect信号有效。在这种情况下,chipselect是outputenable信号的镜像。当端口不使用chipselect-through-read-latency属性时,Avalon交换架构只在地址阶段置chipselect有效,这时,chipselect是read信号的镜像。7.与片外异步存储器接口当Avalon交换架构与具有Avalon三态从端口的片外异步存储器直接相连时,不需要clk信号。传输的同步是通过chipselect、read和/或write信号使用建立和保持时间来获得的。Avalon交换架构的所有输出信号在整个传输过程中都是没有干扰的。8.与片外的同步存储器接口Avalon三态从端口可以写入数据到片外同步存储设备中去,比如SSRAM和ZBTRAM。例如,保持时间属性可以用来保持data信号在write失效几个时钟周期之后仍然有效。三态从端口支持连续的流水线读传输和连续的流水线写传输,然而,Avalon交换架构在发起一次新的写传输之前,必须要等待所有挂起的流水线读传输全部完成才可以。这样可以避免潜在的读传输数据和写传输的数据发生碰撞而在data信号线引发信号竞争的可能。因此,当Avalon三态端口执行读-写传输队列时,不能达到它的最大可能带宽。与同步存储芯片的连接三态从端口与异步存储器的读传输实例本例展示的是三态从端口与片外异步RAM或ROM存储芯片进行传输的适当配置。这种情况下,因为存储芯片是异步的,三态从端口不使用clk信号。然而,Avalon交换架构总是同步工作的,它总是在clk的整数周期发生变化和捕获数据。下图是Avalon三态从端口的读传输时序图。该端口使用了下面的Avalon传输属性:一个时钟周期的固定的建立时间一个时钟周期固定等待周期非流水线模式具有建立时间和等待周期的三态从端口读传输(A)Avalon交换架构驱动address,并且置chipselect_n有效。(B)在一个周期的建立时间延迟之后,Avalon交换架构置read_n和outputenable_n有效。(C)从端口驱动data以响应outputenable_n。data在此时可能是无效的。本例中,没有是未定义的。.(D)Avalon交换架构在等待周期内保持address有效。(E)从端口在传输的最后时钟上升沿之前的某个时刻驱动有效的data。(F)Avalon交换架构在clk的上升沿捕获data,传输结束。(G)从端口将data置为高阻,以响应此时的outputenable_n无效状态。.4.8.2三态主端口传输Avalon三态主端口允许Avalon交换架构和片外的主外设使用双向的数据端口相接口,例如外部处理器的数据总线。三态主端口使用双向的data信号,而不是分离的单向的readdata和writedata信号。三态主端口不能在使用了readdata或writedata之后,再使用data。所有其它的Avalon主端口都是遵循此规则。和三态从端口不同,Avalon三态主端口不能和其它的三态主端口在PCB板上共享数据和地址线。在写传输的过程中,三态主端口驱动data信号线提供数据给Avalon交换架构。在读传输的过程中,Avalon交换架构驱动data信号线,三态主端口捕获数据。Avalon三态主端口应用有如下的限制:Avalon三态主端口不能支持流水线模式。Avalon三态主端口不支持流控制信号。Avalon三态主端口不支持突发模式。三态主端口写传输和读传输(A)主端口在clk的上升沿发起写传输。(B)主端口发出address和write.信号。主端口驱动data数据线。(C)Avalon交换架构在clk的上升沿捕获写数据。主端口在这个周期内发起一次新的传输,发出address和read信号。(D)Avalon交换架构置waitrequest有效。作为响应,主端口在整个周期内保持所有的信号不变。(E)稍后,Avalon交换架构在data的数据线上驱动有效的读数据,并置waitrequest无效。(F)主端口在clk的上升沿捕获data。Avalon交换架构在这个周期内发起一次新的写传输。(G)Avalon交换架构在clk的上升沿捕获data,写传输结束。