专题一:FPGA基础入门与开发流程
专题二:Verilog硬件描述语言与数字逻辑设计
专题三:FPGA开发工具链(Vivado/Quartus/Modelsim)
专题四:常用接口与模块化设计
专题五:时序分析与设计优化
专题六:高速接口与SerDes技术
专题七:数字信号处理(DSP)FPGA实现
专题八:嵌入式软核处理器与SOPC系统
专题九:图像/视频处理FPGA加速
专题十:国产FPGA开发与应用
专题十一:高层次综合(HLS)与异构计算
专题十二:FPGA工程化与项目实战
培训对象:零基础入门学员、数字电路初学者、嵌入式系统开发人员、高校学生。
培训目标:
理解FPGA的基本原理、内部架构与主流厂商产品特点,建立FPGA的整体认知。
掌握FPGA的开发流程(设计-综合-实现-下载)与开发环境搭建方法。
完成第一个FPGA工程(LED流水灯),体验从代码编写到板级验证的完整流程。
培训内容介绍:
FPGA概述与发展:了解FPGA(现场可编程门阵列)的定义、发展历程及其在通信、图像处理、人工智能等领域的广泛应用,认识FPGA与CPU、GPU、ASIC的差异与互补关系。
FPGA内部架构:深入理解FPGA的核心组成(可配置逻辑块CLB、输入输出块IOB、块存储器BRAM、数字信号处理单元DSP、锁相环PLL、高速收发器等),掌握各模块的功能与作用。
主流厂商与产品:对比Xilinx(AMD)、Intel(Altera)、Lattice、国产安路/复旦微等厂商的产品特点与选型依据,了解不同系列FPGA的应用场景。
FPGA最小系统:学习FPGA最小系统构成(电源电路、时钟电路、复位电路、配置电路、JTAG调试接口),掌握FPGA正常工作的必要条件。
开发流程概览:掌握FPGA开发的完整流程(需求分析→设计输入→功能仿真→综合→布局布线→时序仿真→板级调试),理解各阶段的作用。
开发环境安装:学习主流开发软件(Xilinx Vivado、Intel Quartus Prime)的获取、安装与许可配置,掌握工程创建与项目管理方法。
第一个工程(LED流水灯):从零开始创建工程,编写简单的Verilog代码实现LED流水灯,学习管脚约束文件的编写与配置。
综合与实现:理解综合(Synthesis)将HDL代码转换为网表、实现(Implementation)将网表映射到FPGA资源的过程,掌握相关设置。
下载与调试:学习使用下载器(JTAG)将比特流文件烧录到FPGA,观察硬件运行效果,体验从代码到硬件的完整流程。
硬件开发平台:介绍主流FPGA开发板(如Xilinx EGO-XA7、Altera DE2-70、国产安路HX-4S20)的资源与使用方法。
学习资源导航:介绍FPGA学习资料(官方文档、参考书籍、社区论坛)、获取方法及查阅技巧。
职业发展路径:了解FPGA工程师的技术成长路径与能力要求,规划个人学习方向。
培训对象:有数字电路基础的开发人员、软件工程师转型FPGA开发者、需要掌握硬件描述语言的工程师。
培训目标:
掌握Verilog HDL的基本语法、数据类型、运算符与程序结构,能够编写规范的硬件描述代码。
理解硬件描述语言与软件编程语言的本质差异,建立硬件思维(并行、时序、可综合)。
掌握组合逻辑与时序逻辑的Verilog描述方法,能够独立编写常用数字电路模块。
培训内容介绍:
Verilog语言概述:了解Verilog HDL的发展历史、语言特点与应用场景,对比VHDL与Verilog的差异,理解硬件描述语言的核心价值。
程序基本结构:学习Verilog模块(module)的基本结构(端口定义、数据类型声明、逻辑功能描述),掌握模块化设计思想。
数据类型:掌握线网型(wire)、寄存器型(reg)、参数(parameter)、存储器(memory)等数据类型的定义与使用场景。
运算符与表达式:学习算术运算符、逻辑运算符、按位运算符、关系运算符、移位运算符、拼接运算符的使用方法及优先级。
赋值语句:理解阻塞赋值(=)与非阻塞赋值(<=)的本质区别,掌握在不同场景下的正确选择,避免竞争冒险。
结构化语句:学习initial语句(初始化)、always语句(行为描述)的使用,掌握敏感列表的编写规范。
条件语句:掌握if-else、case、casez、casex等条件语句的用法,理解综合出的硬件电路结构。
循环语句:学习for、while、repeat、forever等循环语句在可综合设计中的使用限制。
组合逻辑设计:使用always@(*)或assign语句描述组合逻辑电路,实现加法器、译码器、多路选择器等基础模块。
时序逻辑设计:使用always@(posedge clk)描述时序逻辑电路,实现寄存器、计数器、分频器、移位寄存器等模块。
状态机设计:掌握有限状态机(FSM)的设计方法(Moore型与Mealy型),学习三段式状态机的编写规范,实现复杂控制逻辑。
可综合设计原则:理解可综合代码与不可综合代码的界限,掌握编写可综合Verilog代码的最佳实践。
培训对象:FPGA初学者、需要系统掌握开发工具的工程师、跨平台开发者。
培训目标:
熟练掌握主流FPGA开发软件(Vivado/Quartus)的工程管理、代码编辑、约束设置、综合实现等核心功能。
掌握Modelsim/Vivado Simulator仿真工具的使用,能够编写测试平台(Testbench)进行功能仿真与调试。
掌握在线逻辑分析仪(ILA/SignalTap)的使用方法,进行板级调试与信号捕获。
培训内容介绍:
Vivado开发环境:熟悉Vivado的界面布局(工程管理器、源文件窗口、约束窗口、综合/实现结果、仿真界面),掌握工程创建与管理方法。
Vivado设计流程:学习在Vivado中完成设计输入、RTL分析、综合、布局布线、时序分析、比特流生成的全流程操作。
Quartus开发环境:熟悉Intel Quartus Prime的界面布局与功能模块,掌握Altera FPGA的开发流程与设置方法。
IP核集成:学习在Vivado/Quartus中调用IP核(时钟管理、FIFO、BRAM、DSP、PLL等),掌握IP核的参数配置与例化方法。
约束文件编写:掌握XDC(Xilinx)或SDC(Synopsys)约束文件的编写方法,包括管脚约束(引脚分配、I/O电平)、时钟约束(周期、不确定性)等。
仿真基础:理解仿真在FPGA开发中的重要性,学习编写测试平台(Testbench)生成激励信号,观察输出响应。
Modelsim仿真:掌握Modelsim的启动、编译、仿真、波形查看、断点调试等操作,学习脚本化仿真流程。
Vivado Simulator:学习使用Vivado内置仿真器,掌握波形配置、光标测量、调试技巧。
在线逻辑分析仪:学习在Vivado中集成ILA(集成逻辑分析仪),设置触发条件与捕获深度,实时观察内部信号状态。
SignalTap使用:掌握Quartus中SignalTap II逻辑分析仪的配置与使用方法。
时序报告分析:学习阅读综合/实现后的时序报告,理解建立时间、保持时间、时钟抖动等概念,分析时序违例原因。
版本管理:了解Git等版本控制工具在FPGA项目中的应用,管理代码与IP核的版本演进。
培训对象:有一定基础的FPGA开发者、需要实现外设接口控制的嵌入式工程师。
培训目标:
掌握FPGA与常用外设(LED、按键、数码管、蜂鸣器)的接口设计与控制方法。
掌握UART、I2C、SPI等常用通信协议的FPGA实现,能够独立编写收发模块。
理解模块化设计思想,能够将复杂系统拆分为可复用的功能模块。
培训内容介绍:
LED与流水灯:学习LED驱动电路原理,编写流水灯、呼吸灯等控制程序,掌握PWM信号生成方法。
按键输入与消抖:学习机械按键的抖动原理,编写按键消抖模块,实现单次触发、长按检测等功能。
数码管显示:学习七段数码管的驱动原理,编写静态显示与动态扫描显示模块,实现多位数字显示。
蜂鸣器控制:学习蜂鸣器驱动原理,编写不同频率的音调发生器,实现音乐播放功能。
UART串口通信:深入理解UART协议(起始位、数据位、校验位、停止位),编写UART发送与接收模块,实现FPGA与PC的串口通信。
I2C总线协议:学习I2C总线协议(起始条件、从机地址、数据读写、停止条件),编写I2C主控制器,连接EEPROM或传感器。
SPI总线协议:理解SPI的四种工作模式(CPOL/CPHA),编写SPI主/从控制器,连接ADC/DAC或显示屏。
矩阵键盘扫描:学习矩阵键盘的工作原理,编写行列扫描与键值识别模块,扩展输入接口。
VGA显示控制:学习VGA显示时序(行同步、场同步、像素时钟),编写VGA控制器,显示静态图像或动态图形。
LCD显示驱动:学习字符型或图形点阵LCD的驱动方法,编写显示模块。
DAC/ADC接口:学习模数/数模转换器的接口时序,使用FPGA控制ADC采样和DAC输出。
模块封装与复用:学习将常用功能封装为可复用的模块,建立个人IP库,提高开发效率。
培训对象:有一定设计经验的FPGA工程师、需要提升设计性能与稳定性的开发者。
培训目标:
深入理解时序分析的基本概念(建立时间、保持时间、时钟抖动、时钟偏斜),掌握时序路径的分析方法。
掌握时序约束的设置方法,能够通过约束优化设计性能。
学习跨时钟域处理、代码优化、面积优化等进阶技巧,提升设计质量。
培训内容介绍:
时序基础概念:深入理解建立时间(setup time)、保持时间(hold time)、时钟到输出延时(clock-to-output)、时钟抖动(jitter)、时钟偏斜(skew)等基本概念。
时序路径分析:学习四种基本时序路径(输入到寄存器、寄存器到寄存器、寄存器到输出、输入到输出)的分析方法。
时序约束编写:掌握create_clock、set_input_delay、set_output_delay等常用约束命令,为设计添加准确的时序约束。
时序报告解读:学习阅读时序报告(setup summary、hold summary),识别时序违例路径,分析违例原因。
速度优化技巧:掌握流水线设计、寄存器平衡、关键路径优化等速度优化方法,提升系统最高工作频率。
面积优化技巧:学习资源共享、状态机优化、逻辑复用等面积优化方法,减少资源占用。
跨时钟域处理:理解跨时钟域数据传输的亚稳态风险,掌握同步器(两级寄存器)、异步FIFO、握手协议等处理方法。
时钟域划分:学习多时钟域系统的设计方法,合理划分时钟域,减少跨时钟域交互。
复位策略:学习同步复位与异步复位的优缺点,掌握异步复位同步释放的实现方法。
低功耗设计:了解FPGA功耗构成(动态功耗、静态功耗),学习时钟门控、操作数隔离、降低电压等低功耗设计技巧。
可测试性设计:学习在设计中加入测试点、扫描链等方法,提高设计的可测试性。
设计规则检查:掌握DRC(设计规则检查)的常见错误类型与解决方法。
培训对象:需要开发高速接口的FPGA工程师、通信系统开发人员、数据中心硬件工程师。
培训目标:
理解高速串行接口(SerDes)的基本原理与FPGA内部结构,掌握GT收发器的资源特性。
掌握PCIe、DDR、以太网等高速接口的FPGA实现方法,能够完成IP核配置与调试。
学习高速接口的板级设计要点与信号完整性分析方法。
培训内容介绍:
高速接口概述:了解并行接口向高速串行接口演进的历史,认识SerDes(串行器/解串器)在PCIe、SATA、万兆网中的应用。
GT收发器原理:深入理解FPGA内部GT收发器的结构(PMA层+PCS层),掌握8B/10B编码、加扰、时钟恢复、预加重等关键技术。
GT收发器配置:学习在Vivado中调用GT IP核,配置线速率、参考时钟、编码方式、环回模式等参数。
眼图测试:使用GT收发器的眼图扫描功能,分析信号质量,优化预加重与均衡设置。
DDR控制器设计:学习DDR存储器的工作原理与接口时序,掌握MIG(Xilinx)或UniPHY(Intel)IP核的配置与使用方法。
PCIe基础:了解PCIe体系结构(物理层、数据链路层、事务层),掌握PCIe拓扑结构与配置空间。
PCIe IP核集成:学习PCIe硬核/IP核的配置方法,实现基于PCIe的DMA数据传输框架。
XDMA应用:掌握XDMA(PCIe DMA)IP核的使用,实现FPGA与主机的高速数据传输。
千兆以太网:学习RGMII接口时序,实现ARP、ICMP、UDP等网络协议的FPGA硬件加速。
万兆以太网:了解万兆以太网的协议栈,结合GT收发器实现万兆网络数据传输。
AXI4总线:深入学习AXI4、AXI4-Lite、AXI4-Stream协议规范,掌握AXI总线互联与自定义IP开发。
信号完整性基础:了解高速信号传输中的反射、串扰、损耗等问题,掌握PCB设计中的信号完整性优化技巧。
培训对象:信号处理工程师、通信算法开发人员、雷达/声纳系统工程师。
培训目标:
理解数字信号处理的基本算法(FIR、IIR、FFT)及其FPGA实现方法。
掌握FPGA中DSP资源(DSP48)的架构与使用方法,实现高效信号处理。
学习FPGA在通信系统中的应用,能够完成数字上变频/下变频、调制解调等设计。
培训内容介绍:
DSP基础概念:回顾数字信号处理的基本概念(采样定理、量化误差、Z变换),理解FPGA实现DSP的优势(并行性、流水线、低延迟)。
FPGA DSP资源:深入学习Xilinx DSP48E1/E2的结构(预加器、乘法器、累加器、模式控制器),掌握级联与并行使用方法。
FIR滤波器设计:学习FIR滤波器的基本原理与结构(直接型、转置型、对称型),使用IP核或手工编码实现FIR滤波器。
FIR滤波器优化:掌握多相分解、半带滤波器、分布式算法等优化技术,提高滤波器效率。
IIR滤波器设计:了解IIR滤波器的特点与稳定性问题,学习IIR滤波器的FPGA实现方法。
FFT算法:深入理解FFT算法的基本原理(Cooley-Tukey算法、按时间抽取、按频率抽取),掌握蝶形运算单元的设计。
FFT IP核使用:学习FFT IP核的配置(点数、数据格式、流水线结构),掌握FFT的调用与数据流控制。
数字变频:学习数字下变频(DDC)与数字上变频(DUC)的原理,实现NCO、混频器、抽取/内插滤波器。
CORDIC算法:掌握CORDIC算法的原理与实现,用于三角函数、极坐标转换等计算。
雷达信号处理:学习脉冲压缩、动目标显示(MTI)、动目标检测(MTD)等雷达算法的FPGA实现。
自适应滤波:了解LMS、RLS等自适应滤波算法,学习其在FPGA中的实现方法。
FPGA与MATLAB协同:学习使用MATLAB生成测试向量、分析FPGA处理结果的方法,加速算法开发与验证。
培训对象:嵌入式系统工程师、SOPC开发者、软硬件协同设计人员。
培训目标:
理解SOPC(可编程片上系统)的概念与架构,掌握FPGA中嵌入处理器的方法。
学习MicroBlaze(Xilinx)或Nios II(Intel)软核处理器的配置、编程与调试。
掌握软硬件协同设计方法,能够将自定义硬件加速器集成到处理器系统中。
培训内容介绍:
SOPC概述:了解SOPC技术的发展与应用,认识FPGA中嵌入处理器的价值。
MicroBlaze架构:深入学习Xilinx MicroBlaze软核处理器的架构(流水线、存储器接口、总线接口、外设)。
Vivado中搭建系统:学习在Vivado中使用Block Design搭建MicroBlaze系统,添加处理器、存储器控制器、外设IP。
Nios II系统:学习Intel Quartus中Qsys工具的使用,搭建Nios II软核处理器系统。
外设IP集成:学习添加GPIO、UART、Timer、中断控制器等外设IP,配置地址空间与中断优先级。
软件开发环境:学习使用Vitis(Xilinx)或Nios II SBT(Intel)进行嵌入式软件开发,编写C/C++程序控制外设。
启动与引导:理解软核处理器的启动过程,学习将程序固化到Flash的方法。
硬件加速器设计:学习将自定义硬件模块通过AXI总线连接到处理器系统,实现软件调用硬件加速。
DMA传输:学习在处理器系统中使用DMA(直接内存访问)实现高速数据传输,减轻CPU负担。
中断系统:掌握中断控制器的配置与使用,编写中断服务程序处理实时事件。
软硬件协同调试:学习使用调试器进行软硬件协同调试,同时监控处理器程序与硬件状态。
SOPC综合案例:完成一个完整的SOPC项目(如基于软核处理器的数据采集系统),体验软硬件协同开发全流程。
培训对象:图像处理工程师、计算机视觉开发者、视频编解码硬件工程师。
培训目标:
掌握图像/视频处理的基本概念与FPGA实现优势,理解视频时序与接口标准。
学习摄像头图像采集、缓存、显示的全链路设计与实现方法。
掌握经典图像处理算法(灰度、滤波、边缘检测、直方图)的FPGA加速实现。
培训内容介绍:
图像处理基础:回顾数字图像的基本概念(像素、分辨率、颜色空间),理解FPGA在图像处理中的并行加速优势。
摄像头接口:学习OV5640等摄像头传感器的配置(I2C接口),掌握DVP接口时序与数据采集模块设计。
图像采集模块:编写摄像头数据采集模块,完成像素时钟域转换、行场同步信号解析。
图像缓存设计:学习使用BRAM或DDR3/DDR4作为图像帧缓存,设计写缓存与读缓存模块。
帧缓存控制器:实现三帧缓存轮转机制,解决摄像头采集与显示处理的速率匹配问题。
VDMA应用:学习VDMA(视频直接内存访问)IP核的配置与使用,实现视频数据的高效传输。
显示驱动:学习HDMI或VGA显示时序,编写显示控制器,将处理后的图像显示到屏幕。
灰度与二值化:实现RGB到灰度的转换算法,设计自适应阈值二值化模块。
直方图统计:实现图像直方图的实时统计,用于对比度分析与自动曝光控制。
图像滤波:实现3×3窗口生成模块,设计均值滤波、中值滤波、高斯滤波等算法。
边缘检测:实现Sobel、Canny等边缘检测算法的硬件加速。
视频图像处理系统:综合应用所学知识,完成一个完整的实时视频处理系统(摄像头输入→图像处理→HDMI显示)。
培训对象:国产化替代项目工程师、高校师生、信创产业相关技术人员。
培训目标:
了解国产FPGA产业的发展现状与主流厂商(安路、复旦微、紫光同创、高云)的产品特点。
掌握国产FPGA开发工具链的使用方法,能够完成从设计到下载的全流程。
学习将基于Xilinx/Altera的设计迁移到国产FPGA平台的方法与注意事项。
培训内容介绍:
国产FPGA产业概况:了解国产FPGA的发展历程、政策背景与产业现状,认识国产化替代的战略意义。
主流厂商与产品:介绍安路科技(EG4、PH1系列)、复旦微电子(JFM7系列)、紫光同创(Logos、Titan系列)、高云半导体(GW系列)等厂商的主流产品与性能特点。
安路FPGA开发工具:学习安路科技TangDynasty开发软件的安装与使用,掌握工程创建、代码编辑、综合实现、下载调试等操作。
安路FPGA实验平台:熟悉康芯HX-4S20等国产FPGA开发板的资源与外设,掌握硬件平台的使用方法。
基础实验:在国产FPGA平台上完成流水灯、呼吸灯、数码管显示等基础实验,熟悉开发流程。
接口实验:实现UART串口通信、I2C/SPI总线控制、VGA显示等接口实验。
IP核使用:学习国产FPGA平台上的IP核调用方法(PLL、BRAM、DSP等),对比与Xilinx IP的差异。
设计迁移方法:掌握将Xilinx/Altera设计迁移到国产FPGA平台的方法与注意事项(代码移植、约束文件转换、IP核替换)。
复旦微FPGA:了解复旦微JFM7系列FPGA的特点,学习其开发工具与设计流程。
紫光同创FPGA:学习紫光同创PDS开发软件的使用,掌握Logos/Titan系列的设计方法。
国产FPGA生态:了解国产FPGA的生态建设(文档、例程、社区、技术支持),获取学习资源。
国产化替代案例:分析典型国产化替代项目案例(通信设备、工业控制、安防监控),学习项目实施经验。
培训对象:软件算法工程师转型硬件加速开发者、AI算法工程师、需要快速实现算法硬化的设计人员。
培训目标:
理解高层次综合(HLS)的基本原理与开发流程,掌握使用C/C++开发FPGA的方法。
学习HLS代码优化技巧(流水线、循环展开、数组分割),实现高性能硬件设计。
了解OpenCL等异构计算框架,掌握FPGA与CPU/GPU协同计算的设计方法。
培训内容介绍:
HLS概述:了解高层次综合技术的产生背景与价值(提升开发效率、降低硬件设计门槛),认识Vivado HLS/Vitis HLS工具的功能。
HLS开发流程:学习使用C/C++编写功能函数,通过HLS工具综合为RTL代码,进行C仿真与RTL协同仿真。
接口综合:理解HLS中函数参数如何综合为硬件接口(block-level接口、port-level接口),掌握AXI4接口的生成方法。
数据类型:学习HLS中的任意精度数据类型(ap_int/ap_uint),优化资源占用与性能。
流水线优化:掌握pipeline指令的使用方法,实现循环流水线与函数流水线,提高吞吐量。
循环优化:学习循环展开(unroll)、循环合并、循环扁平化等优化技术,提升并行度。
数组优化:掌握数组分割(array partition)、数组映射、数组重塑等方法,解决存储器访问瓶颈。
数据流优化:学习数据流(dataflow)指令的使用,实现函数级流水并行。
OpenCL异构计算:了解OpenCL编程模型(平台模型、执行模型、内存模型),学习使用OpenCL编写FPGA加速程序。
FPGA内核优化:掌握OpenCL内核的优化技巧(向量化、计算单元复制、循环流水线)。
主机端编程:学习编写主机端代码(C++/Python),实现数据缓冲区管理、内核调用、同步控制。
HLS实战案例:通过典型算法(图像处理、卷积计算、排序算法)的HLS实现,掌握从C代码到高性能硬件设计的完整流程。
培训对象:有项目开发经验的工程师、需要独立完成FPGA项目的开发者、团队技术负责人。
培训目标:
掌握FPGA工程化开发规范(代码风格、版本管理、文档编写),提升团队协作效率。
学习FPGA系统级调试与问题定位方法,解决工程中的疑难问题。
通过完整项目实战,从需求分析、架构设计、模块开发到系统联调,体验真实项目开发流程。
培训内容介绍:
编码规范:学习FPGA代码的命名规范、注释规范、格式规范,掌握可读性高、可维护性强的代码编写方法。
版本管理:学习使用Git进行FPGA项目版本管理,掌握分支策略、标签管理、冲突解决方法。
文档编写:掌握项目文档的编写规范(需求文档、设计文档、测试文档、用户手册),建立完整的文档体系。
模块化设计:学习将系统功能分解为可复用模块的方法,定义清晰的模块接口,提高代码复用率。
仿真验证策略:制定模块级仿真、集成仿真、系统级仿真的验证计划,编写完善的测试用例。
覆盖率分析:学习代码覆盖率、功能覆盖率的分析方法,确保验证的完整性。
硬件调试技巧:掌握使用逻辑分析仪、示波器、万用表等仪器进行硬件调试的方法,解决硬件问题。
系统集成调试:学习多模块集成时的调试方法,解决接口不匹配、时序冲突等问题。
性能评估:学习对FPGA设计进行资源占用、工作频率、功耗等性能指标的评估方法。
问题定位与解决:通过典型疑难问题案例,学习问题定位的思路与方法(二分法、对比法、隔离法)。
项目案例一:以太网数据包处理器:实现千兆以太网数据包的接收、解析、转发功能,包含MAC层、IP层、UDP层处理。
项目案例二:实时视频处理系统:实现摄像头采集、图像处理(滤波/边缘检测)、HDMI显示的全流程系统。