1. 工程准备
首先建立一个名为 led 的工程文件夹,文件夹下包含 doc、quartus_prj、rtl、sim 四个子文件夹。
各文件夹用途如下:
- doc:存放文档资料、数据手册、波形图等档案库;
- quartus_prj:存放 Quartus II 软件新建的工程文件,作为操作台;
- rtl:放置生成硬件电路的代码,相当于原材料;
- sim:放置对生成硬件电路代码的仿真文件,相当于质检室。
这四个文件夹各自完成不同的分工,它们之间通过路径关联和文件引用,形成一个完整的 FPGA 开发闭环。quartus_prj 作为工程中枢,向上访问 doc 读取说明,向下访问 rtl 获取硬件代码,向外访问 sim 获取仿真脚本;sim 向上访问 rtl 在逻辑上验证硬件代码的正确性。
2. 设计过程
无论使用 FPGA 做什么类型的项目,都需要参照具体的流程。以下是标准的开发流程:
- 需求分析:查看手册和原理图,明确实现的功能,如同阅读设计规格书。
- 工程创建:新建工程,选择对应的开发芯片型号。
- 代码编写:运用 Verilog 代码实现电路功能。
- 编译仿真:编译代码并运行仿真测试,检查逻辑错误。
- 引脚分配:仿真通过后,根据硬件原理图分配引脚,确保工程能正常跑通。
3. 工程实现
(1)原理图分析
打开开发板原理图,找到'按键'和'LED'模块,选取 KEY1 与 LED1 进行分析。
按键电路逻辑
当 SW2 按键松开时,1、2 与 3、4 不导通,KEY1 被拉低到 GND 低电平,发出低电平信号 key_in 为 0,FPGA 输入引脚接收 0 信号,LED 电路收到 0 信号后输出低电平 led_out 为 0,LED1 不亮。 当 SW2 按键按下时,1、2 与 3、4 导通,KEY1 被拉高到 3.3V 高电平,发出高电平信号 key_in 为 1,FPGA 输入引脚接收 1 信号,LED 电路收到 1 信号后输出高电平 led_out 为 1,LED1 亮。
功能框图与波形图
绘制 LED 功能框图和波形图,保存至 doc 文件夹中。此阶段确认工程前提工作已就绪。
(2)工程创建
在 Quartus 中新建工程,工程需放到 quartus_prj 文件夹中。
器件选择
- Family:器件族,如 Cyclone IV E 系列芯片。
- Package:封装类型,如 Any QFP 封装。
- Pin Count:引脚数量,如 144 个。
- Speed Grade:速度等级。
- Temperature:工作温度范围。
配置时必须严格对应 CPU 型号(如 EP4CE10E22C8N),否则会影响后续编译结果。
(3)代码编写
在 rtl 文件夹下新建名为 led.v 的文本文件,使用文本编辑器编写 Verilog 代码。编写完成后,需在 Quartus 中将代码添加到工程中,以便工程访问提取硬件代码。
(4)仿真验证
对代码进行编译和仿真。Quartus 任务栏功能如下:
- Start Project:工程初始化,包含新建工程、选择芯片型号、添加源文件等。
- Create Design:设计输入与文件管理的核心入口。
- Assign Constraints:导入约束文件、进行引脚分配。
- Compile Design:负责代码语法检查、布局布线、生成下载文件、时序分析。

