跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
汇编

Altera FPGA Avalon MM 总线接口规范简介

Avalon 总线是 Altera FPGA 片内总线协议,主要用于连接片内处理器与外设。包含时钟、复位、存储器映射等七种接口。重点介绍时钟、复位、存储器映射及 Conduit 接口。Avalon-MM 支持主从读写传输,具备地址对齐和动态总线尺寸管理功能。Conduit 接口用于导出非标准信号。

静心发布于 2026/4/9更新于 2026/5/2315 浏览
Altera FPGA Avalon MM 总线接口规范简介

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 信号,用于那些支持数据包的接口。

每种接口都有时序方面的信息,这些时序信息描述了针对单个类型的传输。

注:本文重点介绍 Avalon 时钟接口、Avalon 复位接口、Avalon 存储器映射接口和 Avalon Conduit 接口,其余接口请参考 Intel FPGA 的 Avalon Interface Specification 文档。

Avalon 时钟接口

Avalon 时钟接口定义了组件使用的时钟,一个组件可以有时钟输入、时钟输出或时钟输入输出都含有。例如,锁相环(PLL)是一个包含了时钟输入和时钟输出的组件。

image

Clock Sink 信号

Clock sink 为其他接口和内部逻辑提供时钟和时序参考,clock sink 的属性有 clockRate,用来表示 clock sink 接口的频率(Hz),默认值为 0。

表 1 Clock Sink 信号

图片

表 2 Clock Sink 属性

图片

所有同步接口都有一个 associatedClock 属性,该属性指定组件上的哪个时钟源(clock source)用作接口的同步参考。

image

Clock Source 信号

Clock source 接口从一个组件中输出一个时钟信号。clock source 有三个属性,associatedDirectClock 表示直接驱动该时钟的时钟名称,clockRate 表示时钟输出的频率,clockRateKnown 指示时钟频率是否已知。

表 3 Clock Source 信号

图片

表 4 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 表示复位和取消复位都是同步的。

所有同步接口都有一个 associatedReset 属性,用于指定哪个复位信号对接口逻辑进行复位。

表 5 Reset Sink 信号

图片

表 6 Reset Sink 属性

图片

Reset Source

Reset source 也是包含两个信号,reset/reset_n 和 reset_req,reset_req 是一个可选的信号。Reset source 有四个属性,associatedClock 表示与该接口同步的时钟;associatedDirectReset 表示复位输入的名称,此复位输入通过 one-to-one 链路直接驱动此复位源;associatedResetSinks 用来指定复位输入,使复位源对复位进行复位;synchronous-Edges 表示复位所需要的同步类型,NONE 表示不需要同步,DEASSERT 表示复位是异步的,取消复位是同步的,BOTH 表示复位和取消复位都是同步的。

表 7 Reset Source 信号

图片

表 8 Reset Sink 属性

图片

Avalon 存储器映射接口

Avalon 存储器映射接口主要用于实现主 - 从(Master-Slave)组件的读写接口,微处理器、存储器、UART、DMA、定时器(Timer)是常用的包含 Avalon 存储器映射接口的组件。Avalon-MM 接口有简单的也有复杂的。例如,SRAM 接口有固定周期的读写传输,具有简单的 Avalon-MM 接口。能够进行突发传输的流水线接口(pipelined interface)有更为复杂的 Avalon-MM 接口。这里我们只介绍简单的 Avalon-MM 接口,较为复杂的流水线接口请参考 Intel FPGA 的 Avalon Interface Specification 文档。

下图是一个典型的系统,图中加亮并画圈的是 Avalon-MM slave 接口与互连 (interconnect) 架构的连接。

image

下图为 16-bit 通用 I/O 外设仅响应写请求,该组件只包含写传输所需的从信号。

image

Avalon 存储器映射接口信号及属性

Avalon® Interface Specifications 文档的 Table 9 列出了 Avalon-MM 接口的信号。。注意:Avalon 规范不要求所有信号都存在于一个 Avalon-MM 接口中,即当一个接口为 Avalon-MM 接口时,只包含所需要的某些信号即可。例如,对于只支持读操作(read-only)的接口,最少可只包含 readdata 信号;对于只支持写操作(write-only)的接口,最少可只有 writedata 和 wrtie 信号。

表 9 Avalon-MM 接口信号

图片

图片

图片

表 10 列出了 Avalon-MM 接口信号的属性。

表 10 Avalon-MM 接口信号属性

图片

图片

Avalon-MM 典型的读传输和写传输

在介绍 Avalon-MM 典型的读写传输之前,先来介绍两个基本概念:

  • 传输 (Transfer) -- 传输是一个字或者一个或多个符号的数据的读或写操作。传输发生在 Avalon-MM 接口与互连之间。传输需要一个或多个时钟周期才能完成。master 和 slave 都是传输的一部分。Avalon-MM master 启动传输,Avalon-MM slave 作出响应。
  • Master-slave pair -- 指在一个传输中涉及到 master 接口和 slave 接口。在一个传输过程中,master 接口控制和数据信号遍历互连架构,并与 slave 接口进行交互。

下面介绍一个典型的 Avalon-MM 接口进行读写传输的范例,该接口包含 waitrequest 信号,通过将 waitrequest(高电平有效)信号置为高电平,slave 可将互连暂停。

通常,slave 在时钟上升沿之后接收 address、byteenable、read 或者 write 和 writedata 信号,在时钟上升沿之前将 waitrequest 置为高电平来暂停传输。当 slave 拉高 waitrequest 信号时,数据传输被延迟,此时地址线和其他控制信号保持不变。在 slave 将 waitrequest 拉低后的第一个时钟上升沿,读写传输完成。

Slave 可以无期限的拉高 waitrequest 信号,但是在设计中必须确保 slave 接口不要无期限的拉高 waitrequest 信号,以免出现 slave 一直不响应、master 一直等待的现象。下图为使用了 waitrequest 的读传输和写传输。

image

我们来分析上图中每个数字标注的时刻,Avalon-MM 总线上的操作:

  1. clk 上升沿后,address、byteenable、read 信号被置为有效;slave 将 waitrequest 拉高,暂停数据传输。
  2. clk 上升沿,waitrequest 被 master 采样;由于 waitrequest 有效,此时处于等待状态 (wait-state),address、read 和 byteenable 保持不变。
  3. slave 在 clk 上升沿之后将 waitrequest 置为低电平,之后将 readdata、responese 置为有效。
  4. clk 上升沿,master 检测到 waitrequest 拉低,捕获 readdata、response,读数据传输完成。
  5. clk 上升沿后,address、writedata、byteenable 和 write 信号被置为有效;slave 将 waitrequest 拉高,暂停数据传输。
  6. slave 在 clk 上升沿之后将 waitrequest 置为低电平。
  7. clk 上升沿,slave 捕获到 writedata,写数据传输完成。
地址对齐

互连仅支持地址对齐的访问方式。Master 只能发送其数据位宽倍数的地址。Master 可通过拉低 byteenable_n 的某几位来写入部分数据。例如,向地址 2 写入 2 字节的数据时,byteenable_n = 4'b1100。

Avalon-MM 寻址

动态地址对齐 (Dynamic bus sizing) 在不同数据宽度的 master-slave 对传输期间管理数据。从机数据在主机地址空间中以连续字节的方式对齐。

如果 master 的数据宽度大于 slave 的数据宽度,mster 地址空间中的字会映射到 slave 地址空间中的多个位置。例如,32 位的 master 读取 16 位的 slave 时,会在 slave 端进行两次读传输,这两次读传输的地址是连续的。

如果 master 的数据宽度小于 slave 的数据宽度时,互连会管理 slave 的各个字节通道。当 master 从 slave 读取数据时,互连只会把相应的字节通道的数据传输给 master。当 master 向 slave 写数据时,互连会自动将相应字节通道的 byteenables 信号置为有效。

Slave 的数据宽度必须是 8、16、32、64、128、256、512 或者 1024 位。下表列出了 32 位的 master 按字访问不同位宽的 slave 数据时是如何与 master 对齐的,OFFSET[N] 表示 slave 地址空间字的偏移量。

表 11 动态地址对齐的 Master-Slave 之间的地址映射

image

Avalon Conduit 接口

Avalon Conduit 接口是那些不适合任何其他 Avalon 类型的单个/多个信号的集合,使用该接口可以将信号导出到顶层 SOPC 系统,这样就可以将它连接到设计的其他模块。一个 Avalon Conduit 接口可以包括输入、输出和双向信号,并且一个模块/组件可以有多个 Avalon Conduit 接口。

管道(Conduit)接口通常用于驱动片外器件信号,比如 SDRAM 的地址、数据和控制信号线。

image

Avalon conduit 接口的信号可以是任意的,并且该接口的信号没有任何属性。

表 12 Conduit 接口信号

图片

目录

  1. Avalon 时钟接口
  2. Clock Sink 信号
  3. Clock Source 信号
  4. Avalon 复位接口
  5. Reset Sink
  6. Reset Source
  7. Avalon 存储器映射接口
  8. Avalon 存储器映射接口信号及属性
  9. Avalon-MM 典型的读传输和写传输
  10. 地址对齐
  11. Avalon-MM 寻址
  12. Avalon Conduit 接口
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 喜马拉雅 AI 产品经理面试经验:大模型方向两轮面经与参考答案
  • Python AKshare 金融数据获取实战:股票基金期货全市场数据
  • Microsoft Edge WebView2 Runtime 快速部署与调试指南
  • 2025 年 18 款主流 AI 助手推荐
  • AIGC 技术如何颠覆娱乐产业的创意与生产
  • Python Django 在线音乐播放平台项目实战
  • Anything-LLM 本地化离线部署完整教程
  • llama.cpp 多环境部署指南:从 CPU 到 CUDA/Metal 的高效推理实践
  • Superpowers 与 gstack:AI 编程 Agent 技能与角色架构对比
  • 哪些 AI 工具可生成 Word 文档
  • FPGA 开发实战:Vivado IP 核调用与配置指南
  • SpringBoot 基于 Java 的诊所管理系统设计与实现
  • C++ 二叉搜索树详解:概念、操作与实现
  • 基于大疆 MSDK 的无人机视觉引导自适应降落方案
  • OpenCode 升级指南:从旧版到新架构的完整迁移方案
  • GitHub Copilot 学生认证指南:零基础免费使用 AI 编程助手
  • 基于实际案例的 AI 大模型应用与提示词工程实践指南
  • Neo4j 性能监控实战:5 个关键技巧快速诊断数据库瓶颈
  • Python 虚拟环境管理工具 UV:从安装到高级用法
  • Windows 本地部署 Ollama 与 OpenClaw 构建 AI 生产力系统

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online