前言
Nios系统的所有外设都是通过Avalon总线与Nios CPU相接的,Avalon(阿瓦隆) 总线是一种协议较为简单的系统总线(内总线),Nios通过Avalon总线与外界进行数据交换。之前就一直有所耳闻,并没真正去深入的了解过,今天让我们一起来学习学习。Intel官方文档地址:Avalon
一、Avalon接口简介
总的来说,Avalon可以方便我们轻松的连接各种组件,进而简化我们的系统设计。
常用于我们的流式传输高速数据、读写寄存器和存储器以及控制片外器件的接口
。接口可以应用于我们的自定义组件或英特尔原有的组件。在Intel官方文档中定义了7种接口,我们分别来看看。
1、七种接口定义
1、Avalon Streaming Interface (Avalon -ST)
这是Avalon的流式接口,该接口支持单向数据流的接口,包括多路复用、数据包、DSP数据流等。
2、Avalon Memory Mapped Interface ( Avalon -MM)
这是Avalon的内存映射接口,基于地址的读/写接口,是主-从连接的典型接口。
3、Avalon Conduit Interface
Avalon Conduit接口,适用于不适合其他Avalon类型的单个/多个信号。使用该信号可以将信号导出到顶层SOPC系统,这样就可以将它连接到设计的其他模块。
4、Avalon Tri-State Conduit Interface(Avalon -TC)
Avalon三态Conduit接口 – 与片外设备的接口。多个外设可以通过信号多路复用来共享管脚,从而减少FPGA的管脚数和PCB上的走线数量。
5、Avalon Interrupt Interface
Avalon 中断接口 — 允许组件向其他组件发出事件信号的接口。
6、Avalon Clock Interface
Avalon 时钟接口 — 驱动或接收时钟的接口。
7、Avalon Reset Interface
Avalon 重置接口 — 提供重置连接的接口。
注意:单个组件可以包含任意数量的这些接口,也可以包含相同接口类型的多个实例
。
2、接口需要关注的点
1、Avalon Properties and Parameters
这是Avalon的属性参数,Avalon接口使用属性描述它们的行为
。每种接口类型的规范定义了所有接口属性和默认值。
例如:
Avalon -ST 接口 maxChannel 的属性允许您指定接口支持的通道数。Avalon 时钟接口 clockRate 的属性提供时钟信号的频率。
2、Signal Roles
每个Avalon接口可以定义信号角色及行为,并且大多数信号角色是可选的。我们可以灵活的选择实现所需功能所需的信号角色。
例如:
Avalon® -MM 接口包括支持突发的组件的可选 beginbursttransfer 角色和 burstcount 信号角色。Avalon® -ST 接口包括支持数据包的接口的可选 startofpacket 角色和 endofpacket 信号角色。
需要注意的是:
除 Avalon 导管接口外,每个接口只能包含每个信号角色的一个信号
,许多信号角色允许低电平有效信号,官方文档通常使用高电平有效信号。
3、Interface Timing
这是接口的时序,用于描述我们各个接口类型传输的计时信息,这些接口中的任何一个都无法保证性能,实际性能取决于许多因素,包括组件设计和系统实现。大多数 Avalon 接口不得对时钟和复位以外的信号进行边沿敏感。
4、系统设计中的 Avalon 接口
在下图中,外部处理器通过带有Avalon® -MM接口的外部总线桥访问片上组件的控制和状态寄存器。PCI Express 根端口通过驱动具有 Avalon® -MM 主机接口的片上 PCI Express 端点来控制印刷电路板上的设备和 FPGA 的其他组件。外部处理器处理来自五个组件的中断。PLL通过Avalon®时钟接收器接口接受参考时钟,并提供两个时钟源。闪存和SRAM存储器通过Avalon® -TC接口共享FPGA引脚。最后,SDRAM 控制器通过 Avalon® Conduit 接口访问外部 SDRAM 存储器。
二、常用的接口
由于文档内容较多,现就详细介绍几个常用的接口,其余接口,我们需要时再去了解。
1、Avalon Clock and Reset Interfaces
- Avalon的时钟复位接口:
这是Avalon的时钟复位接口,时钟接口定义组件使用一个或多个时钟。组件可以具有时钟输入、时钟输出或都具备。锁相环(PLL)是同时具有时钟输入和时钟输出的组件示例。
Avalon时钟接口定义了组件使用的时钟,分为两个信号: