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

FPGA 入门实战:基于 Quartus 点亮 LED 灯

FPGA 开发流程包括工程建立、原理图分析、代码编写、仿真验证及引脚分配。以 Quartus 软件配合 EP4CE10 芯片为例,演示如何从零搭建项目并实现按键控制 LED 亮灭。重点讲解文件夹结构规划、器件选型配置、Verilog 逻辑设计及约束文件设置,帮助初学者理解硬件描述语言与 FPGA 编译流程的核心环节。

WenxuanMa发布于 2026/4/12更新于 2026/10/2289 浏览

FPGA 工程准备

建立一个名为 led 的工程文件夹,并在其下创建四个子目录:doc、quartus_prj、rtl、sim。这种结构有助于管理开发过程中的不同阶段。

  • doc:存放文档资料、数据手册及 Visio 波形图,相当于档案库;
  • quartus_prj:存放 Quartus II 软件新建的工程文件,是操作台;
  • rtl:放置生成硬件电路的 Verilog 代码,相当于原材料;
  • sim:放置仿真测试文件,相当于质检室。

这四个部分通过路径关联和文件引用形成闭环。quartus_prj 作为中枢,向上读取说明,向下获取代码,向外调用仿真脚本;sim 则验证 rtl 逻辑的正确性。

设计流程

FPGA 开发通常遵循一套标准流程,理解它能让项目更顺畅:

  1. 看手册与原理图:明确功能需求,就像做饭前先看食谱。
  2. 选芯片建工程:根据开发板型号选择对应的器件,配置好工程环境。
  3. 编写代码:使用 Verilog 实现电路逻辑。
  4. 编译与仿真:检查语法错误,运行仿真验证逻辑是否达标。
  5. 引脚分配:将逻辑信号映射到具体的物理引脚,完成最终部署。

工程实现

1. 分析原理图

打开开发板原理图,定位'按键'和'LED'模块。本例选取 KEY1 与 LED1 进行控制。

文章配图

按键电路逻辑:

  • 松开时,KEY1 被拉低至 GND(低电平),FPGA 输入引脚接收 0 信号。
  • 按下时,KEY1 被拉高至 3V3(高电平),FPGA 输入引脚接收 1 信号。

LED 电路逻辑:

  • 收到低电平信号,LED 不亮。
  • 收到高电平信号,LED 亮起。

结合两者,当按键按下(输入 1)时,输出给 LED 的信号为 1,灯亮;反之灯灭。建议将此逻辑关系绘制成框图和波形图保存至 doc 文件夹。

文章配图

文章配图

2. 新建工程

在 quartus_prj 文件夹中启动 Quartus 新建工程。关键步骤如下:

  • 绑定源文件:确保代码文件被添加到工程中,否则软件无法读取。
  • 选择器件:这是最容易出错的地方。需严格对应开发板上的芯片型号。

以 EP4CE10E22C8N 为例拆解:

  • EP4CE:Cyclone IV E 系列;
  • 10:10k 逻辑单元;
  • E:EQFP 封装(QFP 大类);
  • 22:144 个引脚;
  • C:工作温度 0-85°;
  • 8:速度等级;
  • N:无铅工艺。

文章配图

文章配图

文章配图

文章配图

器件配置必须与 CPU 严格对应,否则会影响后续编译结果。

3. 编写代码

在 rtl 文件夹下新建 led.v 文件。虽然 Quartus 有内置编辑器,但习惯用 Notepad++ 或 VS Code 编写会更灵活。

核心逻辑是用 Verilog 描述按键状态与 LED 输出的关系。以下是一个基础示例:

module led_ctrl (
    input wire key_in,      // 按键输入
    output reg led_out      // LED 输出
);

always @(key_in) begin
    if (key_in)
        led_out <= 1'b1;  // 按键按下,灯亮
    else
        led_out <= 1'b0;  // 按键松开,灯灭
end

endmodule

写完后记得回到 Quartus 工程设置中添加该源文件,这样工具链才能识别并处理。

4. 编译与仿真

点击任务栏中的 Compile Design 进行编译。这一步包含语法检查、布局布线及时序分析。

文章配图

查看 RTL Viewer,确认生成的电路图是否符合预期。虽然视图正确不代表逻辑无误,因此仍需运行仿真。

文章配图

仿真能验证输入输出时序。对比之前绘制的波形图,如果一致,说明逻辑通过了验证。

文章配图

关于网表概念:它是代码翻译成 FPGA 可识别的硬件电路的中间格式,Verilog 是其语言基础,时间单位则决定仿真精度。

5. 引脚分配

最后一步是将逻辑信号绑定到具体物理引脚。参考原理图,EP4CE10E22C8N 芯片将 key_in 和 led_out 分配在 IOBANK_3。

文章配图

约束配置示例:

  • key_in <Input> @ IOBANK_3
  • led_out <Output> @ IOBANK_3

注意:引脚分配务必依据手册或原理图,错误的配置可能导致工程失败甚至损坏芯片。后续下载烧录步骤可参照官方文档完成。

目录

  1. FPGA 工程准备
  2. 设计流程
  3. 工程实现
  4. 1. 分析原理图
  5. 2. 新建工程
  6. 3. 编写代码
  7. 4. 编译与仿真
  8. 5. 引脚分配

更多推荐文章

查看全部
  • STL RB-tree 红黑树原理与插入操作实现详解
  • Python RESTful API 设计:从理论到企业级实战
  • C++ 中间件 spdlog 日志库介绍与二次封装
  • OpenClaw 开源 AI 代理框架详解:功能升级与生态接入
  • C# 与 C++ 开发的 OPC DA SERVER 软件实践
  • 国产摄像机 ISP 图像调试、FPGA 开发及算法工程师招聘
  • C++ Linux 环境下内存泄漏检测方式
  • Flutter 三方库 ml_algo 在鸿蒙系统下的端侧机器学习适配指南
  • IntelliJ IDEA 切换 Git 用户配置详解
  • Kubernetes 集群管理与核心组件详解
  • AI 产品经理职业发展路径与核心技术能力解析
  • C++ 网络编程中的序列化和反序列化实现
  • Java 面向对象入门:类、对象与封装核心详解
  • TWIST2 全身 VR 遥操系统:基于视觉观测预测关节位置的自主策略
  • STM32 运行 AI 大模型的四种主流方案对比与实战案例
  • 前后端分离架构深度解析:选型、优缺点与实战对比
  • OpenClaw 多机器人多 Agent 模式:构建 AI 助手团队
  • MoltBot 接入钉钉 Stream 流式模式配置指南
  • 大模型插件与GPTs演进:GPT-4 Turbo特性及RAG、Agent应用解析
  • 基于 Django 框架搭建 WebAPI 项目

相关免费在线工具

  • 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