• 正文
  • 相关推荐
申请入驻 产业图谱

【黑金云课堂】FPGA技术教程FPGA基础:呼吸灯实验+RAM/ROM IP设计与验证

05/14 15:45
532
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

FPGA 基础第 7-8 节 呼吸灯实验与 RAM/ROM IP 设计与验证,选自 ALINX 黑金云课堂 FPGA 免费直播课。该课程由 ALINX 资深工程师团队倾力打造,从 0 到 1 系统化教学,帮助每位工程师跨过 FPGA 开发门槛。

ALINX:关注 ALINX,进入视频号即可查看完整黑金云课堂 FPGA 视频教程。配合笔记学习效果更佳。


FPGA PWM 呼吸灯

实验目的

PWM 原理说明

  • PWM:通过调节高电平持续时间(脉冲宽度)来控制平均能量
  • 占空比公式:占空比 = T_ON / T_周期 × 100%
  • 应用场景:LED 光、电机调速、电源管理
  • 人眼感知:占空比越高,亮度越高(视觉暂留效应)

呼吸灯实现思路

  • 固定 PWM 周期:如 1000 个时钟周期,保证频率稳定
  • 占空比步进控制:
    • 逐步增大占空比(如每次+1),亮度增加
    • 达到最大值后逐步减小(每次-1),亮度降低
    • 回到最小值后重复循环,形成呼吸效果
  • 呼吸频率:完整周期约 1Hz

💡具体讲解可前往 ALINX 视频号进行直播回看。

Verilog核心代码

  • 模块名:pwm_generator
  • 主要信号:
    • pwm_cnt:10 位计数器,范围 0~1023,决定PWM周期
    • duty:10 位占空比控制值(0~1023)
    • pwm_out:PWM 输出,控制 LED 亮灭
  • 核心逻辑:
    • 计数器每个时钟周期加 1,自动循环
    • pwm_cnt < duty 时输出高电平,否则低电平
    • 通过外部改变 duty 值即可调节亮度

仿真波形分析

  • 通过仿真验证不同占空比下的输出波形
  • 高电平宽度与 duty 值成正比,验证 PWM 原理正确

上板效果总结

  • LED 亮度平滑变化,呼吸效果逼真
  • 无闪烁(PWM 频率 > 100Hz)
  • 长时间运行稳定
  • 成功验证 PWM 调光原理

学习要点回顾

  • 理解 PWM 周期与占空比的概念
  • 掌握用计数器生成 PWM 的方法
  • 能独立编写 PWM 发生器的 Verilog 代码
  • 能通过仿真和上板验证 PWM 输出效果

RAM IP 设计与验证

RAM IP 设计与验证核心要点

  • 核心原理与内部结构:

RAM 是易失性随机存取存储器,支持对任意地址的读写操作,访问时间与存储单元的物理位置无关。

其内部结构由三部分组成:地址译码器,负责对输入地址解码,地址线的宽度直接决定了 RAM 的寻址深度;存储矩阵,是 RAM 的核心存储区域,总存储容量等于寻址深度乘以数据位宽;读写控制逻辑,负责根据外部的读写使能信号,控制对选中存储单元的读写操作。

  • FPGA 实现方式与选型

FPGA 中 RAM 有两种主流的实现方式,选型直接影响资源利用率与性能:

  • Block RAM(BRAM):FPGA内部的专用嵌入式存储块,常见的单块容量为18Kb 或 36Kb,不会消耗FPGA的逻辑资源,访问速度较快,适合大容量数据缓存、FIFO、帧缓冲这类场景。
  • Distributed RAM(LUTRAM):利用 FPGA 内部的查找表构建的分布式存储,访问速度极快,没有额外的访问延迟,但会消耗 FPGA 的逻辑资源,适合小容量的查找表、状态机跳转表、小型缓存这类场景。

选型建议: 当存储容量小于 64bit 时,优先选择 LUTRAM,避免 BRAM 资源的浪费;当容量大于 512bit 时,优先选择 BRAM,节省逻辑资源。

端口类型与冲突处理

根据端口的配置,RAM 可分为三类,适配不同的交互场景:

  • 单端口 RAM: 仅有一套地址、数据与控制信号,同一时刻仅能执行读操作或者写操作,无法并发访问,结构最简单。
  • 简单双端口 RAM: 拥有两套独立的地址与控制信号,通常配置为 A 端口写入、B 端口读出,是典型的“生产者-消费者”数据交互模型,非常适合跨时钟域的数据传输场景。
  • 真双端口 RAM: 拥有两套完全独立且对称的读写端口,支持双向的并发访问,功能最灵活,但设计时需要处理地址冲突问题,常见的解决方法包括地址分区、仲裁机制、利用 IP 核内置的冲突处理机制。

操作模式

当两个端口同时对同一个地址进行读写操作时,RAM 支持三种不同的操作模式,适配不同的业务需求:

  • 写优先模式: 同一时钟周期内优先执行写操作,随后立即将新写入的数据输出,适合需要立即获取最新数据的场景。
  • 读优先模式: 优先将该地址的旧数据读出,之后再执行写操作更新存储,适合需要保证读取数据为操作前原始状态的场景,比如日志记录。
  • 无变化模式: 在执行写操作期间,数据输出端口保持上一次读操作的结果,不会反映当前的写过程,这种模式可以减少输出的电平翻转,降低功耗,适合普通的缓存场景。

IP 工程搭建核心配置

基于 Vivado 工具的 RAM IP 搭建,核心的配置要点如下:

  1. 输出寄存器配置: 可以选择是否添加输出寄存器,开启后会增加 1 个时钟周期的读延迟,但可以打断组合逻辑,提升 IP 的最高工作频率;如果是对延迟敏感的低延迟应用,可以关闭该选项。
  2. 位宽与深度适配: IP 核会自动根据你配置的位宽和深度,拼接多个BRAM来满足需求,无需手动处理。
  3. 异步时钟支持: IP 核默认支持双端口的异步时钟,无需额外配置,但需要注意跨时钟域的亚稳态问题,对控制信号添加同步器。

仿真与调试

仿真的核心是验证 RAM 的读写功能正确性,核心逻辑为:

先遍历所有地址写入测试数据,完成写入后再依次读取每个地址的数据,自动校验读取结果与写入数据是否一致。

上板调试时,可以使用 Vivado 的 ILA(集成逻辑分析仪)抓取 RAM 的读写信号,验证实际硬件中的时序是否符合预期。

常见的问题包括:跨时钟域同步问题、端口被综合工具优化、复位信号的同步问题。

ROM IP 设计与验证核心要点

核心原理与实现

ROM 是非易失性的只读存储器,在正常工作时仅能读取数据,无法进行写入操作,数据会在 FPGA 上电配置的阶段,通过初始化文件加载到存储单元中,断电后数据不会丢失。

FPGA 中 ROM 的实现分为两种:

  • 分布式 ROM,基于LUT实现,适合小容量、高速度的常量存储;
  • 块 ROM,将 BRAM 配置为只读模式,适合大容量的固定数据,比如波形表、启动代码这类场景。

端口类型

  • 单端口 ROM:只有一个访问端口,同一时刻仅能进行一次读操作,是最常用的类型。
  • 双端口 ROM:扩展出两个独立的访问端口,支持两个模块同时读取同一块存储的数据,适合多模块共享固定数据的场景,比如 VGA 显示模块与 DMA 模块同时读取像素数据。

IP 工程搭建

ROM IP 搭建的核心是初始化文件的制作,小容量的初始化数据可以手动编写 .coe 格式的初始化文件;对于大容量的初始化数据,比如波形、图片数据,无需手动编写,可通过脚本自动生成,大幅提升开发效率。

配置 IP 时需要注意:Xilinx 工具使用 .coe 格式的初始化文件,Intel 工具使用 .mif 格式,两者不能通用;建议将初始化文件放在工程目录下,使用相对路径,避免工程迁移时文件找不到;同时要保证初始化文件中的数据个数、位宽,与 IP 的配置完全匹配。

仿真与调试

ROM 的验证相对简单,核心是校验读取的数据与初始化文件中的数据是否一致,仿真时遍历所有地址,自动比对读取结果与预期数据即可。

常见的问题包括:初始化文件的路径错误、数据的格式不匹配、地址访问越界,这些问题都会导致 ROM 读取的数据错误,配置和仿真时需要重点关注。

总结:RAM 与 ROM 是 FPGA 设计中最常用的存储 IP,在实际项目中,需要根据容量、速度、端口的需求,选择合适的实现方式,同时重点关注跨时钟域、地址冲突这类常见问题,通过完整的仿真与上板调试,保证设计的可靠性与稳定性。

更多细节欢迎关注我们黑金云课堂全年免费直播课黑金云课堂五月直播日历 我们将在每周二、三、四,同步推进 Verilog开发、Vitis开发、Linux开发三大系列,带你从零开始,稳扎稳打掌握 FPGA 开发全流程!

系列 内容定位
Verilog开发 硬件描述语言基础、逻辑设计、仿真调试
Vitis开发 Zynq软硬件协同、外设驱动、网络协议
Linux开发 嵌入式Linux系统移植、驱动编写、应用开发

相关推荐

登录即可解锁
  • 海量技术文章
  • 设计资源下载
  • 产业链客户资源
  • 写文章/发需求
立即登录

芯驿电子自 2012 年成立以来,旗下 AUMO 与 ALINX 两大品牌,在智能车载与 FPGA 行业解决方案领域持续深耕。 ALINX 聚焦 FPGA 解决方案高端产品市场,并积极参与 FPGA 国产化应用发展。至今已推出 100 多款 FPGA SoM 模组和配套板卡,基本完成对 AMD FPGA 产品、紫光同创 FPGA 产品的全系列覆盖,产品远销海外 40 多个国家。 AUMO 专注智能车载,为自动驾驶技术开发破题。至今已推出车载仿真测试系统、视频数据采集、视频数据旁路采集分流、视频数据注入、车载摄像头、车载后视镜等产品线,满足车企和汽车产业链的车载产品开发需求。

微信公众号