当前位置: 首页 > news >正文

嵌入式硬件实战提升篇(二)PCB高速板设计 FPGA核心板带DDR3 PCB设计DDR全面解析

引言:设计一款高速板,供读者学习,FPGA核心板,带一颗DDR3内存,FPGA型号:XC6SLX16-2FTG256C。
随着嵌入式硬件技术的快速发展,高速板设计逐渐成为嵌入式系统设计中的核心技术之一。高速板的设计要求技术人员具备信号完整性、电源完整性及高频布线的综合能力,特别是在FPGA与高速存储器(如DDR3)的结合应用中,更是对硬件设计提出了严苛的挑战。
本项目旨在通过设计一款基于FPGA XC6SLX16-2FTG256C核心板的高速板,带一颗DDR3内存模块,采用项目导向的学习方式,结合实际绘制和理论分析,全面解析高速板的设计方法和DDR3的PCB设计要点。通过本项目,读者将从基础理论到实践操作,逐步构建起一套适合实际开发的高速PCB设计知识体系,为后续复杂嵌入式硬件开发奠定坚实基础。

通过项目导向性进行学习最切合实际的高速板的绘制和理论结合实践的知识体系构建!

目录

一、何为高速板?

1.1. 高速板的核心特点

1.2. 高速板与传统PCB的区别

1.3. 高速板的设计关键点

1.4. 高速板的典型应用

1.5. 本项目的高速板设计

二、不同DDR详解

2.1.不同DDR管脚介绍

2.2.不同DDR封装结构

2.3.DDR实例详解

三、PCB设计不同DDR思路要点

3.1.DDR1和DDR2 PCB设计要点

3.1.1.DDR布线要求

 3.1.2.DDR2的三类

 3.1.3.Class规则设置

3.1.4.等长设计

3.1.5.其他要求

3.2.DDR3和DDR4 PCB设计要点

3.2.1.DDR信号线分组

3.2.2.DDR时序同步

3.3.DDR PCB设计共同点

3.4.DDR PCB设计不同点

3.5.SDRAM,DDR1,DDR2,DDR3,DDR4传输速率和供电电压的汇总

四、原理图设计

五、PCB设计

六、3D预览图


一、何为高速板?

高速板是指在电路板设计中,能够支持高频率、高速率信号传输的PCB(Printed Circuit Board)。随着电子技术的快速发展,嵌入式系统、通信设备、计算机等领域对数据传输速率的要求越来越高,传统PCB设计无法满足信号完整性和高速传输的需求,高速板设计应运而生。

1.1. 高速板的核心特点

高速板的设计具有以下几个显著特点:

  • 高速信号传输:支持百兆、千兆甚至更高传输速率的信号,典型应用包括DDR3/DDR4内存、FPGA、PCIe、USB 3.0 等高速接口。
  • 严格的信号完整性要求:为保证高速信号传输的稳定性和可靠性,需要控制信号的阻抗、时序和串扰,避免信号畸变。
  • 多层结构:高速板通常采用多层结构(6层或以上),提供完整的参考平面(电源和地),以降低电磁干扰(EMI)并提高信号质量。

1.2. 高速板与传统PCB的区别

高速板和传统PCB设计的主要区别在于对高频信号传输的要求和处理方式:

  • 信号频率:传统PCB主要处理低频信号(如模拟电路或低速数字电路),而高速板需要处理频率达到数百MHz或GHz的高速信号。
  • 设计复杂度:高速板需要考虑串扰、反射、延迟、时序等因素,设计难度远高于传统PCB。
  • 仿真验证:在高速板设计中,仿真验证工具(如SI仿真、PI仿真)是不可或缺的一环,用于验证设计是否满足信号完整性和电源完整性要求。

1.3. 高速板的设计关键点

设计高速板需要掌握以下关键技术:

  • 阻抗匹配:控制传输线的特性阻抗,使其与源端或负载端阻抗一致,避免信号反射。
  • 信号完整性:关注高速信号的时序、抖动、串扰等问题,优化信号传输路径。
  • 电源完整性:确保电源分布网络(PDN)低噪声,避免对高速信号产生干扰。
  • 差分对布线:高速差分信号(如DDR3的时钟线)需按差分规则布线,保持差分对的长度和间距一致。

1.4. 高速板的典型应用

高速板广泛应用于现代电子系统中,尤其是在以下场景中更为常见:

  • 嵌入式系统中的处理器核心板设计(如带DDR3/DDR4的FPGA或ARM核心板)。
  • 高速通信设备,如路由器、交换机。
  • 消费电子产品,如智能手机、平板电脑、笔记本电脑。
  • 工业控制系统和医疗设备中的高速采集与处理模块。

1.5. 本项目的高速板设计

本文以设计一款基于FPGA(型号:XC6SLX16-2FTG256C)的核心板为案例,重点解析DDR3在高速板中的设计实现。读者将通过项目实践掌握高速板的设计方法和DDR3的关键布线要点,为后续深入学习打下坚实基础。

二、不同DDR详解

2.1.不同DDR管脚介绍

以下是DDR1、DDR2、DDR3、DDR4、DDR5 各代内存的管脚定义概要表,涵盖主要管脚及其功能的对比。

管脚名称DDR1DDR2DDR3DDR4DDR5
VDD2.5V1.8V1.5V1.2V1.1V
VDDQ同VDD同VDD同VDD同VDD独立,1.1V
时钟 (CLK)差分信号,单方向差分信号,单方向差分信号,单方向差分信号,单方向差分信号,单方向
地址 (Annn)A0:120:120:12, 包括BA信号A0:130:130:13, 包括BA信号A0:150:150:15, 包括BA信号A0:160:160:16, 包括BG信号A0:170:170:17, 包括BG信号
命令 (CMD)RAS, CAS, WE, CSRAS, CAS, WE, CSRAS, CAS, WE, CSRAS, CAS, WE, CSRAS, CAS, WE, CS
数据 (DQ)单端,双向单端,双向单端,双向单端,双向单端,双向
数据掩码 (DM)可选可选可选替换为DBI替换为DBI
数据时钟 (DQS)单端,同步差分,同步差分,同步差分,同步差分,同步
芯片选择 (CS)单路多路多路多路多路
行位选通 (RAS)行选择行选择行选择行选择行选择
列位选通 (CAS)列选择列选择列选择列选择列选择
银行选择 (BA)BA0:20:20:2BA0:20:20:2BA0:20:20:2BG0:10:10:1, BA0:10:10:1BG0:10:10:1, BA0:10:10:1
复位 (RESET)可选必需必需
校验信号 (PAR)支持ECC支持ECC支持ECC
阻抗匹配 (ZQ)支持支持支持支持
温度传感器 (TS)可选可选支持支持
能效管理 (PMIC)集成

说明:

  1. 时钟信号:DDR2起采用差分时钟信号,相比单端信号抗干扰能力更强。
  2. 数据总线宽度:通常为64位,ECC内存添加8位校验。
  3. 电压变化:随代数提升,工作电压逐步下降,提高功耗效率。
  4. 地址/命令信号扩展:更高代数支持更多存储容量,因此地址位数增多,增加银行组信号 (BG)。
  5. DBI(Data Bus Inversion):从DDR4开始引入,用于数据线上的电平反转以降低功耗。
  6. PMIC(电源管理芯片):DDR5内存将PMIC集成到内存模块中,进一步优化供电和稳定性。

2.2.不同DDR封装结构

如下就是封装结构了,我们了解即可。

相关管脚介绍如下所示:

2.3.DDR实例详解

由于我们这次项目用的是DDR3,我们在此实际调研并运用,如下就是DDR3L SDRAM的数据手册图了。

引脚定义如下所示:

因此我们对于上述内容做总结,得到如下的表格,这里我也是精简了一下,读者最好还是回到手册去读取相关内容。

信号名称类型描述
A14:13], A\[12/BC#], A11, A10/AP, A\[9:0输入地址输入:提供行地址(激活命令),列地址和自动预充电位(A10)用于读/写命令。PRECHARGE命令中,A10用于指定单个或所有bank的预充电。A12/BC#用于动态切换突发模式 (BL8 或 BC4)。
BA2:02:02:0输入Bank地址输入:定义当前命令(ACTIVATE、READ、WRITE、PRECHARGE)作用的目标Bank,或定义加载模式寄存器的编号(MR0-MR3)。
CK, CK#输入差分时钟输入:用于采样控制信号和地址信号,DQS信号也以其为参考。
CKE输入时钟使能:控制内部电路的启用(高电平)和关闭(低电平)。在低电平时,可进入预充电省电模式、自刷新模式或激活省电模式。
CS#输入芯片选择:低电平启用命令解码,高电平屏蔽所有命令。用于多Rank系统中的Rank选择。
LDM输入数据屏蔽信号:用于写入数据时屏蔽低字节数据(高电平时屏蔽)。
UDM输入数据屏蔽信号:用于写入数据时屏蔽高字节数据(高电平时屏蔽)。
ODT输入芯片内终端:控制内部终端电阻启用(高电平)或禁用(低电平),作用于数据线和数据相关信号。
RAS#, CAS#, WE#输入命令输入:与CS#一起定义进入的命令(如激活、读取、写入、预充电等)。
RESET#输入复位:低电平有效的异步复位信号,复位输入参考VSS,提供设备复位功能。
DQ15:015:015:0双向数据输入/输出:双向数据总线,用于传输数据,分为高字节 (DQ15:815:815:8) 和低字节 (DQ7:07:07:0)。参考电压为VREFDQ。
LDQS, LDQS#I/O数据选通信号(低字节):读数据时与数据边缘对齐;写数据时与数据中心对齐。
UDQS, UDQS#I/O数据选通信号(高字节):读数据时与数据边缘对齐;写数据时与数据中心对齐。
VDD电源主电源:1.5V ± 0.075V。
VDDQ电源数据电源:1.5V ± 0.075V,独立设计以改善噪声抑制能力。
VREFCA电源控制、命令和地址信号的参考电压:需要在所有操作模式下维持。
VREFDQ电源数据信号的参考电压:需要在所有非自刷新模式下维持。
VSS电源地电源。
VSSQ电源数据信号地电源:独立设计以改善噪声抑制能力。
ZQ参考外部参考端:用于输出驱动校准,与外部240Ω电阻(RZQ)连接至VSSQ。
NC-无连接信号:这些引脚未连接至DRAM内部或外部。

结构如下所示:

三、PCB设计不同DDR思路要点

3.1.DDR1和DDR2 PCB设计要点

3.1.1.DDR布线要求

1.所有信号连线过孔数量都是两个,都是从顶层到底层,线宽都要一样,走线方向要一致,平行走线不得有交叉,弯线平滑处理,不得有直角,锐角,线距为线宽两倍。
2.要求等长差分走线的必须先布好,如时钟线。
3.以时钟线长度为基准,等长布其它信号线。
忽略电源,地网络

 3.1.2.DDR2的三类

1.差分时钟信号:CLKN.CLKP
2,数据线DO0-DO15,数据掩码信号DOMO,DOM1,数据选通信号DOS*_N,DOS*_P3,地址线/控制线:除数据,时钟外的其他信号,如A0A12,WE,CS,BA02,CKE等。

 3.1.3.Class规则设置

1.DATA L BUS:00-DO7.DOMO.DOS0 NDOS0_P
2.DATA H BUS:08-DO15.DOM1.DOS1 N.DOS1_P
3.ADDR BUS: 除数据线外的其他信号
4.CLK DIFF: CLK N,CLK P

3.1.4.等长设计

1,所有信号线参考差分时钟的长度作等长
2,DATA_L_BUS共11根走在同层,与差分时钟的长度误差25mil
3,DATA H BUS共11根走在同层,与差分时钟的长度误差25mil
4,ADDR BUS:与差分时钟的长度误差200~300mil


3.1.5.其他要求

1.特性阻抗: 单端 50欧,差分100欧
2.保证完整的参考平面
3,VREF电容要靠近相关的电源管脚,线宽尽量在40mil以上
4,信号线不能跨分割.
5.DDR2走线区域不允许有其他信号穿过
6,去耦电容要靠近相关IC的电源管脚
7.尽量采用多层板 

以下是对DDR1和DDR2 PCB设计思路要点的总结表格:

设计要点详细说明
DDR布线要求- 信号连线过孔数量为两个,从顶层到底层。
- 线宽一致,走线方向一致,平行走线不得交叉。
- 弯线需平滑处理,不得有直角、锐角,线距为线宽两倍。
- 差分走线(如时钟线)需优先布线并等长处理。
时钟线基准等长布线以时钟线长度为基准,等长布其它信号线。
DDR2三类信号1. 差分时钟信号:CLK_N,CLK_P。
2. 数据信号:D0-D15,数据掩码信号(DM0, DM1),数据选通信号(DQ_N, DQ_P)。
3. 地址/控制信号:A0-A12,WE,CS,BA0-BA2,CKE等。
Class规则设置1. DATA L BUS:D0-D7, DM0, DQ0_N, DQ0_P。
2. DATA H BUS:D8-D15, DM1, DQ1_N, DQ1_P。
3. ADDR BUS:除数据线外的其他信号。
4. CLK DIFF:CLK_N, CLK_P。
等长设计1. 所有信号线等长参考差分时钟线。
2. DATA L BUS:11根,误差≤25mil。
3. DATA H BUS:11根,误差≤25mil。
4. ADDR BUS:误差在200~300mil范围内。
特性阻抗要求- 单端信号:50欧姆。
- 差分信号:100欧姆。
参考平面确保完整的参考平面,不允许信号线跨分割区域。
VREF电容布局VREF电容应靠近相关电源管脚,线宽尽量≥40mil。
去耦电容布局去耦电容应靠近相关IC的电源管脚。
信号区域限制DDR2走线区域不允许其他信号穿过。
板层设计建议尽量采用多层板以优化信号完整性和隔离。

3.2.DDR3和DDR4 PCB设计要点

3.2.1.DDR信号线分组

将DDR布线的信号进行分组,可以分为时钟线、地址线、命令控制线、数据线四部分。
(1)、时钟线的布线规则:为高速差分信号线,按照差分布线规则进行布线,而且需要在接收端进行阴抗匹配
(2)、地址线与命令控制线布线规则:地址和命令信号线要进行端接匹配,通过匹配电阻接端接电源VTT。
(3)、数据线布线规则:数据线由于采用了ODT技术,因此不需要外部进行端接匹配。另外需要注意的是:对于时钟线、地址线、命令控制线和数据线,对等长布线要求较高,除了每一组信号线内部要求等长布线以外,还要保持时钟线、地址线和数据线等组间信号线尽量保持等长。尽量保持同组信号线保持在同层,避免跨层布线。对于差分信号线,为了避免信号间的串扰,要使用3W原则进行布线。除此之外,为了使DDR电路具备完整的参考地平面和电源平面,因此在DDR保护区内不得出现与DDR无关的信号且信号走线的参考平面不能中断。DDR的PCB单端走线阻抗一般控制为50欧,差分走线阻抗一般控制为100欧。对于多块DDR芯片的布局布线,根据菊花链的拓扑结构进行布置即可。


3.2.2.DDR时序同步

作为源同步系统的DDR电路设计来说,时序控制至关重要,共有三组时序设计要求如下:
(1)、DQ和DQS的等长关系:所有数据线DQ参考DOS的差分线等长,DOS差分线误差控制在5mil,所有数据线误差控制在DOS目标长度的15mil。
(2)、时钟CLK和地址线、命令控制线的等长关系:所有地址和命令控制线参考差分时钟线CLK等长,所有地址和命令控制线误差控制在时钟CLK目标长度的50mil。
(3)、时钟CLK和DQS线的等长关系:对于DDR2来说,时钟CLK和DQS线的时序关系是松散的时序关系,它们之间的时序参数为,一般控制在100mil即可,但是在DDR3中,时钟CLK和DOS线的时序没有严格要求。

下是对DDR3和DDR4 PCB设计要点的总结表格:

设计要点详细说明
DDR信号线分组DDR信号分为四类:时钟线、地址线、命令控制线、数据线。
时钟线布线规则- 高速差分信号线,按照差分布线规则布线。
- 接收端需进行阻抗匹配。
地址线与命令控制线规则- 地址线和命令信号需端接匹配,通过匹配电阻接端接电源VTT。
数据线布线规则- 数据线采用ODT技术,无需外部端接匹配。
- 组内信号需等长布线,组间信号需尽量等长。
- 数据线与其他组信号保持层内布线,避免跨层。
差分信号布线规则- 使用3W原则布线,避免信号串扰。
信号参考平面要求- 确保完整的参考地平面和电源平面。
- DDR保护区内不得有无关信号,参考平面不能中断。
特性阻抗要求- 单端阻抗:50欧姆。
- 差分阻抗:100欧姆。
多块DDR芯片布局- 使用菊花链拓扑结构布置信号。
DQ和DQS的等长关系- 数据线DQ参考DQS差分线等长。
- DQS差分线误差控制在5mil以内。
- 数据线误差控制在DQS目标长度的15mil以内。
CLK与地址/命令线等长关系- 地址线与命令控制线参考CLK差分时钟线等长。
- 误差控制在CLK目标长度的50mil以内。
CLK与DQS等长关系- DDR2中CLK与DQS线时序参数为100mil以内。
- DDR3中CLK与DQS线的时序要求更为松散。

3.3.DDR PCB设计共同点

1、确定PCB叠层设计
2、理清高速信号线的阻抗计算要求
3、信号分类处理
4、根据CPU出线确定DDR布局及走线的拓扑结构(T型或者菊花链)5、布线要求同组同层,最好都参考地平面
6、信号线之间尽量保证3W线宽
7、数据线等长误差要求控制在5-15mil,地址线、控制线、时钟线等长误差要求控制在20-50mil
8、所有DDR3滤波电容紧挨电源管脚放置,以免影响滤波效果,最好每个电源管脚对应一个滤波电容
9、DDR电源模块要尽量靠近CPU及DDR放置,减少平面分割面积
10、所有信号线都有完整的参考平面,以免由于跨分割带来的阻抗跳变

3.4.DDR PCB设计不同点

快速辨别方法如下:
1、红色方框的内存芯片,DDR1代是大片,DDR2和DDR3是小片,直观吧!
2、绿色方框的内存卡口,DDR1和DDR2是圆口的,DDR3是方口的,直观吧!
3、DDR3的缺口在左边,DDR4的缺口在右边,DDR4 将内存金手指设计为中间稍突出、边缘收矮的形状!
综合起来就是:DDR1=大片+圆口;DDR2=小片+圆口;DDR3=小片+方口左;DDR4=小片+方口右;

3.5.SDRAM,DDR1,DDR2,DDR3,DDR4传输速率和供电电压的汇总

四、原理图设计

本次设计的主要目标是开发一块带 DDR3 内存的 FPGA 核心板,面向高速电路项目,为后续的高速设计积累经验。重点包括:

  1. 优化 IO 分配,尤其是 LVDS 等低压差分高速接口。
  2. 使用 4 层 PCB,探索低成本低复杂度的实现方式,同时保证较高的运行速度。
  3. 为了简化设计,板上不集成 FLASH,仅通过 JTAG 加载程序,适合调试应用。

通过上述的理论支撑,我们知道原理图应该如何设计,具体如下所示:

如上分别为DDR原理图电路图,以及总体的电路图。

IO 分配策略

根据项目需求和设计权衡,对各 Bank 的 IO 做了如下分配:

  • Bank2

    • 电压:2.5V
    • 配置:全部引脚以差分对形式引出,共计 18 对(17 对等长)。
    • 用途:标准 LVDS 输入输出。
  • Bank0

    • 电压:3.3V
    • 配置:全部引脚以差分对形式引出,共计 20 对,全部等长。
    • 用途:一般 IO 输入输出。
  • Bank3

    • 电压:3.3V
    • 配置:部分引脚引出,用于板载外设 IO 或扩展 Bank0 的 IO 数目。
  • Bank1

    • 电压:1.5V
    • 配置:专门用于连接 DDR3 内存颗粒。

设计调整建议
考虑到 Bank0 和 Bank2 的供电电压可以互换,将 Bank0 调整为 2.5V 供电,可统一作为 LVDS 接口。但需注意 JTAG 接口电压将降至 2.5V,可能需要带 Buffer 的下载器支持。

FPGA高速板设计总结

设计目标与总体思路

本次设计的主要目标是开发一块带 DDR3 内存的 FPGA 核心板,面向高速电路项目,为后续的高速设计积累经验。重点包括:

  1. 优化 IO 分配,尤其是 LVDS 等低压差分高速接口。
  2. 使用 4 层 PCB,探索低成本低复杂度的实现方式,同时保证较高的运行速度。
  3. 为了简化设计,板上不集成 FLASH,仅通过 JTAG 加载程序,适合调试应用。

IO 分配策略

根据项目需求和设计权衡,对各 Bank 的 IO 做了如下分配:

  • Bank2

    • 电压:2.5V
    • 配置:全部引脚以差分对形式引出,共计 18 对(17 对等长)。
    • 用途:标准 LVDS 输入输出。
  • Bank0

    • 电压:3.3V
    • 配置:全部引脚以差分对形式引出,共计 20 对,全部等长。
    • 用途:一般 IO 输入输出。
  • Bank3

    • 电压:3.3V
    • 配置:部分引脚引出,用于板载外设 IO 或扩展 Bank0 的 IO 数目。
  • Bank1

    • 电压:1.5V
    • 配置:专门用于连接 DDR3 内存颗粒。

设计调整建议
考虑到 Bank0 和 Bank2 的供电电压可以互换,将 Bank0 调整为 2.5V 供电,可统一作为 LVDS 接口。但需注意 JTAG 接口电压将降至 2.5V,可能需要带 Buffer 的下载器支持。


DDR3 设计注意事项

  1. 信号完整性
    • DDR3 校准电阻(RZQ)和 VREF 电压的正确接入不可忽略。
    • ODT 和 RST 信号线因高速切换需求不高,允许一定灵活性,无需严格等长。
  2. 布局布线
    • DDR3 信号线宽约 5 mil,阻抗控制在 50 欧姆左右;过孔数限制为最多两个。
    • 受限于四层板的走线空间,仅支持单颗 DDR3 的布线设计。

电源设计与去耦

  • 电源方案:采用经典的 EA3059 单芯四路电源管理方案,满足 XC6SLX16-2FTG256C 的供电需求。
  • 去耦设计
    • 每路电压设置独立的去耦电容。
    • 按官方手册推荐配置:
      • 每个 Bank 一个大容量贴片电容;
      • 每个供电轨靠近芯片处放置两到三个 4.7μF 电容;
      • 在芯片正背面分别放置 470nF 电容用于高频去耦。

五、PCB设计

PCB 设计原则

  1. 四层板布局
    • 顶层和底层用于高速信号走线。
    • 中间两层分别分配为电源层和地层,保证参考平面的完整性。
  2. 阻抗控制
    • 信号线宽为 5 mil,经阻抗计算结果约为 54 欧姆,可通过加宽微调至 50 欧姆。
  3. 走线优化
    • 高速信号避免分层和过孔,DDR 信号尽量等长布线。
    • 为便于走线,放弃设计双颗 DDR3 的支持。

设计优化经验

  1. 双颗 DDR3 的挑战
    • 使用四层板设计时,Bank3 的内存引脚在等长布线和信号完整性方面遇到严重困难,最终放弃双颗 DDR3 的支持。
  2. 可改进点
    • 进一步优化 Bank0 和 Bank2 的分配逻辑,统一 LVDS 接口电压标准,提高信号一致性。

如下分别为四层的PCB结构图。

网络长度查看如下所示,等长,这里就随便拿出两组来对比。

六、3D预览图

相关文章:

嵌入式硬件实战提升篇(二)PCB高速板设计 FPGA核心板带DDR3 PCB设计DDR全面解析

引言:设计一款高速板,供读者学习,FPGA核心板,带一颗DDR3内存,FPGA型号:XC6SLX16-2FTG256C。 随着嵌入式硬件技术的快速发展,高速板设计逐渐成为嵌入式系统设计中的核心技术之一。高速板的设计要…...

亚信安全携手飞书“走近先进” 与保隆科技探索制造业数字化转型

亚信安全携手飞书组织举办“走近先进”活动。近日活动“走近”了中国汽车供应链百强、上海市制造业五十强企业——上海保隆汽车科技股份有限公司(以下简称“保隆科技”)。活动围绕“突破桎梏 加速升级”的主题,聚焦企业数字化转型的核心议题&…...

【C++篇】排队的艺术:用生活场景讲解优先级队列的实现

文章目录 须知 💬 欢迎讨论:如果你在学习过程中有任何问题或想法,欢迎在评论区留言,我们一起交流学习。你的支持是我继续创作的动力! 👍 点赞、收藏与分享:觉得这篇文章对你有帮助吗&#xff1…...

VTK的基本概念(一)

文章目录 三维场景的基本要素1.灯光2.相机3.颜色4.纹理映射 三维场景的基本要素 1.灯光 在三维渲染场景中,可以有多个灯光的存在,灯光和相机是三维渲染场景的必备要素,如果没有指定的话,vtkRenderer会自动创建默认的灯光和相机。…...

error LNK2001: 无法解析的外部符号 memcpy strcmp strlen

0>LIBMY_static.lib(pixdesc.obj) : error LNK2001: 无法解析的外部符号 __imp_abort 10>LIBMY_static.lib(random_seed.obj) : error LNK2001: 无法解析的外部符号 __imp_abort 10>postprocess.obj : error LNK2001: 无法解析的外部符号 __imp_abort 10>LIBMY_sta…...

打造智能扩容新纪元:Kubernetes Custom Metrics深度解析

自定义指标:Kubernetes Auto Scaling的革命 1. 引言 1.1 Kubernetes与Auto Scaling Kubernetes作为当今容器编排的事实标准,提供了强大的自动化能力,其中Auto Scaling(自动扩缩容)是其核心特性之一。Auto Scaling允许Kubernetes集群根据当前负载动态调整资源,以应对不…...

【K8s】专题十五(4):Kubernetes 网络之 Calico 插件安装、切换网络模式、卸载

本文内容均来自个人笔记并重新梳理,如有错误欢迎指正! 如果对您有帮助,烦请点赞、关注、转发、订阅专栏! 专栏订阅入口 | 精选文章 | Kubernetes | Docker | Linux | 羊毛资源 | 工具推荐 | 往期精彩文章 【Docker】(全…...

Unity类银河战士恶魔城学习总结(P141 Finalising ToolTip优化UI显示)

【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili 教程源地址:https://www.udemy.com/course/2d-rpg-alexdev/ UI部分暂时完结!!! 本章节优化了UI中物品描述的显示效果,技能描述的显示效果 并且可以批…...

c++(入门)

1. 引用 引用的定义 引用是另一个变量的别名,它在声明时必须被初始化,并且一旦初始化后,它就始终引用那个变量。 引用的语法 引用的声明方式是在变量名前加上&符号。 引用的特点 引用必须在声明时初始化。引用一旦初始化后&#x…...

【优选算法】前缀和

目录 一、[【模板】前缀和](https://www.nowcoder.com/practice/acead2f4c28c401889915da98ecdc6bf?tpId230&tqId2021480&ru/exam/oj&qru/ta/dynamic-programming/question-ranking&sourceUrl%2Fexam%2Foj%3Fpage%3D1%26tab%3D%25E7%25AE%2597%25E6%25B3%2595…...

Spring Bean 的生命周期详解

所谓万物皆对象,对于一个 bean 而言,从出生到死亡,他要经历哪些阶段呢? 生命周期 理解对象的生命周期,可以帮助我们更好的做一些扩展。 一个对象从被创建到被垃圾回收,可以大致分为这 5 个阶段&#xff1a…...

MySQL【知识改变命运】12

视图 1:什么是视图2:创建视图使用视图(视图的好处)2.1.隐藏敏感字段2.2.对外提供统一访问3:视图和真实表进⾏表连接查询 4:修改视图数据4.1:通过真实表修改数据,会影响视图4.2&#…...

shell编程(完整版)

目录 一、shell脚本解释器 二、shell脚本的执行 三、变量的使用 四、永久环境变量 按用户设置永久环境变量 文件路径: 示例步骤: 删除永久环境变量 五、脚本程序传递参数怎么实现 六、用编程进行数学运算 shell中利用expr进行运算 运算与变量…...

数字逻辑(一)——导论

1.导论 1.1什么是数字逻辑? 数字逻辑是指在数字电路设计、计算机科学领域中对于离散的二进制信号进行逻辑处理、运算、存储和传输的基本原理和方法。 1.2数字量和模拟量的区别 数字量:在时间上和数量上都是离散的、不连续的物理量。模拟量&#xff1…...

量化交易系统开发-实时行情自动化交易-4.4.做市策略

19年创业做过一年的量化交易但没有成功,作为交易系统的开发人员积累了一些经验,最近想重新研究交易系统,一边整理一边写出来一些思考供大家参考,也希望跟做量化的朋友有更多的交流和合作。 接下来继续说说做市策略原理。 做市策…...

《线性代数的本质》

之前收藏的一门课,刚好期末复习,顺便看一看哈哈 课程链接:【线性代数的本质】合集-转载于3Blue1Brown官方双语】 向量究竟是什么 线性代数中最基础、最根源的组成部分就是向量,需要先明白什么是向量 不同专业对向量的看法 物理专…...

Gbase8s 允许内置用户创建用户以及创建只读权限用户以及利用角色管理普通用户权限

Gbase8s 允许内置用户创建用户以及创建只读权限用户以及利用角色管理普通用户权限 普通安装实例创建数据库以后,DBA权限只有gbasedbt用户。gbasdbt可以创建普通用户,并且给普通用户赋予库及权限或者表级权限。 但是gbasedbt用户口令和操作系统相关,所以想在不提供gbasedbt的…...

24/11/25 视觉笔记 深度传感器和手势识别

本章的目的是开发一个应用程序,使用深度传感器的输出实时检测和跟踪简单的手势。该应用程序将分析每个已捕捉的帧。并执行以下任务。 手部区域分割:通过分析Kinect传感器的深度图输出,在每一帧中提取用户的手部区域,这是通过阈值…...

迄今为止的排序算法总结

迄今为止的排序算法总结 7.10 迄今为止的排序算法总结复杂度和稳定性时间复杂度测试程序sortAlgorithm.hsortAlgorithm.cpptest.cpp 时间复杂度测试结果 7.10 迄今为止的排序算法总结 复杂度和稳定性 排序算法平均情况最好情况最坏情况稳定性空间复杂度选择排序O(n^2)O(n^2)O…...

HTML和CSS 表单、表格练习

HTML和CSS 表格练习 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>HTML表格练习</title>…...

网络编程(Modbus进阶)

思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

挑战杯推荐项目

“人工智能”创意赛 - 智能艺术创作助手&#xff1a;借助大模型技术&#xff0c;开发能根据用户输入的主题、风格等要求&#xff0c;生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用&#xff0c;帮助艺术家和创意爱好者激发创意、提高创作效率。 ​ - 个性化梦境…...

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学&#xff08;ECC&#xff09;是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础&#xff0c;例如椭圆曲线数字签…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南

精益数据分析&#xff08;97/126&#xff09;&#xff1a;邮件营销与用户参与度的关键指标优化指南 在数字化营销时代&#xff0c;邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天&#xff0c;我们将深入解析邮件打开率、网站可用性、页面参与时…...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中&#xff0c;提示一个依赖外部头文件的cpp源文件需要同步&#xff0c;点…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用

文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么&#xff1f;1.1.2 感知机的工作原理 1.2 感知机的简单应用&#xff1a;基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...

使用LangGraph和LangSmith构建多智能体人工智能系统

现在&#xff0c;通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战&#xff0c;比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...

【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制

使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下&#xff0c;限制某个 IP 的访问频率是非常重要的&#xff0c;可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案&#xff0c;使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...