Avalon 总线是一种协议较为简单的片内总线,主要用于连接片内处理器与外设,以构成片上可编程系统(SOPC)。使用 Avalon 接口能够轻松连接 Intel FPGA 中的各个组件,从而简化了系统设计。Avalon 接口常用于高速数据流传输、读写寄存器和存储器、控制片外器件等。此外,也可以使用 Avalon 接口自定义组件,以增强设计的互操作性。
Avalon 共有以下七种接口:
- Avalon Clock Interface, Avalon 时钟接口 -- 驱动或接收时钟信号的接口。
- Avalon Reset Interface, Avalon 复位接口 -- 驱动或接收复位信号的接口。
- Avalon Memory Mapped Interface (Avalon-MM), Avalon 存储器映射接口 -- 基于地址的读/写接口,是主 - 从连接的典型接口。
- Avalon Streaming Interface (Avalon-ST), Avalon Streaming 接口 --支持单向数据流的接口,包括多数据流、数据包和 DSP 数据的传输。
- Avalon Conduit Interface, Avalon Conduit 接口 -- 适用于不适合任何其他 Avalon 类型的单个/多个信号。使用该接口可以将信号导出到顶层 SOPC 系统,这样就可以将它连接到设计的其他模块。
- Avalon Tri-State Conduit Interface (Avalon-TC), Avalon 三态 Conduit 接口 -- 与片外设备的接口。多个外设可以通过信号的多路复用共享引脚,从而减少 FPGA 引脚数和 PCB 走线数。
- Avalon Interrupt Interface, Avalon 中断接口 -- 允许组件向其他组件发送事件信号的接口。
一个组件可以包含多个不同类型的接口,也可以包含多个相同类型的接口。
Avalon 接口通过属性(property)描述它们的行为。每种接口类型的规范定义了所有接口的属性和默认值。比如,Avalon-ST 接口的 maxChannel 属性指定接口支持的通道数量,Avalon Clock 接口的 clockRate 属性描述时钟信号的频率。
每个 Avalon 接口都定义了一系列的信号及其行为,并且多数信号都是可选的,这允许组件设计者能够更加灵活地选择需要的信号类型。例如,Avalon-MM 接口包含可选的 beginbursttransfer 和 burstcount 信号,用于那些支持突发(bursting)传输的组件。Avalon-ST 接口包含可选的 startofpacket 和 endofpacket 信号,用于那些支持数据包的接口。
每种接口都有时序方面的信息,这些时序信息描述了针对单个类型的传输。
本文重点介绍时钟接口、复位接口、存储器映射接口和 Conduit 接口四种常用接口,其余接口请参考 Intel FPGA 的 Avalon Interface Specification 文档。
Avalon 时钟接口
Avalon 时钟接口定义了组件使用的时钟,一个组件可以有时钟输入、时钟输出或时钟输入输出都含有。例如,锁相环(PLL)是一个包含了时钟输入和时钟输出的组件。
Clock Sink 信号
Clock sink 为其他接口和内部逻辑提供时钟和时序参考,clock sink 的属性有 clockRate,用来表示 clock sink 接口的频率(Hz),默认值为 0。
表 1 Clock Sink 信号
![Clock Sink 信号示意图]
表 2 Clock Sink 属性
![Clock Sink 属性表]
所有同步接口都有一个 associatedClock 属性,该属性指定组件上的哪个时钟源(clock source)用作接口的同步参考。
![Associated Clock 示意图]
Clock Source 信号
Clock source 接口从一个组件中输出一个时钟信号。clock source 有三个属性,associatedDirectClock 表示直接驱动该时钟的时钟名称,clockRate 表示时钟输出的频率,clockRateKnown 指示时钟频率是否已知。
表 3 Clock Source 信号
![Clock Source 信号示意图]
表 4 Clock Source 属性
![Clock Source 属性表]
Avalon 复位接口
与 Avalon 时钟接口类似,Avalon 复位接口也分为 Reset Sink 和 Reset Source。
Reset Sink
Reset sink 包含两个信号,reset/reset_n 和 reset_req,reset_req 是一个可选的信号。Reset sink 有两个属性,associatedClock 表示与该接口同步的时钟,synchronous-Edges 表示复位所需要的同步类型,NONE 表示不需要同步,DEASSERT 表示复位是异步的,取消复位是同步的,BOTH 表示复位和取消复位都是同步的。


