​Avalon总线

yummy 阅读:671 2022-04-21 10:05:10 评论:0

mnl_avalon_spec-683091-667068 (1).pdf

Avalon简介

Avalon总线是一种协议较为简单的片内总线,Nios系统的所有外设都是通过Avalon总线与Nios CPU相接的,Nios通过Avalon总线与外界进行数据交换。

接口有Slave和Master。slave是一个从控接口,而master是一个主控接口。

主要特点

所有外设的接口与Avalon总线时钟同步,不需要复杂的握手/应答机制。这样就简化了Avalon总 线的时序行为,而且便于集成高速外设。Avalon总线以及整个系统的性能可以采用标准的同步时序分析技术来评估。

所有信号都是高电平/低电平有效,便于信号在总线中的高速传输。在Avalon总线中,由数据选择器决定哪个信号驱动哪个外设。因此外设即使在未被选中时也不需要将输出置为高阻态。

为了方便外设的设计,地址、数据和控制信号使用分离的、专用的端口。外设不需要识别地址总线周期和数据总线周期,也不需要在未被选中时使输出无效。分离的地址、数据和控制通道还简化了与片上用户自定义逻辑的连接 。

其他特性和约定

Avalon总线还包括许多其他特性和约定,用以支持SOPC Builder软件自动生成系统、总线和外设,包括:

最大4GB的地址空间——存储器和外设可以映像到32位地址空间中的任意位置

内置地址译码——Avalon总线自动产生所有外设的片选信号,极大地简化了基于Avalon总线的外设的设计工作

多主设备总线结构——Avalon总线上可以包含多个主外设,并自动生成仲裁逻辑

采用向导帮助用户配置系统——SOPC Builder提供图形化的向导帮助用户进行总线配置(添加外设、指定主/从关系、定义地址映像等)。Avalon总线结构将根据用户在向导中输入的参数自动生成

 动态地址对齐——如果参与传输的双方总线宽度不一致,Avalon总线自动处理数据传输的细节,使得不同数据总线宽度的外设能够方便地连接

外设服务

 数据通道多路转换——Avalon 总线模块的多路复用器从被选择的从外设向相关主外设传输数据。

地址译码——地址译码逻辑为每一个外设提供片选信号。这样,单独的外设不需要对地址线译码以产生片选信号,从而简化了外设的设计。

产生等待状态(Wait-State)——等待状态的产生拓展了一个或多个周期的总线传输,这有利于满足某些特殊的同步外设的需要。当从外设无法在一个时钟周期内应答的时候,产生的等待状态可以使主外设进入等待状态。在读使能及写使能信号需要一定的建立时间/保持时间要求的时候也可以产生等待状态。

动态总线宽度——动态总线宽度隐藏了窄带宽外设与较宽的Avalon 总线(或者Avalon 总线与更高带宽的外设)相接口的细节问题。举例来说,一个32 位的主设备从一个16 位的存储器中读数据的时候,动态总线宽度可以自动的对16 位的存储器进行两次读操作,从而传输32 位的数据。这便减少了主设备的逻辑及软件的复杂程度,因为主设备不需要关心外设的物理特性。

中断优先级(Interrupt-Priority)分配——当一个或者多个从外设产生中断的时候,Avalon 总线模块根据相应的中断请求号(IRQ)来判定中断请求。

 延迟传输(Latent Transfer)能力——在主、从设备之间进行带有延迟传输的逻辑包含于Avalon总线模块的内部。

流式读写(Streaming Read and Write)能力——在主、从设备之间进行流传输使能的逻辑包含于Avalon 总线模块的内部。

Avalon_MM接口

 Avalon内存映射主接口是和Avalon内存映射从接口相对应的接口。

此规范不要求所有信号存在于一个 Avalon -MM 接口中。没有一个信号是始终需要的。对一个 Avalon -MM 接口的最低要求是用于只读接口的 readdata,或者用于只写接口的 writedata 和 write。

信号
宽度方向描述

read

read_n

1


输入

读请求信号。如果该信号存在,那么需要readdata

write

write_n

1输入写请求信号。如果该信号存在。那么需要writedata
address1-32输入指定从地址空间偏移量。如,当address=0,则指向第一个<从机数据宽度>位,address=1,这指向第二个<从机数据宽度>位。
readdata8,16,32,64,128,256,512,1024输出
读过程读出的数据
writedata8,16,32,64,128,256,512,1024输入写过程从总线上传输过来的数据,数据的宽度需要和readdata的宽度相同。

byteenable

byteenable_n

1,2,4,8,16,32,64,128
输入读写过程中字节使能信号。在读过程中指定那些字节的信号能够被读取,在写过程中指定哪些字节能够被写入。
begintransfer1输入在每个读写周期开始时由总线置位。

waitrequest

waitrequest_n

1输出用于可变延迟,流水式读取过程。当有有效信号响应先前的请求时,该信号置位。当 slave 无法响应 read 或者 write 请求时会置位 waitrequest。强 制 master 等待,直到互连(interconnect)准备好继续传输。Avalon -MM slave 可以在空闲周期内置位 waitrequest。 Avalon - MM master 可以在 waitrequest 置位时启动一个传输,并等待此信号 置低。为避免系统锁定,从器件(slave device)在复位状态时应该置位 waitrequest。
burstcount1-32输入用于计算突发传输的次数。由突发 master 使用以指示每个突发中的传输数量。最大 burstcount 参数的值必须是 2 的幂。
beginbursttransfer1输入用于显示突发传输何时开始进行。在一个周期后置无效。置位一个突发的第一个周期来指示何时开始一个突发传输。此信号在一个 周期后置低,而不管 waitrequest 的值如何。
readyfordata1输出用于表示设备已准备好写入
dataavailable1输出用于表示设备已准备好读取

resetrequest

resetrequest_n

1输出复位请求

Avalon -MM Slave 传输

下图显示了一个典型的系统,突出显示了 Avalon -MM slave 接口与互连(interconnect)架构的连接。

image.png

时序

Avalon -MM 接口是同步的。每个 Avalon -MM 接口都与一个相关联的时钟接口同步。

传输

传输是一个字或者一个或多个符号的数据的读或写操作。

典型的读传输和写传输

slave 通常在时钟的上升沿之后接收 address,byteenable,read 或者 write 和 writedata。slave 通过在上升时钟沿之前置位 waitrequest 来暂停传输。当 slave 置位 waitrequest 时,传输延迟。waitrequest 置位期间,地址和其他控制信号保持不变。slave 接口置低 waitrequest 之后,在第一个 clk 的上升沿完成传输。

waitrequest 能够从 read 和 write 请求信号中解耦。waitrequest 可以在空闲周期置 位。当 waitrequest 置位时, Avalon -MM master 可以启动一个传输,并等待此信号置低。

包括 Waitrequest 的读和写传输

image.png

此时序图中的数字标记以下转换: 

 1. address,byteenable 和 read 在 clk 的上升沿后置位。slave 置位 waitrequest, 暂停传输。

 2. waitrequest 被采样。由于 waitrequest 置位,因此周期变成一个等待状态(waitstate)。address,read,write 和 byteenable 保持不变。

 3. slave 在 clk 的上升沿之后置低 waitrequest。slave 置位 readdata 和 response。

 4. master 对 readdata,response 和置低的 waitrequest(完成传输)的进行采样。

 5. address,writedata,byteenable 和 write 信号在 clk 的上升沿之后置位。slave 置位 waitrequest,暂停传输。

 6. slave 在 clk 的上升沿之后置低 waitrequest。

 7. slave 采集结束传输的写数据。

使用 waitrequestAllowance 属性进行传输

waitrequestAllowance 属性指定 waitrequest 信号置位后一个 Avalon -MM master 能 够发出的或者一个 Avalon -MM slave 必须接受的传输数量。其中 waitrequest 置位停止发出或接受当前传输。waitrequestallowance 用完时,master 必须置低 read 或者 write 信号。

下图显示了一个 Avalon -MM> master 的时序, 在 Avalon -MM> slave 置低或者置位 waitrequest 之后,该 Avalon -MM> master 有两个时钟周期来开始和停止发送传输。

Master write:waitrequestAllowance 等于两个时钟周期

image.png

此图中的标记标识了以下事件:

 1. Avalon -MM> master 驱动 write 和 data。

 2. Avalon -MM> slave 置位 waitrequest。由于 waitrequestAllowance 为 2,因此 master 能够完成 2 个额外的数据传输。

 3. master 按照要求置低 write,因为 slave 置位 waitrequest 第三个周期。

 4. Avalon -MM> master 驱动 write 和 data。slave 没有置位 waitrequest。写操作完 成。

 5. 即便 slave 置位 waitrequest, Avalon master 也驱动 write 和 data。由于 waitrequestAllowance 是 2 个周期,因此写操作完成。

 6. Avalon master 驱动 write 和 data。slave 没有置位 waitrequest。写操作完成。

Master Write:waitrequestAllowance 等于一个时钟周期

image.png

此图中的编号标识了以下事件:

 1. Avalon -MM master 驱动 write 和 data。

 2. Avalon -MM slave 置位 waitrequest。由于 waitrequestAllowance 为 1,因此 master 能够写操作。

 3. master 置低 write,因为 slave 置位 waitrequest 第二个周期。

 4. Avalon -MM master 驱动 write 和 data。slave 没有置位 waitrequest。写操作完 成。

 5. slave 置位 waitrequest。由于 waitrequestAllowance 为 1 个周期,因此写操作完 成。

 6. Avalon -MM master 驱动 write 和 data。slave 没有置位 waitrequest。写操作完 成。

 7. Avalon -MM slave 置位 waitrequest。由于 waitrequestAllowance 为 1,因此 master 能够完成 1 个额外的数据传输。

 8. Avalon master 驱动 write 和 data。slave 没有置位 waitrequest。写操作完成。

固定等待状态的读和写传输(Read and Write Transfers with Fixed Wait-States)

slave 可以使用 readWaitTime 和 writeWaitTime 属性来指定固定等待状态。使用固定等待 状态是使用 waitrequest 来停止传输的一个替代方法。地址和控制信号 byteenable,read 和 write)在传输期间保持不变。将 readWaitTime 或 writeWaitTime 设置为相当于 将 waitrequest 置位个周期每传输。

image.png

此图中的编号标识了以下转换:

 1. master 在 clk 的上升沿置位 address 和 read。

 2. clk 的下一个上升沿标记第一个也是唯一一个等待状态(wait-state)周期的结束。 readWaitTime 为 1。

 3. slave 在 clk 的上升沿置位 readdata 和 response。读传输结束。

 4. writedata,address,byteenable 和 write 信号可用于 slave。

 5. 写传输在 2 个等待状态(wait-state)周期后结束。

 单一等待状态的传输通常用于多周期片外(off-chip)外设。外设在 clk 的上升沿采集地址和控制信 号。外设有一个完整的周期来返回数据。

流水线传输(Pipelined Transfers)

Avalon -MM 流水线读传输增加同步从器件的吞吐量,这些同步从器件需要几个周期才能返回第一 次访问的数据。这样的器件通常可以在一段时间后每个周期返回一个数据值。新流水线读传输可以 在先前传输的 readdata 返回之前启动。

流水线读传输有一个地址阶段(address phase)和一个数据阶段(data phase)。master 通过在地 址阶段期间提供地址来启动一个传输。slave 通过在数据阶段期间传送数据来完成传输。一个新传输 (或者多个传输)的地址阶段可以在先前传输的数据阶段完成之前开始。此延迟称为流水线延迟 (pipeline latency)。流水线延迟是从地址阶段结束到数据阶段开始的持续时间。




参考资料:https://baike.baidu.com/item/Avalon%E6%80%BB%E7%BA%BF/5405515?fr=aladdin


本文 zblog模板 原创,转载保留链接!网址:https://xn--zqqs03dbu6a.cn/?id=37

可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。