FPGA第 5 篇,FPGA技术优略势,FPGA学习方向,FPGA学习路线,FPGA专业知识的学习方向(FPGA现场可编程门阵列学习路线和方向)

news2024/11/19 1:48:13

前言

前几篇讲了一下FPGA的发展和应用,以及未来前景。具体详细,请看

FPGA发展和应用,以及未来前景icon-default.png?t=N7T8https://blog.csdn.net/weixin_65793170/category_12665249.html

这里我们来,记录一下,FPGA专业知识的学习路线


一. FPGA技术优势

        首先,我们了解一下 FPGA 的技术优势,来为我们学习提供动力

可重构 / 可编程                              速度快 / 低延时   

                                            
效率高                                            接口丰富

          
开发方便、灵活                              应用广泛

        当然 FPGA 优势与劣势并存,首先是开发难度,需要掌握专门的硬件设计知识和工具,如Verilog 语言和 VIVADO 等工具,其次就是专业性较强,学历门槛较高,同时还有频率功耗、算力成本等一系列问题存在。  


二. FPGA学习路线

        学习 FPGA 开发专业知识的学习路线,大致可分为以下,请看(具体学习路线不固定,自己斟酌)

  1. 数字电路基础

  2. 硬件描述语言

  3. 设计调试工具

  4. FPGA架构

  5. FPGA开发流程

  6. 时序分析与约束

  7. 仿真技术

  8. IP核使用

  9. 嵌入式系统设计

  10. 高级设计技巧


三. FPGA学习内容

        FPGA 专业知识的学习内容,包括但不限与以下,请看

1. 数字电路基础

  • 布尔代数
  • 逻辑门
  • 组合逻辑电路
  • 时序逻辑电路

学习逻辑门、组合逻辑电路、时序逻辑电路等基础知识,是理解FPGA设计的核心。

2. 硬件描述语言

  • Verilog
  • VHDL

学习Verilog和VHDL等语言,用于描述和设计FPGA中的逻辑电路。 

3. 设计调试工具

  • Xilinx(赛灵思):Xilinx Vivado

  • Altera(阿尔特拉):Intel Quartus Prime

学习如何使用Xilinx Vivado、Intel Quartus Prime开发工具(以国外知名大厂开发工具为例),进行编码和调试,以验证设计的正确性。

4. FPGA架构

  • 可编程逻辑单元
  • 互连资源
  • I/O块
  • 存储资源

理解FPGA内部结构,包括逻辑单元、布线资源、存储单元等。

5. FPGA开发流程

  • 设计输入
  • 综合
  • 实现
  • 配置

学习设计输入、综合、实现、时序分析、编程与配置等完整的开发流程。

6. 时序分析与约束

  • 静态时序分析
  • 时序约束

学习如何进行时序分析,确保设计在规定时间内正确工作,以及如何施加约束。

7. 仿真技术

  • 功能仿真
  • 时序仿真

学习使用仿真工具(如ModelSim)对设计进行功能仿真和时序仿真。

8. IP核使用

  • 常用IP核
  • IP核集成

学习如何使用和集成现成的IP核(如FIFO、PLL),提高设计效率。

9. 嵌入式系统设计

  • 软核处理器
  • 硬件加速

学习如何将处理器嵌入FPGA中,进行软硬件协同设计,

并使用ARM Cortex内核。

10. 高级设计技巧

  • 流水线设计
  • 并行处理

学习优化设计、降低功耗、提高速度、复用设计等技巧。


四. FPGA学习内容,简单认识

        数字电路基础、硬件描述语言和设计调试工具,以及 FPGA 架构等,请看

1. 数字电路基础

        数字电路基础是学习FPGA开发的根本,也是FPGA设计的核心。它包括布尔代数、逻辑门(如与门、或门、非门等)、组合逻辑电路(如加法器、编码器)、和时序逻辑电路(如触发器、寄存器)。这些知识是理解和设计复杂数字系统的根本,它涵盖了理解和设计数字系统所需的基本概念和技巧。 

  • 布尔代数

    • 定义与基本运算: 布尔代数是一种用于处理逻辑变量的数学体系。它包括基本运算,如与(AND)、或(OR)、非(NOT)等,以及更复杂的运算如异或(XOR)。
    • 逻辑表达式: 通过布尔代数表达逻辑电路的功能。学习如何将复杂的逻辑问题表示为布尔表达式,并通过简化表达式优化逻辑电路。

  • 逻辑门

    • 基本逻辑门: 基本的逻辑门有与门、或门、非门、异或门等。每个门实现布尔代数的基本运算。
    • 派生逻辑门: 通过组合基本逻辑门,可以得到更复杂的逻辑门,如异或门(XOR)、同或门(XNOR)、与非门(NAND)等。
    • 逻辑门符号与真值表: 学习逻辑门的符号和真值表,用于描述逻辑门的输入输出关系。

  • 组合逻辑电路

    • 概念: 组合逻辑电路的输出仅由当前输入决定,不依赖于过去的状态。
    • 常见组合电路: 了解加法器、减法器、编码器、解码器、多路复用器(MUX)、比较器等常见的组合逻辑电路及其实现方法。
    • 卡诺图简化: 学习使用卡诺图来简化逻辑表达式,从而优化组合电路设计。

  • 时序逻辑电路

    • 概念: 时序逻辑电路的输出不仅取决于当前输入,还取决于过去的状态(即记忆功能)。
    • 触发器: 触发器是时序逻辑电路的基本单元,常见的类型包括D触发器、JK触发器、T触发器等。
    • 寄存器与计数器: 学习如何设计寄存器(用于数据存储)和计数器(用于计数和计时),它们都是由触发器构成的复杂时序电路。
    • 状态机设计: 通过设计有限状态机(FSM),实现复杂的时序逻辑功能。状态机在FPGA设计中非常常见,通常用于控制信号流和操作流程。


2. 硬件描述语言

        首先,硬件描述语言 HDL 是用于描述和实现数字电路设计的语言,是硬件描述语言的总称,其中 Verilog 和 VHDL 是用来描述FPGA内部逻辑电路的语言工具。它们用于编写可以直接合成为硬件的代码,是设计、仿真和实现FPGA电路的关键。

  • HDL

    • 简介:HDL 是硬件描述语言的总称,包括 Verilog、VHDL 等。这些语言用于描述数字系统的硬件行为,可以用于 FPGA、ASIC(专用集成电路)等的设计。
    • 特点
      • 描述能力:支持从高层次的行为描述到低层次的门级描述。
      • 仿真能力:支持设计的仿真验证。
      • 综合能力:可以将描述转换为实际的硬件电路。

  • VHDL

    • 语言概述: VHDL是一种早期的硬件描述语言,全称为VHSIC(超高速集成电路)硬件描述语言。它具有强类型定义,适合于复杂设计。
    • 基本语法: 学习VHDL的基本语法,包括数据类型(如BIT, STD_LOGIC)、信号、变量、常量的定义与使用。
    • 结构化设计: 通过学习VHDL中的实体(Entity)和架构(Architecture)概念,进行模块化设计,分离接口和实现。
    • 行为描述与结构描述: 学习如何使用行为描述(Behavioral)和结构描述(Structural)两种方式实现电路功能。行为描述注重功能的实现,结构描述注重电路的具体实现。

  • Verilog

    • 语言概述: Verilog是一种更接近编程语言的HDL,使用简洁的语法,广泛用于工业界。
    • 基本语法: 学习Verilog的基本语法,包括数据类型(如reg, wire)、模块定义、初始块(initial)、始终块(always)等。
    • 连续赋值与过程赋值: 了解Verilog中assign语句的连续赋值特性和always块中过程赋值的区别,用于组合逻辑和时序逻辑电路的实现。
    • 模块化设计: 学习如何在Verilog中定义模块,并通过实例化实现层次化设计,使设计更易于管理和调试。


3. 设计调试工具

        主流FPGA开发工具如Xilinx Vivado和Intel Quartus Prime是进行FPGA设计、调试和验证的重要软件平台。掌握这些工具的使用,可以高效地进行电路综合、布局布线、时序分析等任务。

First. Xilinx(赛灵思):Xilinx Vivado(全功能集成开发环境IDE)

  1. 逻辑分析仪:Xilinx ChipScope
    • 功能:用于在线调试 FPGA 内部信号,包括集成逻辑分析仪 (ILA) 和集成控制核 (ICON)。
    • 使用方法
      • 设计阶段:在 FPGA 设计中添加必要的 ChipScope 核心。
      • 配置:配置触发条件、采样率等参数。
      • 捕获:当满足触发条件时,ILA core 捕获信号数据并存储在 Block RAM 中。
      • 读取数据:通过 JTAG 接口将数据传输到 PC 上。
      • 分析:使用 ChipScope Analyzer 查看和分析信号波形。
  2. 高级调试工具:Xilinx Vivado Debugger
    • 功能:支持在 RTL 层级进行调试。
    • 使用方法:设置断点、单步执行、观察变量值等。

Second. Altera(阿尔特拉):Intel Quartus Prime(全功能集成开发环境IDE)

  1. 逻辑分析仪:Intel SignalTap II Logic Analyzer
    • 功能:与 Xilinx ChipScope 类似,用于在线调试 FPGA 内部信号。
    • 使用方法
      • 设计阶段:在 FPGA 设计中添加必要的 SignalTap II 核心。
      • 配置:配置触发条件、采样率等参数。
      • 捕获:当满足触发条件时,捕获信号数据并存储在 FPGA 的 Block RAM 中。
      • 读取数据:通过 JTAG 接口将数据传输到 PC 上。
      • 分析:使用 SignalTap II Analyzer 查看和分析信号波形。
  2. 高级调试工具:Intel In-Circuit Debugger (ICD)
    • 功能:提供交互式的调试环境,在设计运行时访问和修改寄存器状态。
    • 使用方法:使用 ICD 可以实时观察和修改寄存器值。

Third. Mentor Graphics(明导国际):ModelSim(仿真工具)

        ModelSim 是一种专注于硬件描述语言 (HDL) 的仿真工具,广泛用于 Verilog 和 VHDL 设计的功能仿真和时序仿真。它帮助设计工程师在合成前验证和调试设计逻辑,是设计流程中的关键环节。虽然 ModelSim 是由 Mentor Graphics 开发的,但它也集成在其他工具如 Quartus 和 Vivado 中。

  • 功能:功能仿真、时序仿真、调试 HDL 代码、波形分析、代码覆盖率分析。
  • 用途:主要用于验证和调试设计的功能性,确保设计在合成之前是正确的。

        这里的 ModelSim 是仿真工具,专注于验证和调试 HDL 代码,而Vivado 和 Quartus Prime 是完整的集成开发环境 (IDE),涵盖从设计输入到物理实现的整个流程。Vivado 专用于 Xilinx 的 FPGA,而 Quartus Prime 专用于 Intel 的 FPGA。

        而Mentor Graphics 是一家提供电子设计自动化 (EDA) 软件和硬件的公司。该公司成立于 1981 年,总部位于美国俄勒冈州威尔逊维尔。Mentor Graphics 在 2016 年被西门子公司收购,成为其旗下的一个业务部门。Mentor Graphics 提供广泛的工具和服务,用于帮助工程师设计和验证电子系统,包括集成电路 (IC)、印刷电路板 (PCB) 和电子系统级 (ESL) 设计。

Fourth. EDA 和 IDE

1. 电子设计自动化 (EDA) 详解(EDA是什么)

        电子设计自动化 (EDA) 行业是半导体和电子系统设计的核心支撑产业,提供软件和硬件工具,帮助设计工程师高效地设计、验证和制造复杂的电子系统和集成电路 (IC)。EDA 工具在芯片设计流程中不可或缺,涵盖从电路设计、仿真、验证、到物理实现的整个流程。随着半导体技术的进步,EDA 工具也在不断演进,支持更高的集成度和更复杂的设计需求。

2. 全功能集成开发环境 (IDE)详解(IDE是什么)

        全功能集成开发环境(IDE)中的“IDE”是“Integrated Development Environment”的缩写,中文通常翻译为“集成开发环境”。IDE是一种用于软件开发的应用程序,提供了一套集成的工具和功能,以简化编程过程和提高开发效率。

Fifth. Xilinx(赛灵思)和Altera(阿尔特拉)详细,请看

Xilinx(赛灵思)和Altera(阿尔特拉)icon-default.png?t=N7T8https://blog.csdn.net/weixin_65793170/article/details/141018445


4. FPGA架构

        FPGA架构是FPGA设计中物理实现的基础,FPGA的架构包括可编程逻辑单元(PLUs)、互连资源、I/O块、存储资源等。这些组件共同构成了FPGA的硬件基础,理解它们有助于设计者优化电路并提高性能。

  • 可编程逻辑单元(CLB)

    • 组成与功能: 可编程逻辑单元(CLB)是FPGA的基本构建模块,通常包含查找表(LUT)、触发器和多路复用器(MUX)。
    • LUT的工作原理: LUT用于实现逻辑函数,学习如何通过配置LUT实现任意的组合逻辑。
    • 可配置选项: 了解CLB中的触发器配置选项,如同步/异步复位、时钟使能等。

  • 互连资源

    • 互连网络: FPGA内的互连资源用于连接不同的CLB、I/O块等单元。互连网络的设计决定了信号的传输延迟和整体性能。
    • 可编程互连: 了解FPGA中如何通过配置开关矩阵实现逻辑单元间的连接,并优化路径以降低延迟。
    • 布线策略: 学习如何在FPGA设计中有效利用互连资源,避免过多的长路径和拥塞。

  • I/O块

    • 功能与配置: I/O块用于FPGA内部电路与外部设备的接口,支持多种电压标准和信号类型。
    • I/O标准: 了解常用的I/O标准(如LVDS, LVCMOS)及其应用场景。
    • 引脚分配与约束: 学习如何合理分配I/O引脚,并施加引脚约束(Pin Constraints),确保设计能够正确连接外部电路。

  • 存储资源

    • 嵌入式存储器: FPGA中通常包含嵌入式存储器,如块RAM(BRAM),用于存储数据或实现缓存。
    • 存储器配置: 学习如何在设计中使用FPGA的存储资源,如配置RAM/ROM、FIFO等。
    • 分布式存储器: 除了BRAM,FPGA还可以通过LUT实现小容量的分布式存储器,了解其应用场景和优缺点。


5. FPGA开发流程

        FPGA的开发流程涵盖从设计输入(使用HDL描述电路)到综合(将代码转化为门级电路)、实现(布局布线)、配置(加载到FPGA中)的完整过程。这些步骤确保了设计的逻辑性和硬件可行性。

  • 设计输入

    • 使用 Verilog 或 VHDL 描述设计。
    • 可以使用文本编辑器或图形化工具进行设计输入。

  • 综合

    • 将高级描述转换为门级网表。
    • 优化设计以减少面积、提高性能或降低功耗。

  • 实现

    • 映射到具体的 FPGA 架构。
    • 布局布线:确定逻辑单元的位置并连接它们。

  • 配置

    • 将最终设计下载到 FPGA 中。
    • 配置 FPGA 使其执行设计的功能。


6. 时序分析与约束

        时序分析是确保FPGA设计在规定时钟周期内正确工作的关键。通过施加时序约束(如时钟约束),设计者可以控制电路的时序性能,避免信号竞争和时序违例。

  • 静态时序分析 (STA)

    • 检查设计是否满足建立时间、保持时间等要求。
    • 识别时序违规并进行修正。

  • 时序约束

    • 定义最大时钟频率、路径延迟等时序要求。
    • 通过约束指导综合和实现工具优化设计。


7. 仿真技术

        仿真技术用于验证设计的功能性和时序性。功能仿真确保设计逻辑的正确性,而时序仿真结合时序信息,验证电路在真实硬件时序下的行为,是发现和解决潜在问题的重要手段。

  • 功能仿真

    • 验证设计的逻辑功能。
    • 不考虑延迟和时序关系。

  • 时序仿真

    • 验证设计在实际时序条件下的行为。
    • 考虑延迟和时序关系。


8. IP核使用

        IP核是预设计好的、可复用的电路模块,如FIFO、PLL等。使用这些IP核可以大大加快开发进度,提高设计的可靠性和效率,并减少重复工作。

  • 常用IP核

    • FIFO:用于数据缓冲。
    • PLL:用于时钟管理。
    • UART、SPI、I2C:用于通信协议。
    • DDR 控制器:用于高速数据传输。

  • IP核集成

    • 使用工具提供的 IP 核集成功能。
    • 遵循 IP 核提供的接口规范。


9. 嵌入式系统设计

        FPGA不仅用于实现逻辑电路,还可以嵌入软核处理器(如MicroBlaze、Nios II),支持软硬件协同设计。通过硬件加速,FPGA可以显著提升嵌入式系统的处理性能,适用于高性能需求的应用。

  • 软核处理器

    • 如 Xilinx MicroBlaze、Zynq PS 中的 ARM Cortex-A9/A7。
    • 用于实现控制逻辑和算法处理。

  • 硬件加速

    • 使用 FPGA 的并行性和低延迟特性来加速特定任务。
    • 与软核处理器协同工作。


10. 高级设计技巧

        高级设计技巧如流水线设计和并行处理是优化FPGA性能的关键。流水线设计通过分解任务并行处理,提高系统的吞吐量,而并行处理则充分利用FPGA的并行计算能力,显著提升系统效率。

  • 流水线设计

    • 将复杂操作分解成多个阶段,每个阶段并行执行。
    • 提高吞吐量,降低延迟。

  • 并行处理

    • 利用 FPGA 的并行性提高性能。
    • 多个操作同时执行。

创作不易,感觉有用,就一键三连,感谢(●'◡'●)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2065945.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

World of Warcraft [CLASSIC] the Eye of Eternity [EOE] P1-P2

World of Warcraft [CLASSIC] the Eye of Eternity [EOE] 永恒之眼(蓝龙) 第一阶段 第二阶段 第三阶段 载具1-6技能介绍 World of Warcraft [CLASSIC] the Eye of Eternity [EOE]_永恒之眼 eoe-CSDN博客 永恒之眼怎么出副本呢,战斗结束&am…

泛微E9如何更新缓存

泛微E9如何更新缓存 在E9中,是默认开启了数据缓存的,如果直接操作数据库是会存在缓存不更新的问题,E9系统提供以下几种方式进行缓存清空的方式。 注:原则上禁止通过非程序渠道直接修改OA数据库数据,可以直接在页面进行…

LCR 162. 数字 1 的个数 题解

189轮转数组 189. 轮转数组 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 时间复杂度o(n),空间复杂度 o(1) class Solution {public void rotate(int[] nums, i…

Python 如何使用 functools 模块

functools 模块是 Python 标准库中的一个重要模块,它提供了一些有用的高阶函数和工具,帮助开发者更轻松地操作和处理函数。functools 中的工具主要用于函数的缓存、包装、偏函数等功能。 1. functools 模块概述 functools 模块的设计目的是为了简化和增…

无人机+消防车:高楼灭火系统技术详解

“无人机消防车”高楼灭火系统技术是一种创新的消防解决方案,旨在解决高层建筑灭火难题。以下是对该技术的详细解析: 一、技术背景与需求 高层建筑数量多,火灾隐患多发。根据国家消防救援局发布的数据,高层建筑火灾频发&#xf…

MyBatis核心机制

实现MyBatis核心机制环境搭建 1.核心框架示意图 2.模块搭建 1.创建maven项目 2.引入依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSc…

超维机器人在工业与能源领域的具身智能探索和应用

具身智能&#xff08;Embodied AI&#xff09;是指机器人能够通过其物理形态与环境的交互&#xff0c;进行感知、学习、决策和执行&#xff0c;从而完成复杂任务的能力。具身智能强调机器人不仅要具备感知环境和分析数据的能力&#xff0c;还要能够通过身体的行为和物理互动来适…

zabbix5.0与7.0版本区别 切换建议

Zabbix5.0和Zabbix7.0的区别 1. 性能和扩展性优化 1.1 高效的数据处理和存储 优化的数据库性能&#xff1a; Zabbix 7.0 在数据库层面进行了多项优化&#xff0c;以减少查询延迟和提高数据处理速度。这包括对数据库结构的改进和索引优化&#xff0c;使得大规模数据的读取和写…

Linux云计算 |【第二阶段】SECURITY-DAY3

主要内容&#xff1a; Prometheus监控服务器、Prometheus被监控端、Grafana监控可视化 补充&#xff1a;Zabbix监控软件不自带LNMP和DB数据库&#xff0c;需要自行手动安装配置&#xff1b;Prometheus监控软件自带WEB页面和DB数据库&#xff1b;Prometheus数据库为时序数据库&…

<数据集>翻越栏杆行为识别数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;512张 标注数量(xml文件个数)&#xff1a;512 标注数量(txt文件个数)&#xff1a;512 标注类别数&#xff1a;1 标注类别名称&#xff1a;[climbing] 使用标注工具&#xff1a;labelImg 标注规则&#xff1a;对类…

十五分钟两百行代码,手写一个vue项目全局通用的弹框

前言&#xff1a; 我们在写vue项目时&#xff0c;弹框是非常常用的组件&#xff0c;并且在同一个项目中&#xff0c;弹框大多类似。所以我们可以抽离封装出一个通用的弹框&#xff1b; 因为vue3可向下兼容&#xff0c;所以作者这边会使用vue2的写法&#xff0c;vue3写法大同小…

vue3 语法糖<script setup>

在 Vue 3 中&#xff0c;<script setup>是一种新的语法糖&#xff0c;它极大地简化了组件的编写方式。 <script setup> 是在单文件组件 (SFC) 中使用组合式 API 的编译时语法糖。当同时使用 SFC 与组合式 API 时该语法是默认推荐。 基本概念 简洁的语法&#xf…

使用Qg波形快速提取模型参数的新方法以准确捕获SiC MOSFET在不同负载条件下的开关特性

来源&#xff1a;Novel Methodology for Fast Model Parameter Extracting Using Qg Waveforms to Accurately Capture Switching Characteristics of SiC MOSFET Under Various Load Conditions&#xff08;ISPSD 24年&#xff09; 摘要 本文提出了一种快速提取模型参数的方…

类和对象(高级)

类和对象&#xff08;高级&#xff09; 一、运算符重载 运算符重载是对已有的运算符 指定新功能。不能创建新运算。 运算符重载关键字operator 思路&#xff1a; 1、弄懂运算符的运算对象的个数。&#xff08;个数决定了 重载函数的参数个数&#xff09; 2、识别运算符左边的…

【css】伪元素实现跟随鼠标移动的渐变效果

主要功能是在按钮上实现鼠标跟随渐变效果。每当用户将鼠标移动到按钮上时&#xff0c;按钮会显示一个以鼠标位置为中心的渐变效果。 1. 核心部分: 监听鼠标在元素内移动 监听鼠标在元素内移动&#xff0c;并触发该事件。 const handleMouseMove (e: MouseEvent) > {if (…

C#知识|语法拾遗:数据类型转换

哈喽&#xff0c;你好啊&#xff0c;我是雷工&#xff01; 其实关于数据转换在任何语言中都会涉及&#xff0c;无论是PLC编程语言&#xff0c;还是SCADA开发中的脚本语言&#xff0c;都会涉及&#xff0c;在前边学习JavaScript的内容时&#xff0c;也看过相关内容&#xff1a; …

[RAG]喂饭教程!Neo4J可视化GraphRAG索引

GraphRAG通过结合知识图谱&#xff0c;增加RAG的全局检索能力。今天我将讲解如何使用Neo4J可视化GraphRAG索引的结果&#xff0c;以便进一步的处理、分析&#xff0c;以小说提取的实体《仙逆》为例&#xff0c;一图胜千言。本文分为4小节&#xff0c;安装neo4j、导入GraphRAG索…

如何做服务端渲染?

node server 接收客户端请求&#xff0c;得到当前的请求url 路径&#xff0c;然后在已有的路由表内查找到对应的组件&#xff0c;拿到需要请求的数据&#xff0c;将数据作为 props、context或者store 形式传入组件 然后基于 react 内置的服务端渲染方法 renderToString()把组件…

vue一键打不同环境的包

1.配置package.json 主要看的是 "build:all": "vue-cli-service build && vue-cli-service build --mode test && vue-cli-service build --mode development", "scripts": {"dev": "vue-cli-service serve"…

【SpringBoot源码】SpringBoot监听机制分析

目录 一、简介 二、SpringBoot事件监听机制 1)加载ApplicationListener监听器实现类 2)获取运行监听器EventPublishingRunListener 3)发布事件 4)Spring事件发布multicastEvent() 一、简介 接下来我们分析下SpringBoot的事件监听机制的源码。 二、SpringBoot事件监…