1. 课程导入
FPGA(现场可编程门阵列)作为介于专用集成电路(ASIC)与通用处理器之间的硬件可重构平台,在通信、工业控制、人工智能推理、视频处理及国产化替代等领域扮演着不可替代的角色。紫光同创作为中国本土FPGA产业的领军企业,其产品线覆盖从低功耗CPLD到高性能16nm工艺的千万门级FPGA,为工程师提供了从入门到高端的完整选择。本章作为整个实战课程的开篇,将系统梳理紫光同创的家族谱系、开发工具链PDS(Pango Design Suite)的核心功能,并为你规划一条从“点亮LED”到“驱动DDR3”的进阶学习路径。无论你是刚接触硬件描述语言的在校学生,还是希望将核心器件国产化的资深工程师,本章都将为你建立清晰的技术坐标系。
上图清晰地勾勒出本课程的核心框架:左侧是紫光同创三大产品线,中间是支撑开发的工具链,右侧则是我们将要经历的学习阶段。底部展示了FPGA开发的通用流程,从需求分析到板级调试,每个环节都将在后续章节中通过具体案例展开。接下来,我们将逐一深入每个模块,帮助你建立完整的知识体系。
1.1 紫光同创FPGA产品线深度解析
紫光同创的产品布局覆盖了从入门级到高端的全系列FPGA,其命名规则与定位具有鲜明的层次感。理解产品线的差异,是选型的第一步,也是理解后续课程中不同开发板资源约束的基础。
1.1.1 三大产品线定位与工艺对比
紫光同创目前主力产品分为三个系列:Titan系列(如Titan-60、Titan-200)采用16nm FinFET工艺,面向高性能计算、通信基带处理等场景,逻辑资源丰富,内置高速SerDes(最高可达13.1Gbps)和硬核DDR4控制器;Logos系列(如Logos-25、Logos-50)采用28nm工艺,是市场占有率最高的主流产品,在性价比、功耗和逻辑密度之间取得了良好平衡,适合工业控制、视频处理等中端应用;Compact系列(如CPLD类产品)则主打低功耗和小封装,适用于电池供电的便携设备或简单的胶合逻辑。
| 系列 | 工艺节点 | 典型型号 | 逻辑单元(LC) | 高速接口 | 主要应用场景 |
|---|---|---|---|---|---|
| Titan | 16nm FinFET | Titan-60/Titan-200 | 60K~200K | SerDes 13.1Gbps | 5G通信、AI加速、雷达信号处理 |
| Logos | 28nm | Logos-25/50/75 | 25K~75K | LVDS 1.25Gbps | 工业伺服、机器视觉、视频拼接 |
| Compact | 55nm | CPLD系列 | 1K~4K | 无高速接口 | 电源管理、IO扩展、电平转换 |
从开发学习的角度,Logos系列是入门的最佳选择。其28nm工艺成熟,PDS工具支持完善,且市面上基于Logos-25的开发板价格亲民,资源足够完成从基础到复杂的各类实验。本课程的所有案例均基于Logos-25器件(型号:PG2L25-6CSG324)进行验证,该器件拥有约25K逻辑单元、100个DSP Slice和4个时钟管理单元(PLL),足以支撑一个简易的RISC-V软核或图像边缘检测算法。
1.1.2 芯片内部资源与选型考量
选型不能只看逻辑单元数量。你需要关注DSP Slice数量(用于乘法累加运算)、BRAM容量(用于数据缓存)、用户IO数量以及封装形式。例如,一个视频缩放项目需要大量BRAM存储行缓冲,而一个电机控制项目则更看重PWM输出引脚的数量和定时器资源。在课程第5章,我们将专门讲解如何根据项目需求计算资源占用率,并利用PDS的资源利用率报告进行验证。
1.2 开发环境概览:PDS工具链与仿真验证
紫光同创的集成开发环境名为Pango Design Suite(简称PDS),它提供了从工程创建、代码编辑、综合、布局布线到比特流生成的全流程支持。与Xilinx的Vivado类似,PDS也采用了基于Tcl脚本的底层架构,这意味着你可以通过命令行方式实现自动化流程。
1.2.1 PDS核心功能与操作界面
PDS的主界面分为工程管理区、源代码编辑区、日志/控制台区和图形化资源视图区。其关键流程包括:1) 综合(Synthesis):将Verilog/VHDL代码转换为门级网表;2) 布局布线(Place & Route):将网表映射到具体的逻辑单元和布线资源上;3) 时序分析(Timing Analysis):检查设计是否满足建立/保持时间要求;4) 比特流生成(Generate Bitstream):产生用于下载到FPGA的.bit文件。
对于仿真,PDS原生集成了对ModelSim和QuestaSim的支持。你可以在PDS中直接调用仿真器,也可以编写独立的Testbench在ModelSim中单独运行。本课程推荐使用ModelSim SE版本,因为它对紫光同创的仿真库支持良好,且调试波形界面直观。
// 一个简单的仿真激励示例(Testbench片段)
module tb_led_blink();
reg sys_clk;
reg sys_rst_n;
wire led_out;
// 实例化被测模块
led_blink u_led_blink(
.clk(sys_clk),
.rst_n(sys_rst_n),
.led(led_out)
);
// 生成50MHz时钟
initial begin
sys_clk = 0;
forever #10 sys_clk = ~sys_clk; // 20ns周期 = 50MHz
end
// 复位逻辑
initial begin
sys_rst_n = 0;
#100;
sys_rst_n = 1;
end
endmodule
1.2.2 硬件调试方法:逻辑分析仪与在线监测
除了仿真,PDS还提供了类似ChipScope的在线调试工具——PDS Debugger。它通过JTAG接口实时读取FPGA内部信号。在调试高速接口(如DDR3)或与外部设备交互时,在线逻辑分析仪几乎是必备工具。你需要提前在代码中插入ILA(Integrated Logic Analyzer)核,并设定触发条件。例如,当检测到UART接收数据帧头0xAA时,抓取后续32字节数据。
1.3 学习路径规划与目标设定
为了确保你在30章课程后能独立完成一个中等复杂度的FPGA项目,我们设计了“三阶段递进”的学习路径。每个阶段都有明确的产出物和检验标准。
1.3.1 阶段一:基础语法与组合逻辑(第1-8章)
本阶段目标是掌握Verilog语法核心和组合逻辑设计。你将学习模块化设计、阻塞/非阻塞赋值、参数化设计等关键概念。实战案例包括:流水灯、按键消抖、数码管动态扫描、UART串口发送接收。完成本阶段后,你应该能独立编写一个100行以内的、可综合的Verilog模块,并能在开发板上通过LED或串口观察到正确现象。
1.3.2 阶段二:时序逻辑与接口协议(第9-20章)
本阶段进入同步时序电路设计的核心领域。你将深入理解状态机设计(FSM)、FIFO缓存、跨时钟域处理(CDC)。接口协议方面,重点学习SPI、I2C、以及DDR3存储器的读写控制。这一阶段的案例复杂度显著提升,例如:基于SPI接口的ADC数据采集系统、基于DDR3的图像帧缓存设计。完成本阶段后,你需要能够分析并解决时序违例问题,会使用时序约束文件(.sdc)。
1.3.3 阶段三:SoC架构与软硬件协同(第21-30章)
最后阶段聚焦于紫光同创的嵌入式软核处理器(如PGSOC)。你将学习如何通过AXI总线将FPGA逻辑与CPU内核连接,实现硬件加速器的定制。实战项目包括:在FPGA上搭建一个基于RISC-V软核的微控制器系统,运行裸机程序控制外设;或者实现一个硬件加速的卷积神经网络(CNN)推理单元。完成本阶段后,你将具备系统级架构设计能力,能够合理划分软硬件功能边界。
1.4 常见误区与学习复盘
在多年的FPGA教学和工程实践中,我们发现初学者往往会陷入一些共性的误区。提前了解这些陷阱,可以让你少走弯路。
- 误区一:重代码轻硬件。FPGA不是写软件,而是“画”电路。如果只关注代码语法,而不理解综合后生成的寄存器传输级(RTL)电路结构,遇到时序问题时将无从下手。建议每写完一段代码,都在脑海中或纸上画出对应的硬件结构。
- 误区二:仿真通过即万事大吉。仿真环境是理想化的,没有考虑引脚延迟、电源噪声和信号完整性。很多问题只有在板级调试时才会暴露。务必养成“仿真+在线调试”双重验证的习惯。
- 误区三:忽视时序约束。对于简单的LED流水灯,不加约束可能也能工作。但一旦设计复杂度提升,时钟频率超过100MHz,没有正确的时序约束,布局布线工具就无法优化关键路径,导致设计不稳定。
- 误区四:频繁更换开发板。每一款开发板的时钟频率、引脚分配、外设芯片都不同。频繁更换平台会导致你不断重复学习环境搭建,而无法深入钻研逻辑设计本身。建议选定一款基于Logos-25的开发板,坚持完成所有课程实验。
复盘清单:在开始第2章之前,请确认你已完成以下事项:1) 安装了PDS 2023.1及以上版本并成功申请License;2) 安装了ModelSim SE 10.5及以上版本;3) 通过USB-Blaster或类似下载器成功将PDS自带的LED流水灯例程下载到你的开发板上;4) 能够使用PDS的“Open Example”功能创建一个新工程。如果以上四项有任何一项未完成,请先解决环境问题再继续后续学习。