1. 课程导入

FPGA(现场可编程门阵列)作为介于专用集成电路(ASIC)与通用处理器之间的硬件可重构平台,在通信、工业控制、人工智能推理、视频处理及国产化替代等领域扮演着不可替代的角色。紫光同创作为中国本土FPGA产业的领军企业,其产品线覆盖从低功耗CPLD到高性能16nm工艺的千万门级FPGA,为工程师提供了从入门到高端的完整选择。本章作为整个实战课程的开篇,将系统梳理紫光同创的家族谱系、开发工具链PDS(Pango Design Suite)的核心功能,并为你规划一条从“点亮LED”到“驱动DDR3”的进阶学习路径。无论你是刚接触硬件描述语言的在校学生,还是希望将核心器件国产化的资深工程师,本章都将为你建立清晰的技术坐标系。

紫光同创FPGA学习路径与开发环境总览 产品线家族 Titan系列(高性能/16nm) Logos系列(主流/28nm) Compact系列(低功耗/55nm) 开发工具链 PDS(综合/布局布线) ModelSim/Questa(仿真) SDK(嵌入式软核开发) 学习路径 基础语法与组合逻辑 时序逻辑与接口协议 SoC架构与软硬件协同 课程核心能力目标 RTL设计能力 时序收敛能力 IP集成能力 调试验证能力 典型开发流程 需求分析 RTL编码 功能仿真 综合实现 板级调试 图1-1 紫光同创FPGA学习路径与开发环境总览

上图清晰地勾勒出本课程的核心框架:左侧是紫光同创三大产品线,中间是支撑开发的工具链,右侧则是我们将要经历的学习阶段。底部展示了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)高速接口主要应用场景
Titan16nm FinFETTitan-60/Titan-20060K~200KSerDes 13.1Gbps5G通信、AI加速、雷达信号处理
Logos28nmLogos-25/50/7525K~75KLVDS 1.25Gbps工业伺服、机器视觉、视频拼接
Compact55nmCPLD系列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的资源利用率报告进行验证。

经验提醒:对于初学者,不要盲目追求高端器件。Titan系列虽然性能强大,但其复杂的电源设计(多路VCU/VCC)和高速信号完整性要求,往往会让新手在硬件调试上花费大量精力,反而忽略了逻辑设计本身。先用Logos系列跑通流程,再逐步接触高端器件是更高效的学习路径。

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字节数据。

风险提示:使用在线逻辑分析仪会占用额外的Block RAM和布线资源。在资源紧张的设计中,过度插入ILA可能导致布局布线失败或时序违例。建议在调试完成后,移除所有ILA核并重新生成最终比特流。

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)推理单元。完成本阶段后,你将具备系统级架构设计能力,能够合理划分软硬件功能边界。

学习目标SMART原则:建议你为每个阶段设定可量化的目标。例如:“在第10章结束时,我能在30分钟内独立编写一个支持奇偶校验的UART发送模块,并通过ModelSim仿真验证波形正确。” 而不是模糊的“学会UART”。

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”功能创建一个新工程。如果以上四项有任何一项未完成,请先解决环境问题再继续后续学习。