ADS学习笔记(五) 谐波平衡仿真

news2025/5/29 15:02:41

参考书籍:见资源绑定,书籍4.2 谐波平衡仿真

本文为对实验内容的补充

1. 三阶交调点坐标系图分析

image-20250525224305947

我们来分析图1.5中“三阶交调点”坐标系图里的两条直线分别代表什么。

image-20250525224547252

图中有两条向上倾斜的直线:

  1. 斜率较低的那条直线代表:基波输出功率 (Fundamental Output Power) 随输入功率的变化。

    • 在理想的线性小信号工作区,输入功率每增加1dB,基波输出功率也应该增加1dB(假设增益是恒定的)。因此,这条线在对数坐标系(dBm是对数单位)下通常具有斜率1
  2. 斜率较高的那条直线代表:三阶交调产物输出功率 (Third-Order Intermodulation Product Output Power) 随输入功率的变化。

    • 当两个频率相近的信号(双音测试)输入到一个非线性器件时,会产生三阶交调产物。这些产物的频率通常非常接近原始输入信号的频率,因此很难通过滤波去除,是衡量线性度的重要指标。
    • 理论上,对于一个主要由三阶非线性主导的系统,当输入信号功率每增加1dB时,三阶交调产物的输出功率会增加3dB。因此,这条线在对数坐标系下通常具有斜率3
    • 在图中,这条线从更低的位置开始(因为在小信号时,三阶交调产物非常弱),但以更陡峭的斜率向右上方延伸,表示其功率随输入功率的增加而迅速增长。

    基波幅度为 A, 三阶谐波分量的幅度为 A 3 A^3 A3 ,各自取对数运算,所以三阶交调产物输出功率斜率是基波输出功率的三倍

两条直线的交点:

  • 这两条直线的交点在理论上定义了三阶截取点 (Third-Order Intercept Point, IP3)
    • 该交点处的横坐标值被称为输入三阶截取点 (Input Third-Order Intercept Point, IIP3)。它表示一个理论上的输入功率值,在该点,如果基波和三阶交调产物都继续按照其低功率时的斜率增长,它们的输出功率将会相等。
    • 该交点处的纵坐标值被称为输出三阶截取点 (Output Third-Order Intercept Point, OIP3)。它表示当输入功率达到IIP3时,基波(和三阶交调产物)的理论输出功率。

需要注意的重要几点:

  • 理论外推:实际上,放大器在达到IP3点之前通常会进入饱和状态,增益会下降(基波输出功率的直线会弯曲向下),三阶交调产物的增长斜率也可能发生变化。因此,IP3点通常是一个通过测量小信号区域的数据并外推得到的理论点,而不是一个实际可达到的工作点。
  • 衡量线性度:IIP3和OIP3的值越高,通常表示器件的线性度越好,即**它可以在更高的输入功率下工作而不会产生过强的三阶交调失真。**

所以,总结一下:

  • 斜率为1的直线:表示基波输出功率随输入功率的变化。
  • 斜率为3的直线:表示三阶交调产物输出功率随输入功率的变化。

这个图清晰地展示了为什么三阶交调产物对于线性度评估如此重要——它们的功率增长速度远快于基波,最终会限制系统的动态范围。

2. 输出三阶交调点分析控制器使用

image-20250525223610900

ipo1=ip3_out(vout,{1,0},{-1,2},50) 是一个在ADS (Advanced Design System) 等电路仿真软件中常用的谐波平衡分析 (Harmonic Balance) 或电路包络 (Circuit Envelope) 分析后处理函数,用于计算输出三阶截取点 (OIP3)

2.1 函数解读

我们来逐步解读这个函数及其参数的含义:

ip3_out(Vout, Fund_idx, IM_idx, Z0)

  1. ip3_out:

    • 这是函数名称,明确指示它计算的是输出三阶截取点 (Output IP3)。
  2. Vout:

    • 这是第一个参数,代表在仿真结果中需要进行OIP3计算的输出节点电压的名称。在您的例子中,输出节点被命名为 vout
    • 仿真器会从这个节点提取基波和谐波/交调分量的电压或功率信息。
  3. {1,0} (Fund_idx - 基波索引):

    • 这是一个指定基波 (Fundamental) 频率分量的索引。
    • 在谐波平衡分析中,通常会定义多个输入音调 (tones)。这个索引告诉函数哪个频率组合被视为主输出信号(即基波)。
    • {1,0} 的含义
      • 假设您进行了双音测试,输入了两个频率分别为 freq[1] (Tone 1) 和 freq[2] (Tone 2)。
      • 谐波平衡求解器会计算这些输入频率及其线性组合(谐波和交调产物)处的电压和电流。这些频率点可以用一组整数系数 ( m , n ) (m, n) (m,n) 来表示,对应于 m ⋅ freq [ 1 ] + n ⋅ freq [ 2 ] m \cdot \text{freq}[1] + n \cdot \text{freq}[2] mfreq[1]+nfreq[2]
      • {1,0} 通常表示第一个输入音调 ( 1 ⋅ freq [ 1 ] + 0 ⋅ freq [ 2 ] = freq [ 1 ] 1 \cdot \text{freq}[1] + 0 \cdot \text{freq}[2] = \text{freq}[1] 1freq[1]+0freq[2]=freq[1])。这意味着我们关注的是第一个输入音调的输出功率作为基波。
      • 在某些情况下,如果只关心某个单一音调的输出(即使输入了双音以产生交调),这个参数就指定了那个音调。
  4. {-1,2} (IM_idx - 交调产物索引):

    • 这是一个指定我们关心的三阶交调产物 (Third-Order Intermodulation Product, IM3) 的索引。
    • 对于双音输入 f 1 f_1 f1 f 2 f_2 f2,主要的三阶交调产物出现在 2 f 1 − f 2 2f_1 - f_2 2f1f2 2 f 2 − f 1 2f_2 - f_1 2f2f1
    • {-1,2} 的含义
      • 这通常表示频率为 − 1 ⋅ freq [ 1 ] + 2 ⋅ freq [ 2 ] = 2 f 2 − f 1 -1 \cdot \text{freq}[1] + 2 \cdot \text{freq}[2] = 2f_2 - f_1 1freq[1]+2freq[2]=2f2f1 的那个三阶交调产物。
      • 同样,{2,-1} 会表示 2 f 1 − f 2 2f_1 - f_2 2f1f2。通常这两个IM3产物的功率非常接近,选择哪一个进行计算OIP3都可以,但需要保持一致性。
      • 仿真器会提取在这个特定频率组合下的输出功率。
  5. 50 (Z0 - 参考阻抗):

    • 这是最后一个参数,代表系统的参考阻抗,单位是欧姆 (Ohms)。
    • 在射频和微波系统中,这个值通常是 50Ω
    • 这个参数是必需的,因为OIP3通常是以功率单位 (如dBm) 表示的,而仿真器可能直接计算的是电压。为了从电压转换为功率,需要知道参考阻抗 ( P = V 2 / ( 2 ⋅ Z 0 ) P = V^2 / (2 \cdot Z0) P=V2/(2Z0) 对于正弦波的RMS电压,或根据具体定义调整)。

2.2 函数的工作原理概要:

ip3_out 函数会执行以下操作(概念上):

  1. 从仿真结果中提取在 Vout 节点,由 Fund_idx 指定的基波频率的输出功率 ( P f u n d P_{fund} Pfund)。
  2. 从仿真结果中提取在 Vout 节点,由 IM_idx 指定的三阶交调产物频率的输出功率 ( P I M 3 P_{IM3} PIM3)。
  3. 使用这两个功率值以及它们各自的增长斜率(基波功率随输入功率1:1增长,IM3功率随输入功率3:1增长,在dB尺度下)来外推计算OIP3点。
    • 我们知道在OIP3点,理论上基波输出功率等于IM3输出功率。
    • 如果在dBm单位下:
      P f u n d ( d B m ) = P i n ( d B m ) + G a i n ( d B ) P_{fund}(dBm) = P_{in}(dBm) + Gain(dB) Pfund(dBm)=Pin(dBm)+Gain(dB)
      P I M 3 ( d B m ) = 3 ⋅ P i n ( d B m ) + C o n s t a n t I M 3 P_{IM3}(dBm) = 3 \cdot P_{in}(dBm) + Constant_{IM3} PIM3(dBm)=3Pin(dBm)+ConstantIM3 (这里的Constant包含了器件的非线性系数等)
    • OIP3点可以通过找到当 P f u n d P_{fund} Pfund 外推线与 P I M 3 P_{IM3} PIM3 外推线的交点来确定。
    • 一个常用的计算公式(基于功率差):
      O I P 3 ( d B m ) = P f u n d ( d B m ) + P f u n d ( d B m ) − P I M 3 ( d B m ) 2 OIP3 (dBm) = P_{fund} (dBm) + \frac{P_{fund} (dBm) - P_{IM3} (dBm)}{2} OIP3(dBm)=Pfund(dBm)+2Pfund(dBm)PIM3(dBm)
      或者等效地:
      O I P 3 ( d B m ) = P I M 3 ( d B m ) + P f u n d ( d B m ) − P I M 3 ( d B m ) 3 − 1 × 3 = P I M 3 ( d B m ) + 3 2 ( P f u n d ( d B m ) − P I M 3 ( d B m ) ) OIP3 (dBm) = P_{IM3} (dBm) + \frac{P_{fund} (dBm) - P_{IM3} (dBm)}{3-1} \times 3 = P_{IM3} (dBm) + \frac{3}{2} (P_{fund} (dBm) - P_{IM3} (dBm)) OIP3(dBm)=PIM3(dBm)+31Pfund(dBm)PIM3(dBm)×3=PIM3(dBm)+23(Pfund(dBm)PIM3(dBm))
      (注意:上面两个简化公式仅在特定条件下(例如,基波增益为0dB或IM3的定义方式)才完全等效,ADS内部可能有更精确的基于斜率的计算。)
    • ADS软件内部会使用更精确的、基于外推的算法。它会利用已知的功率点和理论斜率来计算交点。

2.3 总结

ipo1=ip3_out(vout,{1,0},{-1,2},50) 这个表达式的含义是:

计算输出节点 vout 处的输出三阶截取点 (OIP3),其中基波被定义为输入音调组合 {1,0} (即第一个输入音调 f 1 f_1 f1) 的输出,而用于计算的三阶交调产物被定义为输入音调组合 {-1,2} (即 2 f 2 − f 1 2f_2 - f_1 2f2f1) 的输出。计算OIP3时使用的系统参考阻抗是50Ω。变量 ipo1 将被赋予计算得到的OIP3值(通常以dBm为单位)。

3.如何计算三阶交调点(OIP3,IIP3)

image-20250525230131320

我们来根据如上所示的频谱图中的标记 (m1, m2, m3, m4) 数据,计算输出三阶截取点 (OIP3)。通常,上边频和下边频的OIP3值会非常接近,我们分别计算一下。

基本数据:

  • 基波音调1 (m1):
    • 频率 ( f 1 f_1 f1) = 2.395 GHz
    • 输出功率 ( P f 1 P_{f1} Pf1) = -19.004 dBm
  • 基波音调2 (m2):
    • 频率 ( f 2 f_2 f2) = 2.405 GHz
    • 输出功率 ( P f 2 P_{f2} Pf2) = -19.028 dBm
  • 下三阶交调产物 (m3, Lower IM3):
    • 频率 ( f I M 3 L f_{IM3L} fIM3L) = 2.385 GHz (即 2 f 1 − f 2 = 2 × 2.395 − 2.405 = 4.790 − 2.405 = 2.385 2f_1 - f_2 = 2 \times 2.395 - 2.405 = 4.790 - 2.405 = 2.385 2f1f2=2×2.3952.405=4.7902.405=2.385)
    • 输出功率 ( P I M 3 L P_{IM3L} PIM3L) = -69.343 dBm
  • 上三阶交调产物 (m4, Upper IM3):
    • 频率 ( f I M 3 U f_{IM3U} fIM3U) = 2.415 GHz (即 2 f 2 − f 1 = 2 × 2.405 − 2.395 = 4.810 − 2.395 = 2.415 2f_2 - f_1 = 2 \times 2.405 - 2.395 = 4.810 - 2.395 = 2.415 2f2f1=2×2.4052.395=4.8102.395=2.415)
    • 输出功率 ( P I M 3 U P_{IM3U} PIM3U) = -74.476 dBm

3.1 计算输出三阶交调点(OIP3)

OIP3 计算公式:

三阶输出截取点 (OIP3) 可以使用以下常用公式进行估算(基于功率差):
O I P 3 ( dBm ) = P f u n d ( dBm ) + Δ P ( dB ) 2 OIP3 (\text{dBm}) = P_{fund} (\text{dBm}) + \frac{\Delta P (\text{dB})}{2} OIP3(dBm)=Pfund(dBm)+2ΔP(dB)
或者更准确地写为:

O I P 3 ( dBm ) = P f u n d ( dBm ) + P f u n d ( dBm ) − P I M 3 ( dBm ) 2 OIP3 (\text{dBm}) = P_{fund} (\text{dBm}) + \frac{P_{fund} (\text{dBm}) - P_{IM3} (\text{dBm})}{2} OIP3(dBm)=Pfund(dBm)+2Pfund(dBm)PIM3(dBm)
其中:

  • P f u n d P_{fund} Pfund 是其中一个基波音调的输出功率 (dBm)。如果两个基波功率略有不同,通常取两者的平均值,或者分别计算然后看是否接近。为了与表格中的 ipo1ipo2 对应,我们会分别用 P f 1 P_{f1} Pf1 P f 2 P_{f2} Pf2 作为参考。
  • P I M 3 P_{IM3} PIM3 是对应于所选基波的那个三阶交调产物的输出功率 (dBm)。

1. 计算 ipo1 (对应下边频三阶交调点,即参考 m 4 m4 m4 m 2 m2 m2)

这里“上边频三阶交调点”指的是基于 2 f 2 − f 1 2f_2 - f_1 2f2f1 (m4) 这个交调产物计算得到的OIP3。我们通常会用离它“更近”的基波,或者说,它是通过 f 2 f_2 f2 的二次谐波与 f 1 f_1 f1 混频产生的,所以 f 2 f_2 f2 (m2) 是一个合适的参考基波。

i p o 1 = P f 2 + P f 2 − P I M 3 U 2 ipo1 = P_{f2} + \frac{P_{f2} - P_{IM3U}}{2} ipo1=Pf2+2Pf2PIM3U
i p o 1 = − 19.028  dBm + ( − 19.028  dBm ) − ( − 74.476  dBm ) 2 ipo1 = -19.028 \text{ dBm} + \frac{(-19.028 \text{ dBm}) - (-74.476 \text{ dBm})}{2} ipo1=19.028 dBm+2(19.028 dBm)(74.476 dBm)
i p o 1 = − 19.028 + − 19.028 + 74.476 2 ipo1 = -19.028 + \frac{-19.028 + 74.476}{2} ipo1=19.028+219.028+74.476
i p o 1 = − 19.028 + 55.448 2 ipo1 = -19.028 + \frac{55.448}{2} ipo1=19.028+255.448
i p o 1 = − 19.028 + 27.724 ipo1 = -19.028 + 27.724 ipo1=19.028+27.724
i p o 1 = 8.696  dBm ipo1 = 8.696 \text{ dBm} ipo1=8.696 dBm

2. 计算 ipo2 (对应上边频三阶交调点,即参考 m 3 m3 m3 m 1 m1 m1)

这里“下边频三阶交调点”指的是基于 2 f 1 − f 2 2f_1 - f_2 2f1f2 (m3) 这个交调产物计算得到的OIP3。它是通过 f 1 f_1 f1 的二次谐波与 f 2 f_2 f2 混频产生的,所以 f 1 f_1 f1 (m1) 是一个合适的参考基波。

i p o 2 = P f 1 + P f 1 − P I M 3 L 2 ipo2 = P_{f1} + \frac{P_{f1} - P_{IM3L}}{2} ipo2=Pf1+2Pf1PIM3L
i p o 2 = − 19.004  dBm + ( − 19.004  dBm ) − ( − 69.343  dBm ) 2 ipo2 = -19.004 \text{ dBm} + \frac{(-19.004 \text{ dBm}) - (-69.343 \text{ dBm})}{2} ipo2=19.004 dBm+2(19.004 dBm)(69.343 dBm)
i p o 2 = − 19.004 + − 19.004 + 69.343 2 ipo2 = -19.004 + \frac{-19.004 + 69.343}{2} ipo2=19.004+219.004+69.343
i p o 2 = − 19.004 + 50.339 2 ipo2 = -19.004 + \frac{50.339}{2} ipo2=19.004+250.339
i p o 2 = − 19.004 + 25.1695 ipo2 = -19.004 + 25.1695 ipo2=19.004+25.1695
i p o 2 = 6.1655  dBm ipo2 = 6.1655 \text{ dBm} ipo2=6.1655 dBm

结果对比与表格:

  • 计算得到的 ipo1 (上边频 OIP3) = 8.696 dBm
  • 计算得到的 ipo2 (下边频 OIP3) = 6.1655 dBm

表格中的值:

  • ipo1 = 8.696
  • ipo2 = 6.130

可以发现基本相同,接下来我们通过输出三阶交调点除以增益得到输入三阶交调点(假设增益 (Gain) = 11.031  dB 11.031 \text{ dB} 11.031 dB)

3.2 计算输入三阶交调点(IIP3)

计算输入三阶交调点 (IIP3) 的公式:

IIP3, OIP3 和增益 (Gain) 之间的关系(均以dB或dBm为单位)是:
O I P 3 ( dBm ) = I I P 3 ( dBm ) + G a i n ( dB ) OIP3 (\text{dBm}) = IIP3 (\text{dBm}) + Gain (\text{dB}) OIP3(dBm)=IIP3(dBm)+Gain(dB)
所以,我们得到了两个IIP3值:

  • I I P 3 1 ≈ − 4.901  dBm IIP3_1 \approx -4.901 \text{ dBm} IIP314.901 dBm (基于下边频交调产物)
  • I I P 3 2 ≈ − 2.335  dBm IIP3_2 \approx -2.335 \text{ dBm} IIP322.335 dBm (基于上边频交调产物)

在实际评估时,通常会关注两者中较差的(即较低的)那个值,或者将两者都列出。

IIP3 的含义以及与线性放大结果的关系:

​ 计算得到的IIP3值(例如,我们取较差的那个,约为-4.901 dBm)提供了一个线性度性能的基准。当实际的输入信号功率远低于这个IIP3值时,放大器的三阶交调失真会很小,从而能够提供较好的线性放大效果。如果输入功率接近或超过IIP3(理论上),则非线性失真将非常严重,放大器不再处于线性工作区。

3.3 总结

  • IIP3 的值越高,表明放大器的线性度越好。 这意味着放大器可以在更高的输入功率水平下工作,而产生的三阶交调失真相对较小。
  • 当输入信号的功率远低于IP3时,三阶交调产物的功率相对于基波信号来说会非常低。这意味着放大器对信号的处理接近理想线性状态,失真很小,因此“拥有较好的线性放大结果”。

线性失真将非常严重,放大器不再处于线性工作区。

3.3 总结

  • IIP3 的值越高,表明放大器的线性度越好。 这意味着放大器可以在更高的输入功率水平下工作,而产生的三阶交调失真相对较小。
  • 当输入信号的功率远低于IP3时,三阶交调产物的功率相对于基波信号来说会非常低。这意味着放大器对信号的处理接近理想线性状态,失真很小,因此“拥有较好的线性放大结果”。
  • 通常,为了保证良好的线性度,实际工作时的输入功率应比IIP3低很多。 一个常见的经验法则是,为了使三阶交调产物被充分抑制(例如,比主信号低30dBc, 40dBc或更多),输入功率可能需要比IIP3低10dB到20dB,甚至更多,具体取决于应用对线性度的要求。

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

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

相关文章

PETR- Position Embedding Transformation for Multi-View 3D Object Detection

旷视 ECCV 2022 纯视觉BEV方案transformer网络3D检测 paper:[2203.05625] PETR: Position Embedding Transformation for Multi-View 3D Object Detection code:GitHub - megvii-research/PETR: [ECCV2022] PETR: Position Embedding Transformation …

Prompt Tuning与自然语言微调对比解析

Prompt Tuning 与输入提示词自然语言微调的区别和联系 一、核心定义与区别 维度Prompt Tuning(提示微调)输入提示词自然语言微调本质优化连续向量空间中的提示嵌入(不可直接阅读)优化离散自然语言文本(人类可理解)操作对象模型输入嵌入层的连续向量(如WordEmbedding)自…

QT软件开发环境及简单图形的绘制-图形学(实验一)-[成信]

对于软件的安装这里就不多介绍了。 本文章主要是根据本校图形学的实验知道来做。 创建一个简单的计算机图形学程序 第一步:创建项目及配置 这里创建的项目名和类名尽量和我的一样,避免后面直接复制我的代码时会出现一些名字上面的错误。QtWidgetsAppl…

一文带你彻底理清C 语言核心知识 与 面试高频考点:从栈溢出到指针 全面解析 附带笔者手写2.4k行代码加注释

引言:C 语言的魅力与挑战 从操作系统内核到嵌入式系统,从高性能计算到网络编程,C 语言高效、灵活和贴近硬件的特性,始终占据着不可替代的地位。然而,C 语言的强大也伴随着较高的学习曲线,尤其是指针、内存管…

数据结构第5章 树与二叉树(竟成)

第 5 章 树与二叉树 【考纲内容】 1.树的基本概念 2.二叉树 (1)二叉树的定义及其主要特征 (2)二叉树的顺序存储结构和链式存储结构 (3)二叉树的遍历 (4)线索二叉树的基本概念和构造 …

# 深入解析BERT自然语言处理框架:原理、结构与应用

深入解析BERT自然语言处理框架:原理、结构与应用 在自然语言处理(NLP)领域,BERT(Bidirectional Encoder Representations from Transformers)框架的出现无疑是一个重要的里程碑。它凭借其强大的语言表示能…

Cadence学习笔记之---PCB过孔替换、封装更新,DRC检查和状态查看

目录 01 | 引 言 02 | 环境描述 03 | 过孔替换 04 | 封装更新 05 | PCB状态查看 06 | DRC检查 07 | 总 结 01 | 引 言 终于终于来到了Cadence学习笔记的尾声! 在上一篇文章中,讲述了如何布线、如何铺铜,以及布线、铺铜过程中比较重要…

系统开发和运行知识

软件生存周期 软件生存周期包括可行性分析与项目开发计划、需求分析、概要设计、详细设计、编码和单元测试、综合测试及维护阶段。 1、可行性分析与项目开发计划 主要任务是确定软件的开发目标及可行性。该阶段应该给出问题定义、可行性分析和项目开发计划。 2、需求分析 需求…

【C++高级主题】异常处理(四):auto_ptr类

目录 一、auto_ptr 的诞生:为异常安全的内存分配而设计 1.1 传统内存管理的痛点 1.2 auto_ptr 的核心思想:RAII 与内存绑定 1.3 auto_ptr 的基本定义(简化版) 二、auto_ptr 的基本用法:将指针绑定到智能对象 2.1…

STM32CubeMX配置使用通用定时器产生PWM

一、定时器PWM功能简介 定时器,顾名思义,就是定时的功能,定时器在单片机中算是除GPIO外最基本的外设。在ST中,定时器分为几种,基础定时器,通用定时器,高级定时器和低功耗定时器。其中定时器除了…

WebSphere Application Server(WAS)8.5.5教程第十四讲:JPA

一、JPA 以下是对 JPA(Java Persistence API) 的深入详解,适用于具备一定 Java EE / Jakarta EE 背景的开发者,尤其是对数据持久化机制感兴趣的人员。 1、什么是 JPA? Java Persistence API(JPA&#xf…

Linux系统调用深度剖析

Linux系统调用深度剖析与实践案例 目录 Linux系统调用深度剖析与实践案例 一、Linux系统调用概述 二、进程管理相关系统调用 1. fork():进程克隆与多任务处理 2. exec系列:程序加载与替换 3. wait/waitpid:进程状态同步 三、文件操作相关系统调用 1. 文件描述符操作…

动态规划-918.环形子数组的最大和-力扣(LeetCode)

一、题目解析 听着有点复杂,这里一图流。 将环形问题转化为线性问题。 二、算法原理 1.状态表示 2.状态转移方程 详细可以移步另一篇博客,53. 最大子数组和 - 力扣(LeetCode) 3.初始化 由于计算中需要用到f[i-1]和g[i-1]的值&…

STM32:Modbus通信协议核心解析:关键通信技术

知识点1【 Modbus通信】 1、Modbus的概述 Modbus是OSI模型第七层的应用层报文传输协议 协议:说明有组包和解包的过程 2、通信机制 Modelbus是一个请求/应答协议 通信机制:主机轮询,从机应答的机制。每个从设备有唯一的地址,主…

线程封装与互斥

目录 线程互斥 进程线程间的互斥相关背景概念 互斥量mutex 互斥量的接口 初始化互斥量有两种方法: 销毁互斥量 互斥量加锁和解锁 改进售票系统 互斥量实现原理探究 互斥量的封装 线程互斥 进程线程间的互斥相关背景概念 临界资源:多线程执行流共…

Spring AI 系列之一个很棒的 Spring AI 功能——Advisors

1. 概述 由AI驱动的应用程序已成为我们的现实。我们正在广泛地实现各种RAG应用程序、提示API,并利用大型语言模型(LLM)创建项目。借助 Spring AI,我们可以更快速地完成这些任务。 在本文中,我们将介绍一个非常有价值…

Vue3 + TypeScript + el-input 实现人民币金额的输入和显示

输入人民币金额的参数要求: 输入要求: 通过键盘,只允许输入负号、小数点、数字、退格键、删除键、方向左键、方向右键、Home键、End键、Tab键;负号只能在开头;只保留第一个小数点;替换全角输入的小数点&a…

2.1 C++之条件语句

学习目标: 理解程序的分支逻辑(根据不同条件执行不同代码)。掌握 if-else 和 switch 语句的用法。能编写简单的条件判断程序(如成绩评级、游戏选项等)。 1 条件语句的基本概念 什么是条件语句? 程序在执…

Linux `ls` 命令深度解析与高阶应用指南

Linux `ls` 命令深度解析与高阶应用指南 一、核心功能解析1. 基本作用2. 与类似命令对比二、选项系统详解1. 常用基础选项2. 进阶筛选选项三、高阶应用技巧1. 组合过滤查询2. 格式化输出控制3. 元数据深度分析四、企业级应用场景1. 存储空间监控2. 安全审计3. 自动化运维五、特…

【MPC控制 - 从ACC到自动驾驶】5. 融会贯通:MPC在ACC中的优势总结与知识体系构建

【MPC控制 - 从ACC到自动驾驶】融会贯通:MPC在ACC中的优势总结与知识体系构建 在过去的四天里,我们一起经历了一段奇妙的旅程: Day 1: 我们认识了自适应巡航ACC这位“智能领航员”,并初见了模型预测控制MPC这位“深谋远虑的棋手…