Avalon总线
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 |
address | 1-32 | 输入 | 指定从地址空间偏移量。如,当address=0,则指向第一个<从机数据宽度>位,address=1,这指向第二个<从机数据宽度>位。 |
readdata | 8,16,32,64,128,256,512,1024 | 输出 | 读过程读出的数据 |
writedata | 8,16,32,64,128,256,512,1024 | 输入 | 写过程从总线上传输过来的数据,数据的宽度需要和readdata的宽度相同。 |
byteenable byteenable_n | 1,2,4,8,16,32,64,128 | 输入 | 读写过程中字节使能信号。在读过程中指定那些字节的信号能够被读取,在写过程中指定哪些字节能够被写入。 |
begintransfer | 1 | 输入 | 在每个读写周期开始时由总线置位。 |
waitrequest waitrequest_n | 1 | 输出 | 用于可变延迟,流水式读取过程。当有有效信号响应先前的请求时,该信号置位。当 slave 无法响应 read 或者 write 请求时会置位 waitrequest。强 制 master 等待,直到互连(interconnect)准备好继续传输。Avalon -MM slave 可以在空闲周期内置位 waitrequest。 Avalon - MM master 可以在 waitrequest 置位时启动一个传输,并等待此信号 置低。为避免系统锁定,从器件(slave device)在复位状态时应该置位 waitrequest。 |
burstcount | 1-32 | 输入 | 用于计算突发传输的次数。由突发 master 使用以指示每个突发中的传输数量。最大 burstcount 参数的值必须是 2 的幂。 |
beginbursttransfer | 1 | 输入 | 用于显示突发传输何时开始进行。在一个周期后置无效。置位一个突发的第一个周期来指示何时开始一个突发传输。此信号在一个 周期后置低,而不管 waitrequest 的值如何。 |
readyfordata | 1 | 输出 | 用于表示设备已准备好写入 |
dataavailable | 1 | 输出 | 用于表示设备已准备好读取 |
resetrequest resetrequest_n | 1 | 输出 | 复位请求 |
Avalon -MM Slave 传输
下图显示了一个典型的系统,突出显示了 Avalon -MM slave 接口与互连(interconnect)架构的连接。
时序
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 的读和写传输
此时序图中的数字标记以下转换:
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 等于两个时钟周期
此图中的标记标识了以下事件:
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 等于一个时钟周期
此图中的编号标识了以下事件:
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 置位个周期每传输。
此图中的编号标识了以下转换:
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模板 原创,转载保留链接!网址:http://xn--zqqs03dbu6a.cn/?id=37
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。