1. 工程准备
首先建立一个名为 led 的工程文件夹,文件夹下包含了 doc、quartus_prj、rtl、sim 四个子文件夹:

各文件夹功能说明如下:
- doc:该文件夹主要包含文档资料、数据手册、Visio 波形等,相当于档案库;
- quartus_prj:该文件夹主要包括使用 Quartus II 软件新建的工程文件,相当于操作台;
- rtl:该文件夹主要放置生成硬件电路的代码,相当于原材料;
- sim:该文件夹放置对生成硬件电路代码的仿真文件,相当于质检室。
这四个文件夹各自完成不同的分工,它们之间通过路径关联和文件引用,形成一个完整的 FPGA 开发闭环。quartus_prj 作为工程中枢,向上访问 doc 读取说明,向下访问 rtl 获取硬件代码,向外访问 sim 获取仿真脚本;sim 向上访问 rtl 在逻辑上验证硬件代码的正确性。
2. 设计流程
无论使用 FPGA 做什么类型的项目时,都需要参照一个具体的流程,这里介绍标准的开发流程:
- 看手册和原理图:搞清楚需要实现什么功能,就像做饭前需要看食谱,明确目标。
- 选芯片与建工程:对应选择食材和调料,即新建工程,选好工程对应的开发芯片。本例使用的是 Altera EP4CE10 征途 Mini 开发板。
- 编写代码:对应炒菜过程,运用 Verilog 代码实现电路功能。
- 编译与仿真:对应品尝菜品,写完代码后要去编译代码、写仿真软件测试是否有逻辑错误。
- 引脚分配:对应装盘上桌,测试仿真完成后要分配硬件引脚,这样工程才能正常跑出来。
有了具体的流程以后,就可以按着这个思路来实现 LED 工程项目。
3. 工程实现
(1) 原理图分析
首先打开开发板的原理图,找到'按键'和'LED'这两个模块,这里取 KEY1 与 LED1:

按键电路

LED 电路
我们来分析一下这两个原理图,看看它们是怎么共同实现 LED 灯点亮的:
当 SW2 按键松开时,1、2 与 3、4 不导通,此时 KEY1 被拉低到 GND 低电平,发出低电平信号 key_in 为 0,对应的 FPGA 输入引脚接收 0 信号,并给 LED 电路发送 0 信号,LED1 电路收到 0 信号后,输出低电平信号 led_out 为 0,led 灯不亮;
当 SW2 按键按下时,1、2 与 3、4 导通,此时 KEY1 被拉高到 3V3 高电平,发出高电平信号 key_in 为 1,对应的 FPGA 输入引脚接收 1 信号,并给 LED 电路发送 1 信号,LED1 电路收到 1 信号后,输出高电平信号 led_out 为 1,led 灯亮。
接着在 Visio 中绘制 LED 功能框图和波形图,这里就不过多介绍了,相信看完上述对 LED 电路实现的解析后很容易理解下面两个框图。












