Qsys自定义组件的开始-Avalon总线规范(中文)


学习FPGA这么长时间了,一直没有整理本身的学习内容,这回要把每一段时间的学习内容总结一下,就从自定义组件开始吧。必定要坚持下来呀!!编程

Avalon 总线规范并发



参考手册框架



 



(Avalon从端口传输与流模式从端口传输部分)异步



 //*************************************ide



  



 



http://www.altera.com模块化



免责声明:工具



本手册原自Altera 公司发布的《Avalon Bus Specification-Reference Manual》,一切权力由Altera 公司全部性能



 



概 要学习



 



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 也包括不少的功能和约定来支持SOPC Builder 软件自动产生的系统﹑总线和外设:



高于4G 的地址空间-存储器和外设能够被映射为32 位地址空间中的任何地址。同步接口-全部的Avalon 信号都被Avalon 总线时钟同步。这样简化了Avalon 总线的相关时序行为并便于高速外设的集成。分离的地址,数据和控制线路-分离的,专用的地址和数据路径更便于与用户逻辑相链接。外设不须要对数据和地址周期进行译码。内置地址译码器-Avalon 总线自动的为全部外设产生片选(Chip Select)信号,大大的简化了Avalon 外设的设计。



   多主设备总线结构-在Avalon 总线上能够存在多个主外设。Avalon 总线自动产生仲裁逻辑。基于向导式的配置-方便使用的图形化向导引导用户完成对Avalon 总线的配置(增长外设,肯定主/从关系,定义存储器映射)。



  Avalon 总线结构的自动产生是由用户在向导界面的输入来决定的。动态总线容量-Avalon 总线自动处理数据位宽不匹配的外设间传送数据的细节,便于在多种不一样宽度的设备间接口。



名 词 及 概 念



 



许多与SOPC 相关的名词和概念都彻底是新的,他们和传统的片外总线结构有着本质的不一样。设计者须要懂得这点,以即可以理解Avalon 总线规范。下面的名次及概念构成了一个理论化的框架,而Avalon总线规范就是创建在这一框架的基础上的。它们贯穿于整个文档。



总线周期



  总线周期被定义为Avalon 主时钟的相邻上升沿之间的时间间隔,它是总线时钟周期的基本单元。总线信号时序参照于总线周期时钟。



总线传输



   Avalon 总线的一次传输是对数据的一次读/写操做,它可能持续一个或多个总线周期。Avalon 总线所支持的传输位宽为:一个字节(8 位),半个字(16 位)或一个字(32 位)。



流传输



流传输为“流主设备”和“流从设备”之间的连续性数据传输创建一个开放式的管道。



具备延迟的读传输:某些同步外设在开始第一次传输的时候须要延迟一些时钟周期,但在以后的传输中即可以在每个时钟周期都返回数据。具备延迟的读传输增长了对这种同步设备的总线利用率。



 



带有延迟的读传输



有些同步设备在刚刚开始传输的时候,须要延迟几个时钟周期才可以完成其第一次读数据的过程,而在以后的传输过程当中就能够每个周期返回一个数据。带有延迟的读传输能够增长这些同步设备的带宽利用率。延迟性传输容许一个主设备发出读请求后,转而执行另外一个无关任务,过一段时间再接收数据。尽管以前的数据尚未接受到,这个无关的任务也能够发出另外一次读请求。这有利于进行连续标准地址的存取的指令存取操做和DMA 传输。这样,CPU 和DMA 主设备能够预读取其须要的数据,因此这使得同步存储器保持活跃状态,并减小了平均存储延时。



 



SOPC Builder 软件及Avalon 总线的产生



SOPC Builder 是Altera 开发的一款系统生成和集成工具。SOPC Builder 所产生的片上电路系统模块包括Avalon 总线、主外设和从外设。SOPC Builder 提供了图形化的用户接口,应用这种接口能够实现向系统模块中添加主、从外设,配置外设及配置Avalon 总线将外设链接起来。这样,SOPC Builder 自动的建立并链接HDL 模块,即可以实现用户PLD 设计的每个部分。



 



系统模块



 



考虑在可编程芯片上实现用户自定义系统的结构,其中一部分是由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)——等待状态的产生拓展了一个或多个周期的总线传输,这有利于知足某些特殊的同步外设的须要。当从外设没法在一个时钟周期内应答的时候,产生的等待状态可使主外设进入等待状态。在读使能及写使能信号须要必定的创建时间/保持时间要求的时候也能够产生等待状态。



2 .Avalon 总线模块框图-范例系统



■ 动态总线宽度——动态总线宽度隐藏了窄带宽外设与较宽的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)描述。



更多的关于系统PTF 文件的信息请查看“SOPC Builder 数据文档”(SOPC Builder Data



Sheet)和 “SOPC Builder PTF 文件参考手册”(SOPC Builder PTF File Reference Manual



__



1.3 Avalon 总线传输



 



Avalon总线规范定义了主端口和从端口之间经过Avalon总线模块传输数据所须要的信号和时序。构成Avalon总线模块和外设之间接口的信号随着传输模式的不一样而不一样。首先,主传输与从传输的接口不一样,使用主端口与从端口的信号定义不一样。此外,经过系统PTF文件的设置,所需信号的确切类型与数量也是可变的。



Avalon总线规范提供了各类选项来剪裁总线信号和时序,以知足不一样类型外设的须要。Avalon总线基本传输模式在一个主从端口对之间每次只传送一个单元的数据。能够经过插入等待周期来延长一次总线传输的时间,以知足低速外设的须要。流传输模式以及支持并发多主端口传输的能力知足高带宽外设的须要。全部Avalon从传输的信号时序都源自从端口的基本传输模式。一样,主端口的基本传输模式是全部Avalon主传输的基础。



 



1.3.1主端口接口与从端口接口



当讨论Avalon总线传输时,必须注意讨论的是总线的哪一边,是主端口接口仍是从端口接口。由主端口输出的信号与输入到目标外设的从端口的对应信号可能会有较大的差异。



从端口的信号活动老是主外设发起总线传输的结果。可是,实际的从端口输入信号并不是直接来自主端口。Avalon总线模块传递来自主端口的信号,并对信号进行裁剪,以知足从外设的须要。



因为以上缘由,对Avalon总线传输的介绍将分为主传输类型和从传输类型两个部分。



大多数用户只关心从传输,由于他们设计的用户自定义外设通常都是从外设。边时,用户只需考虑Avalon总线模块和用户自定义外设之间的信号。只有当用户建立主外设时才涉及到主传输。



 



1.3.2            Avalon总线时序



 Avalon总线是一个同步总线接口,由一个Avalon总线主时钟定时,全部总线传输的信号都与Avalon总线时钟同步。同步总线接口并不意味着全部的Avalon总线信号都是锁存的。好比,Avalon的chipselect信号即是由组合逻辑产生的,其输入是同步于Avalon总线时钟的寄存器的输出。所以,外设不能使用Avalon信号的边沿,由于Avalon信号在达到稳定前会变化屡次人。就像全部同步设计同样,Avalon总线外设只能在时钟上升沿对稳定的信号做出响应,且必须在时钟上升沿输出稳定的信号。



Avalon总线模块也能够链接异步外设,例如片外异步存储器。但设计时须要考虑一些额外因素:因为Avalon总线模块的同步操做,Avalon信号只以Avalon总线时钟周期为间隔变化。此外,若是异步外设的输出直接链接到Avalon总线模块,用户必须保证输出信号在时钟上升以前达到稳定。



Avalon总线规范并不定义在时钟上升沿之间信号是如何变化的。信号的变化由Avalon总线时钟触发,信号只要在捕获时钟上升沿以前达到稳定就能够了,所以,总线规范中的Avalon总线时序图中不会描绘精确的时间信息。相似地,Avalon总线没有规定固有的最高性能。系统模块在特定的器件上综合布线以后,用户必须对系统模块进行标准的时序分析,以肯定Avalon总线传输达到的最高速度。



1.3.3            Avalon总线信号



因为Avalon总线是一个由HDL文件综合而来,因此在链接Avalon总线模块和Avalon外设时须要一些特别的考虑。对于传统的片外总线结构,全部外设都共享一组固定的.预先设计的金属线路,而Avalon总线与此不一样:SOPC Builder必须准确地了解每一个外设提供了哪些Avalon端口,以便链接外设与Avalon总线模块。它还须要了解每一个端口的名称和类型,这些信息定义在系统PTF文件中。



Avalon总线规范不要求Avalon外设必须包含哪些信号。它只定义了外设能够包含的各类信号类型(例如地址.数据.时钟等)。外设的每个信号都要指定一个有效的Avalon信号类型,以肯定该信号的做用,一个信号也能够是用户自定义的。在这种状况下,SOPC Builder不将该端口与Avalon总线模块链接。Avalon信号类型首先分为主端口信号和从端口信号两类。于是,外设使用的信号类型生产生产首先由端口的主从角色决定。每一个狡立的主端口或从端口使用的信号类型由外设的设计决定。例如,设计一个只有输出的PIO从外设只须要定义用于写的信号,而不须要定义用于读的信号。尽管中断请求输出是从端口容许的信号类型,但也不是必须使用。



Avalon总线规范不规定Avalon外设信号的命名规则。不一样信号类型的做用是预先定义的,而信号的名称则是由外设决定。信号能够按照它的信号类型来命名,也能够遵守系统级的命名规范采用不一样的名称。下面章节中讨论的Avalon总线传输时会涉及到一些Avalon信号,例如readdata信号和irq信号。在这里信号类型的名称做为信号名称,但外设信号的实际名称能够与此不一样。



做为一个例子,表1.1列举了部分Avalon从端口可用的信号类型。信号的方向是从外设的角度定义的。例如时钟信号clk(方向为in)对于从外设来讲是输入信号,而对于Avalon总线模块来讲是输入信号。

 

 

1.1.部分Avalon从端口信号

 

信号类型

 

宽度

 

方向

 

必需

 

Description

 

 

 

Clk

 

 

 

 

 

 

 

1

 

 

 

in

 

 

 

no

 

系统模块和Avalon总线模块的全局时钟信号。全部总线传输

 

传输都同步于clk。只有异步从端口才能省略clk.

 

address

 

1 - 32

 

in

 

no

 

来自Avalon总线模块的地址线

 

 

 

Reset

 

 

 

 

 

 

 

1

 

 

 

in

 

 

 

no

 

从端口的读请求信号。当从端口不输出数据时不须要该信号。若

 

使用了该信号,readdata信号也必须使用

 

 

 

readdata

 

 

 

1 – 32

 

 

 

out

 

 

 

no

 

读传输中输出到Avalon总线的数据线。当从端口不输出数据

 

时不须要该信号。若使用了该信号,read信号也必须使用

 

 

 

 

 

write

 

 

 

1

 

 

 

in

 

 

 

no

 

从端口的写请求信号。当从端口不接收数据时不须要该信号。若

 

使用了该信号,writedata信号也必须使用

 

 

 

writedata

 

 

 

1 – 32

 

 

 

in

 

 

 

no

 

写传输中来自Avalon总线的数据线。当从端口不接收数据

 

时不须要该信号。若使用了该信号,write信号也必须使用

 

irq

 

1

 

out

 

no

 

中断请求。当从外设须要外设服务时可触发irq



  表1.1中例举的信号类型都是高电平有效。Avalon总线还提供了各个信号类型的反向形式。在PTF声明中,在信号类型名称加”_n”,即可将对应的端口声明为低电平有效。这对许多使用低电平有效的片外外设很是有用。



 



1.3.4 并发多主端口的Avalon总线须要考虑的事项



Avalon总线容许多个端口链接到Avalon总线模块。并且实现Avalon总线的并发多主端口功能时,Avalon总线模块不须要额外的特殊信号。当多个主外设试图同时访问同一个外设时,Avalon总线模块内部的从端口仲裁逻辑会被用来解决冲突。仲裁机制对于Avalon总线外设彻底是透明的。于是,不管是否使用了仲裁,应用于主端口和从端口的Avalon总线传输协议是相同的。



换句话说,从端口不会意识到有多个主外设同时请求总线传输。相似地,被仲裁逻辑强制等待的主外设也不会意识到另外一个获胜的主外设的存在。主端口只是简单地发现它的等待请求信号被置为有效,并一直等待,直到目标外设准备好处理总线传输。将仲裁的细节隐藏在Avalon总线模块内部极大简化了外设的设计,任何Avalon外设在单主端口和多主端口结构中均可以使用。



 

1.4 Avalon从端口传输



 



1.4.1从传输的Avalon总线信号



表2列举了外设的从端口与Avalon总线间接口的信号类型。信号的方向是之外设的角度定义的。外设提供的信号由外设的设计和PTF文件中的信号定义决定,不须要提供所有的信号类型

 

 

 

2 Avalon从端口信号

 

 

 

Signal Type

 

Width

 

Direction

 

Required

 

Description

 

clk

 

1

 

in

 

no

 

系统模块和Avalon总线模块的全局时钟信号。全部总线传输都同步于clk。只有异步从端口才能省略clk

 

reset

 

1

 

in

 

no

 

全局复位信号。如何使用取决于外设

 

chipselect

 

1

 

in

 

yes

 

从端口的片选信号。当chipselect信号无效时,

 

从端口必须忽略全部的Avalon信号输入

 

address

 

1 - 32

 

in

 

no

 

来自Avalon总线模块的地址线

 

begintransfer

 

1

 

in

 

no

 

在每一个新的Avalon总线传输的第一个总线周期期间有效。如何使用该信号取决于外设

 

byteenable

 

0, 2, 4

 

in

 

no

 

字节使能信号,在访问宽度超过8位的存储器时选择特定的字节段,如何使用该信号取决于外设

 

read

 

1

 

in

 

no

 

从端口读请求信号。当从端口不输出数据时不须要该信号。若使用了该信号,readdata信号也必须使用

 

readdata

 

1 – 32

 

out

 

no

 

读传输中输出到Avalon总线的数据线。当从端口不输出数据

 

时不须要该信号。若使用了该信号,read信号也必须使用

 

 

 

write

 

1

 

in

 

no

 

从端口的写请求信号。当从端口不接收数据时不须要该信号。若

 

使用了该信号,writedata信号也必须使用

 

writedata

 

1 – 32

 

in

 

no

 

写传输中来自Avalon总线的数据线。当从端口不接收数据时不须要该信号。若使用了该信号,write信号也必须使用

 

readdatavalid

 

1

 

out

 

no

 

读取数据有效信号,仅用于具备可变读延迟

 

的从端口。用于标记从端口发出有效数据时

 

的时钟上升沿

 

waitrequest

 

1

 

out

 

no

 

等待请求信号,当从端口不能当即响应

 

时暂停Avalon总线模块

 

readyfordata

 

1

 

out

 

no

 

流传输模式信号。表示流模式从端口能够接收数据

 

dataavailable

 

1

 

out

 

no

 

流传输模式信号。表示流模式从端口拥有有效数据

 

endofpacket

 

1

 

out

 

no

 

流传输模式信号。用于向主端口报告” 包结束”状态。如何使用取决于外设

 

irq

 

1

 

out

 

no

 

中断请求。当从外设须要外设服务时可触发irq

 

resetrequest

 

1

 

out

 

no

 

复位请求信号,该信号使得一个外设能够复位整个系统模块



 



上述信号若是不加说明都是高电平有效,此外,Avalon总线也提供上述信号的低电平有效版本,在信号名称后加”_n”表示低电平有效,如:read信号为高电平有效,而read_n为低电平有效。



 



1.4.2 Avalon总线上的从端口读传输



 



 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的所有位宽度。若是在读传输中某个字节未使能,其返回到Avalon总线模块的值是不肯定的。

 

当chipselect无效时,从端口必须忽略全部其它输入信号,其输出信号没有必要置为高阻。此外,chipselect的上升沿或read_n的降低沿不能用做读传输开始的标志,由于这些边沿的稳定性是没有保证的。

 

  1.4.2.2 具备固定等待周期的从端口读传输

 

具备固定等待周期从端口传输使用的信号与基本读传输使用的相同,不一样点只是信号的时序。具备等待周期的从端口读传输适用于不能在一个时钟周期内提供数据的外设。例如,若指定了一个等待周期,Avalon总线模块在提供了有效的地址和控制信号后,会等待一个时钟周期再捕获外设的数据。Avalon总线模块在每次读传输时都会等待固定数量的总线周期。

 

例4.2显示了具备单个等待周期的从端口读传输的时序。Avalon总线模块在第一个总线周期提供address、byteenable、read_n和chipselect信号。因为具备等待周期,外设没必要在第一个总线内提供readdata。第一个总线周期是第一个(也是惟一一个)等待周期。从端口能够随时捕获地址和控制信号,片上的同步外设一般在第二个总线周期开始(等待周期结束)时的clk上升沿捕获地址和控制信号。在第二个总线周期间,目标外设向Avalon总线模块提供readdata。在第三个也是最后一个时钟上升沿,Avalon总线模块由从端口捕获readdata。在第三个也是最后一个时钟上升沿,Avalon总线模块由从端口模块readdata并结束总线传输。

 

 

 

时序说明:

 

(A)   第一个总线周期开始于clk上升沿;

 

(B)   Address和read_n信号有效;

 

(C)   Avalon总线对address译码,输出有效的chipselect;

 

(D)   clk上升沿标志着第一个且是惟一的一个等待周期结束。若是从端口是同步的,它能够在clk上升沿捕获address、read_n、和chipselect;

 

(E)  从端口在第二个总线周期内返回有效数据;

 

(F)   Avalon总线在下一个clk上升沿捕获readdata,读传输到此结束。另外一个总线传输能够在下一个总线周期开始。

 

 

 

例4.2 具备一个固定等待周期的从端口读传输

 

 

                                                      

 

 

 

 

具备单个等待周期的读传输常常用于同步的片上外设。在合理的PLD设计中,模块间的接口应当经过寄存器同步。加入了一个等待周期后,外设能够在chipselect有效后的下一个clk上升沿捕获address、byteenable、read_n和chipselect,这使得目标外设具备至少一个完整的总线周期来向Avalon总线模块提供返回数据。

 

例4.3显示了具备多个等待周期的从端口读传输。它和例4.2几乎是同样的,只是Avalon总线在由外设获取readdata以前等待多于一个总线周期。

 

  

1.4.2.3       具备外设控制等待周期的从端口读传输

 

外设控制的等待周期使得目标外设可以根据提供数据的须要将Avalon总线模块的读操做暂停任意多个总线周期。在这种传输模块下,外设向Avalon总线模块提供数据所需的时间是不固定的。

 

例4.4显示了这种状况,外设控制等待周期的读传输模式使用了waitrequest信号。它是一个从端口的输出信号。当从端口的read_n信号有效后,从端口若要延长读传输,它必须在第一个总线周期内返回waitrequest。当waitrquest有效后,Avalon总线模块便暂停工做,再也不捕获readdata。Avalon总线模块在waitrequest失效后的下一个clk上升沿捕获readdata。

 

Avalon总线模块没有超时机制来限制从端口暂停总线的时间。当Avalon总线模块暂停后,系统模块内的某个主外设也被暂停,并等待着由目标从外设返回须要的数据。一个从端口可以将主端口永久地“挂起”。所以,外设必须保证不会使waitrequest无限期地保持有效。

 

 

 

 

 时序说明:

 

 (A)      第一个总线周期开始于clk上升沿;

 

(B)     Address和read_n信号有效;

 

(C)     Avalon总线对address译码,输出有效的chipselect;

 

(D)     从端口在下一个clk上升沿以前置waitrequest有效

 

(E)  Avalon总线模块在clk上升沿读取waitrequest。这时waitrequest有效,于是在该时钟上升沿不捕获readdata;

 

(F-G)waitrequest一直保持有效,能够占用任意多个总线周期;

 

(H) 从端口提供了有效的readdata;

 

(I)  从端口置waitrequest无效;

 

(J)  Avalon总线在下一个clk上升沿捕获readdata,读传输到此结束。另外一次总线传输能够开始于下一个总线周期。

 

 若一个从端口采用了外设控制等待周期的读传输模式,对该端口的其它传输模式会有一些限制,好比不能再使用创建时间和保持时间。这些限制只影响从端口,不影响链接到Avalon总线模块上的其它外设。在大多数状况下,产生waitrequest信号的外设是片上同步外设,不须要考虑创建时间和等待时间。

 

 

 

1.4.2.4具备创建时间的从端口读传输

 

  Avalon总线模块按照用户设计或者外设默认,可以自动知足各个从端口信号的创建时间要求,发起读传输的主外设没必要考虑各个信号对创建时间与保持时间的要求。具备创建时间的从端口读传输使用的信号与基本读传输使用的相同,不一样点只是信号的时序。

 

这种传输方式一般用于一些片外外设,它们要求在读使能信号有效前address和  Chipselect信号须要稳定一段时间。一个非零的创建时间N意味着address、byteenable_n和chipselect信号提供给从端口以后,在read_n有效以前有N个总线周期的延迟。要注意chipselect不受创建时间的影响,若外设对于read_n和chipselect都要求有创建时间,用户必须在接口中手工添加适当的逻辑(一个与门)。

 

完成总线传输所需的总线周期的总数取决于创建时间和等待周期的总线周期。例如,若一个外设具备参数setup_Time=”2”和Read_Wait_States=”3”,安将花费6个总线周期来完成传输:2个总线周期的创建时间,3个总线周期的等待周期,1个总线周期用来捕获数据。例4.5显示了具备一个总线周期的创建时间和一个固定等待周期的从端口读传输。

 

 时序说明:

 

 (A)      第一个总线周期开始于clk上升沿;

 

(B)     Address和byteenable_n有效,read_n信号仍保持无效;

 

(C)     Avalon总线对address译码,输出有效的chipselect;

 

(D)     clk上升沿标志着创建时间总线周期结束,并开始总线等待周期;

 

(E)  Avalon总线模块置read_n有效;

 

(F) clk上升沿标志着总线等待周期结束;

 

(H)  Avalon总线在下一个clk上升沿捕获readdata,读传输到此结束。另外一次总线传输能够开始于下一个总线周期。

 

若是一个外设可以同时支持读和写总线传输,而且指定了创建时间,那么读传输和写传输具备一样的创建时间。

 

4.5 具备创建时间的从端口读传输

 

 

 

 

1.4.3          Avalon总线上的从端口写传输

 

 

 

1.4.3.1       基本从端口写传输

 

和从端口读传输相似,基本从端口写传输是全部Avalon从端口写传输的基础。全部其它

 

的从端口写传输模式使用的信号都包含了基本从端口写传输的信号,并扩展了基本从端口写时序。基本从端口写传输由Avalon总线模块发起,由Avalon总线模块向从端口传输一个单元的数据。基本从端口写传输没有延迟。

 

  例4.6 显示了基本从端口写传输,没有等待周期、创建时间和保持时间。Avalon总线模块提供address、writedata、byteenable_n和write_n信号,而后设置chipselect有效。从端口在下一个时钟上升沿捕获地址、数据和控制信号,写传输当即结束。整个传输过程仅花费一个总线周期。从外设能够在传输结束后再花费一些总线周期来实际处理写入的数据。若是外设不能在每一个总线周期都接受数据,则须要加入等待周期。

 

 

 

4.6 基本从端口写传输

 

 

 

 

 

时序说明:

 

(A)       写传输开始于clk上升沿;

 

(B)       Writedata、address、byteenable_n、write_n信号有效;

 

(C)       Avalon总线模块对address译码,并向从端口设置有效的chipselect;

 

(D)       从端口在下一个clk上升沿捕获writedata、address、byteenable_n、write_n

 

和chipselect,写传输到此结束。另外一次读或写传输能够开始于下一个总线周期。

 

基本写传输只适合于同步外设,包括许多片上外设,例如PIO和定时器等。基本写传

 

输的时序不适合于异步外设,由于包括write_n和chipselect在内的全部输出信号同时失效,这会在片外存储器等异步外设中形成竞争冒险现象。对于这样的外设,用户能够设定信号的保持时间,这将在后面的章节中讨论。

 

当writedata比一个字节宽时,字节使能信号byteenable_n能够写入特定的字节段。Byteenable_n是一组信号线,其中每一次对应于writedata的一个字节段。Byteenable_n一般用于片外的16位或32位字寻址的存储器设备。当写入单个字节数据时,address仅指定相应的字或半字地址,而byteenable_n精确地指定要写入哪一个字节。表4.3是使用byteenable_n的一些例子,其中假定从端口是一个32位的外部存储器。

 

 

4.3 32位从端口字节使能的使用

 

byteenable_n[3:0]

 

写行为

 

0000

 

Write full 32-bits

 

1100

 

Write lower 2 bytes

 

0011

 

Write upper 2 bytes

 

1110

 

Write byte 0 only

 

1011

 

Write byte 2 only

 

 

 

1.4.3.2 具备固定等待周期的从端口写传输

 

具备固定等待周期的从端口写传输使用的信号与基本写传输使用的相同,不一样点只是信号的时序:Avalon总线模块在每次总线传输时都会插入固定数量的等待周期。

 

具备等待周期的从端口写传输一般用于不能在一个总线周期内从Avalon总线模块捕获数据的外设。在边种状况下Avalon总线模块在第一个总线周期中提供address、writedata、byteenable、write_n和chipselect信号。这和基本写传输开始时同样。在等待期间,这些信号保持稳定。在固定数量的等待周期后从端口捕获来自Avalon总线模块的数据。此后传输结束,Avalon总线模块同时使全部信号失效。

 

例4.7显示了具备一个等待周期的从端口写传输实例。

                                    

 

时序说明:

 

(A) 写传输开始于clk上升沿;

 

(B) Writedata、address、byteenable_n、write_n信号有效;

 

(C) Avalon总线模块对address译码,并向从端口设置有效的chipselect;

 

(D) 在第一个(也是惟一一个)总线等待周期在该clk上升沿结束。全部来自Avalon总线模块的信号保持不变;

 

(E)从端口在该clk上升沿或以前捕获writedata、address、byteenable_n、write_n

 

和chipselect,写传输到此结束。另外一次读或写传输能够开始于下一个总线周期。

 

 

 

1.4.3.2        具备外设控制等待周期的从端口写传输

 

外设控制等待周期使用目标外设可以根据须要将Avalon总线模块暂停任意多个总线周

 

期。某些外设读取数据时所需的总线周期是不固定的。由于每次传输均可能遇到不一样的条件。这种传输模式对于这些外设很是适用。

 

外设控制等待周期的传输模式使用了waitrequest信号,它是一个从端口的输出信号。Avalon总线模块在第一个总线周期中提供address、writedata、byteenable_n、write_n、和chipselect信号,这和基本写传输开始时同样。从端口若须要额外的时间来捕获数据,它必须在下一个时钟上升沿以前设置waitrequest有效。当waitequest有效后,Avalon总线模块便暂停工做,使得address、writedata、byteenable_n、write_n和chipselect信号保持稳定。在从端口设置waitrequest无效后,总线传输在下一个时钟上升沿结束。

 

Avalon总线模块没有超时机制来限制从端口强制总线暂停的时间。当Avalon总线模块被暂停后,系统模块内的某个主外设也被暂停,并等待着从端口读取写入的数据。这样就使得一个从外设可以将主外设永久地“挂起”。所以,外设必须保证不会使waitrequest无限期地保持有效。

 

例4.8显示了一个具备外设控制等待周期的从端口写传输的实例。

 

时序说明:

 

(A)       写传输开始于clk上升沿;

 

(B)       Address、writedata、byteenable_n、和write_n信号有效;

 

(C)       Avalon总线模块对address译码,而后置chipselect有效;

 

(D)       从端口在下一个clk上升沿以前置waitrequest有效;

 

(E)       Avalon总线模块在该clk上升沿读取waitrequest。若是waitrequest有效,这

 

个总线周期就成为一个等待周期,address、writedata、byteenable_n和write_n信号保持不变; 

 

(F-G)waitrequest一直保持有效,这能够占用任意多个总线周期;

 

(H) 从端口最终捕获了writedata;

 

(I)  从端口置waitrequest无效;

 

(J) 写传输在下一个clk上升沿结束。另外一次总线传输能够开始于下一个总线周期。

 

若一个从端口采用了外设控制等待周期的写传输模式,对该端口的其它传输模式会有一些限制,好比不能再使用创建时间和保持时间。这些限制只影响该从端口,不影响链接到Avalon总线模块上的其它外设。在大多数状况下,产生waitrequest信号的外设是片上的同步外设,不须要考虑创建时间和等待时间。

 

4.8 具备外设控制等待周期的从端口写传输

                                                                 

 

 

1.4.3.4 具备创建时间和保持时间的从端口写传输

 

Avalon总线模块按照用户设定或者外设默认,可以自动知足各个从端口信号的创建时间要求,发起读传输的主外设没必要考虑各个信号对创建时间与保持时间的要求。具备创建时间的从端口写传输使用的信号与基本使用的相同,不一样点只是信号的时序。

 

这种传输方式一般用于一些片外外设,它们要求在write_n脉冲的先后address、byteenable_n、wretedata和chipselect信号须要稳定一段时间。一个非零的创建时间M意味着在address、byteenable_n、wretedata和chipselect信号提供给从端口以后,在write_n有效以前有M个总线周期的延迟。一样地,一个非零的保持的保持时间N意味着在write_n失效后,address、byteenable_n、wretedata和chipselect保持N个总线周期的稳定。要注意chipselect不受创建时间与保持时间的影响,若外设对于write_n和chipselect都要求有创建时间和保持时间,用户必须手工向从端口接口添加适当的逻辑(一个与门)。

 

完成总线传输所须要的总线周期的总数取决于创建时间、等待周期和保持时间的总线周期数。例如,若一个外设具备参数Setup_Time=”2”、Read_Wait_States=”3”和Hold_Time=”2”,它将花费8个总线周期来完成传输:2个总线周期的创建时间,3个总线周期的等待周期,2个总线周期的保持时间,1个总线周期用来捕获数据。

 

从端口没必要同时使用创建时间与保持时间,只有创建时间或只有保持时间的传输也是能够的。例4.9显示了同时具备创建时间和保持时间的从端口写传输。

 

4.9 具备创建时间和保持时间的从端口写传输

 

 

                           

 

 

时序说明:

 

(A)       第一个总线周期开始于clk上升沿;

 

(B)       Address、byteenable_n、和writedata信号有效,write_n仍保持无效;

 

(C)       Avalon总线模块对address译码,而后置chipselect有效;

 

(D)       该clk上升沿标志着创建时间总线周期结束;

 

(E)       Avalon总线模块置write_n有效;

 

(F)       Avalon总线模块下一个clk上升置write_n无效;保持时间总线周期开始,

 

Address、byteenable_n、writedata和chipselect信号失效,写传输到此结束。

 

  若是一个外设可以同时支持读和与传输,而且指定了创建时间,那么读传输和写传输具备一样的创建时间。

 

1.5                Avalon主端口传输

 

 

 

Avalon主端口传输信号

 

 

1.6 高级Avalon总线传输之流传输模式

 

  流传输模式在流模式主外设和流模式从外设之间创建一个开放的传为信道以提供连续的数据传输。这个信道使得只要存在有效数据便能在主从端口对之间流动,主外设没必要为了肯定从端口是否可以发送或接收数据而不断地访问从外设的状态寄存器。流传输模式使得主从端口二者之间的数据吞吐量达到最大,同时避免了外设的数据上溢或下溢。它对于DMA传输特别重要。例如一个DMA控制器可能只包含简单的流控制信号和一个计数器,它用来在一个从外设和一个存储器之间连续地传输数据。

 

1.6.1        流模式从端口传输

 

除了在基本从端口中使用的信号以外,流模式外设的接口中又引入了三个信号:

 

readfordata、dataavailable和endofpacket。流模式从端口就是指使用了一个或多个上

 

上述信号的从端口。从端口经过设置readyfordata有效来表示它已准备好接受来自Avalon总线模块的写传输。从端口经过设置dataavailable有效来表示它已可以为来自Avalon总线模块的读传输提供数据。当这些信号无效时,会迫使Avalon总线模块(以及发起传输的流模式主端口)等待,直到从端口准备好继续为止。

 

Avalon总线模块只在readyfordata或dataavailable有效时才会发起传输的行为(仅适用于在流模式主从端口对之间传输的状况)。非流模式的主端口可能随时向从端口发起传输,无论从端口是否为流模式端口。例如,Avalon总线模块能够向一个流模式从端口发起一个来自于非流模式主端口(CPU)的从传输,即便此时另外一个来自流模式主端口(DMA控制器)的传输正由于dataavailable无效而在等待。

 

在任何传输期间,流模式从端口能够设置endofpacket信号有效。此信号经过Avalon总线模块传递到主外设以便它能响应。对于endofpacket信号的解释取决于用户设计。Endofpacket信号不保证Avalon总线模块会中止到从端口的传输流。例如,endofpacket能够用做包描述器,使得主外设能在一个长的数据流中知道包的开始与结束位置。此外,endofpacket也可设计为用来中断传输流,迫使主端口稍后继续进行读或写传输。

 

流模式从端口读传输 

 

流模式从外设经过设置dataavailable有效来表示它可以接收读传输。Avalon总线模块在dataavailable无效时不能发起读传输。当dataavailable有效时,Avalon总线模块可以经过在一个clk上升沿设置chipselect有效来开始一次读传输,这与其它的Avalon总线类似。Read_n、byteenable_n和readdata的时序与通常的从端口传输相同。用户能够设置创建时间和等待周期,包括外设控制的等待周期。

 

在传输结束后,若是外设不能当即为之后的读传输提供数据,则必须置dataavailable无效,使得Avalon总线模块不会试图在下一个clk上升沿发起另外一次新的读传输。当外设置dataavailable无效时,会迫使Avalon总线模块将到这一从端口的chipselect、read_n、address和byteenable_n置为无效。所以,在外设将dataavailable再次置为有效以前,Avalon总线不会对该从端口发起另外一次读传输。若是流模式主端口在从端口的dataavailable无效时发起了一次读传输,Avalon总线模块会简单地迫使主端口等待,直到从端口可以再次传输数据。

 

   Avalon总线规范不规定endofpacket的功能,该信号只是简单地经过Avalon总线模块

 

传递给主端口。从端口应当在设置有效的readdata的同时设置endofpacket有效,这使得主端口能够在捕获readdata的同时捕获endofpacket。从端口能够每次传输都使endofpack失效,也能够无限期地使endofpacket有效,并等待主端口将它复位。

 

例4.17显示了流模式从端口读传输。在这个例子中,假定一个Avalon流模式主外设发起了一个流传输模式读序列,传输在从端口的dataavailable有效时开始,此外假定主端口会接二连三地发起流传输操做。在传输中的某一时刻,从端口使dataavailable失效,迫使Avalon总线模块以及主端口等待。此后从端口再次设置dataavailable失效,Avalon总线模块继续从端口读取数据。在本例中,注意数据是从一个固定的从端口地址中读出的。从端口每次都提供新的数据。这种操做在寄存器控制的外设是常见的,例如UART和SPI。

 

例4.17中的从端口在使dataavailable失效以前的最后一个数据单元上设置endofpackete 有效。这不是必须的,endofpacket同dataavailable以及主外设如何响应没有内在的联系。当dataavailable仍旧有效时,Avalon总线模块使chipselect和read_n失效,从而结束了传输序列。这意味着是主端口,而不是从端口,有权结束传输序列。

 

 

 

 

 

4.17 流模式从端口读传输

 

 

 

 

 

流模式从端口写传输

 

  流模式从外设经过设置readfordata有效来表示它可以接受写传输。Avalon总线模块在readyfordata无效时不能发起传输。当readfordata有效时,Avalon总线模块可以经过在一个clk上升沿设置chipselect和address有效来开始一次写传输。这与其它Avalon总线写传输类似。Write_n、byteenable_n和readdata的时序与通常的从端口写传输相同。基于系统PTF文件中的声明,传输可使用创建时间、保持时间和等待周期,包括外设控制的等待周期。

 

在一次传输结束后,若是外设不能接受随后的写传输数据,则必须置readyfordata无效,使得Avalon总线模块不会在下一个clk上升沿发起另外一次写传输。当外设使readyfordata失效时,会迫使Avalon总线模块将送到这一从端口的chipselect、write_n、address和byteenable_n置为无效。所以,在外设将readyfordata再次置为有效以前,Avalon总线模块不会对该从端口发起另外一次写传输。若是流模式主端口在从端口的readyfordata无效时发起了一次写传输(或继续地起连续的传输),Avalon总线模块会简单地迫使主端口等待,直到能再次从从端口捕获数据。

 

Avalon总线规范不规定endofpacket的功能。该信号只是简单地经过Avalon总线模块传输给主端口。从端口应该在它从Avalon总线模块捕获了writedata后当即设置endofpacket有效。并且必须在chipselect失效前设置endofpacket有效,以便主端口能在同一总线传输中捕获endofpacket。从端口能够每次传输都使endofpacket失效,也能够无限期地使endofpacket有效,并等待主端口将它复位。若是流模式从外设须要必定的保持时间(很是少见的状况),那么endofpacket应该保持有效直至Avalon总线模块使chipselect失效(即便write_n已失效后)。

 

例4.18显示了流模式从端口写传输。在这个例子中,假定一个Avalon流模式主外设发起了一个流传输操做序列,传输在从端口的readfordata有效时开始。此外假定主端口会接二连三地发起写传输。在传输序列中的某一时刻,从端口使readyfordata失效,迫使Avalon总线模块以及主端口等待。此后从端口再次设置readyfordata有效,Avalon总线模块继续从端口写传输序列。在本例中,注意数据是向一个固定的从端口地址写入的。这在操做一个寄存器控制的外设时是常见的,例如UART和SPI。

 

例4.18显示了从端口在写传输序列期间设置endofpacket有效。这种操做依赖于主外设和从外设的设计。Endofpacket同readyfordata以及主外设如何响应没有内在的联系。当readyfordata仍旧有效时,Avalon总线模块使chipselect和write_n失效,从而结束了传输序列。这意味着是主端口,而不是从端口,有权结束传输序列。

 

4.18流模式从端口写传输

 

 

 

 

 



  时序说明:



(A)       第一个总线周期开始于CLK上升沿;



(B)       从Avalon总线到从端口的锁存输出address、write_n和writedata有效;



(C)       Avalon总线模块对address译码,而后置chipselect有效;



(D)       若有必要,从端口在当前总线传输的最后一个clk上升沿以前置endofpacket



有效。在本例中,从端口在一个总线周期后使endofpacket失效,但这对于不一样的外设设计可能会不一样;



(E)       从端口在该clk上升沿捕获writedata和address;



(F-G)   在chipselect和write_n保持有效的每一个总线周期中,Avalon总线模块都产生有效的writedata,且从端口必须在下一个clk上升沿捕获数据。在本例中,address保持不变,但并非全部的外设设计都是如此;



(H)   流模式从端口使readyfordata失效,迫使Avalon总线模块搁置全部后续的流模式写传输。注意此时write_n、chipselect和writedata仍然保持有效,代表流模式主端口仍在等待传输的结束。做为对readyfordata的响应,Avalon总线模块随后使address、write_n、chipselect和writedata失效;



(I)    在随后的某一时刻,从端口再次设置readyfordata有效;



(J)    为响应readyfordata,Avalon总线从新设置address、write_n、chipselect和writedata有效。注意若是没有挂起的流传输操做,这些信号会继续保持有效。一个新的流模式写传输开始于下一个clk上升沿;



(K-L)  从端口在该clk上升沿捕获writedata。在chipselect和write_n保持有效的每个总线周期,Avalon总线模块提供有效的writedata;;



(M)    Avalon总线模块使write_n和chipselect失效,代表如今没有挂起的流传输操做了。在本例中readyfordata继续保持有效,代表另外一次流传输操做能够开始于随后的任一总线周期。

相关文章
相关标签/搜索