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

高速PCB设计指南3——PCB 传输线和受控阻抗

高速PCB设计指南3——PCB 传输线和受控阻抗

  • 1. 传输线
    • 1.1 传输线的定义
    • 1.2 传输线的分类
    • 1.3 互为传输线的情况
  • 2. 均匀传输线的特性阻抗
  • 3. PCB中受控阻抗结构
    • 3.1 微带线(Microstrip)
    • 3.2 带状线(Stripline)
  • 4 阻抗控制方法
  • 5. 阻抗控制线的设计与制造
    • 5.1 确定需要控制阻抗的信号
      • 5.1.1 要求控制阻抗的通信协议
      • 5.1.2 阻抗控制需要在原理图中标注
    • 5.2 差分对布线
    • 5.3 放置元件、过孔和耦合电容
    • 5.4 长度匹配
    • 5.5 受控阻抗信号返回路径的参考层
    • 5.6 设计受控阻抗时应该避免的误差
      • 5.6.1 区分受控阻抗走线和其他走线
      • 5.6.2 走线越过分割平面
      • 5.6.3 没有参考接地层的走线
    • 5.7 受控阻抗设计核查表
    • 5.8 避免在受控阻抗叠层中的常见错误
    • 5.9 制造公差、误差值和试样
      • 5.9.1 如何处理受控阻抗
      • 5.9.2 制造期间的阻抗失效分析

上一期我们简单的介绍高速PCB中的信号完整性问题,这一期我们介绍PCB传输线和受控阻抗

1. 传输线

  • 通过控制 PCB 上走线的特性阻抗,可以将信号失真降低到可接受的水平。这种具有通常为 50欧姆单端和 100 欧姆差分阻抗的受控走线充当传输线。
  • 传输线保持从源到负载的所选阻抗 Z0。此外,与其他互连不同,无论走线运行多长时间,它们都不会产生谐振。
  • 通过控制材料、走线尺寸以及在源头和/或负载处提供精确的端接电阻,可以很容易地在 PCB上制作传输线。

1.1 传输线的定义

  • PCB 传输线是一种互连方式,用于将信号从发射器移动到印刷电路板上的接收器。PCB 传输线由两根导体组成:信号走线和返回路径,通常是接地层。两个导体之间的体积由 PCB 介电材料组成。

  • 在传输线中运行的交流电通常具有足够高的频率,以体现其波的传播性质。电信号在传输线上传播的波的关键方面是:**线路沿其长度的每个点都有一个阻抗,如果沿长度的线路几何形状相同,则线路阻抗是均匀的,我们称这样的线路为受控阻抗线路。**不均匀的阻抗会导致信号反射和失真。这意味着在高频下,传输线需要具有受控阻抗来预测信号的行为。

  • 至关重要的是,不要忽视传输线效应,以避免信号反射、串扰、电磁噪声和其他可能严重影响信号质量并导致错误的问题。

1.2 传输线的分类

传输线可以分为微带线、带状线、差分线和同轴线四种,其中前三种是在PCB上的传输线,同轴线则是作为PCB与器件连接的一种传输线。

  1. 微带线(Microstrip)

微带传输线是位于PCB外层的单个均匀信号走线,平行于导电地平面,地平面为信号提供返回路径,走线与接地层之间由一定高度的PC电介质隔开。常指那些走在PCB顶层和底层的信号线
在这里插入图片描述

  1. 带状线(Microstrip)

带状线由位于 PCB 内层的均匀走线-用于信号-组成。走线的每一侧由一个平行的 PCB 介电层和一个导电平面隔开。所以它有两个返回路径–参考平面 1 和参考平面 2。

在这里插入图片描述

除了常规的微带线和带状线外,还有一个共面波导(coplanar waveguide)

共面波导(coplanar waveguide)结构在 PCB 的同一层上具有信号走线和返回路径导体。信号走线位于中心,被两个相邻的外部接地层包围;之所以称为“共面”,是因为这三个平面结构位于同一平面上。

PCB 电介质位于下方。微带线和带状线都可能具有共面结构。下面是一个带有接地层的共面微带波导图例。

在这里插入图片描述

  1. 差分线(Differential Line)

差分线由一对相对的信号走线组成,通常用于差分信号传输,两条走线之间相互参考,有助于减少噪声干扰。
在这里插入图片描述

  1. 同轴线(Differential Line)

同轴线呈圆形,不是 PCB 传输线。该圆形电缆由用于信号的中心导线和用于返回路径的外部圆形导体组成。两个导体之间的空间由介电材料填充。外导体线完全包围信号线。

同轴线主要用作高频应用的电缆,例如电视等。同轴电缆必须具有统一的导体几何形状,并且介电材料的特性必须沿整个几何形状保持一致。

PCB 传输线不仅由信号走线组成,还由返回路径组成,返回路径通常是相邻的接地层或共面导体,或两者的组合。

在这里插入图片描述

1.3 互为传输线的情况

如果与信号中高频分量波长四分之一的时间段相比无法忽略信号从源传输到目的地所需的时间,那么这样用于连接信号源和目的地之间的信号的一组电导体(如上所述,至少需要两个导体:一个用于信号,另一个用于返回路径,通常是接地平面)称为传输线(而不仅仅是互连)。传输线的两个非常重要的属性是其特性阻抗和每单位长度的传播延迟:如果阻抗没有沿其整个长度进行控制,或者线路没有由正确的阻抗值终止,则会发生信号反射、串扰、电磁噪声等,并且信号质量的下降可能严重到足以在发送和接收的信息中产生错误。

当信号频率(模拟信号)或数据传输速率(数字信号)较低(小于 50MHz 或 20Mbps)时,信号从 PCB 上的源传输到目标所需的时间将非常短(<10%),与波长的四分之一时间段或数字脉冲信号的最快上升时间相比。在这种情况下,可以通过假设目标的信号同时跟随其源的信号来近似互连。在这种低速情况下,PCB 信号可以通过传统的网络分析技术进行分析,我们可以忽略任何信号传播时间或传输线反射等。

当处理更高频率或更高数据传输速率的信号时,与波长的四分之一或最快脉冲上升时间相比,信号在源和目标之间的 PCB 导体上的传播时间不能被忽视。因此,无法使用普通网络分析技术分析 PCB 互连上此类高速信号的行为。需要将互连视为传输线并相应地进行分析。阻抗的计算在受控阻抗部分中讨论。

总结下来就是:如果一个信号的传播延迟接近或等于四分之一波长,那么那这个信号的走线就可以认为是传输线

关于传播延迟和四分之一波长的关系,两种为什么可以用来做对比的问题

虽然传输时间和波长的单位不同(秒与米),但我们可以通过传播速度
v来将这两者联系起来:

在这里插入图片描述
但是由于公式中这个v指的是信号传播的速度,一般很快,通常接近于光速,跟PCB的材料有关,是无法改变的,所以一般会把传播延迟和四分之一的波长进行比较,来判断是否需要作为传输线。

2. 均匀传输线的特性阻抗

均匀传输线中特性阻抗与V(x)和 I(x)之间的关系如下:
在这里插入图片描述

表示的是位置x处的阻抗,Z 的单位是欧姆。参数 R、L、G 和 C 取决于形成传输线的相关 PCB 导体的几何形状(形状、宽度等)以及 PCB 中使用的导体和介电材料的特性。

如果假设材料和几何特性沿传输线长度是均匀的,并且 PCB 材料被认为是均匀的,则 R、L、G 和 C 在沿传输线长度的每个位置具有相同的值。这意味着上述阻抗对于沿传输线的所有 x 值都具有相同的值。这种传输线称为均匀传输线,其阻抗为:
在这里插入图片描述

这是均匀传输线的特性阻抗,从信号完整性的角度来看,这是其最重要的特性。在 PCB 行业,我们通常将特性阻抗简称为传输线的“阻抗”。如果 PCB 制造过程使我们能够在指定的公差范围内控制 PCB 传输线的几何形状,那么我们可以在所需值的指定公差范围内获得 PCB 传输线沿其长度的每个位置的阻抗值。这样,PCB 传输线具有受控阻抗,称为受控阻抗 PCB。

如果从左侧的任意一点看一条特性阻抗为 Z0 的无限传输线,我们可以看到 Z0 的阻抗。因此,如果取一条阻抗为 Z0 的有限长度传输线,并在右侧终止其值为 Z0 的阻抗,如果从左侧看有限传输线,从阻抗的角度来看,它将表现为阻抗 Z0 的无限传输:

在这里插入图片描述

3. PCB中受控阻抗结构

PCB 设计日新月异,变得越来越小、越来越快。为了电路的正常运行,元件之间的信号必须无噪声且无失真。这可以通过控制走线的阻抗来实现。

受控阻抗是由 PCB 导体构成的传输线的特性阻抗 。当高频信号通过 PCB 传输线传播时,它很重要。需要控制 PCB 走线的阻抗才能传播信号而不会失真。特定电路的阻抗由该电路的物理尺寸和材料决定。

以下是一些使用最广泛的需要控制阻抗的 PCB 传输线:

3.1 微带线(Microstrip)

  1. 单端微带线(Single-Ended Microstrip)

单端微带线是由单个均匀导体组成的传输线放置在 PCB 的外层。在此线路上传输的信号的返回路径通常由与传输线隔开的导电平面提供 PCB 电介质的一定高度。

在这里插入图片描述

  • H = 走线和平之间的电介质高度,以 mil 为单位指定
  • W = 铜走线的宽度,以 mil 为单位指定
  • T = 铜走线的厚度,以 mil 为单位
  • Er = 走线和平面之间电介质的介电常数
  1. 微带线差分对(Microstrips Differential Pair)

微带线差分对类似于单端微带线,不同之处在于它有一对导体,它们之间由均匀的距离隔开。

在这里插入图片描述

  • H = 走线和平面之间的电介质高度,以 mil 为单位指定
  • W = 铜走线的宽度,以 mil 为单位指定
  • T = 铜走线的厚度,以 mil 为单位
  • Er = 走线和平面之间电介质的介电常数
  • S = 差分对两条走线之间的间隔

3.2 带状线(Stripline)

  1. 单端带状线(Single-Ended Stripline)

单端带状线由 PCB 内层上的均匀导体组成。它的每一侧由一个介电层隔开,然后是铜层。

在这里插入图片描述

  • H = 走线和平面之间的电介质高度,以 mil 为单位指定
  • W = 铜走线的宽度,以 mil 为单位指定
  • T = 铜走线的厚度,以 mil 为单位
  • Er = 走线和平面之间电介质的介电常数
  1. 带状线差分对(Striplines Differential Pair)

带状线差分对类似于单端带状线,不同之处在于它有一对导体,它们之间由均匀的距离隔开。

在这里插入图片描述

  • H = 走线和平面之间的电介质高度,以 mil 为单位指定
  • W = 铜走线的宽度,以 mil 为单位指定
  • T = 铜走线的厚度,以 mil 为单位
  • Er = 走线和平面之间电介质的介电常数
  • S = 差分对两条走线之间的间隔

4 阻抗控制方法

影响阻抗的原因是 PCB 材料的电介质、走线厚度、宽度和距接地平面的高度。

设计人员应确保制造商有能力提供正确的模式大小、位置和公差。如果这些参数没有达到,电路板可能会变得毫无用处。

  1. 受控介电厚度(Controlled dielectric thickness)

设计人员向制造商提供受控的电介质叠层。由于此处未指定阻抗走线,因此制造重点完全是构建电路板,该板的公差范围为指定电介质厚度的+/-10%公差范围内。

  1. 阻抗控制(Impedance control)

这里阻抗通过介电厚度、走线宽度和间距来控制。制造商执行测试以确保可以使用 TD(Time domain reflectometry)试样实现所需的阻抗。为了满足设计人员的需求,根据第一批产品的结果进行一些调整,并且电路板是在规定的公差范围内制造的。最终阻抗的典型公差为+/-10%。

5. 阻抗控制线的设计与制造

5.1 确定需要控制阻抗的信号

在设计电路板时,设计人员应遵守严格的阻抗控制准则。他们应该研究集成电路的数据表,以确定需要控制阻抗的特定信号。元件的数据表为每组信号的阻抗值提供了精确的说明。通常数据表会提到间隔规则和要布特定信号的正确层

5.1.1 要求控制阻抗的通信协议

下面是一些常见的需要控制阻抗的通信协议:

在这里插入图片描述

5.1.2 阻抗控制需要在原理图中标注

在电路原理图中,工程师应指定受控阻抗信号,网络应分为差分对(100Ω、90Ω 或 85Ω)或单端网络(40Ω、50Ω、55Ω、60Ω 或 75Ω)。为了更清楚,设计人员可以在原理图中 差分对信号的网络名称后附加 N 或 P。

此外,必须在原理图或专用的“自述文件”文件中指定(如果有)特殊的受控阻抗布局指南。

在这里插入图片描述

5.2 差分对布线

高速差分对信号走线应彼此平行布线,并且它们之间的间距一致。需要特定的走线宽度和间距来计算特定的差分阻抗。差分对应对称布线。设计人员应尽量减少由于焊盘或端部而扩大指定间距的区域。当差分对改变层并因此改变参考接地层时,需要接地过渡过孔来连接两个不同的接地参考。

  • 对称地布差分对,并始终保持信号平行

在这里插入图片描述

5.3 放置元件、过孔和耦合电容

元件或过孔不应放置在差分对之间,即使信号围绕它们对称布线。差分对信号之间的元件和过孔会导致阻抗不连续,并可能导致信号完整性问题。对于高速信号,一个差分对和相邻差分对之间的间距不应小于走线宽度的五倍。设计人员还应保持对任何其他信号的 30mils 的禁止性。对于时钟或周期性信号,禁布区域应增加到 50 mils 以确保正确隔离。

  • 不要在差分对之间放置任何元件或过孔。

在这里插入图片描述

如果高速差分对需要串联耦合电容器,则需要对称放置。电容器会产生阻抗不连续性,因此对称放置它们将减少信号中的不连续性。

  • 对称放置耦合电容器

在这里插入图片描述

设计人员应尽量减少对差分对的过孔的使用,如果放置,它们需要对称以尽量减少不连续性。

  • 不要在平面和 PCB 边界处布线高速信号

在这里插入图片描述

5.4 长度匹配

  • 电路中信号的传播延迟很重要,它应该在元件的规格范围内。**传播延迟取决于走线的物理特性:如果走线的宽度、粗细和高度在整个走线中相同,则传播延迟与走线的长度成正比。**因此,在差分对中,如果延迟必须相同,则它们的长度也应相同/匹配。

  • 如果各种走线上的信号速度相同,则长度匹配将实现传播延时匹配。当一组高速信号一起传播并预期同时到达目的地(在指定的失配公差范围内)时,可能需要长度匹配。请注意,最好将同一组信号的所有高速信号保持在同一层上,以避免传播延迟的偏移。

  • 形成差分对的走线长度需要非常紧密地匹配,否则会导致不可接受的延迟偏移(正信号和负信号之间的不匹配),并且走线的传播延迟应在设计要求范围内。长度不匹配需要通过在较短的走线中使用蛇形走线(serpentine)来补偿。需要仔细选择蛇形走线的几何形状,以减少阻抗不连续性。

下图显示了理想蛇形走线的要求。匹配差分对的蚀刻长度并尽可能靠近不匹配的端添加蛇形布线非常重要。在下图中,蛇形走线被添加到左侧的焊盘附近,因为它们彼此之间的距离较远,因此不匹配。

在这里插入图片描述
蛇形走线应尽可能靠近失配源。这可确保立即更正失配。在下图中,失配发生在左侧的一组过孔上,因此需要在左侧而不是右侧添加蛇形。同样,弯曲会导致不匹配,使内弯曲上的走线小于外走线。因此,我们需要在靠近弯曲区域的地方添加蛇形走线。如果一对有两个弯曲小于15 毫米的弯曲,它们会相互补偿,因此不需要添加蛇形。

  • 为不匹配点添加长度校正

在这里插入图片描述

  • 将长度补偿放置在靠近弯曲的位置

在这里插入图片描述
当差分对信号使用过孔从一层变为另一层并发生弯曲时,差分对的每个段都需要单独匹配。蛇形走线应放置在弯曲附近的较短走线上。设计人员必须手动检查此类违规行为,因为它不会被设计规则检查(DRC)捕获,因为总信号的长度将紧密匹配。由于不同层上走线的信号速度可能不同,因此如果差分对信号需要长度匹配,建议在同一层上布线。

  • 每个部分的长度差异都需要补偿
    在这里插入图片描述

5.5 受控阻抗信号返回路径的参考层

所有高速信号都需要一个连续的参考平面作为信号的返回路径。不正确的信号返回路径是噪声耦合和 EMI 问题的最常见来源之一。高速信号的返回电流试图紧密跟随信号路径,而低速信号的返回电流则采用可用的最短路径。通常,高速信号的返回路径在最靠近信号层的参考平面中提供。

高速信号不应在跨层布线,因为返回路径将无法跟随走线。设计人员应围绕分割平面布线,以获得更好的信号完整性。此外,每侧的接地层必须至少是走线宽度(3W 规则)的三倍。

  • 避免在分割平面上布线。

在这里插入图片描述
**如果绝对没有其他选择,并且信号需要在两个不同的参考平面上布线,则需要在两个参考平面之间使用旁路电容。**电容器需要连接到两个参考平面,并应放置在靠近信号路径的位置,以保持信号和返回路径之间的距离较小。该电容器允许返回电流从一个参考平面传播到另一个参考平面,并最大限度地减少阻抗不连续性。
缝合电容(stitching capacitor)的应该在 10nF 和100nF 之间。

  • 在分割平面上布线时,需要缝合电容。如果两个参考都接地,则放置在信号下方的两个接地之间的走线桥是比电容更好的选择
    在这里插入图片描述
    PCB 设计人员应避免在信号走线正下方的参考平面中出现分裂平面障碍物和槽。如果插槽是不可避免的,则应使用缝合过孔(stitching vias),以最大程度地减少分离的返回路径造成的问题。电容器的两个引脚都应连接到接地层,并应放置在靠近信号的位置。

  • 在平面上布线时需要的缝合电容器会阻碍。

在这里插入图片描述
当过孔放置在一起时,它们会在参考平面中创建空心。为了最大限度地减少这些大空洞,设计人员应错开过孔,以便在过孔之间允许平面有足够的馈电。交错过孔允许信号具有连续的返回路径。

如果高速差分对或单端信号切换层,设计人员应在靠近层更改过孔的地方添加缝合过孔。这也允许返回电流改变接地层

  • 当信号改变接地参考时放置缝合过孔。最好将接地过孔放在信号过孔之间。
    在这里插入图片描述

5.6 设计受控阻抗时应该避免的误差

5.6.1 区分受控阻抗走线和其他走线

受控阻抗走线的走线宽度必须与其余走线不同。这使得制造商很容易识别它们。

例如,如果需要一条 5mil 的走线来实现 50Ω 的阻抗,并且电路板上有其他走线的宽度为5mil,那么制造商将很难识别受控阻抗的走线。因此,建议将 50Ω 阻抗走线布线为 5.1mil 或4.9mil 宽。

下表显示了一个设计示例,其中不同层的走线宽度和间距用于控制阻抗。对于此特定设计,非阻抗信号走线不应使用 3.5、3.6、4.2、4.25 和 4.3mil 走线宽度布线。

在这里插入图片描述

5.6.2 走线越过分割平面

高速信号必须在稳定的地参考平面上布线。不应在参考平面中的分割平面或空心上布线。跨分割平面布高速信号可能会产生以下问题:

  1. 干扰相邻信号
  2. 信号恶化,从而破坏信号完整性

如果信号必须通过分割平面布线,设计人员可以在分割平面上使用缝合电容。电容器为高频电流提供返回路径,并最大限度地减少电流环路面积以及穿过分割平面产生的任何阻抗不连续性。在下图中,信号围绕平面中的缝隙边缘传送,而不是穿过分割或者缝隙。
在这里插入图片描述

5.6.3 没有参考接地层的走线

设计人员应在顶层或底层对高速信号进行布线。此外,还必须在相邻层上提供完整的接地参考平面。如果没有相邻层,阻抗将相当高。内层可用于电源层和其他信号布线的目的。

5.7 受控阻抗设计核查表

  • 受控阻抗线应在 PCB 原理图中标记
  • 差分对走线长度应与信号上升/下降时间的 20%的公差相匹配
  • 应使用高数据频率连接器
  • 对于带状线结构,在差分对的上方、下方和侧面使用接地或不间断的电源。接地层和电源层提供返回电流路径。这也减少了 EMI 问题

5.8 避免在受控阻抗叠层中的常见错误

  1. 预浸料

通常,建议不要在叠层中使用超过三种不同类型的预浸料。每个预浸料层的介电厚度应小于10 mils,否则会增加最终厚度发生更大变化的机会。应避免使用树脂含量非常低和玻璃含量高的预浸料。树脂含量低可能导致层压过程中树脂不足。例如,7628 和 2116 预浸料具有低树脂和高玻璃含量。

  1. 阻抗走线/间距

差分对中两条走线之间的间距不应超过走线宽度的两倍。例如,4mil 差分走线之间的距离不应大于 8mil 的空间。此外,走线宽度不应超过目标信号层和最近的参考层之间电介质厚度的两倍。

5.9 制造公差、误差值和试样

5.9.1 如何处理受控阻抗

可用的电路阻抗测试设备:

  • Polar CITS
  • Tektronix 8300

如果阻抗测试卡不能正常工作或阻抗测试失败,Sierra Circuits会对电路板进行阻抗测试,以验证产品是否符合规格。由于走线的长度,测试电路板的阻抗是必要的,这取决于电路板的尺寸。内层阻抗走线在成品中的位置也非常关键。

5.9.2 制造期间的阻抗失效分析

失效时,取阻抗试样的横截面(cross-section)以研究从计算的阻抗到记录的阻抗的偏差。制造商的横截面技术人员根据走线位置(内层或外层)测量介电层厚度。此外,走线宽度是从受影响阻抗走线的底部和顶部以及铜厚度或走线高度估算的。
当它是差分对时,测量两条走线之间的间距,以了解投影阻抗是否与记录的阻抗对齐。
下图描述了单端阻抗走线上的横截面评估细节。

  • A – 从顶部开始的走线宽度
  • B – 铜厚度或走线高度
  • C – Trace Width from Bottom
  • D – 第 2 层和第 3 层之间的介电厚度(走线)
  • E – 第 3 层(走线)和第 4 层之间的介电厚度

在这里插入图片描述
为了确定电路板的可接受性,需要进行测试测试试样,以确保走线宽度或走线厚度没有变化。

相关文章:

高速PCB设计指南3——PCB 传输线和受控阻抗

高速PCB设计指南3——PCB 传输线和受控阻抗 1. 传输线1.1 传输线的定义1.2 传输线的分类1.3 互为传输线的情况 2. 均匀传输线的特性阻抗3. PCB中受控阻抗结构3.1 微带线&#xff08;Microstrip&#xff09;3.2 带状线&#xff08;Stripline&#xff09; 4 阻抗控制方法5. 阻抗控…...

python实现一个完整的智能教室能耗监测与管理系统的实现方案

以下是一个完整的智能教室能耗监测与管理系统的实现方案&#xff0c;主要使用Python语言&#xff0c;涵盖深度学习模型研发、教室场景适应性分析、系统架构设计、前端展示、后端服务以及测试评估等方面。 1. 数据准备 首先&#xff0c;需要收集教室的照片数据集&#xff0c;并…...

【新春特辑】2025年春节技术展望:蛇年里的科技创新与趋势预测

&#x1f525;【新春特辑】2025年春节技术展望&#xff1a;蛇年里的科技创新与趋势预测 &#x1f4c5; 发布日期&#xff1a;2025年01月29日&#xff08;大年初一&#xff09; 在这个辞旧迎新的美好时刻&#xff0c;我们迎来了充满希望的2025年&#xff0c;也是十二生肖中的蛇…...

woocommerce独立站与wordpress独立站的最大区别是什么

WooCommerce独立站与WordPress独立站的最大区别在于它们的功能定位和使用场景。 WordPress是一个开源的内容管理系统(CMS)&#xff0c;最初是作为博客平台发展起来的&#xff0c;但现在已经演变为一个功能丰富的网站构建工具。它主要用于创建动态网站&#xff0c;提供广泛的定…...

docker安装MySQL8:docker离线安装MySQL、docker在线安装MySQL、MySQL镜像下载、MySQL配置、MySQL命令

一、镜像下载 1、在线下载 在一台能连外网的linux上执行docker镜像拉取命令 docker pull mysql:8.0.41 2、离线包下载 两种方式&#xff1a; 方式一&#xff1a; -&#xff09;在一台能连外网的linux上安装docker执行第一步的命令下载镜像 -&#xff09;导出 # 导出镜…...

PTA乙级1006~1010【c++】

1006 换个格式输出整数 #include <iostream> using namespace std;int main(){int n;cin >> n;int b n / 100;int s n / 10 % 10;int g n % 10;for (int i 0; i < b; i ) cout << B;for (int i 0; i < s; i ) cout << S;for (int i 0; …...

一文掌握ADB的安装及使用

文章目录 一、什么是ADB&#xff1f;二、 安装ADB2.1 下载ADB2.2 配置环境变量 三、连接Android设备四、 常用ADB命令五、ADB高级功能5.1 屏幕截图和录制5.2 模拟按键输入5.3 文件管理5.4 系统设置管理5.5 系统操作指令5.6 日志操作指令5.7 APK操作指令5.8 设备重启和恢复 六、…...

ThinkPad E480安装Ubuntu 18.04无线网卡驱动

个人博客地址&#xff1a;ThinkPad E480安装Ubuntu 18.04无线网卡驱动 | 一张假钞的真实世界 遗憾的是虽然下面的方法可以解决&#xff0c;但是内核升级后需要重新安装。 基本信息 Ubuntu 18.04ThinkPad E480使用下面的命令查看 Linux 内核&#xff1a; $ uname -r 5.0.0-3…...

QT+mysql+python 效果:

# This Python file uses the following encoding: utf-8 import sysfrom PySide6.QtWidgets import QApplication, QWidget,QMessageBox from PySide6.QtGui import QStandardItemModel, QStandardItem # 导入需要的类# Important: # 你需要通过以下指令把 form.ui转为ui…...

关于 SR-IOV 架构论文的总结文章

关于 SR-IOV 架构论文的总结文章 在计算机虚拟化技术不断发展的进程中,SR - IOV 架构凭借其在提升 I/O 性能、优化资源利用等方面的优势,成为众多研究关注的焦点。通过对 4 篇相关论文的研读,我们可以从多个维度深入了解 SR - IOV 架构的核心要点。 一、SR - IOV 架构的原…...

MyBatis最佳实践:提升数据库交互效率的秘密武器

第一章&#xff1a;框架的概述&#xff1a; MyBatis 框架的概述&#xff1a; MyBatis 是一个优秀的基于 Java 的持久框架&#xff0c;内部对 JDBC 做了封装&#xff0c;使开发者只需要关注 SQL 语句&#xff0c;而不关注 JDBC 的代码&#xff0c;使开发变得更加的简单MyBatis 通…...

cursor ide配置远程ssh qt c++开发环境过程记录

cursor是啥就不介绍了&#xff0c;好像是目前最好用的ai ide&#xff0c;下面主要是配置远程ssh连接linux机器进行qt5 c程序运行的配置过程记录。 一、c_cpp_properties.json 在项目根目录的.vscode目录里面新建c_cpp_properties.json文件&#xff0c;根据你的实际情况配置该文…...

萌新学 Python 之数值处理函数 round 四舍五入、abs 绝对值、pow 幂次方、divmod 元组商和余数

关于数值处理的常用函数&#xff1a;round、abs、pow、divmod 1. round(数值[,小数位]) 四舍五入 说明&#xff1a;对数值进行四舍五入&#xff0c;小数位可以没有&#xff0c;也可以是负数&#xff08;从小数点左边开始进行&#xff09; round(数值[,小数位]) 四舍五入 #…...

vim交换文件的作用

1.数据恢复&#xff1a;因为vim异常的退出&#xff0c;使用交换文件可以恢复之前的修改内容。 2.防止多人同时编辑&#xff1a;vim检测到交换文件的存在,会给出提示&#xff0c;以避免一个文件同时被多人编辑。 &#xff08;vim交换文件的工作原理&#xff1a;vim交换文件的工作…...

NoSQL与SQL比较

1.认识NoSQL NoSql可以翻译做Not Only Sql&#xff08;不仅仅是SQL&#xff09;&#xff0c;或者是No Sql&#xff08;非Sql的&#xff09;数据库。是相对于传统关系型数据库而言&#xff0c;有很大差异的一种特殊的数据库&#xff0c;因此也称之为非关系型数据库。 1.1.结构…...

ThinkPHP 8模型与数据的插入、更新、删除

【图书介绍】《ThinkPHP 8高效构建Web应用》-CSDN博客 《2025新书 ThinkPHP 8高效构建Web应用 编程与应用开发丛书 夏磊 清华大学出版社教材书籍 9787302678236 ThinkPHP 8高效构建Web应用》【摘要 书评 试读】- 京东图书 使用VS Code开发ThinkPHP项目-CSDN博客 编程与应用开…...

Ollama windows安装

Ollama 是一个开源项目&#xff0c;专注于帮助用户本地化运行大型语言模型&#xff08;LLMs&#xff09;。它提供了一个简单易用的框架&#xff0c;让开发者和个人用户能够在自己的设备上部署和运行 LLMs&#xff0c;而无需依赖云服务或外部 API。这对于需要数据隐私、离线使用…...

【PyTorch】4.张量拼接操作

个人主页&#xff1a;Icomi 在深度学习蓬勃发展的当下&#xff0c;PyTorch 是不可或缺的工具。它作为强大的深度学习框架&#xff0c;为构建和训练神经网络提供了高效且灵活的平台。神经网络作为人工智能的核心技术&#xff0c;能够处理复杂的数据模式。通过 PyTorch&#xff0…...

准备知识——旋转机械的频率和振动基础

旋转频率&#xff0c;也称为转速或旋转速率&#xff08;符号ν&#xff0c;小写希腊字母nu&#xff0c;也作n&#xff09;&#xff0c;是物体绕轴旋转的频率。其国际单位制单位是秒的倒数(s −1 )&#xff1b;其他常见测量单位包括赫兹(Hz)、每秒周期数(cps) 和每分钟转数(rpm)…...

STM32调试手段:重定向printf串口

引言 C语言中经常使用printf来输出调试信息&#xff0c;打印到屏幕。由于在单片机中没有屏幕&#xff0c;但是我们可以重定向printf&#xff0c;把数据打印到串口&#xff0c;从而在电脑端接收调试信息。这是除了debug外&#xff0c;另外一个非常有效的调试手段。 一、什么是pr…...

spring mvc 创建restapi 笔记

RestController RequestMapping("/spittles") public class SpittleController {// 示例&#xff1a;使用 RequestBody 接收 JSON 并自动转换为 Spittle 对象PostMappingpublic Spittle saveSpittle(RequestBody Spittle spittle) {// 此时 Spring 已经把请求体中的 …...

【C++】特殊类设计

目录 一、请设计一个类&#xff0c;不能被拷贝二、请设计一个类&#xff0c;只能在堆上创建对象三、请设计一个类&#xff0c;只能在栈上创建对象四、请设计一个类&#xff0c;不能被继承五、请设计一个类&#xff0c;只能创建一个对象(单例模式)5.1 饿汉模式5.2 懒汉模式 结尾…...

Java---入门基础篇(上)

前言 本片文章主要讲了刚学Java的一些基础内容,例如注释,标识符,数据类型和变量,运算符,还有逻辑控制等,记录的很详细,带你从简单的知识点再到练习题.如果学习了c语言的小伙伴会发现,这篇文章的内容和c语言大致相同. 而在下一篇文章里,我会讲解方法和数组的使用,也是Java中基础…...

Redis 消息队列详解

Redis 消息队列详解 Redis 作为一个高性能的内存数据库&#xff0c;支持多种实现消息队列的方式&#xff0c;主要包括&#xff1a; Redis List&#xff08;基于列表的队列&#xff09;Redis Pub/Sub&#xff08;发布/订阅&#xff09;Redis Stream&#xff08;消息流&#xf…...

C语言编译过程全面解析

今天是2025年1月26日&#xff0c;农历腊月二十七&#xff0c;一个距离新春佳节仅一步之遥的日子。城市的喧嚣中&#xff0c;年味已悄然弥漫——能在这个时候坚持上班的人&#xff0c;真可称为“牛人”了吧&#xff0c;哈哈。。。。 此刻&#xff0c;我在重新审视那些曾被遗忘的…...

萌新学 Python 之运算符

Python 中运算符包括&#xff1a;算术运算符、比较运算符、逻辑运算符、赋值运算符、位运算符、海象运算符 算术运算符&#xff1a;加 减 - 乘 * 除 / 取整 // 求余 % 求幂 ** 注意&#xff1a;取整时&#xff0c;一正一负整除&#xff0c;向下取整 比如 5 // …...

【开源免费】基于Vue和SpringBoot的在线文档管理系统(附论文)

本文项目编号 T 038 &#xff0c;文末自助获取源码 \color{red}{T038&#xff0c;文末自助获取源码} T038&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…...

四.4 Redis 五大数据类型/结构的详细说明/详细使用( zset 有序集合数据类型详解和使用)

四.4 Redis 五大数据类型/结构的详细说明/详细使用&#xff08; zset 有序集合数据类型详解和使用&#xff09; 文章目录 四.4 Redis 五大数据类型/结构的详细说明/详细使用&#xff08; zset 有序集合数据类型详解和使用&#xff09;1. 有序集合 Zset(sorted set)2. zset 有序…...

Linux 信号驱动IO

Linux 信号驱动IO 1. fcntl() 在Linux操作系统中&#xff0c;fcntl() 是一个用于操作文件描述符的系统调用。它提供了多种功能&#xff0c;包括控制文件描述符的属性、管理文件锁定、设置文件的非阻塞模式等。 本文只截取了用于IO模型的 fcntl() 部分内容&#xff0c; fcntl(…...

OpenCV:开运算

目录 1. 简述 2. 用腐蚀和膨胀实现开运算 2.1 代码示例 2.2 运行结果 3. 开运算接口 3.1 参数详解 3.2 代码示例 3.3 运行结果 4. 开运算应用场景 5. 注意事项 6. 总结 相关阅读 OpenCV&#xff1a;图像的腐蚀与膨胀-CSDN博客 OpenCV&#xff1a;闭运算-CSDN博客 …...

宝塔mysql数据库容量限制_宝塔数据库mysql-bin.000001占用磁盘空间过大

磁盘空间占用过多&#xff0c;排查后发现网站/www/wwwroot只占用7G&#xff0c;/www/server占用却高达8G&#xff0c;再深入排查发现/www/server/data目录下的mysql-bin.000001和mysql-bin.000002两个日志文件占去了1.5G空间。 百度后学到以下知识&#xff0c;做个记录。 mysql…...

使用 Iptables 实现网络安全策略:从入门到精通

使用 Iptables 实现网络安全策略:从入门到精通 在运维工作中,网络安全是重中之重,而 iptables 作为 Linux 内核自带的防火墙工具,提供了强大的流量控制能力。通过合理的 iptables 规则,我们可以有效防止未经授权的访问,保护服务器免受攻击。今天,我们就来深入探讨如何使…...

AI作画提示词:Prompts工程技巧与最佳实践

成长路上不孤单&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a; 【14后&#x1f60a;///计算机爱好者&#x1f60a;///持续分享所学&#x1f60a;///如有需要欢迎收藏转发///&#x1f60a;】 今日分享关于物联网智能项目之——智能家居项目…...

vue框架技术相关概述以及前端框架整合

vue框架技术概述及前端框架整合 1 node.js 介绍&#xff1a;什么是node.js Node.js就是运行在服务端的JavaScript。 Node.js是一个事件驱动I/O服务端JavaScript环境&#xff0c;基于Google的V8引擎。 作用 1 运行java需要安装JDK&#xff0c;而Node.js是JavaScript的运行环…...

并发编程 - 线程同步(二)

经过前面对线程同步初步了解&#xff0c;相信大家对线程同步已经有了整体概念&#xff0c;今天我们就来一起看看线程同步的具体方案。 01、ThreadStatic 严格意义上来说这两个并不是实现线程同步方案&#xff0c;而是解决多线程资源安全问题&#xff0c;而我们研究线程同步最终…...

仿知乎网站问答源码,开源版

按照需要一定动手能力 发文章&#xff0c;发视频&#xff0c;发想法&#xff0c;提问回答&#xff0c;注册登录 开发环境 使用技术&#xff1a;springbootthymeleafRedis&#xff1b; 开发环境&#xff1a;tomcat8.0&#xff0c;jdk8.0, IDEA项目&#xff0c;mysql5.7 源码下…...

CTF-web: phar反序列化+数据库伪造 [DASCTF2024最后一战 strange_php]

step 1 如何触发反序列化? 漏洞入口在 welcome.php case delete: // 获取删除留言的路径&#xff0c;优先使用 POST 请求中的路径&#xff0c;否则使用会话中的路径 $message $_POST[message_path] ? $_POST[message_path] : $_SESSION[message_path]; $msg $userMes…...

阿里:基于路由和规划的多agent系统

&#x1f4d6;标题&#xff1a;Talk to Right Specialists: Routing and Planning in Multi-agent System for Question Answering &#x1f310;来源&#xff1a;arXiv, 2501.07813 &#x1f31f;摘要 &#x1f538;利用大型语言模型&#xff08;LLM&#xff09;&#xff0c…...

Java基础面试题总结(题目来源JavaGuide)

问题1&#xff1a;Java 中有哪 8 种基本数据类型&#xff1f;它们的默认值和占用的空间大小知道不&#xff1f; 说说这 8 种基本数据类型对 应的包装类型。 在 Java 中&#xff0c;有 8 种基本数据类型&#xff08;Primitive Types&#xff09;&#xff1a; 基本数据类型关键…...

CSS(快速入门)

欢迎大家来到我的博客~欢迎大家对我的博客提出指导&#xff0c;有错误的地方会改进的哦~点击这里了解更多内容 目录 一、什么是CSS?二、基本语法规范三、CSS选择器3.1 标签选择器3.2 id选择器3.3 class选择器3.4 通配符选择器3.5 复合选择器 四、常用CSS样式4.1 color4.2 font…...

架构技能(六):软件设计(下)

我们知道&#xff0c;软件设计包括软件的整体架构设计和模块的详细设计。 在上一篇文章&#xff08;见 《架构技能&#xff08;五&#xff09;&#xff1a;软件设计&#xff08;上&#xff09;》&#xff09;谈了软件的整体架构设计&#xff0c;今天聊一下模块的详细设计。 模…...

2. Java-MarkDown文件解析-工具类

2. Java-MarkDown文件解析-工具类 1. 思路 读取markdown文件的内容&#xff0c;根据markdown的语法进行各个类型语法的解析。引入工具类 commonmark 和 commonmark-ext-gfm-tables进行markdown语法解析。 2. 工具类 pom.xml <!-- commonmark 解析markdown --> <d…...

OpenEuler学习笔记(十五):在OpenEuler上搭建Java运行环境

一、在OpenEuler上搭建Java运行环境 在OpenEuler上搭建Java运行环境可以通过以下几种常见方式&#xff0c;下面分别介绍基于包管理器安装OpenJDK和手动安装Oracle JDK的步骤。 使用包管理器安装OpenJDK OpenJDK是Java开发工具包的开源实现&#xff0c;在OpenEuler上可以方便…...

【Rust自学】15.4. Drop trait:告别手动清理,释放即安全

喜欢的话别忘了点赞、收藏加关注哦&#xff08;加关注即可阅读全文&#xff09;&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 15.4.1. Drop trait的意义 类型如果实现了Drop trait&#xff0c;就可以让程序员自定义当值…...

深入探讨Web应用开发:从前端到后端的全栈实践

在数字化时代&#xff0c;Web应用已成为连接用户与服务的关键桥梁。无论是电商平台、社交媒体&#xff0c;还是企业内部管理系统&#xff0c;Web应用都扮演着不可或缺的角色。本文将深入探讨Web应用开发的全栈实践&#xff0c;从前端的用户体验设计到后端的数据处理与存储&…...

4.贪心算法

贪心 贪心算法&#xff08;Greedy Algorithms&#xff09;是 C 等编程语言中常用的一种算法策略。 定义 贪心算法是指在对问题求解时&#xff0c;总是做出在当前看来是最好的选择。也就是说&#xff0c;不从整体最优上加以考虑&#xff0c;算法得到的是在某种意义上的局部最…...

js笔记(黑马程序员)

&#xff08;Web APIs day4&#xff09; 一、日期对象 1.实例化 在代码中发现了 new 关键字时&#xff0c;一般将这个操作称为实例化 创建一个时间对象并获取时间// 1&#xff0e;得到当前时间 2.日期对象方法 因为日期对象返回的数据我们不能直接使用&#xff0c;所以需…...

LangChain:使用表达式语言优化提示词链

在 LangChain 里&#xff0c;LCEL 即 LangChain Expression Language&#xff08;LangChain 表达式语言&#xff09;&#xff0c;本文为你详细介绍它的定义、作用、优势并举例说明&#xff0c;从简单示例到复杂组合示例&#xff0c;让你快速掌握LCEL表达式语言使用技巧。 定义 …...

Python 有用的资源

Python 有用的资源 引言 Python 作为一种强大的编程语言,因其简洁明了的语法和丰富的库资源,在数据分析、人工智能、网络开发等领域拥有广泛的应用。对于初学者和专业人士来说,掌握一些有用的Python资源可以大大提高编程效率。本文将为您介绍一些实用的Python资源,帮助您…...

汽车蓝牙钥匙定位仿真小程序

此需求来自于粉丝的真实需求,假期没事,牛刀小试。 一、项目背景 如今,智能车钥匙和移动端定位技术已经相当普及。为了探索蓝牙 Beacon 在短距离定位场景下的可行性,我们搭建了一个简易原型:利用 UniApp 在移动端采集蓝牙信标的 RSSI(信号强度),通过三边定位算法估算钥…...