<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <author>
    <name>COMBER</name>
  </author>
  <generator uri="https://hexo.io/">Hexo</generator>
  <id>https://lijinbo.cc/</id>
  <link href="https://lijinbo.cc/" rel="alternate"/>
  <link href="https://lijinbo.cc/atom.xml" rel="self"/>
  <rights>All rights reserved 2026, COMBER</rights>
  <subtitle>一个靓仔的自述</subtitle>
  <title>COMBER'S BLOG</title>
  <updated>2026-07-19T12:27:07.715Z</updated>
  <entry>
    <author>
      <name>COMBER</name>
    </author>
    <category term="模电原理及应用" scheme="https://lijinbo.cc/categories/%E6%A8%A1%E7%94%B5%E5%8E%9F%E7%90%86%E5%8F%8A%E5%BA%94%E7%94%A8/"/>
    <category term="开关电源" scheme="https://lijinbo.cc/tags/%E5%BC%80%E5%85%B3%E7%94%B5%E6%BA%90/"/>
    <category term="Buck电路" scheme="https://lijinbo.cc/tags/Buck%E7%94%B5%E8%B7%AF/"/>
    <content>
      <![CDATA[<p>本次设计的是24V-5V降压DC-DC稳压电路，即通过该电路实现将直流电源电压降为更低的电压，得到稳压输出，并满足相应指标要求。我采用了技术上比较可靠的LM2596开关电压调节器芯片，核心电路采用BUCK降压电路，能实现输入24V、降压输出可调的功能。 </p><span id="more"></span><hr><div style='text-align: center;'><p><img src="/2022/02/14/24V-5VBUCK%E7%A8%B3%E5%8E%8B%E7%94%B5%E8%B7%AF/f06e85dc.jpg" alt=""></p></div><h1 id="方案设计与论证"><a href="#方案设计与论证" class="headerlink" title="方案设计与论证"></a>方案设计与论证</h1><h2 id="技术指标"><a href="#技术指标" class="headerlink" title="技术指标"></a>技术指标</h2><p>1、输入电压24V；</p><p>2、输出5V/0.5A；</p><p>3、满载效率不低于70%；</p><p>4、纹波电压小于100mVpp</p><h2 id="电路形式的选择"><a href="#电路形式的选择" class="headerlink" title="电路形式的选择"></a>电路形式的选择</h2><h3 id="BUCK电路的原理及优缺点"><a href="#BUCK电路的原理及优缺点" class="headerlink" title="BUCK电路的原理及优缺点"></a>BUCK电路的原理及优缺点</h3><div style='text-align: center;'><p><img src="/2022/02/14/24V-5VBUCK%E7%A8%B3%E5%8E%8B%E7%94%B5%E8%B7%AF/BUCK%E7%94%B5%E8%B7%AF%E7%9A%84%E5%9F%BA%E6%9C%AC%E7%BB%93%E6%9E%84.png" alt="BUCK电路的基本结构"></p></div><p>所谓BUCK电路，其实就是一种降压斩波器电路结构，这种拓扑结构在DC-DC变换电路中非常常见，平时比较常用的DC-DC芯片，如LM2596,XL7025等都是这种BUCK拓扑结构。</p><ul><li><p>从BUCK电路的基本结构可以看出，电感L和电容C组成低通滤波器，此滤波器设计的原则是使U<sub>d</sub>的直流分量可以通过，而抑制U<sub>d</sub>的谐波分量，电容上输出电压U<sub>o</sub>就是U<sub>d</sub>的直流分量再附加微小纹波U<sub>ripple</sub>；</p></li><li><p>电路工作频率很高，一个开关周期内电容充放电引起的纹波U<sub>ripple</sub>很小，相对于电容上输出的直流电压U<sub>o</sub>有：</p><div style='text-align: center;'><p>U<sub>ripple</sub> &lt;&lt; U<sub>o</sub></p></div><p>电容上的电压宏观上可以看作恒定,电路稳态工作时，输出电容上电压由微小的纹波和较大的直流分量组成，宏观上可以看作是恒定直流；</p></li><li><p>一个周期内电容充电电荷数高于放电电荷数时，电容电压升高，导致后面周期内充电电荷减小、放电电荷增加，使电容电压上升速度减慢，这种过程延续直到充放电平衡，此时电压维持不变；反之，如果一个周期内放电电荷高于充电电荷，将导致后面周期内充电电荷增加、放电电荷减少，使电容电压下降速度减慢，这种过程也延续直到充放电平衡，最终维持电压不变。</p><p>上述过程是电容上电压调整的过渡过程，在电路稳态工作时，电路达到稳定平衡，电容上充放电也达到平衡，这是电路稳态工作时的一个普遍规律。</p></li><li><p>如下图，电路处于导通状态时，电感电流增加，电感储能；而当电路处于截止状态时，电感电流减小，电感放电。</p><div style='text-align: center;'><p><img src="/2022/02/14/24V-5VBUCK%E7%A8%B3%E5%8E%8B%E7%94%B5%E8%B7%AF/%E5%BC%80%E5%85%B3%E5%AF%BC%E9%80%9A%E7%8A%B6%E6%80%81%E7%AD%89%E6%95%88%E7%94%B5%E8%B7%AF%EF%BC%88%E5%B7%A6%EF%BC%89_%E5%BC%80%E5%85%B3%E6%88%AA%E6%AD%A2%E7%8A%B6%E6%80%81%E7%AD%89%E6%95%88%E7%94%B5%E8%B7%AF%EF%BC%88%E5%8F%B3%EF%BC%89.png" alt="开关导通状态等效电路（左） 开关截止状态等效电路（右）"></p></div><p>假定电流增加量大于电流减小量，则一个开关周期内电感上磁链增量为：</p><div style='text-align: center;'><p>ΔΨ = L(Δt) &gt; 0</p></div><p>此增量将产生一个平均感应电势：</p><div style='text-align: center;'><p>u = ΔΨ / T &gt; 0</p></div><p>此电势将减缓电感电流的上升速度并同时降低电感电流的下降速度，最终将导致一个周期内电感电流平均增量为零，一个开关周期内电感上磁链增量小于零的状况也一样。这种在稳态状况下一个周期内电感电流平均增量（磁链平均增量）为零的现象称为：<a href="https://baike.baidu.com/item/%E4%BC%8F%E7%A7%92%E5%8E%9F%E5%88%99/3081515">电感伏秒平衡</a>，这是电力电子电路稳态运行时的又一个普遍规律。</p></li></ul><h3 id="开关电源稳压还是线性电源稳压"><a href="#开关电源稳压还是线性电源稳压" class="headerlink" title="开关电源稳压还是线性电源稳压"></a>开关电源稳压还是线性电源稳压</h3><p>开关电源是一种比较新型的电源。它具有效率高，重量轻，可升、降压，输出功率大等优点。但是由于电路工作在开关状态，所以噪声比较大。如图所示，电路由开关K(实际电路中为三极管或者场效应管)，续流二极管D，储能电感L，滤波电容C等构成。</p><div style='text-align: center;'><p><img src="/2022/02/14/24V-5VBUCK%E7%A8%B3%E5%8E%8B%E7%94%B5%E8%B7%AF/%E5%BC%80%E5%85%B3%E7%94%B5%E6%BA%90%E7%A8%B3%E5%8E%8B%E7%AD%89%E6%95%88%E7%94%B5%E8%B7%AF.png" alt="开关电源稳压等效电路"></p></div><p>当开关闭合时，电源通过开关K、电感L给负载供电，并将部分电能储存在电感L以及电容C中。由于电感L的自感，在开关接通后，电流增大得比较缓慢，即输出不能立刻达到电源电压值。一定时间后，开关断开，由于电感L的自感作用(可以比较形象的认为电感中的电流有惯性作用)，将保持电路中的电流不变，即从左往右继续流。这电流流过负载，从地线返回，流到续流二极管D的正极，经过二极管D，返回电感L的左端，从而形成了一个回路。通过控制开关闭合跟断开的时间(即PWM，脉冲宽度调制)，就可以控制输出电压。如果通过检测输出电压来控制开、关的时间，以保持输出电压不变，这就实现了稳压的目的。</p><p>线性电源是先将交流电经过变压器降低电压幅值，再经过整流电路整流后，得到脉冲直流电，后经滤波得到带有微小波纹电压的直流电压。线性电源主回路的工作过程是输入电源先经预稳压电路进行初步交流稳压后，通过主工作变压器隔离整流变换成直流电源，再经过控制电路和单片微处理控制器的智能控制下对线性调整元件进行精细调节，使之输出高精度的直流电压源。</p><p>线性稳压电源的优点是输出电压质量高、纹波小、不需要使用电感元件 。线性稳压电源经过变压、整流、滤波、稳压实现电源稳压。优点是稳定性好，瞬态响应速度快，可靠性高，输出电压精度高，输出纹波电压精度小。缺点是变换效率较低，尤其是在输入输出电压差较大的情况下。如果输出电流也较大，会有明显的发热发烫现象，甚至可能烧坏稳压器。</p><h2 id="电源管理芯片的选择"><a href="#电源管理芯片的选择" class="headerlink" title="电源管理芯片的选择"></a>电源管理芯片的选择</h2><p><strong>LM2596</strong>系列是德州仪器（TI）生产的3A电流输出降压开关型集成稳压芯片，它内含固定频率振荡器（150KHZ）和基准稳压器（1.23v），并具有完善的保护电路、电流限制、热关断电路等。利用该器件只需极少的外围器件便可构成高效稳压电路。该系列提供了有3.3V、5V、12V及可调（ADJ）等多个电压档次产品。由于该器件可以使用通用的标准电感，这更促进LM2596的使用，极大地简化了开关电源电路的设计。</p><p>LM2596还有其他一些特点：在特定的输入电压和输出负载的条件下，输出电压的误差可以保证在±4%的范围内，振荡频率误差在±15%的范围内；可以用仅80μA的待机电流，实现外部断电；具有自我保护电路（一个两级降频限流保护和一个在异常情况下断电的过温完全保护电路）。</p><div style='text-align: center;'><p><img src="/2022/02/14/24V-5VBUCK%E7%A8%B3%E5%8E%8B%E7%94%B5%E8%B7%AF/LM2596%E5%86%85%E9%83%A8%E6%A1%86%E5%9B%BE.png" alt="LM2596内部框图"></p></div><h3 id="LM2596的特点"><a href="#LM2596的特点" class="headerlink" title="LM2596的特点"></a>LM2596的特点</h3><ul><li>3.3V、5V、12V的固定电压输出和可调电压输出；</li><li>可调输出电压范围(1.2V-37V)±4%；</li><li>输出线性特性好且负载可调节；</li><li>输出电流可达3A；</li><li>输入电压可达40V；</li><li>采用150KHz的内部振荡频率，属于第二代开关电压调节器，具有功耗小、效率高的特点；</li><li>低功耗待机模式，待机电流的典型值为80uA；</li><li>具有TTL断电能力；</li><li>具有过热保护和限流保护功能；</li><li>封装形式T0-220(DIP)和T0-263 (SMD)；</li><li>外围电路简单，仅需数个外接元件，且使用标准电感，比较容易购买</li></ul><h3 id="LM2596应用领域"><a href="#LM2596应用领域" class="headerlink" title="LM2596应用领域"></a>LM2596应用领域</h3><ul><li><p>高效率降压调节器</p></li><li><p>单片开关电压调节器 </p></li><li><p>正、负电压转换器</p></li></ul><hr><h1 id="电路设计及仿真"><a href="#电路设计及仿真" class="headerlink" title="电路设计及仿真"></a>电路设计及仿真</h1><h2 id="电路设计方案"><a href="#电路设计方案" class="headerlink" title="电路设计方案"></a>电路设计方案</h2><p>从LM2596数据手册可以找到参考应用电路，依照此电路搭建LM2596可调输出BUCK调节器电路。此处为了实现输出电压可调，初步考虑将参考电路中固定的反馈电阻R2换成10KΩ的微调电阻。若要输出电压为5V，那R2的阻值约为3.1KΩ。</p><blockquote><p>电路设计中要注意让反馈支路线要远离电感，电路加粗的线尽量要短，调节输出电压的电阻R1、R2要靠近LM2596芯片的4脚。</p></blockquote><div style='text-align: center;'><p><img src="/2022/02/14/24V-5VBUCK%E7%A8%B3%E5%8E%8B%E7%94%B5%E8%B7%AF/%E7%90%86%E8%AE%BA%E5%8F%82%E8%80%83%E7%94%B5%E8%B7%AF.png" alt="理论参考电路"></p></div><h3 id="工作原理"><a href="#工作原理" class="headerlink" title="工作原理"></a>工作原理</h3><p>当LM2596内部开关管导通时，24V电源电压通过导通的开关管，从IC的2脚给LS1和C1、C2充电和负载供电，LS1和C1、C2储能，D1（1N5821）截止；当LM2596内部开关管截止时，IC的2脚不再输出24V，LS1放电维持负载电流（磁场能转换成电能），D1导通，提供L1放电的电流回路同时，C2也放电，电位略下降，此电位通过IC的4脚，与IC内部产生的基准电压比较，低于基准电压时，IC内部开关管再次导通，开始下一个循环。</p><h3 id="原理图"><a href="#原理图" class="headerlink" title="原理图"></a>原理图</h3><p><img src="/2022/02/14/24V-5VBUCK%E7%A8%B3%E5%8E%8B%E7%94%B5%E8%B7%AF/%E7%94%B5%E8%B7%AF%E5%8E%9F%E7%90%86%E5%9B%BE.png" alt="电路原理图"></p><p>(1) D1用作续流二极管，为电感LS1续流；</p><p>(2) DC-DC电路开关频率提高，电源纹波变小，环路的带宽变高，系统的瞬态响应会更好，同时频率越高，电感量越小，但是同时BUCK电路的开关损耗和电感的迟滞和涡流损耗也变大了，实际设计中需要做一些取舍； </p><p>(3) 输出电压：</p><p>本次设计中要求输出为5V，R<sub>1</sub>为固定电阻1KΩ，计算得R<sub>P2</sub>约为3.1KΩ；</p><p>(4) 电感选择：</p><p>查得LM2596内部开关饱和电压为V<sub>sat</sub> = 1.16V，二极管1N5821的正向压降为V­­<sub>D</sub> = 0.5V。可以通过下面的公式计算电感电压与时间（微秒）的乘积：</p><p> <img src="/2022/02/14/24V-5VBUCK%E7%A8%B3%E5%8E%8B%E7%94%B5%E8%B7%AF/a107501a.png" alt=""> </p><p>从下图的电感值选择指导看出，电感的取值范围可以由上述的E·T值和和所允许最大负载电流来决定。由上面公式计算出E·T值，然后在图7的纵轴上找到对应的数值。在横轴上，选择最大的负载电流。通过 E·T的值和最大负载电流值确定电感范围，同时记录下该范围所对应的电感号。通过电感号来确定具体的电感值，从而选择合适的电感。另外电感的选择还应考虑LM2596芯片的开关频率150KHz和通过的电流额定值。</p><div style='text-align: center;'><p><img src="/2022/02/14/24V-5VBUCK%E7%A8%B3%E5%8E%8B%E7%94%B5%E8%B7%AF/%E7%94%B5%E6%84%9F%E9%80%89%E6%8B%A9%E6%8C%87%E5%AF%BC.png" alt="电感选择指导"></p> </div><p>(5) 前馈电容选择：</p><p>前馈电容即原理图中的C<sub>1</sub>，上面算得R<sub>P2</sub>约为3.1KΩ，代入下式计算，该前馈电容取10nF即可。</p><p><img src="/2022/02/14/24V-5VBUCK%E7%A8%B3%E5%8E%8B%E7%94%B5%E8%B7%AF/e9748987.png" alt=""> </p><h2 id="仿真测试"><a href="#仿真测试" class="headerlink" title="仿真测试"></a>仿真测试</h2><h3 id="仿真测试方案"><a href="#仿真测试方案" class="headerlink" title="仿真测试方案"></a>仿真测试方案</h3><p>借助TI公司的一款在线设计和仿真工具<strong><em>WEBENCH</em></strong>进行电路仿真。仿真工具提供了LM2596搭建的许多种典型电路，可从上面直接找到与本设计符合的参考电路。为了符合本设计的指标，可对电路参数进行修正。限定最小输入电压为12V、最大值则为40V，典型值是24V，输出电压典型值改为5V，负载电流最大值改为2.5A，典型值是0.5A。其余元件参数由仿真工具自动调整以达到设定的指标，然后开始仿真即可查看各电路参数的波形。</p><div style='text-align: center;'><p><img src="/2022/02/14/24V-5VBUCK%E7%A8%B3%E5%8E%8B%E7%94%B5%E8%B7%AF/WEBENCH%E4%BB%BF%E7%9C%9F.png" alt="WEBENCH仿真"></p></div><h3 id="仿真测试结果"><a href="#仿真测试结果" class="headerlink" title="仿真测试结果"></a>仿真测试结果</h3><p>如图是输出电压波形和负载电流波形。</p><div style='text-align: center;'><p><img src="/2022/02/14/24V-5VBUCK%E7%A8%B3%E5%8E%8B%E7%94%B5%E8%B7%AF/%E4%BB%BF%E7%9C%9F%E6%B3%A2%E5%BD%A2.png" alt="仿真波形"></p></div><p>左侧红色示数为电压示数，右侧蓝色为电流示数。可以看到输出电压V<sub>out</sub>的基础电压值在U<sub>o</sub> = 5.015V左右，负载电流为I<sub>L</sub> = 0.5A，输出功率约为P<sub>o</sub> = 2.51W。 最大纹波电压峰峰值为u<sub>o</sub> = 30mV，达到设计要求。</p><hr><h1 id="PCB设计与电路实测"><a href="#PCB设计与电路实测" class="headerlink" title="PCB设计与电路实测"></a>PCB设计与电路实测</h1><h2 id="PCB设计"><a href="#PCB设计" class="headerlink" title="PCB设计"></a>PCB设计</h2><p>电路原理图和PCB均通过<strong><em>Altium Designer 2020</em></strong>绘制，采用单层板结构，方便手工制作。PCB对GND网络进行敷铜，配合LM2596芯片的TO-263表面贴封装，可有效利用敷铜和PCB板帮助芯片的散热。考虑到电源电压较高，所以电源网络线宽应适当加大。</p><div style='text-align: center;'><p><img src="/2022/02/14/24V-5VBUCK%E7%A8%B3%E5%8E%8B%E7%94%B5%E8%B7%AF/PCB%E5%9B%BE.png" alt="PCB图"></p></div><h2 id="PCB制作与调试"><a href="#PCB制作与调试" class="headerlink" title="PCB制作与调试"></a>PCB制作与调试</h2><p>用单层板制作电路，制好板后进行焊接，然后到实验室上电调试。首先用直流电源输出24V电压，接到电路板的输入端，未调节微调电阻R<sub>p2</sub>前观察到电路输出电压接近20V。然后开始调节微调电阻，输出电压值随之发生改变，最后使之稳定在5V附近。</p><h2 id="电路参数实测"><a href="#电路参数实测" class="headerlink" title="电路参数实测"></a>电路参数实测</h2><h3 id="指标测试方案"><a href="#指标测试方案" class="headerlink" title="指标测试方案"></a>指标测试方案</h3><p>测试电路参数的过程要用到3个仪器，直流电源、万用表和数字示波器，还需要外接10Ω的负载电阻。</p><p>（1）电路的24V输入电压由直流电源提供，输入电流用万用表串接测量；</p><p>（2）输出电压为负载电阻两端的电压，用万用表并接测量；负载电流需要将万用表串接到负载支路。由测量得出的电压与电流分别算出输入与输出功率，电路的满载效率为输出功率与输入功率之比。</p><p>（3）最后将数字示波器的探头接到负载两端，得到输出电压的波形，测量纹波的峰峰值电压。</p><h3 id="测试结果与分析"><a href="#测试结果与分析" class="headerlink" title="测试结果与分析"></a>测试结果与分析</h3><h4 id="输出功率"><a href="#输出功率" class="headerlink" title="输出功率"></a>输出功率</h4><p>电路外接10Ω负载，通过万用表测得输出电压为4.989V，负载电流为0.507A；可以计算出输出功率为P<sub>o</sub> = 2.53W；</p><h4 id="输入功率"><a href="#输入功率" class="headerlink" title="输入功率"></a>输入功率</h4><p>由于用万用表测量的输入电流与直流电源的示数误差极小，所以直接采用直流电源显示的数值。电源输出电压为24.011V，电流为0.143A，所以电路输入功率为P<sub>I</sub> = 3.434W。 </p><h4 id="满载效率"><a href="#满载效率" class="headerlink" title="满载效率"></a>满载效率</h4><p>满载效率经计算得到：</p><div style='text-align: center;'><p><img src="/2022/02/14/24V-5VBUCK%E7%A8%B3%E5%8E%8B%E7%94%B5%E8%B7%AF/99632732.png" alt=""></p></div><h4 id="最大纹波电压"><a href="#最大纹波电压" class="headerlink" title="最大纹波电压"></a>最大纹波电压</h4><p>输出电压波形如图所示：</p><div style='text-align: center;'><p><img src="/2022/02/14/24V-5VBUCK%E7%A8%B3%E5%8E%8B%E7%94%B5%E8%B7%AF/%E7%A4%BA%E6%B3%A2%E5%99%A8%E6%B3%A2%E5%BD%A2.png" alt="示波器波形"></p></div><p>最大纹波电压峰峰值约为28.8mW​，指标要求最大纹波电压为​100mW​，达到指标要求。</p><hr><p></br></br></br></br></br></p><ul><li>end</li></ul>]]>
    </content>
    <id>https://lijinbo.cc/2022/02/14/24V-5VBUCK%E7%A8%B3%E5%8E%8B%E7%94%B5%E8%B7%AF/</id>
    <link href="https://lijinbo.cc/2022/02/14/24V-5VBUCK%E7%A8%B3%E5%8E%8B%E7%94%B5%E8%B7%AF/"/>
    <published>2022-02-14T04:33:36.000Z</published>
    <summary>
      <![CDATA[<p>本次设计的是24V-5V降压DC-DC稳压电路，即通过该电路实现将直流电源电压降为更低的电压，得到稳压输出，并满足相应指标要求。我采用了技术上比较可靠的LM2596开关电压调节器芯片，核心电路采用BUCK降压电路，能实现输入24V、降压输出可调的功能。 </p>]]>
    </summary>
    <title>24V-5V降压DC-DC稳压电路设计</title>
    <updated>2026-07-19T12:27:07.715Z</updated>
  </entry>
  <entry>
    <author>
      <name>COMBER</name>
    </author>
    <category term="FPGA" scheme="https://lijinbo.cc/categories/FPGA/"/>
    <category term="DPLL" scheme="https://lijinbo.cc/tags/DPLL/"/>
    <category term="Verilog" scheme="https://lijinbo.cc/tags/Verilog/"/>
    <category term="倍频器" scheme="https://lijinbo.cc/tags/%E5%80%8D%E9%A2%91%E5%99%A8/"/>
    <content>
      <![CDATA[<h1 id="概述"><a href="#概述" class="headerlink" title="概述"></a>概述</h1><p>项目的主要目标就是用<strong>Verilog</strong>设计实现一款数字锁相环，基于低频率时钟源，倍频产生高频时钟，并且达到高频时钟输出相位锁定、占空比1:1的预期效果。设计全基于Verilog代码实现，第一阶段实现数字锁相环的基础架构，达到输入输出锁定的效果，第二阶段再进行倍频的实现。并结合<strong>Modelsim</strong>平台进行行为仿真，验证功能的正确性，观测仿真波形图。 </p><p><img src="/2021/09/23/%E5%85%A8%E6%95%B0%E5%AD%97%E9%94%81%E7%9B%B8%E7%8E%AF/4e5102c3.png" alt=""></p><span id="more"></span><h1 id="层次结构"><a href="#层次结构" class="headerlink" title="层次结构"></a>层次结构</h1><p>工程的结构分为顶层模块<strong>dpll.v</strong>和子模块<strong>Phasecomparator</strong>、<strong>VariableResetRandomWalkFilter</strong>和<strong>Freqdivider</strong>，分别对应PLL原理中的鉴相器<strong>PD</strong>、环路滤波器<strong>LF</strong>和受控振荡器<strong>VCO</strong>。系统在统一的系统时钟下同步工作，参考的架构图如下：</p><div style='text-align: center;'><p><img src="/2021/09/23/%E5%85%A8%E6%95%B0%E5%AD%97%E9%94%81%E7%9B%B8%E7%8E%AF/%E8%AE%BE%E8%AE%A1%E6%9E%B6%E6%9E%84.jpg" alt="设计架构"></p></div><h1 id="模块说明"><a href="#模块说明" class="headerlink" title="模块说明"></a>模块说明</h1><h2 id="DPLL-v"><a href="#DPLL-v" class="headerlink" title="DPLL.v"></a>DPLL.v</h2><h3 id="模块接口"><a href="#模块接口" class="headerlink" title="模块接口"></a>模块接口</h3><figure class="highlight verilog"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">module</span> dpll(</span><br><span class="line">    <span class="keyword">input</span>  SignalIn;                       <span class="comment">// 输入信号</span></span><br><span class="line">    <span class="keyword">input</span>  MainClock;                     <span class="comment">// 系统时钟</span></span><br><span class="line">    <span class="keyword">output</span> SignalOut;                <span class="comment">// 输出信号</span></span><br><span class="line">    <span class="keyword">output</span> Positive, Negative;          <span class="comment">// 环路滤波器输出</span></span><br><span class="line">    <span class="keyword">output</span> Lead, Lag;               <span class="comment">// 鉴相器输出</span></span><br><span class="line">);</span><br></pre></td></tr></table></figure><h3 id="功能描述"><a href="#功能描述" class="headerlink" title="功能描述"></a>功能描述</h3><p><strong>DPLL</strong>模块是工程的顶层文件，负责把各个子模块组合起来，负责声明整个系统的信号接口。</p><h2 id="Phasecomparator-v"><a href="#Phasecomparator-v" class="headerlink" title="Phasecomparator.v"></a>Phasecomparator.v</h2><h3 id="模块接口-1"><a href="#模块接口-1" class="headerlink" title="模块接口"></a>模块接口</h3><figure class="highlight verilog"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">module</span> phasecomparator(</span><br><span class="line">    <span class="keyword">input</span> MainClock,                  <span class="comment">// System Clock</span></span><br><span class="line">    <span class="keyword">input</span> InputSignal, OutputSignal,         <span class="comment">// 输入输出信号</span></span><br><span class="line">    <span class="keyword">output</span> SynchronousSignal,                 <span class="comment">// 同步信号</span></span><br><span class="line">    <span class="keyword">output</span> Lead, Lag,                    <span class="comment">// 超前、滞后脉冲</span></span><br><span class="line">    <span class="keyword">output</span> InputSignalEdge,  <span class="comment">// 输入信号上升沿</span></span><br><span class="line">    <span class="keyword">output</span> OutputSignalEdge,      <span class="comment">// 输出信号上升沿</span></span><br><span class="line">    <span class="keyword">output</span> Lock,                    <span class="comment">// 锁定标志位</span></span><br><span class="line">    <span class="keyword">output</span> [<span class="number">7</span>:<span class="number">0</span>] PeriodCount  <span class="comment">// 输入信号周期</span></span><br><span class="line">);</span><br></pre></td></tr></table></figure><h3 id="功能描述-1"><a href="#功能描述-1" class="headerlink" title="功能描述"></a>功能描述</h3><p><strong>Phasecomparator</strong>为鉴相器模块，首先通过D触发器，把输入信号同步到系统的时钟域；其二，统计输入信号的周期，用于振荡信号的生成；其三，对输入信号与反馈信号进行相位比较，反馈信号超前于输入信号则置Lead为高电平，反之，反馈信号滞后则置Lag为高电平，这两个信号有效的持续周期都为一个系统时钟周期。</p><div style='text-align: center;'><p><img src="/2021/09/23/%E5%85%A8%E6%95%B0%E5%AD%97%E9%94%81%E7%9B%B8%E7%8E%AF/%E9%89%B4%E7%9B%B8%E5%99%A8%E5%B7%A5%E4%BD%9C%E7%A4%BA%E6%84%8F%E5%9B%BE.jpg" alt="鉴相器工作示意图"></p></div><h2 id="VariableResetRandomWalkFilter-v和RandomWalkFilter-v"><a href="#VariableResetRandomWalkFilter-v和RandomWalkFilter-v" class="headerlink" title="VariableResetRandomWalkFilter.v和RandomWalkFilter.v"></a>VariableResetRandomWalkFilter.v和RandomWalkFilter.v</h2><h3 id="模块接口-2"><a href="#模块接口-2" class="headerlink" title="模块接口"></a>模块接口</h3><figure class="highlight verilog"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">module</span> variableresetrandomwalkfilter(</span><br><span class="line">   <span class="keyword">input</span>  MainClock, Lead, Lag;  <span class="comment">// System Clock and Phase Comparator signals</span></span><br><span class="line">   <span class="keyword">output</span> Positive, Negative;    <span class="comment">// &quot;positive shift&quot; and &quot;negative shift&quot; outputs</span></span><br><span class="line">);</span><br></pre></td></tr></table></figure><figure class="highlight verilog"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">module</span> randomwalkfilter(</span><br><span class="line">   <span class="keyword">input</span>  MainClock, Lead, Lag;  <span class="comment">// System Clock and Phase Comparator signals</span></span><br><span class="line">   <span class="keyword">output</span> Positive, Negative;    <span class="comment">// &quot;positive shift&quot; and &quot;negative shift&quot; outputs</span></span><br><span class="line">);</span><br></pre></td></tr></table></figure><h3 id="功能描述-2"><a href="#功能描述-2" class="headerlink" title="功能描述"></a>功能描述</h3><p><strong>VariableResetRandomWalkFilter</strong>模块是环路滤波器模块，<strong>RandomWalkFilter</strong>是它的子模块，该子模块实现的是<strong>随机徘徊序列滤波器</strong>，前者在后者基础上增加Reset值可调的功能。随机徘徊序列滤波器的主体是一个可逆计数器。当有超前脉冲输人到UP端时,计数器上行计数,当有滞后脉冲输入到DN端时,计数器下行计数。如果超前脉冲超过滞后的数目到达计数容量N时,就在+N端输出一个提前脉冲,同时使计数器复位。反之，则在-N端输出一个推后脉冲,同时计数器复位。环路锁定前,鉴相器连续输出超前或滞后脉冲,上行计数器或下行计数器到达满状态后输出提前脉冲或推后脉冲,在这两个脉冲作用下环路逐步进入锁定状态。当环路进入锁定状态后，由噪声引起的超前或滞后脉冲是随机的，而且出现概率基本相等,不会有连续很多个超前或滞后脉冲，因而它们的差值达到计数容量N的可能性极小，这样就可以减小噪声对环路的干扰作用。</p><div style='text-align: center;'><p><img src="/2021/09/23/%E5%85%A8%E6%95%B0%E5%AD%97%E9%94%81%E7%9B%B8%E7%8E%AF/RandomWalkFilter%E6%BB%A4%E6%B3%A2%E5%99%A8%E7%9A%84%E7%BB%93%E6%9E%84.jpg" alt="RandomWalkFilter滤波器的结构"></p></div><h2 id="Freqdivider-v"><a href="#Freqdivider-v" class="headerlink" title="Freqdivider.v"></a>Freqdivider.v</h2><h3 id="模块接口-3"><a href="#模块接口-3" class="headerlink" title="模块接口"></a>模块接口</h3><figure class="highlight verilog"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">module</span> freqdivider(</span><br><span class="line"><span class="keyword">input</span> MainClock;                  </span><br><span class="line"><span class="keyword">input</span> Positive, Negative;    <span class="comment">// 控制输出周期</span></span><br><span class="line"><span class="keyword">output</span> FrequencyOut;               <span class="comment">// 倍频输出</span></span><br><span class="line">);</span><br></pre></td></tr></table></figure><h3 id="功能描述-3"><a href="#功能描述-3" class="headerlink" title="功能描述"></a>功能描述</h3><p>主要功能是基于系统时钟进行分频。系统时钟取决于FPGA硬件型号，一般需要较高的系统时钟。基于由上述鉴相器模块计算得到的输入信号的时钟周期数，计算倍频信号的时钟周期数，产生同步振荡信号。由于存在系统延时，一开始产生的振荡信号与输入信号并不同步，由鉴相器处理使其逐渐达到同步锁定状态。</p><h1 id="功能仿真"><a href="#功能仿真" class="headerlink" title="功能仿真"></a>功能仿真</h1><h2 id="电路逻辑"><a href="#电路逻辑" class="headerlink" title="电路逻辑"></a>电路逻辑</h2><p>使用Quartus完成程序设计，对应的RTL电路逻辑如下图所示。</p><p><img src="/2021/09/23/%E5%85%A8%E6%95%B0%E5%AD%97%E9%94%81%E7%9B%B8%E7%8E%AF/RTL%E9%80%BB%E8%BE%91%E7%94%B5%E8%B7%AF%E5%9B%BE.png" alt="RTL逻辑电路图"></p><h2 id="仿真参数"><a href="#仿真参数" class="headerlink" title="仿真参数"></a>仿真参数</h2><p>系统时钟设置为50MHz，输入信号频率为500KHz，输入信号具有不确定性，即仿真中添加一个随机时延，此处设置为3287ns。</p><h2 id="仿真效果"><a href="#仿真效果" class="headerlink" title="仿真效果"></a>仿真效果</h2><h3 id="同步性能"><a href="#同步性能" class="headerlink" title="同步性能"></a>同步性能</h3><p>波形仿真图如图3-1所示，MainClock为系统时钟，SignalIn为输入信号，SignalOut为输出信号，Lead、Lag分别为鉴相器输出的相位领先和滞后信号，Positive、Negative则对应上述两个信号经过环路滤波器后的输出。Lock是输出锁定信号，置高电平时环路锁定。由仿真波形图可以看出，锁定时间为168300ns ，减去开头加入的输入时延3287ns，实际锁定时间为165013ns，即165μs，锁定后输出与输入信号同频同相。</p><p><img src="/2021/09/23/%E5%85%A8%E6%95%B0%E5%AD%97%E9%94%81%E7%9B%B8%E7%8E%AF/%E7%8E%AF%E8%B7%AF%E9%94%81%E5%AE%9A.png" alt="环路锁定"></p><h3 id="倍频效果"><a href="#倍频效果" class="headerlink" title="倍频效果"></a>倍频效果</h3><p>改变顶层文件（dpll.v）里的参数（parameter）DividerMultiple的值，便可以修改锁相环输出倍频的倍数，可以实现奇倍频和偶倍频。如图所示分别为基于500KHz输入信号产生2倍频、5倍频和20倍频的效果图。。</p><p><img src="/2021/09/23/%E5%85%A8%E6%95%B0%E5%AD%97%E9%94%81%E7%9B%B8%E7%8E%AF/2%E5%80%8D%E9%A2%91.png" alt="2倍频"></p><p><img src="https://s2.loli.net/2021/12/06/xM14OUsGlWbcQ6I.png" alt="5倍频"></p><p><img src="/2021/09/23/%E5%85%A8%E6%95%B0%E5%AD%97%E9%94%81%E7%9B%B8%E7%8E%AF/20%E5%80%8D%E9%A2%91.png" alt="20倍频"></p><h1 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h1><p>结合上述功能仿真，本次设计实现了基于低频率时钟源，倍频产生高频时钟，并且达到高频时钟输出相位锁定、占空比1:1的预期效果。通过本次设计的锁相环路，可以实现在FPGA平台上，锁定未知的较低频输入信号，产生同频同相的任意倍频（频率低于系统时钟频率）输出信号。本设计完全基于Verilog代码实现，程序简单，完全可以满足简单地实现同步倍频信号的场合要求。</p><p> </br></br></br></p><ul><li>end</li></ul>]]>
    </content>
    <id>https://lijinbo.cc/2021/09/23/%E5%85%A8%E6%95%B0%E5%AD%97%E9%94%81%E7%9B%B8%E7%8E%AF/</id>
    <link href="https://lijinbo.cc/2021/09/23/%E5%85%A8%E6%95%B0%E5%AD%97%E9%94%81%E7%9B%B8%E7%8E%AF/"/>
    <published>2021-09-22T16:00:00.000Z</published>
    <summary>
      <![CDATA[<h1 id="概述"><a href="#概述" class="headerlink" title="概述"></a>概述</h1><p>项目的主要目标就是用<strong>Verilog</strong>设计实现一款数字锁相环，基于低频率时钟源，倍频产生高频时钟，并且达到高频时钟输出相位锁定、占空比1:1的预期效果。设计全基于Verilog代码实现，第一阶段实现数字锁相环的基础架构，达到输入输出锁定的效果，第二阶段再进行倍频的实现。并结合<strong>Modelsim</strong>平台进行行为仿真，验证功能的正确性，观测仿真波形图。 </p>
<p><img src="/2021/09/23/%E5%85%A8%E6%95%B0%E5%AD%97%E9%94%81%E7%9B%B8%E7%8E%AF/4e5102c3.png" alt=""></p>]]>
    </summary>
    <title>全数字锁相环的Verilog实现</title>
    <updated>2026-07-19T12:27:07.766Z</updated>
  </entry>
  <entry>
    <author>
      <name>COMBER</name>
    </author>
    <category term="模电原理及应用" scheme="https://lijinbo.cc/categories/%E6%A8%A1%E7%94%B5%E5%8E%9F%E7%90%86%E5%8F%8A%E5%BA%94%E7%94%A8/"/>
    <category term="Buck电路" scheme="https://lijinbo.cc/tags/Buck%E7%94%B5%E8%B7%AF/"/>
    <content>
      <![CDATA[<p>开关电源（Switching  Mode  Power  Supply）即开关稳压电源，是相对于线性稳压电源的一种的新型稳压电源电路，它通过对输出电压实时监测并动态控制开关管导通与断开的时间比值来稳定输出电压。 而Buck电路，也称为DC-DC Buck型降压开关电源电路，电路结构还算简单，通过对开关管的通断控制，将直流电压断续地加到负载上，通过改变占空比改变输出电压平均值，得到需要的输出电压。</p><h1 id="电路拓扑图"><a href="#电路拓扑图" class="headerlink" title="电路拓扑图"></a>电路拓扑图</h1><p><img src="/2021/08/17/Buck%E7%94%B5%E8%B7%AF/Buck%E7%94%B5%E8%B7%AF.png" alt="Buck电路"></p><span id="more"></span><p>其中，Q1是MOS管，也作为开关管，驱动电压一般为PWM波，D1是续流二极管，还有电感L1、电容C1和负载电阻RL。</p><h1 id="工作机理"><a href="#工作机理" class="headerlink" title="工作机理"></a>工作机理</h1><h2 id="开关导通"><a href="#开关导通" class="headerlink" title="开关导通"></a>开关导通</h2><p><img src="/2021/08/17/Buck%E7%94%B5%E8%B7%AF/%E7%94%B5%E6%B5%81%E7%A4%BA%E6%84%8F%E5%9B%BE.png" alt="电流示意图"></p><p>当Q1栅极G为高电平的时候，Q1的D、S极导通，电流方向是VCC经过Q1、L1，经C1和RL流向地，由于电感器的特性，电感会产生一个自感电动势，来阻碍电流通过，同时电感器会储存磁能。此时，流经电感L1的电流线性增加，同时给电容C1充电，给负载RL提供能量。 </p><div style='text-align: center;'><p><img src="/2021/08/17/Buck%E7%94%B5%E8%B7%AF/%E5%BC%80%E5%85%B3%E5%AF%BC%E9%80%9A%E6%97%B6%E7%AD%89%E6%95%88%E7%94%B5%E8%B7%AF.png" alt="开关导通时等效电路"> </p></div><h2 id="开关截止"><a href="#开关截止" class="headerlink" title="开关截止"></a>开关截止</h2><p><img src="/2021/08/17/Buck%E7%94%B5%E8%B7%AF/%E7%94%B5%E6%B5%81%E7%A4%BA%E6%84%8F%E5%9B%BE_2.png" alt="电流示意图"></p><p>当栅极G为低电平的时候，Q1截止，那么流过电感L1的电流就会减小，由于电感器的特性，电感会产生自感电动势阻碍电流减小。那么这个电动势经过滤波电容C1滤波，经过负载RL到地，再经过续流二极管D1构成回路，当电感上的电动势减小或者消失后，电路是通过滤波电容器C1给后级负载供电的。即此时，储能电感L1通过续流二极管D1放电，电感电流线性减少，输出电压靠输出滤波电容C1放电以及减小的电感电流维持 。</p><div style='text-align: center;'><p><img src="/2021/08/17/Buck%E7%94%B5%E8%B7%AF/%E5%BC%80%E5%85%B3%E6%88%AA%E6%AD%A2%E6%97%B6%E7%AD%89%E6%95%88%E7%94%B5%E8%B7%AF.png" alt="开关截止时等效电路"> </p></div><h1 id="我的理解"><a href="#我的理解" class="headerlink" title="我的理解"></a>我的理解</h1><p>经过上述工作过程的分析，不难发现，这种类型的Buck电路的本质就是通过控制开关Q1的导通时间（占空比），来调节储能元件L和C充放电的时间，进而控制输出电压的大小（平均值），当控制信号的占空比越大时，输出电压的瞬间峰值越大，则输出平均值越大，反之，输出电压平均值越小，理想状态下（忽略损耗），则输出电压与输入电压的关系如下式： </p><div style='text-align: center;'><p><img src="https://www.zhihu.com/equation?tex=v_%7BO%7D%3D%5Cfrac%7BT_%7Bon%7D%7D%7BT_%7Bon%7D%7B%2BT_%7Boff%7D%7D%7D*v_%7BI%7D" alt="公式"></p></div><p>其中，Ton表示一个周期内开关闭合的时间，Toff表示一个周期内开关断开的时间，Ton/（Ton+Toff）也就是矩形波的占空比，即一个周期内高电平脉冲宽度与整个周期的比值，亦即输出电压为输入电压与控制信号占空比的乘积 。</p><p>这种通过控制占空比实现降压输出的方式也叫做脉冲宽度调制方式（<a href="https://zhuanlan.zhihu.com/p/35998770">PWM方式</a>），它是一种频率固定而占空比变化的控制方式，相应地，也有脉冲频率调制技术（<a href="https://zhuanlan.zhihu.com/p/35998770">PFM方式</a>），或两者的结合。 </p><h1 id="Buck电路的三种工作模式"><a href="#Buck电路的三种工作模式" class="headerlink" title="Buck电路的三种工作模式"></a>Buck电路的三种工作模式</h1><p>根据能量守恒，在稳态条件下，电感两端电压在一个开关周期内的平均值为0，即<a href="https://baike.baidu.com/item/%E4%BC%8F%E7%A7%92%E5%8E%9F%E5%88%99/3081515">伏秒平衡原理</a>。根据电感电流在一个开关周期内是否连续，有三种工作模式，分别是CCM连续导通模式，BCM临界导通模式和DCM不连续导通模式 </p><h2 id="连续导通模式-CCM"><a href="#连续导通模式-CCM" class="headerlink" title="连续导通模式-CCM"></a>连续导通模式-CCM</h2><h3 id="信号示意图"><a href="#信号示意图" class="headerlink" title="信号示意图"></a>信号示意图</h3><p>　　<a href="http://www.elecfans.com/uploads/allimg/171107/2387123-1G10G50FS36.png"><img src="/2021/08/17/Buck%E7%94%B5%E8%B7%AF/%E5%9B%BE%E5%9B%9B.png" alt="图四"></a></p><h3 id="分析"><a href="#分析" class="headerlink" title="分析"></a>分析</h3><p>根据伏秒平衡原理，CCM模式在稳态情况下，开通周期DT内，电感电压为（Vin-Vout）；关断周期（1-D）*T内，电感电压为Vout，前后两者乘积相等，即：</p><p><code>（Vin-Vout）* D * T=Vout *（1-D）* T</code></p><p>其中，D为占空比，T为开关周期，Vin为输入电压，Vout为输出电压，可以得到：</p><p><code>Vout / Vin = D</code></p><p>由此可见CCM模式下传递函数等于占空比，且和负载电流无关。</p><h2 id="边界导通模式-BCM"><a href="#边界导通模式-BCM" class="headerlink" title="边界导通模式-BCM"></a>边界导通模式-BCM</h2><h3 id="信号示意图-1"><a href="#信号示意图-1" class="headerlink" title="信号示意图"></a>信号示意图</h3><p>　　<img src="/2021/08/17/Buck%E7%94%B5%E8%B7%AF/%E5%9B%BE%E4%BA%94.png" alt="图五"></p><h3 id="分析-1"><a href="#分析-1" class="headerlink" title="分析"></a>分析</h3><p><img src="/2021/08/17/Buck%E7%94%B5%E8%B7%AF/BCM%E6%A8%A1%E5%BC%8F%E5%88%86%E6%9E%90.png" alt="BCM模式分析"></p><h2 id="非连续导通模式-DCM"><a href="#非连续导通模式-DCM" class="headerlink" title="非连续导通模式-DCM"></a>非连续导通模式-DCM</h2><h3 id="信号示意图-2"><a href="#信号示意图-2" class="headerlink" title="信号示意图"></a>信号示意图</h3><p><img src="/2021/08/17/Buck%E7%94%B5%E8%B7%AF/%E5%9B%BE%E5%85%AD.png" alt="图六"></p><h3 id="分析-2"><a href="#分析-2" class="headerlink" title="分析"></a>分析</h3><p>随着负载电流不断下降，电感将进入DCM模式，此时传递函数、电流和电压波形将发生很大变化，该模式下的输出电流纹波也比CCM模式大。因此要想维持电感在CCM模式下，有最小负载电流值的要求。</p><p>稳态情况下，根据伏秒平衡原理有：</p><p><code>（Vin - Vout）* D1 * T = Vout * D2 * T</code></p><p>得</p><p><code>Vout / Vin = D1 / (D1 + D2)</code></p><p>开关管导通、二极管截止的时间长度为D1T；开关管截止、二极管导通的时间长度为D2T；开关管和二极管都截止的时间长度为（1-D1-D2）* T，D2与电路参数有关。</p><p></br></br></br></br></br></br></p><ul><li>end</li></ul>]]>
    </content>
    <id>https://lijinbo.cc/2021/08/17/Buck%E7%94%B5%E8%B7%AF/</id>
    <link href="https://lijinbo.cc/2021/08/17/Buck%E7%94%B5%E8%B7%AF/"/>
    <published>2021-08-16T16:00:00.000Z</published>
    <summary>
      <![CDATA[<p>开关电源（Switching  Mode  Power  Supply）即开关稳压电源，是相对于线性稳压电源的一种的新型稳压电源电路，它通过对输出电压实时监测并动态控制开关管导通与断开的时间比值来稳定输出电压。 而Buck电路，也称为DC-DC Buck型降压开关电源电路，电路结构还算简单，通过对开关管的通断控制，将直流电压断续地加到负载上，通过改变占空比改变输出电压平均值，得到需要的输出电压。</p>
<h1 id="电路拓扑图"><a href="#电路拓扑图" class="headerlink" title="电路拓扑图"></a>电路拓扑图</h1><p><img src="/2021/08/17/Buck%E7%94%B5%E8%B7%AF/Buck%E7%94%B5%E8%B7%AF.png" alt="Buck电路"></p>]]>
    </summary>
    <title>Buck电路是怎么实现降压的?</title>
    <updated>2026-07-19T12:27:07.734Z</updated>
  </entry>
  <entry>
    <author>
      <name>COMBER</name>
    </author>
    <category term="模电原理及应用" scheme="https://lijinbo.cc/categories/%E6%A8%A1%E7%94%B5%E5%8E%9F%E7%90%86%E5%8F%8A%E5%BA%94%E7%94%A8/"/>
    <category term="BJT" scheme="https://lijinbo.cc/tags/BJT/"/>
    <content>
      <![CDATA[<p>要了解一款BJT的参数，最真实且有效的方法无疑是厂家给出的数据规格书（datasheet）。本文以<strong>2N4123</strong>通用型BJT硅基晶体管为例，来了解一下应该如何阅读BJT的数据规格书，从而获取我们需要的相关参数。<a href="https://www.onsemi.com/pub/Collateral/2N4123-D.PDF">点击下载2N4123的数据规格书</a>。 </p><h1 id="总体性能"><a href="#总体性能" class="headerlink" title="总体性能"></a>总体性能</h1><p><img src="/2021/08/02/BJT%E7%9A%84%E7%9B%B4%E6%B5%81%E5%8F%82%E6%95%B0/f7250c69.jpg" alt=""></p><span id="more"></span><p>打开datasheet后，首先看标题，可以看到，这是<strong>2N4123、2N4124</strong>共用的一个datasheet，而且标明管子为<strong>通用型NPN硅基三极管</strong>。然后在在第一页的右侧，厂家给出了管脚识别方法和管体上的文字标记含义。</p><p><img src="/2021/08/02/BJT%E7%9A%84%E7%9B%B4%E6%B5%81%E5%8F%82%E6%95%B0/ae86d230.png" alt=""></p><h2 id="极限性能"><a href="#极限性能" class="headerlink" title="极限性能"></a>极限性能</h2><p>在第一页的主体篇幅部分，数据规格书列出了这个BJT晶体管的所有极限性能，这样做的用处我想应该是让使用者先建立起大体印象，不至于损坏晶体管。</p><p><img src="/2021/08/02/BJT%E7%9A%84%E7%9B%B4%E6%B5%81%E5%8F%82%E6%95%B0/c6c22e6f.png" alt=""></p><p>以下是每项参数的详述：</p><ul><li><p>V<sub>CEO</sub>：基极开路情况下，CE间的击穿电压，在这一栏中，Value一列有两行，上行30V为2N4123的参数；下行25V为2N4124的参数。（后面我们都仅以2N4123的参数为例，不再分2种型号分开罗列描述。）</p></li><li><p>V<sub>CBO</sub>：发射极开路情况下，CB间的集电结结的反向击穿电压，为40V。</p></li><li><p>V<sub>EBO</sub>：集电极开路情况下，BE间发射结的反偏击穿电压，为5V。</p></li><li><p>I<sub>C</sub>-continuous：可承受的最大连续集电极电流，为200mA。</p></li><li><p>P<sub>D</sub>（@T<sub>A</sub>=25℃）：环境温度为25℃时的最大损耗功率（T<sub>A</sub>中A的意思是“Ambient”），典型值为625mW、衰减系数为5mW/℃，这两个是比较重要的参数。</p></li><li><p>P<sub>D</sub>（@T<sub>C</sub>=25℃）：管体表面温度为25℃时的最大损耗功率（T<sub>C</sub>中C的意思是“Surface”），典型值为1.5W，比上面环境温度为25℃时的P<sub>D</sub>值大了近3倍。这个也很好理解，一般来说温度越高，晶体管的性能越差。在晶体管电流较大时，管体表面温度有可能远高于环境温度，所以限制了最大损耗功率的大小。只有在管体表面加装了面积很大且接触良好的散热片时，才能认为管体表面温度近似等于环境温度，而使用这个1.5W的标称值。</p></li><li><p>T<sub>J</sub>, T<sub>stg</sub>：工作温度范围与仓储温度范围，典型值为-55℃ ~ +150℃。</p></li><li><p>R<sub>θJA</sub>：内部PN结到环境之间的热阻，为200℃/W。</p></li><li><p>R<sub>θJC</sub>：内部PN结到管体表面之间的热阻，为83.3℃/W。</p></li></ul><h2 id="最大损耗功率"><a href="#最大损耗功率" class="headerlink" title="最大损耗功率"></a>最大损耗功率</h2><p>由于BJT的CE极间有压降V<sub>CE</sub>、有电流I<sub>C</sub>，所以三极管本身也是要消耗功率的，而且还不小。根据“功率=电压x电流”的公式，三极管的主要功耗产生在C、E极间（BE间和BC间由于基极电流I<sub>B</sub>太小，故可以忽略不记）。</p><p>所以在做设计时，除了要保证V<sub>CE</sub>不能超过上面的V<sub>CEO</sub>、I<sub>C</sub>不能超过上面的I<sub>C</sub>-continuous以外，还要计算损耗功率是否会超限，如下图所示：</p><p><img src="/2021/08/02/BJT%E7%9A%84%E7%9B%B4%E6%B5%81%E5%8F%82%E6%95%B0/add91441.png" alt=""></p><p>在上图中，P<sub>D</sub>功率曲线下方的绿色区域是安全区域，如果超出这个区域，就会导致晶体管损坏。</p><p>衰减系数（Derate above 25℃）5.0mW/℃是指，当温度高于25℃时，每升高1℃，最大损耗功率参数会降低5mW。比如，当环境温度上升到135℃时，本晶体管允许的最大损耗功率P<sub>D</sub>只有：</p><p><img src="/2021/08/02/BJT%E7%9A%84%E7%9B%B4%E6%B5%81%E5%8F%82%E6%95%B0/018a10d3.png" alt=""></p><p>当环境温度上升到125℃时，本晶体管允许的最大损耗功率P<sub>D</sub>更是下降到了：</p><p><img src="/2021/08/02/BJT%E7%9A%84%E7%9B%B4%E6%B5%81%E5%8F%82%E6%95%B0/a1d0c0e7.png" alt=""></p><h1 id="具体性能参数"><a href="#具体性能参数" class="headerlink" title="具体性能参数"></a>具体性能参数</h1><p>从datasheet的第2页开始，就是具体的性能参数表格，下面我们就来一个个表格来看。</p><h2 id="截止性能参数"><a href="#截止性能参数" class="headerlink" title="截止性能参数"></a>截止性能参数</h2><p><img src="/2021/08/02/BJT%E7%9A%84%E7%9B%B4%E6%B5%81%E5%8F%82%E6%95%B0/c288b3b6.png" alt=""></p><ul><li>V<sub>(BR)CEO</sub>：、V<sub>(BR)CBO</sub>、V<sub>(BR)EBO</sub>：这3个参数在前面的总体性能表格中已经出现过，这里只是为了表格完整性再重复罗列一下而已。</li><li>I<sub>CBO</sub>：指在E极开路，CB间加上20V的反偏电压时，集电结的漏电流，为50nA。一般我们可以通过这个参数计算I<sub>CEO</sub>,具体算式为：I<sub>CEO</sub> = <em>β</em> I<sub>CBO</sub>。</li><li>I<sub>EBO</sub>：指在C极开路，EB间加上20V的反偏电压时，发射结的漏电流，为50nA。</li></ul><h2 id="导通性能参数"><a href="#导通性能参数" class="headerlink" title="导通性能参数"></a>导通性能参数</h2><p><img src="/2021/08/02/BJT%E7%9A%84%E7%9B%B4%E6%B5%81%E5%8F%82%E6%95%B0/1da64afe.png" alt=""></p><ul><li>h<sub>FE</sub>：这个就是直流电流放大系数<em>β</em>（至于为什么要写成h<sub>FE</sub>，这个我们在BJT的交流分析中会讲）。这里我们在表格中可以看到，在I<sub>C</sub>的两个不同条件下，测得的放大系数不同。在第一个条件（I<sub>C</sub>=2mA，V<sub>CE</sub>=1.0V）时，直流放大系数<em>β</em>的值在50~150都是合格的；在第二个条件（I<sub>C</sub>=50mA，V<sub>CE</sub>=1.0V）下，放大系数<em>β</em>只有25。</li><li>V<sub>CEsat</sub>：这个就是在共射放大电路中常用的CE间饱和电压，这里是0.3V。测试条件为I<sub>C</sub>=50mA，I<sub>B</sub>=5mA，可以看到，此时直流放大倍数I<sub>C</sub>/I<sub>B</sub>=10，远小于放大系数<em>β</em>正常最小值的50，说明确实是饱和了。</li><li>V<sub>BEsat</sub>：测试条件和上面相同（晶体管处于饱和状态），此时BE间的电压即为V<sub>BEsat</sub>饱和电压（一般电路分析计算时不常用）。</li></ul><h2 id="小信号性能参数"><a href="#小信号性能参数" class="headerlink" title="小信号性能参数"></a>小信号性能参数</h2><p><img src="/2021/08/02/BJT%E7%9A%84%E7%9B%B4%E6%B5%81%E5%8F%82%E6%95%B0/2dc2953e.png" alt=""></p><p>小信号性能参数基本都为交流参数，这个等我们到BJT放大电路的交流分析时再讲。现在唯一需要看一下的是上图中的h<sub>fe</sub>参数（下标fe用小写），即交流电流放大系数<em>β</em><sub>ac</sub>。</p><h1 id="特性曲线"><a href="#特性曲线" class="headerlink" title="特性曲线"></a>特性曲线</h1><p>数据规格书的第三部分是BJT晶体管的特性曲线，其中Figure1-8为交流特性曲线，Figure9-12为直流特性曲线。关于交流特性，我们放到以后再讲，这里我们仅分析Figue9~12的直流特性曲线。</p><h2 id="直流增益"><a href="#直流增益" class="headerlink" title="直流增益"></a>直流增益</h2><p><img src="/2021/08/02/BJT%E7%9A%84%E7%9B%B4%E6%B5%81%E5%8F%82%E6%95%B0/7ea4f86b.png" alt=""></p><p>上图为直流增益h<sub>FE</sub>（即直流<em>β</em>）随I<sub>C</sub>变化的曲线，测试条件为V<sub>CE</sub>=1V。从图中我们可以看到，h<sub>FE</sub>值会受多种因素的影响，h<sub>FE</sub>不仅会随温变化而变化，还会随集电极电流I<sub>C</sub>的变化而变化。</p><p>这里要说明一下的是纵坐标的表示方式，图中“NORMALIZED”称为<strong>“归一化参数”</strong>。即：把在+25℃和I<sub>C</sub>=8mA条件下的h<sub>FE</sub>作为基准h<sub>FE</sub>值，其他条件下的h<sub>FE</sub>值相对于这个基准值的比值。这是个无量纲（即无单位）的参数，常用于表示某值随其他条件的相对变化量。</p><h2 id="饱和电流范围"><a href="#饱和电流范围" class="headerlink" title="饱和电流范围"></a>饱和电流范围</h2><p><img src="/2021/08/02/BJT%E7%9A%84%E7%9B%B4%E6%B5%81%E5%8F%82%E6%95%B0/45463de1.png" alt=""></p><p>上图为描述饱和区的特性曲线，看上去好像很复杂，其实，只要将其顺时针转90度，就是我们熟悉的图形了。</p><p><img src="/2021/08/02/BJT%E7%9A%84%E7%9B%B4%E6%B5%81%E5%8F%82%E6%95%B0/4b5a26d6.png" alt=""></p><p>上图就是我们非常熟悉的共射组态的输出特性曲线了，其中横坐标为V<sub>CE</sub>，纵坐标是I<sub>B</sub>（这个与我们先前学过的图形稍稍不同），其中每条曲线对应于一个I<sub>C</sub>。其实本质是一样的，只不过把我们以前图中的I<sub>B</sub>和I<sub>C</sub>互相调换了一下位置而已。图中橙色部分即为大致的饱和区。</p><h2 id="导通时的电压特性"><a href="#导通时的电压特性" class="headerlink" title="导通时的电压特性"></a>导通时的电压特性</h2><p><img src="/2021/08/02/BJT%E7%9A%84%E7%9B%B4%E6%B5%81%E5%8F%82%E6%95%B0/a6e7bc8e.png" alt=""></p><p>上图是进一步描述一些电压-电流特性的。其中V<sub>CEsat</sub>和V<sub>BEsat</sub>那两条曲线是描述饱和阈值特性的，测试条件为I<sub>C</sub>/I<sub>B</sub>=10，此时的直流放大倍数只有10，远小于正常的h<sub>FE</sub>值了，所以晶体管一定处于饱和状态。最下面那条曲线为饱和阈值电压V<sub>CEsat</sub>随I<sub>C</sub>变化的曲线；最上面那条曲线为饱和阈值电压V<sub>BEsat</sub>随I<sub>C</sub>变化的曲线。</p><p>中间那条曲线为当V<sub>CE</sub>恒定保持1V时，V<sub>BE</sub>和I<sub>C</sub>的对应关系，此曲线其实和饱和没啥关系，只不过是厂家为了方便，把与I<sub>C</sub>对应的各种电压描述曲线都放到同一张图里了。</p><h2 id="温度系数"><a href="#温度系数" class="headerlink" title="温度系数"></a>温度系数</h2><p><img src="/2021/08/02/BJT%E7%9A%84%E7%9B%B4%E6%B5%81%E5%8F%82%E6%95%B0/850fcb38.png" alt=""></p><p>先不看图，单讲温度系数的含义。温度系数θ的意思是指，某些参数的值可能会随温度的变化而变化。比如，饱和阈值电压V<sub>CEsat</sub>，会随环境温度的变化而变化，它的温度系数就定义为：θ<sub>VC</sub>，其在某温度t下的计算式为：</p><p><img src="/2021/08/02/BJT%E7%9A%84%E7%9B%B4%E6%B5%81%E5%8F%82%E6%95%B0/8d02e5c2.png" alt=""></p><p>问题在于，θ<sub>VC</sub>这个值本身也不是固定的，它会随着I<sub>C</sub>的变化而变化。所以，图中上面那组横V字形的曲线组，就用来表示θ<sub>VC</sub>值在25℃以上和25℃以下时θ<sub>VC</sub>与I<sub>C</sub>的对应关系。同理，下面那组曲线表示θ<sub>VB</sub>和I<sub>C</sub>的对应关系。</p><p></br></br></br></p><ul><li>end</li></ul>]]>
    </content>
    <id>https://lijinbo.cc/2021/08/02/BJT%E7%9A%84%E7%9B%B4%E6%B5%81%E5%8F%82%E6%95%B0/</id>
    <link href="https://lijinbo.cc/2021/08/02/BJT%E7%9A%84%E7%9B%B4%E6%B5%81%E5%8F%82%E6%95%B0/"/>
    <published>2021-08-01T16:00:00.000Z</published>
    <summary>
      <![CDATA[<p>要了解一款BJT的参数，最真实且有效的方法无疑是厂家给出的数据规格书（datasheet）。本文以<strong>2N4123</strong>通用型BJT硅基晶体管为例，来了解一下应该如何阅读BJT的数据规格书，从而获取我们需要的相关参数。<a href="https://www.onsemi.com/pub/Collateral/2N4123-D.PDF">点击下载2N4123的数据规格书</a>。 </p>
<h1 id="总体性能"><a href="#总体性能" class="headerlink" title="总体性能"></a>总体性能</h1><p><img src="/2021/08/02/BJT%E7%9A%84%E7%9B%B4%E6%B5%81%E5%8F%82%E6%95%B0/f7250c69.jpg" alt=""></p>]]>
    </summary>
    <title>BJT的直流参数</title>
    <updated>2026-07-19T12:27:07.730Z</updated>
  </entry>
  <entry>
    <author>
      <name>COMBER</name>
    </author>
    <category term="FPGA" scheme="https://lijinbo.cc/categories/FPGA/"/>
    <category term="FPGA器件" scheme="https://lijinbo.cc/tags/FPGA%E5%99%A8%E4%BB%B6/"/>
    <content>
      <![CDATA[<h1 id="Xilinx"><a href="#Xilinx" class="headerlink" title="Xilinx"></a>Xilinx</h1><p>Xilinx 成本优化的产品组合为行业最广，包含 4 个系列，分别面向特定性能优化：</p><ul><li><p>Spartan®-6 FPGA，面向 I/O 优化</p></li><li><p>Spartan-7 FPGA ，面向带有最高性能功耗比的 I/O 优化</p></li><li><p>Artix®-7 FPGA， 面向收发器优化和最高 DSP 带宽</p></li><li><p>Zynq®-7000 可编程 SoC， 面向带有可扩展处理器集成的系统优化</p></li><li><p>面向高 I/O 带宽和 DSP 计算的 Artix UltraScale+™ FPGA</p><span id="more"></span></li></ul><h2 id="器件系列"><a href="#器件系列" class="headerlink" title="器件系列"></a>器件系列</h2><h3 id="ACAP"><a href="#ACAP" class="headerlink" title="ACAP"></a>ACAP</h3><p>自适应计算加速平台</p><h3 id="Zynq-UltraScale"><a href="#Zynq-UltraScale" class="headerlink" title="Zynq UltraScale"></a>Zynq UltraScale</h3><p>Zynq® UltraScale+™ MPSoC 器件不仅提供 64 位处理器可扩展性，同时还将实时控制与软硬件引擎相结合，支持图形、视频、波形与数据包处理。置于包含通用实时处理器和可编程逻辑的平台上，三个不同变体包括双核应用处理器 (CG) 器件、四核应用处理器和 GPU (EG) 器件、以及视频编解码器 (EV) 器件， 为 5G 无线、下一代 ADAS 和工业物联网创造了无限可能性。</p><ul><li>Zynq UltraScale+ CG</li></ul><p>异构处理的双核切入点<br>双核 Arm® Cortex®-A53<br>双核 Arm Cortex-R5F<br>16nm FinFET+ 可编程逻辑</p><ul><li>Zynq UltraScale+ EG</li></ul><p>新一代应用的广泛器件组合<br>四核 Arm Cortex-A53<br>双核 Arm Cortex-R5F<br>16nm FinFET+ 可编程逻辑<br>Arm Mali™-400MP2</p><ul><li>Zynq UltraScale+ EV</li></ul><p>支持多媒体和嵌入式视觉的视频编解码器<br>四核 Arm Cortex-A53<br>双核 Arm Cortex-R5F<br>16nm FinFET+ 可编程逻辑<br>Arm Mali-400MP2<br>H.264/H.265 视频编解码器</p><h1 id="Altera"><a href="#Altera" class="headerlink" title="Altera"></a>Altera</h1><h2 id="器件系列-1"><a href="#器件系列-1" class="headerlink" title="器件系列"></a>器件系列</h2><h3 id="Stratix-Series"><a href="#Stratix-Series" class="headerlink" title="Stratix Series"></a>Stratix Series</h3><p>帮助您交付性能高端、品质优异的产品。</p><h3 id="Arria-Series"><a href="#Arria-Series" class="headerlink" title="Arria Series"></a>Arria Series</h3><p>提供中端的性能和能效。</p><h3 id="MAX-Series"><a href="#MAX-Series" class="headerlink" title="MAX Series"></a>MAX Series</h3><p>采用独特的非易失性架构，并提供市场上的最优价<br>值。</p><h3 id="Cyclone-Series"><a href="#Cyclone-Series" class="headerlink" title="Cyclone Series"></a>Cyclone Series</h3><p>专为满足您的低功耗、成本敏感型设计需求而打<br>造。</p><h3 id="FPGA平台"><a href="#FPGA平台" class="headerlink" title="FPGA平台"></a>FPGA平台</h3><p>英特尔@ FPGA平台由英特尔”FPGA可编程加速卡和<br>SmartNIC组成。</p>]]>
    </content>
    <id>https://lijinbo.cc/2021/06/22/fpga1/</id>
    <link href="https://lijinbo.cc/2021/06/22/fpga1/"/>
    <published>2021-06-21T16:00:00.000Z</published>
    <summary>
      <![CDATA[<h1 id="Xilinx"><a href="#Xilinx" class="headerlink" title="Xilinx"></a>Xilinx</h1><p>Xilinx 成本优化的产品组合为行业最广，包含 4 个系列，分别面向特定性能优化：</p>
<ul>
<li><p>Spartan®-6 FPGA，面向 I/O 优化</p>
</li>
<li><p>Spartan-7 FPGA ，面向带有最高性能功耗比的 I/O 优化</p>
</li>
<li><p>Artix®-7 FPGA， 面向收发器优化和最高 DSP 带宽</p>
</li>
<li><p>Zynq®-7000 可编程 SoC， 面向带有可扩展处理器集成的系统优化</p>
</li>
<li><p>面向高 I/O 带宽和 DSP 计算的 Artix UltraScale+™ FPGA</p>]]>
    </summary>
    <title>FPGA平台与器件</title>
    <updated>2026-07-18T15:00:26.326Z</updated>
  </entry>
  <entry>
    <author>
      <name>COMBER</name>
    </author>
    <category term="单片机原理和应用" scheme="https://lijinbo.cc/categories/%E5%8D%95%E7%89%87%E6%9C%BA%E5%8E%9F%E7%90%86%E5%92%8C%E5%BA%94%E7%94%A8/"/>
    <category term="串行通信" scheme="https://lijinbo.cc/tags/%E4%B8%B2%E8%A1%8C%E9%80%9A%E4%BF%A1/"/>
    <category term="UART" scheme="https://lijinbo.cc/tags/UART/"/>
    <category term="IIC" scheme="https://lijinbo.cc/tags/IIC/"/>
    <category term="SPI" scheme="https://lijinbo.cc/tags/SPI/"/>
    <content>
      <![CDATA[<h1 id="概述"><a href="#概述" class="headerlink" title="概述"></a>概述</h1><h2 id="UART（Universal-Asynchronous-Receive-Transmitter）"><a href="#UART（Universal-Asynchronous-Receive-Transmitter）" class="headerlink" title="UART（Universal Asynchronous Receive Transmitter）"></a>UART（Universal Asynchronous Receive Transmitter）</h2><p>通用异步收发器，即我们经常所说的串口，基本都用于调试。UART通信方式需要两根数据线<strong>RX</strong>、<strong>TX</strong>和地线<strong>GND</strong>。TX是用来发送数据，RX是用来接收数据，因为有两根数据线，收和发可以同时进行，所以它是全双工通信。</p><h2 id="IIC（Inter-Integrated-Circuit）"><a href="#IIC（Inter-Integrated-Circuit）" class="headerlink" title="IIC（Inter Integrated Circuit）"></a>IIC（Inter Integrated Circuit）</h2><p>IIC通信方式需要一根时钟线<strong>SCL</strong>和数据线<strong>SDA</strong>，由于其只有一根数据线，只能进行分时收发，所以是半双工通信，两条线上可以挂载许多设备，不同的设备以不同的IIC地址来区分。</p><h2 id="SPI（Serial-Peripheral-Interface-）"><a href="#SPI（Serial-Peripheral-Interface-）" class="headerlink" title="SPI（Serial Peripheral Interface,）"></a>SPI（Serial Peripheral Interface,）</h2><p>串行外设接口，是摩托罗拉开发的全双工同步串行总线；SPI 接口由<strong>SDI</strong>（串行数据输入），<strong>SDO</strong>（串行数据输出），<strong>SCK</strong>（串行移位时钟），<strong>CS</strong>（从使能信号）四种信号构成，如没有CS 信号，则只能存在一个从设备，主设备通过产生移位时钟来发起通讯。通讯时，数据由SDO 输出，SDI 输入，数据在时钟的上升或下降沿由SDO 输出，在紧接着的下降或上升沿由SDI 读入，这样经过8/16 次时钟的改变，完成8/16 位数据的传输。</p><span id="more"></span><h1 id="工作方式"><a href="#工作方式" class="headerlink" title="工作方式"></a>工作方式</h1><h2 id="UART"><a href="#UART" class="headerlink" title="UART"></a>UART</h2><h3 id="时序图"><a href="#时序图" class="headerlink" title="时序图"></a>时序图</h3><h3 id="工作原理"><a href="#工作原理" class="headerlink" title="工作原理"></a>工作原理</h3><h4 id="发送数据过程"><a href="#发送数据过程" class="headerlink" title="发送数据过程"></a>发送数据过程</h4><p>空闲状态，线路处于高电位；当收到发送数据指令后，拉低线路一个数据位的时间 T，接着数据按低位到高位依次发送，数据发送完毕后，接着发送奇偶校验位和停止位（停止位为高电位），一帧数据发送结束。</p><h4 id="接收数据过程"><a href="#接收数据过程" class="headerlink" title="接收数据过程"></a>接收数据过程</h4><p>空闲状态，线路处于高电位；当检测到线路的下降沿（线路电位由高电位变为低电位）时说明线路有数据传输，按照约定的波特率从低位到高位接收数据，数据接收完毕后，接着接收并比较奇偶校验位是否正确，如果正确则通知后续设备准备接收数据或存入缓存。由于UART是异步传输，没有传输同步时钟。为了能保证数据传输的正确性，UART 采用 16 倍数据波特率的时钟进行采样。每个数据有 16 个时钟采样，取中间的采样值，以保证采样不会滑码或误码。一般 UART 一帧的数据位数为 8，这样即使每个数据有一个时钟的误差，接收端也能正确地采样到数据。</p><h4 id="接收数据时序"><a href="#接收数据时序" class="headerlink" title="接收数据时序"></a>接收数据时序</h4><p>当检测到数据的下降沿时，表明线路上有数据进行传输，这时计数器CNT开始计数，当计数器为24=16+8 时，采样的值为第0位数据；当计数器的值为40时，采样的值为第1位数据，依此类推，进行后面6个数据的采样。如果需要进行奇偶校验，则当计数器的值为152时，采样的值即为奇偶位；当计数器的值为 168 时，采样的值为”1”表示停止位，一帧数据接收完成。一个标准的10位异步串行通信协议(包含1个起始位、1个停止位和8个数据位)收发时序，如下：</p><h2 id="SPI"><a href="#SPI" class="headerlink" title="SPI"></a>SPI</h2><h3 id="接口"><a href="#接口" class="headerlink" title="接口"></a>接口</h3><p>SPI通信以主从方式工作，需要至少3根线，存在多个从设备时，则需要第4根线CS来选择从设备。</p><table><thead><tr><th>SDO</th><th>主设备数据输出，从设备数据输入</th></tr></thead><tbody><tr><td>SDI</td><td>主设备数据输入，从设备数据输出</td></tr><tr><td>SCLK</td><td>时钟信号，由主设备产生</td></tr><tr><td>CS</td><td>从设备使能信号，由主设备控制</td></tr></tbody></table><h3 id="工作原理-1"><a href="#工作原理-1" class="headerlink" title="工作原理"></a>工作原理</h3><p>SPI是串行同步通讯协议，数据是一位一位的传输的。这就是SCLK时钟线存在的原因，SCLK提供同步的时钟脉冲，SDI，SDO则基于同步时钟完成数据传输。数据在时钟上升沿或下降沿时改变，在紧接着的下降沿或上升沿被读取，完成一位数据传输。因此，至少需要8次时钟信号的改变（上升沿和下降沿为一次），才能完成8位数据的传输。</p><h3 id="特点"><a href="#特点" class="headerlink" title="特点"></a>特点</h3><p>SCLK信号线只由主设备控制，从设备不能控制信号线，在基于SPI的通信中，至少有一个主控设备。这样的传输方式有一个优点，SPI允许数据一位一位的传送，甚至允许暂停，因为SCLK时钟线由主控设备控制，当没有时钟跳变时，从设备不采集或传送数据。也就是说，主设备通过对SCLK时钟线的控制可以完成对通讯的控制。另外，SPI是全双工同步数据传输，数据传输速率很高，可达到50MHz。</p><p>但是，SPI接口有一个缺点，其没有指定的流控制，没有应答机制确认是否接收到数据。</p><h2 id="IIC"><a href="#IIC" class="headerlink" title="IIC"></a>IIC</h2><p>IIC 接口的协议里面包括设备地址信息，IIC总线是一个真正的多主机总线，可以同一总线上连接多个从设备，通过应答来互通数据及命令。</p><h3 id="数据协议"><a href="#数据协议" class="headerlink" title="数据协议"></a>数据协议</h3><p>假设A给B发数据，A-&gt;SCL接B-&gt;SCL, A-&gt;SDA接B-&gt;SDA。起初SDA和SCL上的电平都为高电平，接着A先把SDA拉低，等SDA变为低电平后再把SCL拉低，以上两个动作构成了IIC协议的起始位，此时SDA就可以发送数据了。与此同时，SCL发送一定周期的脉冲（周期和PCLK有关，一般会在IIC的控制寄存器中设置）。SDA发送数据和SCL发送脉冲要符合的关系是：SDA必须在SCL是高电平时保持有效，在SCL是低电平时发送下一位，而SCL会在上升沿对SDA进行采样。规定一次必须传8位数据，8位数据传输结束后A释放SDA，但SCL会再发一个脉冲，这会触发B通过将SDA置为低电平表示确认。最后SCL先变为高电平，SDA再变为高电平，这就构成了是IIC协议的结束标志。如果B没有将SDA置为低电平，则A停止发送下一帧数据。</p><p>IIC总线上的每个设备都有唯一地址，数据包传输时先发送地址位，接着才发送数据。一个地址字节由7个地址位和1个指示位组成，总共可以挂载128个设备。指示位是0表示写操作，1表示读操作。还有10位寻址模式，使用两个字节来保存地址，第一个字节的最低两位和第二个字节的8位合起来构成10位地址。</p><div style='text-align: center;'><p><img src="/2021/06/15/%E4%B8%B2%E8%A1%8C%E9%80%9A%E4%BF%A1%E6%96%B9%E5%BC%8F/%E5%AE%8C%E6%95%B4%E6%95%B0%E6%8D%AE%E4%BC%A0%E8%BE%93.jpg" alt="完整数据传输"> </p></div><h3 id="特点-1"><a href="#特点-1" class="headerlink" title="特点"></a>特点</h3><ol><li>需严格按照时序图的要求进行操作；</li><li>若与口线上带内部上拉电阻的单片机接口连接，可以不外加上拉电阻；</li><li>程序中为配合相应的传输速率，在对口线操作的指令后可用NOP指令加一定的延时；</li><li>为了减少意外的干扰信号将EEPROM内的数据改写可用外部写保护引脚（如果有），或者在EEPROM内部没有用的空间写入标志字，每次上电时或复位时做一次检测，判断EEPROM是否被意外改写。</li><li>对IIC总线的一次操作完之后，需要等待一段时间才能进行第二次操作，否则是启动不了总线的；</li><li>在时钟线（SCL）为高电平的时候，一定不能动数据线（SDA）状态，除非是启动或者结束总线；</li><li>IIC传输速率有限，标准模式下可达到100Kbps，快速模式下可达到400Kbps，高速模式下达到4Mbps，不能实现全双工，不适合传输大量数据。</li></ol><h1 id="区别和联系"><a href="#区别和联系" class="headerlink" title="区别和联系"></a>区别和联系</h1><h3 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h3><ol><li><p><strong>SPI总线</strong>由三条信号线组成：串行时钟(SCLK)、串行数据输出(SDO)、串行数据输入(SDI)。SPI总线可以<strong>实现多个SPI设备互相连接</strong>。提供SPI串行时钟的SPI设备为SPI主机或主设备(Master)，其他设备为SPI从机或从设备(Slave)。主从设备间可以实现全双工通信，当有多个从设备时，还可以增加一条从设备选择线（片选）。</p><blockquote><p>如果用通用IO口模拟SPI总线，必须要有一个输出口(SDO)，一个输入口(SDI)，另一个口则视实现的设备类型而定，如果要实现主从设备，则需输入输出口，若只实现主设备，则需输出口即可，若只实现从设备，则只需输入口即可。</p></blockquote></li><li><p><strong>IIC总线</strong>是双向、两线(SCL、SDA)、串行、多主控（multi-master）的接口标准，具有<strong>总线仲裁机制</strong>，非常适合在器件之间进行<strong>近距离、非经常性的数据通信</strong>。在它的协议体系中，传输数据时都会带上目的设备的设备地址，因此可以<strong>实现设备组网</strong>。</p><blockquote><p>如果用通用IO口模拟IIC总线，并实现双向传输，则需一个输入输出口(SDA)，另外还需一个输出口(SCL)。</p></blockquote></li><li><p><strong>UART总线</strong>是<strong>异步串口</strong>，因此一般比前两种同步串口的<strong>结构要复杂</strong>很多，一般由波特率产生器(产生的波特率等于传输波特率的16倍)、UART接收器、UART发送器组成，硬件上由两根线，一根用于发送，一根用于接收。</p><blockquote><p>显然，如果用通用IO口模拟UART总线，则需一个输入口，一个输出口。</p></blockquote></li></ol><h3 id="比较"><a href="#比较" class="headerlink" title="比较"></a>比较</h3><ol><li><p>SPI和UART可以实现全双工，但IIC不行；</p></li><li><p>IIC线更少，我觉得比UART、SPI更为强大，但是技术上也更加麻烦些，因为IIC需要有<strong>双向IO</strong>的支持，而且使用上拉电阻，但是抗干扰能力较弱，一般用于同一板卡上芯片之间的通信，较少用于远距离通信。SPI实现则要简单一些，UART需要<strong>固定的波特率</strong>，就是说两位数据的间隔要相等，而SPI则无所谓，因为它是有时钟的协议；</p></li><li><p>IIC的速度比SPI慢一点，协议比SPI复杂一点，但是连线也比标准的SPI要少；</p></li><li><p>UART一帧可以传5/6/7/8位，IIC必须是8位；</p></li><li><p>SPI用<strong>片选信号</strong>选择从机，IIC用<strong>地址</strong>选择从机。</p><p>… …</p><p></br></br></br></p><ul><li>end</li></ul></li></ol>]]>
    </content>
    <id>https://lijinbo.cc/2021/06/15/%E4%B8%B2%E8%A1%8C%E9%80%9A%E4%BF%A1%E6%96%B9%E5%BC%8F/</id>
    <link href="https://lijinbo.cc/2021/06/15/%E4%B8%B2%E8%A1%8C%E9%80%9A%E4%BF%A1%E6%96%B9%E5%BC%8F/"/>
    <published>2021-06-14T16:00:00.000Z</published>
    <summary>
      <![CDATA[<h1 id="概述"><a href="#概述" class="headerlink" title="概述"></a>概述</h1><h2 id="UART（Universal-Asynchronous-Receive-Transmitter）"><a href="#UART（Universal-Asynchronous-Receive-Transmitter）" class="headerlink" title="UART（Universal Asynchronous Receive Transmitter）"></a>UART（Universal Asynchronous Receive Transmitter）</h2><p>通用异步收发器，即我们经常所说的串口，基本都用于调试。UART通信方式需要两根数据线<strong>RX</strong>、<strong>TX</strong>和地线<strong>GND</strong>。TX是用来发送数据，RX是用来接收数据，因为有两根数据线，收和发可以同时进行，所以它是全双工通信。</p>
<h2 id="IIC（Inter-Integrated-Circuit）"><a href="#IIC（Inter-Integrated-Circuit）" class="headerlink" title="IIC（Inter Integrated Circuit）"></a>IIC（Inter Integrated Circuit）</h2><p>IIC通信方式需要一根时钟线<strong>SCL</strong>和数据线<strong>SDA</strong>，由于其只有一根数据线，只能进行分时收发，所以是半双工通信，两条线上可以挂载许多设备，不同的设备以不同的IIC地址来区分。</p>
<h2 id="SPI（Serial-Peripheral-Interface-）"><a href="#SPI（Serial-Peripheral-Interface-）" class="headerlink" title="SPI（Serial Peripheral Interface,）"></a>SPI（Serial Peripheral Interface,）</h2><p>串行外设接口，是摩托罗拉开发的全双工同步串行总线；SPI 接口由<strong>SDI</strong>（串行数据输入），<strong>SDO</strong>（串行数据输出），<strong>SCK</strong>（串行移位时钟），<strong>CS</strong>（从使能信号）四种信号构成，如没有CS 信号，则只能存在一个从设备，主设备通过产生移位时钟来发起通讯。通讯时，数据由SDO 输出，SDI 输入，数据在时钟的上升或下降沿由SDO 输出，在紧接着的下降或上升沿由SDI 读入，这样经过8/16 次时钟的改变，完成8/16 位数据的传输。</p>]]>
    </summary>
    <title>串行通信方式之UART、IIC、SPI的区别和特点</title>
    <updated>2026-07-19T12:27:07.756Z</updated>
  </entry>
  <entry>
    <author>
      <name>COMBER</name>
    </author>
    <category term="模电原理及应用" scheme="https://lijinbo.cc/categories/%E6%A8%A1%E7%94%B5%E5%8E%9F%E7%90%86%E5%8F%8A%E5%BA%94%E7%94%A8/"/>
    <category term="BJT" scheme="https://lijinbo.cc/tags/BJT/"/>
    <content>
      <![CDATA[<h1 id="BJT实现逻辑门"><a href="#BJT实现逻辑门" class="headerlink" title="BJT实现逻辑门"></a>BJT实现逻辑门</h1><p>BJT晶体管可以实现逻辑门，事实上，在场效应管（FET）被发明用于集成电路以前，各种逻辑门芯片中的电路就是用BJT晶体管来实现的。最早人们使用二极管与BJT组合来实现逻辑门，称为<strong>二极管-晶体管逻辑</strong>（Diode-Transistor Logic），简称<strong>DTL</strong>；后来改进为全部用BJT晶体管来实现逻辑门，称为<strong>晶体管-晶体管逻辑</strong>（Transistor-Transistor Logic），简称<strong>TTL</strong>。早期广为人知的TTL电平，就是基于这种用BJT晶体管实现的逻辑门。TTL的优点是响应速度比较快，缺点是功耗较大，所以后来基本被功耗更低的场效应管取代。</p><p>我在这里梳理了几个最简单的逻辑门的实现——反相器、或非门、与非门，主要用来巩固概念，也便于区分BJT在逻辑电路和放大电路上应用的区别。即放大电路中，BJT都工作于放大区，而在用BJT实现逻辑门时，却要使BJT工作在饱和区和截止区，而不能使用放大区，这个是逻辑电路和放大电路的在使用BJT时的根本区别。</p><span id="more"></span><h2 id="反相器"><a href="#反相器" class="headerlink" title="反相器"></a>反相器</h2><p>反相器的功能很简单，就是将输入的电平反向输出：输入高电平——输出低电平，输入低电平——输出高电平。下面是反相器的实现电路：</p><p><img src="/2021/06/11/BJT%E7%9A%84%E5%BA%94%E7%94%A8/cc5a02c6.png" alt=""></p><p>在作逻辑分析时，我们一般做如下近似：将V<sub>BE</sub>的导通值视为0.7V，将典型值为0.1V-0.3V的饱和电压V<sub>CEsat</sub>近似视为0.2V。</p><p>下面是反相器电路工作原理：</p><ul><li><p>当V<sub>i</sub>输入为0V时，BJT截止，V<sub>o</sub>输出电平即为5V。</p></li><li><p>当V<sub>i</sub>输入为5V时，BJT的CE端导通，产生电流I<sub>C</sub>，若此时BJT处于饱和区，V<sub>CE</sub>近似可视为饱和电压0.2V，此时输出电平Vo即为0.2V。</p></li></ul><p>这个电路的关键点在于如何选取合适的R<sub>B</sub>与R<sub>C</sub>值以确保BJT在导通时确实工作于饱和区。一般可以先根据外部负载条件定出一个符合输出阻抗要求的R<sub>C</sub>，然后再根据饱和要求，用公式推算出能使BJT进入临界饱和的大致R<sub>B</sub>值，再加点余量。最后验证在高电平输入条件下，BJT在此R<sub>B</sub>配置下是否确实工作于饱和区。具体方法可参看下面的例题：</p><p><strong>例题</strong>：在下图的反相器中，已知 <em>β=100</em>，根据外部负载匹配，要求R<sub>C</sub>为500Ω，请选取合适的R<sub>B</sub>值使反相器能正常工作。</p><p><img src="/2021/06/11/BJT%E7%9A%84%E5%BA%94%E7%94%A8/eb7400e2.png" alt=""></p><p><strong>解：</strong>先计算出，在这个R<sub>C</sub>条件下，当BJT处于临界饱和时的I<sub>Csat</sub>值：</p><p><img src="/2021/06/11/BJT%E7%9A%84%E5%BA%94%E7%94%A8/c3df4b93.png" alt=""></p><p>​      然后计算临界饱和时的I<sub>Bsat</sub>值（当处于临界饱和时，<em>β</em>仍视为100）：</p><p><img src="/2021/06/11/BJT%E7%9A%84%E5%BA%94%E7%94%A8/0cd357df.png" alt=""></p><p>​      使此I<sub>Bsat</sub>成立的R<sub>Bsat</sub>为：</p><p><img src="/2021/06/11/BJT%E7%9A%84%E5%BA%94%E7%94%A8/ce6c0947.png" alt=""></p><p>​      为使BJT进入更深度的饱和，我们选取R<sub>B</sub>为比R<sub>Bsat</sub>更小的值，假定选取为20kΩ。</p><p><strong>验证：</strong>当R<sub>B</sub>为20kΩ时，I<sub>B</sub>为：</p><p><img src="/2021/06/11/BJT%E7%9A%84%E5%BA%94%E7%94%A8/c140bb33.png" alt=""></p><p>​      此时电流放大倍数<em>β</em>为：</p><p><img src="/2021/06/11/BJT%E7%9A%84%E5%BA%94%E7%94%A8/16161d20.png" alt=""></p><p>​      可知，在此R<sub>B</sub>值下，BJT导通时确实处于饱和区，原假设正确。</p><h2 id="或非门"><a href="#或非门" class="headerlink" title="或非门"></a>或非门</h2><p>或非门BJT实现电路和输入输出真值表如下图所示（其中1表示高电平，0表示低电平）：</p><p><img src="/2021/06/11/BJT%E7%9A%84%E5%BA%94%E7%94%A8/c0178eb6.png" alt=""></p><p>下面是或非门电路工作原理：</p><ul><li><p>当V<sub>i1</sub>和V<sub>i2</sub>输入都为0V时，晶体管Q1和Q2都截止，V<sub>o</sub>输出电平为5V。</p></li><li><p>当V<sub>i1</sub>输入为5V、V<sub>i2</sub>输入为0V时，晶体管Q1导通、Q2截止，由于Q1工作于饱和区，V<sub>CE1</sub>=V<sub>CEsat</sub>≈0.2V，故V<sub>o</sub>输出电平为0.2V。</p></li><li><p>同样的，当V<sub>i2</sub>输入为5V时、V<sub>i1</sub>输入为0V时，晶体管Q2导通、Q1截止，V<sub>CE2</sub>=V<sub>CEsat</sub>≈0.2V，故V<sub>o</sub>输出电平为0.2V。</p></li><li><p>当V<sub>i1</sub>和V<sub>i2</sub>都输入0V时，晶体管Q1和Q2都导通，V<sub>CE1</sub>=V<sub>CE2</sub>=V<sub>CEsat</sub>≈0.2V，故V<sub>o</sub>输出电平为0.2V。</p></li></ul><p>关于如何配置R<sub>B1</sub>、R<sub>B2</sub>、R<sub>C</sub>的值使BJT晶体管工作于饱和区，这个和前面反相器的计算方法是类似的。</p><h2 id="与非门"><a href="#与非门" class="headerlink" title="与非门"></a>与非门</h2><p>与非门的实现需要二极管的配合，其实现电路和真值表如下图所示：</p><p><img src="/2021/06/11/BJT%E7%9A%84%E5%BA%94%E7%94%A8/2905840d.png" alt=""></p><p>下面是与非门电路工作原理：</p><ul><li><p>当V<sub>i1</sub>和V<sub>i2</sub>输入中有任一个为0V时，输入二极管D<sub>i1</sub>或D<sub>i2</sub>就会导通，此时V<sub>1</sub>点的电压即为二极管的导通阈值电压0.7V。这个电压无法使右边的D<sub>1</sub>和Q<sub>1</sub>都导通，因为若要使D<sub>1</sub>和Q<sub>1</sub>的发射结都导通，V<sub>B</sub>点的电压起码需要0.7V，而V<sub>1</sub>点的电压需要0.7+0.7=1.4V。而在V<sub>1</sub>只有0.7V的情况下，右边的D<sub>1</sub>和Q<sub>1</sub>的发射结每个只能分到0.35V左右的电压，故D<sub>1</sub>和Q<sub>1</sub>都截止，输出V<sub>o</sub>保持5V的高电平。</p></li><li><p>当V<sub>i1</sub>和V<sub>i2</sub>输入全都为5V时，输入二极管D<sub>i1</sub>和D<sub>i2</sub>全都截止，此时V<sub>CC</sub>会使R<sub>1</sub>、D<sub>1</sub>和Q<sub>1</sub>形成通路，V<sub>B</sub>点的电压为0.7V，V<sub>1</sub>点的电压为1.4V。由于Q<sub>1</sub>导通时工作于饱和状态，故输出V<sub>o</sub>为V<sub>CEsat</sub>约等于0.2V。</p></li></ul><p>至于如何配置R<sub>1</sub>、R<sub>B</sub>、R<sub>C</sub>，原理和前面是一样的——根据输出阻抗匹配先定R<sub>C</sub>，然后计算为使Q<sub>1</sub>进入饱和区的R<sub>1</sub>，和反相器的计算方法也是类似的。R<sub>B</sub>称作下拉电阻，其主要作用是当Q<sub>1</sub>从饱和状态切换到截止状态时，使基区过剩的少数载流子有个渠道流掉，以减少切换开关时间。</p><h2 id="关于TTL"><a href="#关于TTL" class="headerlink" title="关于TTL"></a>关于TTL</h2><p>​      在上面电路中，我们用<strong>DTL</strong>（二极管-晶体管逻辑）实现了与非门。如果要用传说中的<strong>TTL</strong>（晶体管-晶体管逻辑）又应该怎么实现呢。</p><p>仍以上面的与非门为例，假设先去掉D<sub>i2</sub>，那么，在图中两个背靠背的二极管D<sub>i1</sub>和D<sub>1</sub>，其实可以看成是一个NPN型三极管，如下图所示：</p><p><img src="/2021/06/11/BJT%E7%9A%84%E5%BA%94%E7%94%A8/22af04b8.png" alt=""></p><p>在分立元器件的BJT晶体管中，C极和E极的掺杂浓度是不对称的，所以分立元器件中不能像上图这样等效，但是在制作集成电路芯片时，是可以在片上做成像上面右图那样的对称管的。而且，在集成电路制作时还可以加入多个发射极，如下图所示：</p><p><img src="/2021/06/11/BJT%E7%9A%84%E5%BA%94%E7%94%A8/19de9c44.png" alt=""></p><p>如此，就实现了一个二输入与非门的TTL电路。如果要实现n个输入的与非门，还可以加入n个发射极。当然，这种多发射极的BJT晶体管只能在集成电路芯片中实现，分立元器件的话是没有这种器件的。</p><h1 id="BJT实现开关电路"><a href="#BJT实现开关电路" class="headerlink" title="BJT实现开关电路"></a>BJT实现开关电路</h1><h2 id="基本用法"><a href="#基本用法" class="headerlink" title="基本用法"></a>基本用法</h2><p>用BJT晶体管实现开关功能是经常会用到的实用电路。和逻辑门电路类似，当BJT用于开关电路时，也只工作于饱和区和截止区。开关功能的实现电路如下图所示，负载可以是发光二极管、电动机等等。</p><p><img src="/2021/06/11/BJT%E7%9A%84%E5%BA%94%E7%94%A8/6331672a.png" alt=""></p><p>开关电路的工作原理如下：</p><ul><li>当V<sub>i</sub>输入0V时，晶体管截止，负载R<sub>L</sub>上没有电流通过；</li><li>当V<sub>i</sub>输入高电平时（一般可等于VCC，也可以定义其他电平值），晶体管导通且进入饱和状态，负载R<sub>L</sub>上有电流通过，并且负载上的电压约等于V<sub>CC</sub>-V<sub>CEsat</sub>。</li></ul><p>开关电路的R<sub>B</sub>值的设计思路也和前面逻辑门相似，也是根据负载R<sub>L</sub>的实际情况，计算出能使晶体管进入饱和区的R<sub>B</sub>，然后再代入验算结果，如以下例题所示：</p><p><strong>例题</strong>：在下面的开关电路中，V<sub>CC</sub>=12V，电动机负载的有效电阻为R<sub>L</sub>=5Ω，晶体管的<em>β</em>=100，要求V<sub>i</sub>的开启电压为5V，试求：（1）能使电路工作的R<sub>B</sub>；（2）负载上的电流I<sub>L</sub>和负载功耗P<sub>L</sub>；（3）晶体管本身的耗损功率。</p><p><img src="/2021/06/11/BJT%E7%9A%84%E5%BA%94%E7%94%A8/1ac4e6f7.png" alt=""></p><p><strong>解：</strong>（1）当晶体管临界饱和时：</p><p><img src="/2021/06/11/BJT%E7%9A%84%E5%BA%94%E7%94%A8/9b094927.png" alt=""></p><p>​      此时临界饱和电流I<sub>Csat</sub>为：</p><p><img src="/2021/06/11/BJT%E7%9A%84%E5%BA%94%E7%94%A8/5721891a.png" alt=""></p><p>​      然后计算临界饱和时的I<sub>Bsat</sub>值（当处于临界饱和时，<em>β</em>仍视为100）：</p><p><img src="/2021/06/11/BJT%E7%9A%84%E5%BA%94%E7%94%A8/52f0f62d.png" alt=""></p><p>​      使此I<sub>Bsat</sub>成立的R<sub>Bsat</sub>为：</p><p><img src="/2021/06/11/BJT%E7%9A%84%E5%BA%94%E7%94%A8/f7753a6b.png" alt=""></p><p>为使BJT进入更深度的饱和，我们选取R<sub>B</sub>为比R<sub>Bsat</sub>更小的值，假定选取为100Ω。</p><p><strong>验证：</strong>当R<sub>B</sub>为100Ω时，I<sub>B</sub>为：</p><p><img src="/2021/06/11/BJT%E7%9A%84%E5%BA%94%E7%94%A8/70e9eab3.png" alt=""></p><p>​      此时电流放大倍数为：</p><p><img src="/2021/06/11/BJT%E7%9A%84%E5%BA%94%E7%94%A8/ef0ae222.png" alt=""></p><p>​      可知，在此R<sub>B</sub>值下，当V<sub>i</sub>输入5V使BJT导通时晶体管确实处于饱和区，原假设正确。</p><p>（2）当晶体管饱和时，负载电流I<sub>L</sub>为：</p><p><img src="/2021/06/11/BJT%E7%9A%84%E5%BA%94%E7%94%A8/3a48ddbb.png" alt=""></p><p>​      负载上的功耗P<sub>L</sub>为：</p><p><img src="/2021/06/11/BJT%E7%9A%84%E5%BA%94%E7%94%A8/2b42bd42.png" alt=""></p><p>（3）晶体管上的耗损功率P<sub>D</sub>为：</p><p><img src="/2021/06/11/BJT%E7%9A%84%E5%BA%94%E7%94%A8/e5e9a0ad.png" alt=""></p><p>​      可以看到，晶体管上的耗损功率P<sub>D</sub>和负载功率P<sub>L</sub>比起来还是很小的。 </p><p>（4）补充说明：</p><p>本例中，负载为电动机，一般对于这种含有电感的负载（电动机、继电器线圈等），用晶体管直接去关断比较危险，因为当电感中的电流突变时，电感会产生非常大的感生电动势，严重时可能会超过晶体管的击穿电压而使晶体管损坏。</p><p>所以一般的处理方法是在含有电感的负载旁边并联一个反向二极管，从而使得当晶体管关断时，电感中的剩余电流能够有回路泄掉，而不至于突变产生高压，如下图所示：</p><p><img src="/2021/06/11/BJT%E7%9A%84%E5%BA%94%E7%94%A8/242a1c30.png" alt=""></p><h2 id="开关特性"><a href="#开关特性" class="headerlink" title="开关特性"></a>开关特性</h2><p>由于有内部PN结和少数载流子的存在，所以和二极管一样，BJT晶体管在导通和关断时也不是瞬间完成的，而是有一定的延迟时间，如下图所示：</p><p><img src="/2021/06/11/BJT%E7%9A%84%E5%BA%94%E7%94%A8/7907bfd7.png" alt=""></p><p>主要参数：</p><ul><li><p>td：延迟时间（delay time），当基极输入变为高电平后，I<sub>C</sub>从0上升到目标值的10%所需的时间。</p></li><li><p>tr：上升时间（rise time），I<sub>C</sub>从10%上升到90%所需的时间。</p></li><li><p>ton：开启时间（on time），ton = ts + tr，当I<sub>C</sub>从0上升到90%时，我们就可以认为晶体管已基本开启。</p></li><li><p>ts：存储时间（storage time），当基极开路或输入低电平后，I<sub>C</sub>从100%下降到90%所需的时间。</p></li><li><p>tf：下降时间（fall time），I<sub>C</sub>从90%下降到10%所需的时间。</p></li><li><p>toff：关断时间（off time），toff = ts + tf，当I<sub>C</sub>从100%下降到10%时，我们就可以认为晶体管已基本关断。</p></li></ul><p>这些参数在晶体管数据规格书中都会给出，以2N4123为例，在规格书Figure 2中，可读出这些参数值：</p><p><img src="/2021/06/11/BJT%E7%9A%84%E5%BA%94%E7%94%A8/95a9f5dc.png" alt=""></p><p>当I<sub>C</sub>=20mA时，在图中可大致读出：</p><p>​      td = 13ns， tr = 13ns， ts = 110ns， tf = 11ns</p><ul><li>开启时间为：ton = td + tr = 13ns + 13ns = 26ns</li><li>关断时间为：toff = ts + tf = 100ns + 11ns = 111ns</li></ul><p>在要求不太高的功率开关场合，以上的延迟时间基本也够用了。另外有一类晶体管称为<strong>开关型晶体管</strong>（switching transistor），其开启和关断时间要比上面的值再小一个数量级，都只有十几个纳秒（如BSV52等），具体可参看相关数据规格手册。</p><h1 id="BJT实现电流源"><a href="#BJT实现电流源" class="headerlink" title="BJT实现电流源"></a>BJT实现电流源</h1><h2 id="恒流源"><a href="#恒流源" class="headerlink" title="恒流源"></a>恒流源</h2><h3 id="简易恒流源"><a href="#简易恒流源" class="headerlink" title="简易恒流源"></a>简易恒流源</h3><p>用BJT晶体管可以构造一个简易的恒流源，实现电路如下：</p><p><img src="/2021/06/11/BJT%E7%9A%84%E5%BA%94%E7%94%A8/3e9cf44d.png" alt=""></p><p>在学习采用分压偏置的射极放大电路的特性时，可以发现，分压偏置具有非常好的稳定性，几乎不受晶体管的<em>β</em>参数偏移的影响，因此可以用这个分压偏置电路来实现恒流源。其电路计算方法与分压偏置也是类似的：</p><p>基极电压V<sub>B</sub>为：</p><p><img src="/2021/06/11/BJT%E7%9A%84%E5%BA%94%E7%94%A8/319d3d88.png" alt=""></p><p>发射极电压V<sub>E</sub>为：</p><p><img src="/2021/06/11/BJT%E7%9A%84%E5%BA%94%E7%94%A8/21746cc7.png" alt=""></p><p>最终输出电流为：</p><p><img src="/2021/06/11/BJT%E7%9A%84%E5%BA%94%E7%94%A8/08f0ad55.png" alt=""></p><p>当然，这个恒流源假设BJT晶体管工作在正常的放大区内，所以负载的阻值R<sub>L<sub>不能太大，否则R<sub>L</sub>上会产生过大的压降，迫使VCE变小直至小于V<sub>CEsat</sub>而进入饱和区，最终导致电流源失效。所以一般只能用于低成本、对输出电流要求不高的场合。</p><h3 id="改进的恒流源"><a href="#改进的恒流源" class="headerlink" title="改进的恒流源"></a>改进的恒流源</h3><p>上面的简易恒流源还有个缺点，就是输出电流受V<sub>CC</sub>的影响较大。若V<sub>CC</sub>有波动，基极偏置电压V<sub>B</sub>也会跟着产生波动，然后V<sub>E</sub>也跟着波动，最终导致输出电流也会波动变化，稳定性不好。</p><p>那有什么低成本的稳压器件呢？有的，答案就是齐纳二极管。改进恒流源电路如下：</p><p><img src="/2021/06/11/BJT%E7%9A%84%E5%BA%94%E7%94%A8/be4df057.png" alt=""></p><p>如此，基极电压V<sub>B</sub>可以稳定在齐纳V<sub>Z</sub>，最终的输出电流为：</p><p><img src="/2021/06/11/BJT%E7%9A%84%E5%BA%94%E7%94%A8/672423db.png" alt=""></p><p>从上式可见，输出电流表达式中没有V<sub>CC</sub>，因此输出电流不受V<sub>CC</sub>波动的影响。而且，齐纳二极管一般受温度影响也比较小，所以上面这个改进的恒流源电路有较好的稳定性。当然，前提还是要工作在BJT的放大区范围内才行。</p><h3 id="用PNP管实现恒流源"><a href="#用PNP管实现恒流源" class="headerlink" title="用PNP管实现恒流源"></a>用PNP管实现恒流源</h3><p>上面的改进恒流源还有个问题，就是负载R<sub>L</sub>不能接地，只能悬空使用。若要使R<sub>L</sub>能接地，必须再想办法。考虑到PNP型晶体管的电流方向相反，集电极可以接地使用，因此可用PNP型来实现恒流源，电路如下：</p><p><img src="/2021/06/11/BJT%E7%9A%84%E5%BA%94%E7%94%A8/40082f74.png" alt=""></p><p>上图中，计算原理和前面是一样的，只是PNP晶体管的计算方向全部相反：</p><p><img src="/2021/06/11/BJT%E7%9A%84%E5%BA%94%E7%94%A8/1ce7bea8.png" alt=""></p><p>输出电流的最终表达式与前面使用NPN型晶体管的表达式是一样的。</p><h2 id="镜像电流源"><a href="#镜像电流源" class="headerlink" title="镜像电流源"></a>镜像电流源</h2><p><strong>镜像电流源</strong>（Current Mirror）有时也被称为<strong>电流镜</strong>，是一种利用两个对称的晶体管产生恒流源的电路。不过，镜像电流源一般只应用于集成电路芯片内部的设计（比如运放的设计），很少在分立元件电路中使用。因为分立元器件很难找到两个放大系数一模一样的对称晶体管，而在集成电路芯片制造中做两个特性完全一致的片上晶体管是可以做到的。所以，一般如果不是专门从事IC设计的话，一般用不到这个电路。</p><p>电流镜的基本实现原理见下图：</p><p><img src="/2021/06/11/BJT%E7%9A%84%E5%BA%94%E7%94%A8/2634f5cb.png" alt=""></p><p>其名称由来，是因为如果你通过调节V<sub>CC1</sub>和R<sub>in</sub>，得到了一个原始的电流I<sub>in</sub>；那么，在输出端可以得到一个和I<sub>in</sub>几乎一样大小的镜像电流I<sub>out</sub>，而不用管V<sub>CC2</sub>和负载R<sub>L</sub>的值（当然V<sub>CC2</sub>和R<sub>L</sub>不能太过分以致于超出正常工作范围）。</p><p>其工作原理分析如下图所示：</p><p><img src="/2021/06/11/BJT%E7%9A%84%E5%BA%94%E7%94%A8/d7d10f93.png" alt=""></p><ul><li>两个晶体管Q1和Q2的基极连接在一起，故它们的基极电压是相同的，记为V<sub>B</sub>。</li><li>由于两个晶体管的特性是完全一致的，那么相同的基极电压V<sub>B</sub>应该产生相同的基极电流I<sub>B1</sub>和I<sub>B2</sub>。</li><li>再由于两个晶体管的放大系数<em>β</em>也相同，那么集电极电流I<sub>C1</sub>和I<sub>C2</sub>也应该是相同的。</li><li>输入电流I<sub>in</sub>=I<sub>C1</sub>+I<sub>B1</sub>+I<sub>B2</sub>≈I<sub>C1</sub>，输出电流I<sub>out</sub>=I<sub>C2</sub>，故输入电流I<sub>in</sub>和输出电流I<sub>out</sub>近似相等。</li></ul><p>最后的问题就是输入电流I<sub>in</sub>怎么算。由于Q1的集电极和基极短路，故：</p><p><img src="/2021/06/11/BJT%E7%9A%84%E5%BA%94%E7%94%A8/48ce1dfa.png" alt=""></p><p>那么，输入电流I<sub>in</sub>即为：</p><p><img src="/2021/06/11/BJT%E7%9A%84%E5%BA%94%E7%94%A8/86755fc1.png" alt=""></p><p></br></br></br></br></br></p><ul><li>end</li></ul>]]>
    </content>
    <id>https://lijinbo.cc/2021/06/11/BJT%E7%9A%84%E5%BA%94%E7%94%A8/</id>
    <link href="https://lijinbo.cc/2021/06/11/BJT%E7%9A%84%E5%BA%94%E7%94%A8/"/>
    <published>2021-06-10T16:00:00.000Z</published>
    <summary>
      <![CDATA[<h1 id="BJT实现逻辑门"><a href="#BJT实现逻辑门" class="headerlink" title="BJT实现逻辑门"></a>BJT实现逻辑门</h1><p>BJT晶体管可以实现逻辑门，事实上，在场效应管（FET）被发明用于集成电路以前，各种逻辑门芯片中的电路就是用BJT晶体管来实现的。最早人们使用二极管与BJT组合来实现逻辑门，称为<strong>二极管-晶体管逻辑</strong>（Diode-Transistor Logic），简称<strong>DTL</strong>；后来改进为全部用BJT晶体管来实现逻辑门，称为<strong>晶体管-晶体管逻辑</strong>（Transistor-Transistor Logic），简称<strong>TTL</strong>。早期广为人知的TTL电平，就是基于这种用BJT晶体管实现的逻辑门。TTL的优点是响应速度比较快，缺点是功耗较大，所以后来基本被功耗更低的场效应管取代。</p>
<p>我在这里梳理了几个最简单的逻辑门的实现——反相器、或非门、与非门，主要用来巩固概念，也便于区分BJT在逻辑电路和放大电路上应用的区别。即放大电路中，BJT都工作于放大区，而在用BJT实现逻辑门时，却要使BJT工作在饱和区和截止区，而不能使用放大区，这个是逻辑电路和放大电路的在使用BJT时的根本区别。</p>]]>
    </summary>
    <title>BJT的基本应用电路</title>
    <updated>2026-07-19T12:27:07.727Z</updated>
  </entry>
  <entry>
    <author>
      <name>COMBER</name>
    </author>
    <category term="模电原理及应用" scheme="https://lijinbo.cc/categories/%E6%A8%A1%E7%94%B5%E5%8E%9F%E7%90%86%E5%8F%8A%E5%BA%94%E7%94%A8/"/>
    <category term="BJT" scheme="https://lijinbo.cc/tags/BJT/"/>
    <category term="MOS管" scheme="https://lijinbo.cc/tags/MOS%E7%AE%A1/"/>
    <content>
      <![CDATA[<h1 id="三极管"><a href="#三极管" class="headerlink" title="三极管"></a>三极管</h1><p><strong>三极管</strong>，全称应为半导体三极管，也称双极型<a href="https://www.eefocus.com/baike/487301">晶体管</a>、晶体三极管，是一种控制电流的半导体器件。其作用是把微弱信号放大成幅度值较大的电信号，也用作无<a href="https://www.eefocus.com/baike/493830">触点开关</a>。 </p><p><strong>三极管</strong>是半导体基本元器件之一，具有电流放大作用，是电子电路的核心元件。三极管是在一块半导体基片上制作两个相距很近的PN结，两个PN结把整块半导体分成三部分，中间部分是基区，两侧部分是发射区和集电区，排列方式有PNP和NPN两种。 </p><p><strong>三极管</strong>具有电流放大作用，其实质是三极管能以基极电流微小的变化量来控制集电极电流较大的变化量。这是三极管最基本的和最重要的特性。 </p><div style='text-align: center;'><p><img src="/2021/06/10/BJT%E4%B8%8EMOS%E7%AE%A1/%E6%99%B6%E4%BD%93%E4%B8%89%E6%9E%81%E7%AE%A1%E7%AC%A6%E5%8F%B7.jpg" alt="晶体三极管符号"></p></div><span id="more"></span><h2 id="三极管参数"><a href="#三极管参数" class="headerlink" title="三极管参数"></a>三极管参数</h2><p>晶体管的主要参数有电流放大系数、耗散功率、频率特性、反向电流等。</p><h3 id="电流放大系数"><a href="#电流放大系数" class="headerlink" title="电流放大系数"></a>电流放大系数</h3><p>也称电流放大倍数，用来表示晶体管放大能力。 根据晶体管工作状态的不同，电流放大系数又分为直流电流放大系数和交流电流放大系数。 直流电流放大系数 直流电流放大系数也称静态电流放大系数或直流放大倍数，是指在静态无变化信号输入时，晶体管集电极电流 IC 与基极电流 IB 的比值，一般用 hFE 或β表示。 交流电流放大系数 交流电流放大系数也称动态电流放大系数或交流放大倍数，是指在交流状态下，晶体管集电极电流变化量△IC 与基极电流变化量△IB 的比值，一般用 hFE 或β表示。 </p><h3 id="耗散功率"><a href="#耗散功率" class="headerlink" title="耗散功率"></a>耗散功率</h3><p>也称集电极最大允许耗散功率 PCM，是指晶体管参数变化不超过规定允许值时的最大集电极耗散功率。 耗散功率与晶体管的最高允许结温和集电极最大电流有密切关系。晶体管在使用时，其实际功耗不允许超过 PCM 值，否则会造成晶体管因过载而损坏。 通常将耗散功率 PCM 小于 1W 的晶体管称为小功率晶体管，PCM 等于或大于 1W、小于 5W 的晶体管被称为中功率晶体管，将 PCM 等于或大于 5W 的晶体管称为大功率晶体管。</p><h3 id="频率特性"><a href="#频率特性" class="headerlink" title="频率特性"></a>频率特性</h3><p>主要包括特征频率 fT 和最高振荡频率 fM 等。 特征频率 fT 晶体管的工作频率超过截止频率 fβ或 fα时，其电流放大系数β值将随着频率的升高而下降。特征频率是指β值降为 1 时晶体管的工作频率。 最高振荡频率 fM 最高振荡频率是指晶体管的功率增益降为 1 时所对应的频率。 </p><h3 id="反向电流"><a href="#反向电流" class="headerlink" title="反向电流"></a>反向电流</h3><p>包括其集电极—基极之间的反向电流 ICBO 和集电极—发射极之间的反向击穿电流 ICEO。 ICBO 也称集电结反向漏电电流，是指当晶体管的发射极开路时，集电极与基极之间的反向电流。ICBO 对温度较敏感，该值越小，说明晶体管的温度特性越好。ICEO 是指当晶体管的基极开路时，其集电极与发射极之间的反向漏电电流，也称穿透电流。此电流值越小，说明晶体管的性能越好。</p><h2 id="晶体三极管作用"><a href="#晶体三极管作用" class="headerlink" title="晶体三极管作用"></a>晶体三极管作用</h2><p>晶体三极管具有电流放大作用，其实质是三极管能以基极电流微小的变化量来控制集电极电流较大的变化量。这是三极管最基本的和最重要的特性。我们将ΔIc/ΔIb 的比值称为晶体三极管的电流放大倍数，用符号“β”表示。电流放大倍数对于某一只三极管来说是一个定值，但随着三极管工作时基极电流的变化也会有一定的改变。晶体三极管还具有开关作用。基极电流的增大，不能使集电极电流继续增大 时，三极管就进入了饱和状态。进入饱和状态之后，三极管的集电极跟发射极之间的电压将很小，可以理解为 一个开关闭合了。这样我们就可以拿三极管来当作开关使用：当基极电流为 0 时，三极管集电极电流为 0（这叫做三极管截止），相当于开关断开；当基极电流很 大，以至于三极管饱和时，相当于开关闭合。如果三极管主要工作在截止和饱和状态，那么这样的三极管我们一般把它叫做开关管。</p><p><img src="/2021/06/10/BJT%E4%B8%8EMOS%E7%AE%A1/%E6%99%B6%E4%BD%93%E4%B8%89%E6%9E%81%E7%AE%A1%E5%B0%81%E8%A3%85.jpg" alt="晶体三极管封装"></p><h2 id="晶体三极管结构"><a href="#晶体三极管结构" class="headerlink" title="晶体三极管结构"></a>晶体三极管结构</h2><p>晶体三极管是在一块半导体基片上制作两个相距很近的 PN 结，两个 PN 结把整块半导体分成三部分，中间部分是基区，两侧部分是发射区和集电区，排列方式有 PNP 和 NPN 两种。晶体三极管是一种控制电流的半导体器件其作用是把微弱信号放大成幅度值较大的电信号， 也用作无触点开关。</p><p><img src="/2021/06/10/BJT%E4%B8%8EMOS%E7%AE%A1/%E6%99%B6%E4%BD%93%E4%B8%89%E6%9E%81%E7%AE%A1%E7%BB%93%E6%9E%84.jpg" alt="晶体三极管结构"></p><h1 id="MOS管"><a href="#MOS管" class="headerlink" title="MOS管"></a><strong>MOS</strong>管</h1><p>MOS管的英文全称叫MOSFET(Metal Oxide Semiconductor Field Effect Transistor)，即金属氧化物半导体型场效应管，属于场效应管中的绝缘栅型。因此，MOS管有时被称为绝缘栅场效应管。在一般电子电路中，MOS管通常被用于放大电路或开关电路。</p><h2 id="MOS管的构造"><a href="#MOS管的构造" class="headerlink" title="MOS管的构造"></a>MOS管的构造</h2><p>在一块掺杂浓度较低的P型半导体硅衬底上，用半导体光刻、扩散工艺制作两个高掺杂浓度的N+区，并用金属铝引出两个电极，分别作为漏极D和源极S。然后在漏极和源极之间的P型半导体表面复盖一层很薄的二氧化硅(Si02)绝缘层膜，在再这个绝缘层膜上装上一个铝电极，作为栅极G。这就构成了一个N沟道(NPN型)增强型MOS管，显然它的栅极和其它电极间是绝缘的。</p><p><img src="/2021/06/10/BJT%E4%B8%8EMOS%E7%AE%A1/N%E6%B2%9F%E9%81%93%E5%A2%9E%E5%BC%BA%E5%9E%8B%E5%9C%BA%E6%95%88%E5%BA%94%E7%AE%A1.png" alt="N沟道增强型场效应管"></p><p>同样用上述相同的方法在一块掺杂浓度较低的N型半导体硅衬底上，用半导体光刻、扩散工艺制作两个高掺杂浓度的P+区，及上述相同的栅极制作过程，就成为一个P沟道(PNP型)增强型MOS管。</p><h2 id="MOS管的工作原理"><a href="#MOS管的工作原理" class="headerlink" title="MOS管的工作原理"></a>MOS管的工作原理</h2><p>增强型MOS管的漏极D和源极S之间有两个背靠背的PN结。当栅-源电压VGS=0时，即使加上漏-源电压VDS，总有一个PN结处于反偏状态，漏-源极间没有导电沟道(没有电流流过)，所以这时漏极电流ID=0。</p><p>此时若在栅-源极间加上正向电压，即VGS&gt;0，则栅极和硅衬底之间的SiO2绝缘层中便产生一个栅极指向P型硅衬底的电场，由于氧化物层是绝缘的，栅极所加电压VGS无法形成电流，氧化物层的两边就形成了一个电容，VGS等效是对这个电容充电，并形成一个电场，随着VGS逐渐升高，受栅极正电压的吸引，在这个电容的另一边就聚集大量的电子并形成了一个从漏极到源极的N型导电沟道，当VGS大于管子的开启电压VT(一般约为2V)时，N沟道管开始导通，形成漏极电流ID，我们把开始形成沟道时的栅-源极电压称为开启电压，一般用VT表示。</p><p>控制栅极电压VGS的大小改变了电场的强弱，就可以达到控制漏极电流ID的大小的目的，这也是MOS管用电场来控制电流的一个重要特点，所以也称之为场效应管。</p><h2 id="MOS管的特性"><a href="#MOS管的特性" class="headerlink" title="MOS管的特性"></a>MOS管的特性</h2><p>上述MOS管的工作原理中可以看出，MOS管的栅极G和源极S之间是绝缘的，由于Sio2绝缘层的存在，在栅极G和源极S之间等效是一个电容存在，电压VGS产生电场从而导致源极-漏极电流的产生。此时的栅极电压VGS决定了漏极电流的大小，控制栅极电压VGS的大小就可以控制漏极电流ID的大小。这就可以得出如下结论：</p><ul><li><p>MOS管是一个由改变电压来控制电流的器件，所以是电压器件。</p></li><li><p>MOS管道输入特性为容性特性，所以输入阻抗极高。</p></li></ul><h1 id="对比"><a href="#对比" class="headerlink" title="对比"></a>对比</h1><h2 id="MOS管和晶体三极管相比的重要特性"><a href="#MOS管和晶体三极管相比的重要特性" class="headerlink" title="MOS管和晶体三极管相比的重要特性"></a>MOS管和晶体三极管相比的重要特性</h2><ul><li>场效应管的源极S、栅极G、漏极D分别对应于三极管的发射极e、基极b、集电极c，它们的作用相似。</li></ul><ul><li>场效应管是电压控制电流器件，由VGS控制ID，普通的晶体三极管是电流控制电流器件，由IB控制IC。MOS管道放大系数是(跨导gm)当栅极电压改变一伏时能引起漏极电流变化多少安培。晶体三极管是电流放大系数(贝塔β)当基极电流改变一毫安时能引起集电极电流变化多少。</li></ul><ul><li>场效应管栅极和其它电极是绝缘的，不产生电流;而三极管工作时基极电流IB决定集电极电流IC。因此场效应管的输入电阻比三极管的输入电阻高的多。</li><li>场效应管只有多数载流子参与导电;三极管有多数载流子和少数载流子两种载流子参与导电，因少数载流子浓度受温度、辐射等因素影响较大，所以场效应管比三极管的温度稳定性好。</li><li>场效应管在源极未与衬底连在一起时，源极和漏极可以互换使用，且特性变化不大，而三极管的集电极与发射极互换使用时，其特性差异很大，b值将减小很多。</li><li>场效应管的噪声系数很小，在低噪声放大电路的输入级及要求信噪比较高的电路中要选用场效应管。</li><li>场效应管和普通晶体三极管均可组成各种放大电路和开关电路，但是场效应管制造工艺简单，并且又具有普通晶体三极管不能比拟的优秀特性，在各种电路及应用中正逐步的取代普通晶体三极管，目前的大规模和超大规模集成电路中，已经广泛的采用场效应管。</li></ul><h2 id="在开关电源电路中，大功率MOS管和大功率晶体三极管相比MOS管的优点"><a href="#在开关电源电路中，大功率MOS管和大功率晶体三极管相比MOS管的优点" class="headerlink" title="在开关电源电路中，大功率MOS管和大功率晶体三极管相比MOS管的优点"></a>在开关电源电路中，大功率MOS管和大功率晶体三极管相比MOS管的优点</h2><ul><li><p>输入阻抗高，驱动功率小——由于栅源之间是二氧化硅(SiO2)绝缘层，栅源之间的直流电阻基本上就是SiO2绝缘电阻，一般达100MΩ左右，交流输入阻抗基本上就是输入电容的容抗。由于输入阻抗高，对激励信号不会产生压降，有电压就可以驱动，所以驱动功率极小(灵敏度高)。一般的晶体三极管必需有基极电压Vb，再产生基极电流Ib，才能驱动集电极电流的产生。晶体三极管的驱动是需要功率的(Vb×Ib)。</p></li><li><p>开关速度快——MOSFET的开关速度和输入的容性特性的有很大关系，由于输入容性特性的存在，使开关的速度变慢，但是在作为开关运用时，可降低驱动电路内阻，加快开关速度(输入采用了后述的“灌流电路”驱动，加快了容性的充放电的时间)。MOSFET只靠多子导电，不存在少子储存效应，因而关断过程非常迅速，开关时间在10—100ns之间，工作频率可达100kHz以上，普通的晶体三极管由于少数载流子的存储效应，使开关总有滞后现象，影响开关速度的提高(目前采用MOS管的开关电源其工作频率可以轻易的做到100K/S～150K/S,这对于普通的大功率晶体三极管来说是难以想象的)。</p></li><li><p>无二次击穿——由于普通的功率晶体三极管具有当温度上升就会导致集电极电流上升(正的温度～电流特性)的现象，而集电极电流的上升又会导致温度进一步的上升，温度进一步的上升，更进一步的导致集电极电流的上升这一恶性循环。而晶体三极管的耐压VCEO随管温度升高是逐步下降，这就形成了管温继续上升、耐压继续下降最终导致晶体三极管的击穿，这是一种导致电视机开关电源管和行输出管损坏率占95%的破环性的热电击穿现象，也称为二次击穿现象。MOS管具有和普通晶体三极管相反的温度～电流特性，即当管温度(或环境温度)上升时，沟道电流IDS反而下降。例如;一只IDS=10A的MOSFET开关管，当VGS控制电压不变时，在250C温度下IDS=3A，当芯片温度升高为1000C时，IDS降低到2A，这种因温度上升而导致沟道电流IDS下降的负温度电流特性，使之不会产生恶性循环而热击穿。也就是MOS管没有二次击穿现象，可见采用MOS管作为开关管，其开关管的损坏率大幅度的降低，近两年电视机开关电源采用MOS管代替过去的普通晶体三极管后，开关管损坏率大大降低也是一个极好的证明。</p></li><li><p>MOS管导通后其导通特性呈纯阻性——普通晶体三极管在饱和导通是，几乎是直通，有一个极低的压降，称为饱和压降，既然有一个压降，那么也就是;普通晶体三极管在饱和导通后等效是一个阻值极小的电阻，但是这个等效的电阻是一个非线性的电阻(电阻上的电压和流过的电流不能符合欧姆定律)，而MOS管作为开关管应用，在饱和导通后也存在一个阻值极小的电阻，但是这个电阻等效一个线性电阻，其电阻的阻值和两端的电压降和流过的电流符合欧姆定律的关系，电流大压降就大，电流小压降就小，导通后既然等效是一个线性元件，线性元件就可以并联应用，当这样两个电阻并联在一起，就有一个自动电流平衡的作用，所以MOS管在一个管子功率不够的时候，可以多管并联应用，且不必另外增加平衡措施(非线性器件是不能直接并联应用的)。</p><p>MOS管和普通的晶体三极管相比，有以上四项优点，就足以使MOS管在开关运用状态下完全取代普通的晶体三极管。目前的技术MOS管道VDS能做到1000V，只能作为开关电源的开关管应用，随着制造工艺的不断进步，VDS的不断提高，取代显像管电视机的行输出管也是近期能实现的。</p></li></ul><p>MOS管和普通晶体三极管相比，有诸多的优点，但是在作为大功率开关管应用时，由于MOS管具有的容性输入特性，MOS管的输入端，等于是一个小电容器，输入的开关激励信号，实际上是在对这个电容进行反复的充电、放电的过程，在充放电的过程中，使MOS管道导通和关闭产生了滞后，使“开”与“关”的过程变慢，这是开关元件不能允许的(功耗增加，烧坏开关管)。</p><p>压波形变成B的畸变波形，导致开关管不能正常开关工作而损坏，解决的方法就是，只要R足够的小，甚至没有阻值，激励信号能提供足够的电流，就能使等效电容迅速的充电、放电，这样MOS开关管就能迅速的“开”、“关”，保证了正常工作。由于激励信号是有内阻的，信号的激励电流也是有限度，我们在作为开关管的MOS管的输入部分，增加一个减少内阻、增加激励电流的“灌流电路”来解决此问题。</p><p></br></br></br></br></br></p><ul><li>end</li></ul>]]>
    </content>
    <id>https://lijinbo.cc/2021/06/10/BJT%E4%B8%8EMOS%E7%AE%A1/</id>
    <link href="https://lijinbo.cc/2021/06/10/BJT%E4%B8%8EMOS%E7%AE%A1/"/>
    <published>2021-06-09T16:00:00.000Z</published>
    <summary>
      <![CDATA[<h1 id="三极管"><a href="#三极管" class="headerlink" title="三极管"></a>三极管</h1><p><strong>三极管</strong>，全称应为半导体三极管，也称双极型<a href="https://www.eefocus.com/baike/487301">晶体管</a>、晶体三极管，是一种控制电流的半导体器件。其作用是把微弱信号放大成幅度值较大的电信号，也用作无<a href="https://www.eefocus.com/baike/493830">触点开关</a>。 </p>
<p><strong>三极管</strong>是半导体基本元器件之一，具有电流放大作用，是电子电路的核心元件。三极管是在一块半导体基片上制作两个相距很近的PN结，两个PN结把整块半导体分成三部分，中间部分是基区，两侧部分是发射区和集电区，排列方式有PNP和NPN两种。 </p>
<p><strong>三极管</strong>具有电流放大作用，其实质是三极管能以基极电流微小的变化量来控制集电极电流较大的变化量。这是三极管最基本的和最重要的特性。 </p>
<div style='text-align: center;'>

<p><img src="/2021/06/10/BJT%E4%B8%8EMOS%E7%AE%A1/%E6%99%B6%E4%BD%93%E4%B8%89%E6%9E%81%E7%AE%A1%E7%AC%A6%E5%8F%B7.jpg" alt="晶体三极管符号"></p>
</div>]]>
    </summary>
    <title>BJT与MOS管</title>
    <updated>2026-07-19T12:27:07.719Z</updated>
  </entry>
  <entry>
    <author>
      <name>COMBER</name>
    </author>
    <category term="模电原理及应用" scheme="https://lijinbo.cc/categories/%E6%A8%A1%E7%94%B5%E5%8E%9F%E7%90%86%E5%8F%8A%E5%BA%94%E7%94%A8/"/>
    <category term="积分电路" scheme="https://lijinbo.cc/tags/%E7%A7%AF%E5%88%86%E7%94%B5%E8%B7%AF/"/>
    <category term="微分电路" scheme="https://lijinbo.cc/tags/%E5%BE%AE%E5%88%86%E7%94%B5%E8%B7%AF/"/>
    <category term="加法电路" scheme="https://lijinbo.cc/tags/%E5%8A%A0%E6%B3%95%E7%94%B5%E8%B7%AF/"/>
    <category term="差分放大器（减法电路）" scheme="https://lijinbo.cc/tags/%E5%B7%AE%E5%88%86%E6%94%BE%E5%A4%A7%E5%99%A8%EF%BC%88%E5%87%8F%E6%B3%95%E7%94%B5%E8%B7%AF%EF%BC%89/"/>
    <content>
      <![CDATA[<p>模电课上学到，电容上的电压等于其电流的积分，而电感上的电压等于其电流的微分，这就是微积分电路的实现机理。模电课上还学到，运算放大器的显著特点是“虚短“和”虚断“，这一特性，构成了运放的灵魂，以下的各式电路的构成和分析，也正是基于运放的这一特性。</p><h1 id="积分运算电路"><a href="#积分运算电路" class="headerlink" title="积分运算电路"></a>积分运算电路</h1><h2 id="原理图"><a href="#原理图" class="headerlink" title="原理图"></a>原理图</h2><p><img src="/2021/05/20/%E6%A8%A1%E7%94%B5%E5%B8%B8%E8%A7%81%E7%94%B5%E8%B7%AF/%E7%A7%AF%E5%88%86%E7%94%B5%E8%B7%AF.png" alt="积分电路"></p><span id="more"></span><h2 id="电路分析"><a href="#电路分析" class="headerlink" title="电路分析"></a>电路分析</h2><p>由“虚短”得<img src="https://www.zhihu.com/equation?tex=v_%7BN%7D%3Dv_%7BP%7D%3D0" alt=""></p><p>由“虚断”得<img src="https://www.zhihu.com/equation?tex=i_%7BN%7D%3Di_%7BP%7D%3D0" alt=""></p><p>由于<img src="https://www.zhihu.com/equation?tex=v_%7BN%7D%3D0" alt=""> ，于是有<img src="https://www.zhihu.com/equation?tex=v_%7BO%7D%3D-v_%7BC%7D" alt=""></p><p>电容电压满足<img src="https://www.zhihu.com/equation?tex=u%3DQ/C" alt="">)，而电荷Q则是电容电流的积分，则有<img src="https://www.zhihu.com/equation?tex=v_%7BO%7D%3D-%5Cfrac%7B1%7D%7BC%7D%5Cint_%7B%7D%5E%7B%7D%7Bi%7D_%7BC%7Ddt" alt=""></p><p>又因为上述虚短的特性，有 <img src="https://www.zhihu.com/equation?tex=i_%7BC%7D%3Di_%7BR%7D%3D%5Cfrac%7Bv_%7BI%7D%7D%7BR%7D" alt=""></p><p>所以输出电压又可以写成</p><p><img src="https://www.zhihu.com/equation?tex=v_%7BO%7D%3D-%5Cfrac%7B1%7D%7BRC%7D%5Cint_%7B%7D%5E%7B%7Dv_%7BI%7Ddt" alt=""></p><p>考虑到输入信号还有时间，就可以得到定积分</p><p><img src="https://www.zhihu.com/equation?tex=v_%7BO%7D%3D-%5Cfrac%7B1%7D%7BRC%7D%5Cint_%7Bt_%7B1%7D%7D%5E%7Bt_%7B2%7D%7Dv_%7BI%7Ddt%2Bv_%7BO%7D%28t_%7B1%7D%29" alt=""></p><h2 id="常见的积分输出电压波形"><a href="#常见的积分输出电压波形" class="headerlink" title="常见的积分输出电压波形"></a>常见的积分输出电压波形</h2><p><img src="https://i.loli.net/2021/08/17/xB4DULJ53GFqhMW.jpg" alt="积分波形"></p><h1 id="微分运算电路"><a href="#微分运算电路" class="headerlink" title="微分运算电路"></a>微分运算电路</h1><h2 id="原理图-1"><a href="#原理图-1" class="headerlink" title="原理图"></a>原理图</h2><p><img src="/2021/05/20/%E6%A8%A1%E7%94%B5%E5%B8%B8%E8%A7%81%E7%94%B5%E8%B7%AF/%E5%BE%AE%E5%88%86%E7%94%B5%E8%B7%AF.png" alt="微分电路"></p><h2 id="电路分析-1"><a href="#电路分析-1" class="headerlink" title="电路分析"></a>电路分析</h2><p>由“虚断”有</p><p><img src="https://www.zhihu.com/equation?tex=i_%7BC%7D%3Di_%7BR%7D%3DC%5Cfrac%7Bdv_%7BI%7D%7D%7Bdt%7D" alt=""></p><p>又由“虚短”得<img src="https://www.zhihu.com/equation?tex=v_%7BN%7D%3Dv_%7BP%7D%3D0" alt="">)，据此有<img src="https://www.zhihu.com/equation?tex=v_%7BO%7D%3D-i_R*R" alt="">,即</p><p><img src="https://www.zhihu.com/equation?tex=v_%7BO%7D%3D-RC%5Cfrac%7Bdv_%7BI%7D%7D%7Bdt%7D" alt=""></p><h1 id="加法电路"><a href="#加法电路" class="headerlink" title="加法电路"></a>加法电路</h1><h2 id="原理图-2"><a href="#原理图-2" class="headerlink" title="原理图"></a>原理图</h2><p><img src="/2021/05/20/%E6%A8%A1%E7%94%B5%E5%B8%B8%E8%A7%81%E7%94%B5%E8%B7%AF/%E5%8A%A0%E6%B3%95%E7%94%B5%E8%B7%AF.png" alt="加法电路"></p><h2 id="电路分析-2"><a href="#电路分析-2" class="headerlink" title="电路分析"></a>电路分析</h2><p>运放的同相输入端接地，根据“虚短”特性，运放的反相输入端的电位也为0，因此三个输入支路的电流分别为：</p><div style='text-align: center;'><p><img src="/2021/05/20/%E6%A8%A1%E7%94%B5%E5%B8%B8%E8%A7%81%E7%94%B5%E8%B7%AF/%E5%85%AC%E5%BC%8F.png" alt="公式"></p></div><p>由于理想运放的输入端不能有任何电流流入，因此电流I1、I2、I3会合并后全部流向Rf，根据欧姆定律，输出端的电压Vo为：</p><p><img src="/2021/05/20/%E6%A8%A1%E7%94%B5%E5%B8%B8%E8%A7%81%E7%94%B5%E8%B7%AF/%E5%85%AC%E5%BC%8F_2.png" alt="公式"></p><p>当配置电阻值为：Rf=R1=R2=R3时，就实现了加法运算：</p><p><img src="/2021/05/20/%E6%A8%A1%E7%94%B5%E5%B8%B8%E8%A7%81%E7%94%B5%E8%B7%AF/%E5%85%AC%E5%BC%8F_3.png" alt="公式"></p><p>当配置各个电阻为其他值时，还可以实现比例加法运算。</p><h1 id="差分放大器"><a href="#差分放大器" class="headerlink" title="差分放大器"></a>差分放大器</h1><p>差分放大器只放大两个输入信号的差值，而不放大其公共部分（共模电压）。这种特性称为<strong>共模抑制</strong>（common-mode rejection）。在实际工况中，外部环境的噪声通常对两个输入端的影响是相同的，而差分放大器不会放大这种同时叠加到两个输入端的噪声，因此差分放大器可以比较有效地抵抗这种噪声的影响。</p><h2 id="原理图-3"><a href="#原理图-3" class="headerlink" title="原理图"></a>原理图</h2><p><img src="/2021/05/20/%E6%A8%A1%E7%94%B5%E5%B8%B8%E8%A7%81%E7%94%B5%E8%B7%AF/%E5%B7%AE%E5%88%86%E7%94%B5%E8%B7%AF.png" alt="差分电路"></p><h2 id="电路分析-3"><a href="#电路分析-3" class="headerlink" title="电路分析"></a>电路分析</h2><p>根据理想运放的虚短和0输入电流特性，可得到同相和反相输入端的电压表达式：</p><div style='text-align: center;'><p><img src="/2021/05/20/%E6%A8%A1%E7%94%B5%E5%B8%B8%E8%A7%81%E7%94%B5%E8%B7%AF/%E5%85%AC%E5%BC%8F_4.png" alt="公式"></p></div><p>​      根据上面的方程组，可解得：</p><p><img src="/2021/05/20/%E6%A8%A1%E7%94%B5%E5%B8%B8%E8%A7%81%E7%94%B5%E8%B7%AF/%E5%85%AC%E5%BC%8F_5.png" alt="公式"></p><p>​      将上式略作变形，可得：</p><p><img src="/2021/05/20/%E6%A8%A1%E7%94%B5%E5%B8%B8%E8%A7%81%E7%94%B5%E8%B7%AF/%E5%85%AC%E5%BC%8F_6.png" alt="公式"></p><p>​      当配置R1/R2 = R3/R4时，上式可化简为：</p><div style='text-align: center;'><p><img src="/2021/05/20/%E6%A8%A1%E7%94%B5%E5%B8%B8%E8%A7%81%E7%94%B5%E8%B7%AF/%E5%85%AC%E5%BC%8F_7.png" alt="公式"></p></div><p>​      从而实现了对输入电压差值的放大。</p><h1 id="减法电路"><a href="#减法电路" class="headerlink" title="减法电路"></a>减法电路</h1><h2 id="使用差分放大器实现"><a href="#使用差分放大器实现" class="headerlink" title="使用差分放大器实现"></a>使用差分放大器实现</h2><p>有多种方法可以实现减法电路，一种就是使用上面的差分放大器，将四个电阻取值为：R1=R2=R3=R4时，上面的输出电压就变为了</p><div style='text-align: center;'><p><img src="/2021/05/20/%E6%A8%A1%E7%94%B5%E5%B8%B8%E8%A7%81%E7%94%B5%E8%B7%AF/%E5%85%AC%E5%BC%8F_8.png" alt="公式"></p></div><h3 id="原理图-4"><a href="#原理图-4" class="headerlink" title="原理图"></a>原理图</h3><p><img src="/2021/05/20/%E6%A8%A1%E7%94%B5%E5%B8%B8%E8%A7%81%E7%94%B5%E8%B7%AF/%E5%87%8F%E6%B3%95%E7%94%B5%E8%B7%AF.png" alt="减法电路"></p><h2 id="使用多个运放实现"><a href="#使用多个运放实现" class="headerlink" title="使用多个运放实现"></a>使用多个运放实现</h2><p>​      另一种实现减法运算的方法，就是利用前面的反相放大器和加法器级联，先将要做减法的量用反相放大器做反相，然后再将这个结果作为加法器的一个输入，与另一个输入相加。</p><h3 id="原理图-5"><a href="#原理图-5" class="headerlink" title="原理图"></a>原理图</h3><p><img src="/2021/05/20/%E6%A8%A1%E7%94%B5%E5%B8%B8%E8%A7%81%E7%94%B5%E8%B7%AF/%E8%BF%90%E6%94%BE%E5%AE%9E%E7%8E%B0%E5%87%8F%E6%B3%95%E7%94%B5%E8%B7%AF.png" alt="运放实现减法电路"></p><h3 id="分析"><a href="#分析" class="headerlink" title="分析"></a>分析</h3><p>输入信号Vi1经过反相放大器后，变为-Vi1，然后再将其与Vi2做加法运算，输出电压Vo表达式为</p><p><img src="/2021/05/20/%E6%A8%A1%E7%94%B5%E5%B8%B8%E8%A7%81%E7%94%B5%E8%B7%AF/%E5%85%AC%E5%BC%8F_9.png" alt="公式"></p><p></br></br></br></br></br></br></p><ul><li>end</li></ul>]]>
    </content>
    <id>https://lijinbo.cc/2021/05/20/%E6%A8%A1%E7%94%B5%E5%B8%B8%E8%A7%81%E7%94%B5%E8%B7%AF/</id>
    <link href="https://lijinbo.cc/2021/05/20/%E6%A8%A1%E7%94%B5%E5%B8%B8%E8%A7%81%E7%94%B5%E8%B7%AF/"/>
    <published>2021-05-19T16:00:00.000Z</published>
    <summary>
      <![CDATA[<p>模电课上学到，电容上的电压等于其电流的积分，而电感上的电压等于其电流的微分，这就是微积分电路的实现机理。模电课上还学到，运算放大器的显著特点是“虚短“和”虚断“，这一特性，构成了运放的灵魂，以下的各式电路的构成和分析，也正是基于运放的这一特性。</p>
<h1 id="积分运算电路"><a href="#积分运算电路" class="headerlink" title="积分运算电路"></a>积分运算电路</h1><h2 id="原理图"><a href="#原理图" class="headerlink" title="原理图"></a>原理图</h2><p><img src="/2021/05/20/%E6%A8%A1%E7%94%B5%E5%B8%B8%E8%A7%81%E7%94%B5%E8%B7%AF/%E7%A7%AF%E5%88%86%E7%94%B5%E8%B7%AF.png" alt="积分电路"></p>]]>
    </summary>
    <title>常见模拟电路</title>
    <updated>2026-07-19T12:27:07.781Z</updated>
  </entry>
  <entry>
    <author>
      <name>COMBER</name>
    </author>
    <category term="模电原理及应用" scheme="https://lijinbo.cc/categories/%E6%A8%A1%E7%94%B5%E5%8E%9F%E7%90%86%E5%8F%8A%E5%BA%94%E7%94%A8/"/>
    <category term="基尔霍夫定理" scheme="https://lijinbo.cc/tags/%E5%9F%BA%E5%B0%94%E9%9C%8D%E5%A4%AB%E5%AE%9A%E7%90%86/"/>
    <category term="建立时间和保持时间" scheme="https://lijinbo.cc/tags/%E5%BB%BA%E7%AB%8B%E6%97%B6%E9%97%B4%E5%92%8C%E4%BF%9D%E6%8C%81%E6%97%B6%E9%97%B4/"/>
    <category term="线与" scheme="https://lijinbo.cc/tags/%E7%BA%BF%E4%B8%8E/"/>
    <category term="竞争与冒险" scheme="https://lijinbo.cc/tags/%E7%AB%9E%E4%BA%89%E4%B8%8E%E5%86%92%E9%99%A9/"/>
    <category term="异步复位和同步复位" scheme="https://lijinbo.cc/tags/%E5%BC%82%E6%AD%A5%E5%A4%8D%E4%BD%8D%E5%92%8C%E5%90%8C%E6%AD%A5%E5%A4%8D%E4%BD%8D/"/>
    <content>
      <![CDATA[<h2 id="模拟电路"><a href="#模拟电路" class="headerlink" title="模拟电路"></a>模拟电路</h2><h3 id="1、基尔霍夫定理"><a href="#1、基尔霍夫定理" class="headerlink" title="1、基尔霍夫定理"></a>1、基尔霍夫定理</h3><p>基尔霍夫定律包括电流定律和电压定律<br>电流定律：在集总电路中，任何时刻，对任一节点，所有流出节点的支路电流的代数和恒等于零。<br>电压定律：在集总电路中，任何时刻，沿任一回路，所有支路电压的代数和恒等于零。</p><h3 id="2、反馈电路"><a href="#2、反馈电路" class="headerlink" title="2、反馈电路"></a>2、反馈电路</h3><span id="more"></span><p>反馈，就是在电子系统中，把输出回路中的电量输入到输入回路中去。<br>反馈的类型有：电压串联负反馈、电流串联负反馈、电压并联负反馈、电流并联负反馈。<br>负反馈的优点：降低放大器的增益灵敏度，改变输入电阻和输出电阻，改善放大器的线性和非线性失真，有效地扩展放大器的通频带，自动调节作用。<br>电压负反馈的特点：电路的输出电压趋向于维持恒定。<br>电流负反馈的特点：电路的输出电流趋向于维持恒定。</p><h3 id="3、有源滤波器和无源滤波器的区别"><a href="#3、有源滤波器和无源滤波器的区别" class="headerlink" title="3、有源滤波器和无源滤波器的区别"></a>3、有源滤波器和无源滤波器的区别</h3><p><strong>无源滤波器</strong>：这种电路主要有无源元件R、L和C组成<br><strong>有源滤波器</strong>：集成运放和R、C组成，具有不用电感、体积小、重量轻等优点。<br>集成运放的开环电压增益和输入阻抗均很高，输出电阻小，构成有源滤波电路后还具有一定的电压放大和缓冲作用。但集成运放带宽有限，所以目前的有源滤波电路的工作频率难以做得很高。</p><h3 id="4、谈谈对晶体管的理解"><a href="#4、谈谈对晶体管的理解" class="headerlink" title="4、谈谈对晶体管的理解"></a>4、谈谈对晶体管的理解</h3><p>晶体管又称双极结型晶体管 (BJT)，是由电流驱动的半导体器件，用于控制电流的流动，其中，基极引线中的较小电流控制集电极和发射极之间较大的电流。它们能用于放大弱信号，用作振荡器或开关。</p><h2 id="数字电路"><a href="#数字电路" class="headerlink" title="数字电路"></a>数字电路</h2><h3 id="1、同步电路和异步电路的区别"><a href="#1、同步电路和异步电路的区别" class="headerlink" title="1、同步电路和异步电路的区别"></a>1、同步电路和异步电路的区别</h3><p><strong>同步电路</strong>：存储电路中所有触发器的时钟输入端都接同一个时钟脉冲源，因而所有触发器的状态的变化都与所加的时钟脉冲信号同步。<br><strong>异步电路</strong>：电路没有统一的时钟，有些触发器的时钟输入端与时钟脉冲源相连，这有这些触发器的状态变化与时钟脉冲同步，而其他的触发器的状态变化不与时钟脉冲同步。</p><h3 id="2、什么是“线与”"><a href="#2、什么是“线与”" class="headerlink" title="2、什么是“线与”"></a>2、什么是“线与”</h3><p>将两个门电路的输出端并联以实现与逻辑的功能称为<strong>线与</strong>。<br>在硬件上，要用OC门来实现，同时在输出端口加一个上拉电阻。<br>不用OC门可能使灌电流过大，而烧坏逻辑门。</p><h3 id="3、setup-time-和-hold-time"><a href="#3、setup-time-和-hold-time" class="headerlink" title="3、setup time 和 hold time"></a>3、setup time 和 hold time</h3><p><strong>建立时间</strong>和<strong>保持时间</strong>是测试芯片对输入信号和时钟信号之间的时间要求。建立时间是指触发器的时钟信号上升沿到来以前，数据稳定不变的时间。输入信号应提前时钟上升沿（如上升沿有效）T时间到达芯片，这个T就是建立时间（setup time），如不满足建立时间，这个数据就不能被这一时钟打入触发器，只有在下一个时钟上升沿，数据才能被打入触发器。<br>保持时间是指触发器的时钟信号上升沿到来以后，数据稳定不变的时间。如果hold time不够，数据同样不能被打入触发器。<br>综上，建立时间是指在时钟边沿前，数据信号需要保持不变的时间。保持时间是指时钟跳变边沿后数据信号需要保持不变的时间。如果数据信号在时钟沿触发前后持续的时间均超过建立和保持时间，那么超过量就分别被称为建立时间裕量和保持时间裕量。</p><h3 id="4、竞争与冒险现象的判断和消除"><a href="#4、竞争与冒险现象的判断和消除" class="headerlink" title="4、竞争与冒险现象的判断和消除"></a>4、竞争与冒险现象的判断和消除</h3><p>在组合逻辑中，由于门的输入信号通路中经过了不同的延时，导致信号到达该门的时间不一致，这种现象叫竞争。<br>输出产生毛刺的现象则叫冒险。如果布尔式中有相反的信号则可能产生竞争和冒险现象。<br>解决方法：一是添加布尔式的消去项，二是在芯片外部加电容。</p><h3 id="5、SRAM、SSRAM、SDRAM"><a href="#5、SRAM、SSRAM、SDRAM" class="headerlink" title="5、SRAM、SSRAM、SDRAM"></a>5、SRAM、SSRAM、SDRAM</h3><p>SRAM：静态RAM<br>DRAM：动态RAM<br>SSRAM：Synchronous Static Random Access Memory，同步静态随机访问存储器。它的一种类型的SRAM。SSRAM的所有访问都在时钟的上升/下降沿启动。地址、数据输入和其它控制信号均于时钟信号相关。这一点与异步SRAM不同，异步SRAM的访问独立于时钟，数据输入和输出都由地址的变化控制。<br>SDRAM：Synchronous DRAM，同步动态随机存储器</p><h3 id="6、OTP片、掩膜片，两者的区别"><a href="#6、OTP片、掩膜片，两者的区别" class="headerlink" title="6、OTP片、掩膜片，两者的区别"></a>6、OTP片、掩膜片，两者的区别</h3><p>OTP（one time program），一次性编程<br>MTP（multi time program），多次性编程<br>OTP是MCU的一种存储器类型；<br>MCU按其存储器类型可分为MASK(掩模)ROM、OTP(一次性可编程)ROM、FLASHROM等类型。<br>MASKROM的MCU价格便宜，但程序在出厂时已经固化，适合程序固定不变的应用场合；<br>FALSHROM的MCU程序可以反复擦写，灵活性很强，但价格较高，适合对价格不敏感的应用场合或做开发用途；<br>OTP ROM的MCU价格介于前两者之间，同时又拥有一次性可编程能力，适合既要求一定灵活性，又要求低成本的应用场合，尤其是功能不断翻新、需要迅速量产的电子产品。</p><h2 id="FPGA"><a href="#FPGA" class="headerlink" title="FPGA"></a>FPGA</h2><h3 id="1、FPGA和ASIC的概念及区别"><a href="#1、FPGA和ASIC的概念及区别" class="headerlink" title="1、FPGA和ASIC的概念及区别"></a>1、FPGA和ASIC的概念及区别</h3><p><strong>FPGA</strong>是可编程ASIC。<br><strong>ASIC</strong>——专用集成电路(Application Specific IC)，它是面向专门用途的电路，专门为一个用户设计和制造的。根据一个用户的特定要求，能以低研制成本，短交货周期供货的全定制、半定制集成电路。</p><h3 id="2、对异步复位和同步复位的理解"><a href="#2、对异步复位和同步复位的理解" class="headerlink" title="2、对异步复位和同步复位的理解"></a>2、对异步复位和同步复位的理解</h3><p>异步复位在边沿敏感的<strong>always</strong>语句的事件列表中，除了时钟信号还有异步控制信号，复位信号和系统不相关；同步复位在列表中只需给出时钟即可。</p><p><strong>同步复位缺点：</strong>复位响应不及时；复位信号宽度与驱动时钟有关；通常来讲需要耗费更多的器件，无法充分利用触发器的专用复位端口CLR。</p><p><strong>异步复位存在隐患：</strong>异步时钟域的亚稳态问题同样存在于异步复位信号和系统时钟信号之间；同步复位在时钟信号clk的上升沿触发时进行系统是否复位的判断，这将会降低亚稳态出现的概率（只是降低，不能完全避免），即异步复位出现亚稳态的概率要远高于同步复位。</p><p><strong>另：</strong></p><ul><li>1、异步复位的亚稳态隐患在于，异步复位信号释放(对低电平有效的复位来说就是上跳沿)如果落在落在trecovery与tremoval的窗口之内（可见《异步复位设计中的亚稳态问题及其解决方案》），触发器的输出端的值将是不确定的, 可能是高电平, 可能是低电平, 可能处于高低电平之间, 也可能处于震荡状态，并且在未知的时刻会固定到高电平或低电平。这种状态就称为亚稳态。反映到仿真模型中, 输出端的值是不定态X；</li><li>2、由于同步复位的大量应用，因此Xilinx公司才定制了具有同步复位管脚的FDR寄存器。在ASIC设计层面，理想的复位解决方案时异步复位同步释放；</li><li>3、在ASIC设计中，同步电路比异步电路占用面积大，但是在FPGA设计中，是以逻辑单元衡量电路面积的，因此同步设计和异步设计相比，并不会浪费太多资源。</li><li>4、同步逻辑设计的优点主要有：可以有效避免毛刺额产生，提高设计的可靠性；可以简化时序分析；可以减少工作环境对设计的影响；目前商用的FPGA都是面向同步电路设计而优化的，包括全局时钟布线，时钟管理模块等等。</li><li>5、异步数据传输时亚稳态发生的原因与时钟频率无关，但随着clk频率的增加，亚稳态发生的几率是增加的。同步复位仅在时钟的有效沿生效，可有效避免因毛刺造成的亚稳态和错误。毛刺信号是由FPGA内部结构特征决定的，同步复位在进行复位和释放复位信号时，仅当时钟沿采到复位信号电平变化时进行相关操作，若复位信号树的组合逻辑出现了某种毛刺，此时时钟沿采到毛刺的概率较低，由此通过时钟沿采样，可有效过波复位电路组合逻辑产生的毛刺，增强了电路稳定性。</li></ul><h3 id="3、时序分析的概念"><a href="#3、时序分析的概念" class="headerlink" title="3、时序分析的概念"></a>3、时序分析的概念</h3><p><strong>最大时钟频率、时钟建立时间、时钟保持时间、时钟到输出延时、管脚到管脚延时</strong>等。</p><h3 id="4、时钟抖动"><a href="#4、时钟抖动" class="headerlink" title="4、时钟抖动"></a>4、时钟抖动</h3><p>时钟抖动是指芯片的某一个给定点上时钟周期发生暂时的变化，即相邻两个时钟周期之间存在差值。这个误差是时钟发生器内部产生的，和晶振或者PLL内部电路有关，时钟信号传播过程中的噪声对其也有影响。</p><h4 id="怎么降低时钟抖动？"><a href="#怎么降低时钟抖动？" class="headerlink" title="怎么降低时钟抖动？"></a>怎么降低时钟抖动？</h4><ul><li>1、选择相位噪声特性好（时钟抖动小）的晶体振荡器。</li><li>2、采用合理的逻辑电平并以差分形式传输时钟信号。诸如采用LVDS或LVPECL等差分方式传输信号，都能极大地降低时钟抖动；这种差分通路还能消减信号通路上的所有共模噪声、干扰和串扰。</li><li>3、谨慎处理印制板时钟信号的走线。</li><li>4、采用FPGA片内的锁相环（PLL）对输入时钟进行锁相。</li></ul><h3 id="5、FPGA跨时钟域数据传输的处理"><a href="#5、FPGA跨时钟域数据传输的处理" class="headerlink" title="5、FPGA跨时钟域数据传输的处理"></a>5、FPGA跨时钟域数据传输的处理</h3><p>一般使用三种方法：一是采用寄存器打两拍；二是使用FIFO、双口RAM；三是使用握手协议确保数据正确接收。</p><p></br></br></br></br></br></p><ul><li>end</li></ul>]]>
    </content>
    <id>https://lijinbo.cc/2021/04/25/%E6%A8%A1%E7%94%B5_%E6%95%B0%E7%94%B5/</id>
    <link href="https://lijinbo.cc/2021/04/25/%E6%A8%A1%E7%94%B5_%E6%95%B0%E7%94%B5/"/>
    <published>2021-04-24T16:00:00.000Z</published>
    <summary>
      <![CDATA[<h2 id="模拟电路"><a href="#模拟电路" class="headerlink" title="模拟电路"></a>模拟电路</h2><h3 id="1、基尔霍夫定理"><a href="#1、基尔霍夫定理" class="headerlink" title="1、基尔霍夫定理"></a>1、基尔霍夫定理</h3><p>基尔霍夫定律包括电流定律和电压定律<br>电流定律：在集总电路中，任何时刻，对任一节点，所有流出节点的支路电流的代数和恒等于零。<br>电压定律：在集总电路中，任何时刻，沿任一回路，所有支路电压的代数和恒等于零。</p>
<h3 id="2、反馈电路"><a href="#2、反馈电路" class="headerlink" title="2、反馈电路"></a>2、反馈电路</h3>]]>
    </summary>
    <title>一些硬件电路知识</title>
    <updated>2026-07-18T15:00:26.345Z</updated>
  </entry>
  <entry>
    <author>
      <name>COMBER</name>
    </author>
    <category term="Linux" scheme="https://lijinbo.cc/categories/Linux/"/>
    <category term="Shell编程" scheme="https://lijinbo.cc/tags/Shell%E7%BC%96%E7%A8%8B/"/>
    <content>
      <![CDATA[<p><strong><em>shell</em></strong> 是用于侦听用户输入指令的工具，其接受到这些指令，然后执行相应的操作；shell是一种计算语言，主要用于脚本维护。 </br></p><p><img src="https://i.loli.net/2021/08/17/u9yrfwLiqFOlKVQ.png" alt=""></p><span id="more"></span><p>我们可以通过以下方式查看当前PC支持的shell</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">[root@localhost test]# ls /bin/*sh</span><br><span class="line">/bin/bash  /bin/csh  /bin/ksh    /bin/sh  /bin/tcsh</span><br></pre></td></tr></table></figure><p>查看当前系统所使用shell</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">[root@localhost test]# echo $SHELL</span><br><span class="line">/bin/bash</span><br></pre></td></tr></table></figure><hr><h1 id="shell-开发流程"><a href="#shell-开发流程" class="headerlink" title="shell 开发流程"></a><strong><em>shell</em></strong> 开发流程</h1><h2 id="创建shell脚本文件"><a href="#创建shell脚本文件" class="headerlink" title="创建shell脚本文件"></a>创建shell脚本文件</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">touch 01_hello.sh</span><br></pre></td></tr></table></figure><h2 id="打开脚本文件"><a href="#打开脚本文件" class="headerlink" title="打开脚本文件"></a>打开脚本文件</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">vim 01_hello.sh</span><br></pre></td></tr></table></figure><h2 id="实现"><a href="#实现" class="headerlink" title="实现"></a>实现</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">#!/bin/bash//表示以下所有的所有的指令都通过bash来解析</span><br><span class="line">echo &quot;hello world&quot;//表示输出语句</span><br></pre></td></tr></table></figure><h2 id="指定可执行权限"><a href="#指定可执行权限" class="headerlink" title="指定可执行权限"></a>指定可执行权限</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">chmod 755 01_hello.sh</span><br></pre></td></tr></table></figure><h2 id="执行"><a href="#执行" class="headerlink" title="执行"></a>执行</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">./01_hello.sh</span><br></pre></td></tr></table></figure><h1 id="shell-环境"><a href="#shell-环境" class="headerlink" title="shell 环境"></a><strong><em>shell</em></strong> 环境</h1><p>shell的变量是没有类型的，但是有环境变量和局部变量之分</p><h2 id="环境变量"><a href="#环境变量" class="headerlink" title="环境变量"></a>环境变量</h2><p>即全局变量，可以被当前shell或者子shell访问；</br></p><h3 id="查看环境变量"><a href="#查看环境变量" class="headerlink" title="查看环境变量"></a>查看环境变量</h3><p><code>env</code></p><h3 id="定义环境变量"><a href="#定义环境变量" class="headerlink" title="定义环境变量"></a>定义环境变量</h3><p><code>export a=hello</code></p><h3 id="访问变量值"><a href="#访问变量值" class="headerlink" title="访问变量值"></a>访问变量值</h3><p><code>$&#123;variable_name&#125;</code></p><h2 id="局部变量"><a href="#局部变量" class="headerlink" title="局部变量"></a>局部变量</h2><p>局部变量只能被当前的shell所访问</p><h3 id="查看局部变量"><a href="#查看局部变量" class="headerlink" title="查看局部变量"></a>查看局部变量</h3><p><code>set</code></p><h3 id="定义局部变量"><a href="#定义局部变量" class="headerlink" title="定义局部变量"></a>定义局部变量</h3><p><code>b=123</code></p><h3 id="访问变量"><a href="#访问变量" class="headerlink" title="访问变量"></a>访问变量</h3><p><code>$&#123;variable_name&#125;</code></p><h2 id="算术运算符"><a href="#算术运算符" class="headerlink" title="算术运算符"></a>算术运算符</h2><p><code>+ - * / %</code></p><h3 id="format"><a href="#format" class="headerlink" title="format"></a>format</h3><p><code>$[$variable_name + $variable_name]</code></p><h1 id="shell-语句格式"><a href="#shell-语句格式" class="headerlink" title="shell 语句格式"></a><strong><em>shell</em></strong> 语句格式</h1><h2 id="输出语句"><a href="#输出语句" class="headerlink" title="输出语句"></a>输出语句</h2><h3 id="format-1"><a href="#format-1" class="headerlink" title="format"></a>format</h3><p><code>echo [option] &quot;hello&quot;</code></p><h3 id="option"><a href="#option" class="headerlink" title="option"></a>option</h3><ul><li><strong>-n</strong> : 表示不换行</li></ul><h2 id="输入语句"><a href="#输入语句" class="headerlink" title="输入语句"></a>输入语句</h2><h3 id="format-2"><a href="#format-2" class="headerlink" title="format"></a>format</h3><p><code>read [option] variable_name</code></p><h3 id="option-1"><a href="#option-1" class="headerlink" title="option"></a>option</h3><ul><li><strong>-p</strong> : 表示显示提示信息</li><li><strong>-s</strong> : 表示以非显式方式接受输入</li><li><strong>-n</strong> : 表示指定接受字符个数</li><li><strong>-t</strong> : 表示超时时间（秒）</li></ul><h2 id="if-语句"><a href="#if-语句" class="headerlink" title="if 语句"></a><strong>if</strong> 语句</h2><h3 id="format-3"><a href="#format-3" class="headerlink" title="format"></a>format</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">if [ condition ]</span><br><span class="line">then</span><br><span class="line">operation</span><br><span class="line">else</span><br><span class="line">operation</span><br><span class="line">fi</span><br></pre></td></tr></table></figure><h3 id="嵌套"><a href="#嵌套" class="headerlink" title="嵌套"></a>嵌套</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><span class="line">if [ condition ]</span><br><span class="line">then</span><br><span class="line">if [ condition ]</span><br><span class="line">then</span><br><span class="line">....</span><br><span class="line">else</span><br><span class="line">....</span><br><span class="line">fi</span><br><span class="line">....</span><br><span class="line">elif [ condition ]</span><br><span class="line">then</span><br><span class="line">....</span><br><span class="line">else</span><br><span class="line">....</span><br><span class="line">fi</span><br><span class="line">....</span><br><span class="line">fi</span><br></pre></td></tr></table></figure><h3 id="配合其它命令"><a href="#配合其它命令" class="headerlink" title="配合其它命令"></a>配合其它命令</h3><h4 id="format-4"><a href="#format-4" class="headerlink" title="format"></a>format</h4><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">if cmd</span><br><span class="line">then</span><br><span class="line">cmd</span><br><span class="line">fi</span><br><span class="line"></span><br></pre></td></tr></table></figure><h4 id="example"><a href="#example" class="headerlink" title="example"></a>example</h4><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">if mount 192.168.0.254:/example &amp;&gt; /dev/null</span><br><span class="line">then</span><br><span class="line">echo &quot;Successfully mounted&quot;</span><br><span class="line">fi</span><br></pre></td></tr></table></figure><h2 id="case-语句"><a href="#case-语句" class="headerlink" title="case 语句"></a><strong>case</strong> 语句</h2><h3 id="format-5"><a href="#format-5" class="headerlink" title="format"></a>format</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line">case $variablename in</span><br><span class="line">value1)</span><br><span class="line">cmd</span><br><span class="line">;;</span><br><span class="line">value2)</span><br><span class="line">cmd</span><br><span class="line">;;</span><br><span class="line">....</span><br><span class="line">*)</span><br><span class="line">cmd_fault</span><br><span class="line">;;</span><br><span class="line">esac</span><br></pre></td></tr></table></figure><h2 id="运算"><a href="#运算" class="headerlink" title="运算"></a>运算</h2><h3 id="关系运算符"><a href="#关系运算符" class="headerlink" title="关系运算符"></a>关系运算符</h3><table><thead><tr><th>-</th><th>数学表示</th><th>shell格式</th></tr></thead><tbody><tr><td>大于</td><td>&gt;</td><td>-gt</td></tr><tr><td>小于</td><td>&lt;</td><td>-lt</td></tr><tr><td>等于</td><td>=</td><td>-eq</td></tr><tr><td>大于等于</td><td>&gt;=</td><td>-ge</td></tr><tr><td>小于等于</td><td>&lt;=</td><td>-le</td></tr><tr><td>### 逻辑运算符</td><td></td><td></td></tr><tr><td>-</td><td>格式一</td><td>格式二</td></tr><tr><td>—</td><td>—</td><td>—</td></tr><tr><td>与</td><td>&amp;&amp;</td><td>-a</td></tr><tr><td>或</td><td>||</td><td>-o</td></tr><tr><td>非</td><td>!</td><td></td></tr><tr><td>#### format</td><td></td><td></td></tr><tr><td><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">[[ con1 &amp;&amp; con2 &amp;&amp; ... &amp;&amp; ... ]]        //格式1</span><br><span class="line">[ con1 ] &amp;&amp; [ con2 ] &amp;&amp; ... &amp;&amp; [ ... ]  //格式2</span><br><span class="line">[ con1 -a con2 -a ... -a ... ] //格式3</span><br></pre></td></tr></table></figure></td><td></td><td></td></tr><tr><td>### 数学计算格式</td><td></td><td></td></tr><tr><td><code>$[$var1 * $var2 + 1]</code></td><td></td><td></td></tr></tbody></table><h3 id="字符串比较"><a href="#字符串比较" class="headerlink" title="字符串比较"></a>字符串比较</h3><table><thead><tr><th>格式</th><th>意义</th></tr></thead><tbody><tr><td>-n STRING</td><td>判断字符串是非空</td></tr><tr><td>-z STRING</td><td>判断字符串为空</td></tr><tr><td>STRING1 = STRING2</td><td>判断相等</td></tr><tr><td>STRING1 != STRING2</td><td>判断不等</td></tr></tbody></table><h2 id="for-循环"><a href="#for-循环" class="headerlink" title="for 循环"></a><strong>for</strong> 循环</h2><h3 id="format-6"><a href="#format-6" class="headerlink" title="format"></a>format</h3><p><strong>for</strong>循环主要有以下两种格式<br>一种是C语言式的for循环</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">for ((i = 0; i &lt; 100; ++i))</span><br><span class="line">do</span><br><span class="line">cmd</span><br><span class="line">done</span><br></pre></td></tr></table></figure><p>还有一种是for_in式的</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">for varname in `seq 1 1 100` //第一个1是初始值，第二个1是步进值，第三个是终值</span><br><span class="line">do</span><br><span class="line">cmd</span><br><span class="line">done</span><br></pre></td></tr></table></figure><h2 id="while-循环"><a href="#while-循环" class="headerlink" title="while 循环"></a><strong>while</strong> 循环</h2><h3 id="format-7"><a href="#format-7" class="headerlink" title="format"></a>format</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">i = 0 //初始化</span><br><span class="line">while [ condition ]  //条件部分</span><br><span class="line">do</span><br><span class="line">cmd//循环体</span><br><span class="line">let i++ //自增或者自减</span><br><span class="line">done</span><br></pre></td></tr></table></figure><h3 id="死循环"><a href="#死循环" class="headerlink" title="死循环"></a>死循环</h3><p>死循环要配合延迟函数和退出条件使用</p><h4 id="sleep"><a href="#sleep" class="headerlink" title="sleep"></a>sleep</h4><p>用于表示延迟以秒为单位的时间</p><h4 id="usleep"><a href="#usleep" class="headerlink" title="usleep"></a>usleep</h4><p>用于表示延迟以微秒为单位的时间</p><h4 id="break"><a href="#break" class="headerlink" title="break"></a>break</h4><p>退出整个循环，只在当前循环中起作用，不可以跨层退出</p><h4 id="continue"><a href="#continue" class="headerlink" title="continue"></a>continue</h4><p>跳过本次循环，进入下次循环，只对当前循环起作用，不可以深层退出</p><h2 id="函数"><a href="#函数" class="headerlink" title="函数"></a>函数</h2><h3 id="format-8"><a href="#format-8" class="headerlink" title="format"></a>format</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">function funname()</span><br><span class="line">&#123;</span><br><span class="line">body</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">funname()</span><br><span class="line">&#123;</span><br><span class="line">bbody</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p></br></br></br></br></br></br></p><ul><li>end</li></ul>]]>
    </content>
    <id>https://lijinbo.cc/2021/04/11/shell_1/</id>
    <link href="https://lijinbo.cc/2021/04/11/shell_1/"/>
    <published>2021-04-11T06:41:05.000Z</published>
    <summary>
      <![CDATA[<p><strong><em>shell</em></strong> 是用于侦听用户输入指令的工具，其接受到这些指令，然后执行相应的操作；shell是一种计算语言，主要用于脚本维护。 </br></p>
<p><img src="https://i.loli.net/2021/08/17/u9yrfwLiqFOlKVQ.png" alt=""></p>]]>
    </summary>
    <title>第六篇  Shell 编程学习小结</title>
    <updated>2026-07-18T15:00:26.337Z</updated>
  </entry>
  <entry>
    <author>
      <name>COMBER</name>
    </author>
    <category term="C++" scheme="https://lijinbo.cc/categories/C/"/>
    <category term="const" scheme="https://lijinbo.cc/tags/const/"/>
    <content>
      <![CDATA[<h1 id="const-修饰变量"><a href="#const-修饰变量" class="headerlink" title="const 修饰变量"></a><strong><em>const</em></strong> 修饰变量</h1><h2 id="特点"><a href="#特点" class="headerlink" title="特点"></a>特点</h2><p>1、const修饰的变量，一经初始化便不可在程序其它地方进行更改；例如</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">const int buf = 512;</span><br></pre></td></tr></table></figure><p>2、const变量可用于任何不改变不改变变量值的操作，如复制等；<br>3、禁止对const变量进行赋值</p><h1 id="共享-const-变量"><a href="#共享-const-变量" class="headerlink" title="共享 const 变量"></a>共享 <strong><em>const</em></strong> 变量</h1><span id="more"></span><p>多文件中同名的const变量间被视为在各个文件中独立定义的变量，若要在多个文件中共享同一个const变量的话，需要在其余文件中声明该变量，且在原定义和各声明前面都加上<code>extern</code>关键字</p><h1 id="引用和-const"><a href="#引用和-const" class="headerlink" title="引用和 const"></a>引用和 <strong><em>const</em></strong></h1><p>严格意义上并没有const引用这一说法，因为引用并非一个对象（Object），且引用本身在初始化后就不能改变。所谓引用指向const对象或非const对象，只是影响我们能够对其进行的操作（不能通过引用对const对象进行赋值），而并不是改变引用的指向</p><h1 id="指针和-const"><a href="#指针和-const" class="headerlink" title="指针和 const"></a>指针和 <strong><em>const</em></strong></h1><p>指针可以拥有两种const修饰</p><ul><li><strong><em>Top-level const</em></strong></li><li><strong><em>Low-level const</em></strong></li></ul><h2 id="Top-level-const"><a href="#Top-level-const" class="headerlink" title="Top-level const"></a>Top-level const</h2><p>Top-level const表明该指针对象本身为const对象，它的值一经初始化变不可被改变（指针对象存放的地址），Top-level const能修饰所有对象类型；</p><h2 id="Low-level-const"><a href="#Low-level-const" class="headerlink" title="Low-level const"></a>Low-level const</h2><p>Low-level const只代表指针能够指向const对象，同时也能指向非const对象，但是无法通过指针向对象赋值，上述的引用只有这种const用法</p>]]>
    </content>
    <id>https://lijinbo.cc/2021/04/10/c++2/</id>
    <link href="https://lijinbo.cc/2021/04/10/c++2/"/>
    <published>2021-04-10T12:00:04.000Z</published>
    <summary>
      <![CDATA[<h1 id="const-修饰变量"><a href="#const-修饰变量" class="headerlink" title="const 修饰变量"></a><strong><em>const</em></strong> 修饰变量</h1><h2 id="特点"><a href="#特点" class="headerlink" title="特点"></a>特点</h2><p>1、const修饰的变量，一经初始化便不可在程序其它地方进行更改；例如</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">const int buf = 512;</span><br></pre></td></tr></table></figure>
<p>2、const变量可用于任何不改变不改变变量值的操作，如复制等；<br>3、禁止对const变量进行赋值</p>
<h1 id="共享-const-变量"><a href="#共享-const-变量" class="headerlink" title="共享 const 变量"></a>共享 <strong><em>const</em></strong> 变量</h1>]]>
    </summary>
    <title>const不同用法的区别</title>
    <updated>2026-07-18T15:00:26.325Z</updated>
  </entry>
  <entry>
    <author>
      <name>COMBER</name>
    </author>
    <category term="Linux" scheme="https://lijinbo.cc/categories/Linux/"/>
    <category term="Vim" scheme="https://lijinbo.cc/tags/Vim/"/>
    <content>
      <![CDATA[<p><strong><em>vim</em></strong> 是一款文本编辑器，同时也是一款程序开发利器。</br><br>在命令行下可以用 <code>vim -v</code> 查看 <strong><em>vim</em></strong> 版本；用 <code>vim filename</code> 在 <strong><em>vim</em></strong> 中打开指定文件，若文件不存在则会自动创建。<strong><em>vim</em></strong> 有3种模式 —— 一般模式、插入模式和命令行模式，直接打开文件时默认进入一般模式，按 <strong>ESC</strong> 进入命令行模式，按 <strong>i</strong> 键等进入插入模式。</p><p><img src="https://i.loli.net/2021/08/17/pQjALKicT9Fyh6k.gif" alt=""></p><span id="more"></span><hr><h1 id="各模式基本操作"><a href="#各模式基本操作" class="headerlink" title="各模式基本操作"></a>各模式基本操作</h1><h2 id="一般模式"><a href="#一般模式" class="headerlink" title="一般模式"></a>一般模式</h2><h3 id="删除操作"><a href="#删除操作" class="headerlink" title="删除操作"></a>删除操作</h3><ul><li><strong>dd</strong>    :    表示删除一行<br>   <strong>ndd</strong>    :    表示删除n行<br>   <strong>u</strong>        :    表示撤销上次操作<br>   <strong>dG</strong>    :    表示从当前行删除到文件结尾<br>   <strong>dgg</strong>    :    表示从当前行删除到文件开头<br>   <strong>d^</strong>    :    表示删除到行首<br>   <strong>d$</strong>    :    表示删除到行尾<br>   <strong>dw</strong>    :    表示删除一个单词 必须放在单词第一个字符处<br>   <strong>ndw</strong>   :     表示删除n个单词<br>   <strong>daw</strong>   :    表示在任意位置删除一个单词</li></ul><h3 id="复制"><a href="#复制" class="headerlink" title="复制"></a>复制</h3><ul><li><strong>yy</strong>    :    表示复制一行<br>   <strong>nyy</strong>    :    表示复制n行<br>   <strong>p</strong>     :    表示粘贴</li></ul><h3 id="可视化操作"><a href="#可视化操作" class="headerlink" title="可视化操作"></a>可视化操作</h3><ul><li><strong>v + 方向键 + y + p</strong> ：可视化字符</li><li><strong>shift + v</strong>         ：可视化行</li><li><strong>ctrl + v</strong>          ： 可视化块</li></ul><h3 id="移位"><a href="#移位" class="headerlink" title="移位"></a>移位</h3><ul><li><strong>h</strong> : 左移</li><li><strong>j</strong> : 下移</li><li><strong>k</strong> : 上移</li><li><strong>l</strong> : 右移</li><li><strong>gg</strong>: 移动到文件开头<br>   <strong>G</strong>    : 移动到文件结尾</li><li><strong>ngg</strong> : 移动到n行<br>   <strong>^</strong>    : 行首<br>   <strong>$</strong>    : 行尾<br>   <strong>H</strong>    : 移动屏幕开始<br>   <strong>L</strong>    ：移动屏幕结尾<br>   <strong>M</strong>    ：移动屏幕中键</li><li><strong>50%</strong> : 表示文件中间</li></ul><h2 id="编辑模式"><a href="#编辑模式" class="headerlink" title="编辑模式"></a>编辑模式</h2><p>不同的插入方式</p><ul><li><strong>i</strong> :    表示在光标前面插入<br>   <strong>I</strong> :    表示光标所在行行首插入<br>   <strong>o</strong> :    表示在光标下一行插入<br>   <strong>O</strong> :    表示在光标上一行插入<br>   <strong>a</strong> :    表示在光标所在后面插入<br>   <strong>A</strong> :    表示在行尾插入<br>   <strong>s</strong> :    表示删除当前光标所在位置插入<br>   <strong>S</strong> :    表示删除当前行插入<br>   <strong>r</strong> :    表示替换当前光标位置字符</li><li><strong>R</strong> :    表示替换所有的字符</li></ul><h2 id="命令行模式"><a href="#命令行模式" class="headerlink" title="命令行模式"></a>命令行模式</h2><ul><li><strong>:wq</strong>   : 表示保存并退出</li><li><strong>:q</strong>    : 表示退出</li><li><strong>:w</strong>    : 表示保存<br>   <strong>:q!</strong>   : 表示强制退出    </li></ul><h3 id="显示行号"><a href="#显示行号" class="headerlink" title="显示行号"></a>显示行号</h3><p>这个方法只是临时有效</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">:set nu表示显示行号</span><br><span class="line">:set nonm表示取消行号</span><br><span class="line">:r !cat ~/.vimrc表示读文件内容到当前文件中</span><br></pre></td></tr></table></figure><h3 id="配置vim配置文件"><a href="#配置vim配置文件" class="headerlink" title="配置vim配置文件"></a>配置vim配置文件</h3><p>这个方法能实现永久有效地显示行号 </br><br>打开vim配置文件 </br><br><code>vim ~/.vimrc</code> </br><br>以下是一些基本配置</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">&quot;表示显示行号</span><br><span class="line">set number</span><br><span class="line">&quot;表示tab键位宽</span><br><span class="line">set ts=4</span><br><span class="line">&quot;表示自动对其</span><br><span class="line">set ai</span><br><span class="line">&quot;表示shift键位宽</span><br><span class="line">set shiftwidth=4</span><br></pre></td></tr></table></figure><h1 id="查找与替换"><a href="#查找与替换" class="headerlink" title="查找与替换"></a>查找与替换</h1><p>在命令行模式中，可进行文件查找与替换操作</p><h2 id="查找"><a href="#查找" class="headerlink" title="查找"></a>查找</h2><h3 id="format"><a href="#format" class="headerlink" title="format"></a>format</h3><p><code>:/key</code></p><ul><li>n : 表示向下查找</li><li>N : 表示向上查找</li></ul><p><code>:?key</code></p><ul><li>N : 表示向下查找</li><li>n : 表示向上查找 </li></ul><h2 id="替换"><a href="#替换" class="headerlink" title="替换"></a>替换</h2><h3 id="format-1"><a href="#format-1" class="headerlink" title="format"></a>format</h3><p><code>:m,ns/oldkey/newkey/option</code></p><ul><li>m : 表示从第m行开始</li><li>n : 表示到第n行结束</li><li>s : 表示关键字</li><li>oldkey : 表示被替换关键字</li><li>newkey : 表示替换关键字</li></ul><h3 id="option"><a href="#option" class="headerlink" title="option"></a>option</h3><ul><li>g : 表示全部替换</li><li>i : 表示不取分大小写替换</li></ul><h3 id="案例"><a href="#案例" class="headerlink" title="案例"></a>案例</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">:2,4s/root/admin/g  表示替换第2行到第4行所有匹配信息</span><br><span class="line">:%s/root/admin/g表示全文替换</span><br><span class="line">:1,$s/root/admin/g  表示全文替换</span><br><span class="line">:%s/root/admin/gi表示不区分大小写替换</span><br></pre></td></tr></table></figure><hr><p></br></br></br></br></br></br></p><ul><li>end</li></ul>]]>
    </content>
    <id>https://lijinbo.cc/2021/03/10/linux_5/</id>
    <link href="https://lijinbo.cc/2021/03/10/linux_5/"/>
    <published>2021-03-10T10:33:16.000Z</published>
    <summary>
      <![CDATA[<p><strong><em>vim</em></strong> 是一款文本编辑器，同时也是一款程序开发利器。</br><br>在命令行下可以用 <code>vim -v</code> 查看 <strong><em>vim</em></strong> 版本；用 <code>vim filename</code> 在 <strong><em>vim</em></strong> 中打开指定文件，若文件不存在则会自动创建。<strong><em>vim</em></strong> 有3种模式 —— 一般模式、插入模式和命令行模式，直接打开文件时默认进入一般模式，按 <strong>ESC</strong> 进入命令行模式，按 <strong>i</strong> 键等进入插入模式。</p>
<p><img src="https://i.loli.net/2021/08/17/pQjALKicT9Fyh6k.gif" alt=""></p>]]>
    </summary>
    <title>第五篇  Vim 用法小结</title>
    <updated>2026-07-18T15:00:26.335Z</updated>
  </entry>
  <entry>
    <author>
      <name>COMBER</name>
    </author>
    <category term="C++" scheme="https://lijinbo.cc/categories/C/"/>
    <content>
      <![CDATA[<p>在啃了几十页 <strong><em>《 C++ Primer 》</em></strong> 之后，决定对 <strong><em>C++</em></strong> 的基本语法和运用写一个小实验，编译环境是我的 <strong><em>Red Hat 5 Linux</em></strong>虚拟机。</p><h1 id="Helloworld"><a href="#Helloworld" class="headerlink" title="Helloworld"></a>Helloworld</h1><p>下面是hello.cpp源代码</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">/***hello.cpp***/</span><br><span class="line">#include &lt;iostream&gt;</span><br><span class="line"></span><br><span class="line">int main(int argc, char *argv[])&#123;</span><br><span class="line">    std::cout &lt;&lt; &quot;Hello World!&quot; &lt;&lt; std::endl;</span><br><span class="line">    return 0;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><span id="more"></span><h1 id="单源文件的编译和运行"><a href="#单源文件的编译和运行" class="headerlink" title="单源文件的编译和运行"></a>单源文件的编译和运行</h1><h2 id="编译"><a href="#编译" class="headerlink" title="编译"></a>编译</h2><p>在 <strong><em>Linux</em></strong>环境下，我们使用 <strong><em>g++</em></strong> 编译器将后缀为 <strong><em>.cpp</em></strong>的源文件编译成为可执行文件。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">g++ hello.cpp</span><br></pre></td></tr></table></figure><p>其过程与 <strong><em>C</em></strong>文件编译过程类似，首先把源文件编译生成对象文件，接下来是链接对象文件与相关库文件，最后得到可执行文件，默认情况下在源文件目录下生成，名为 <em>a.out</em>。</p><h2 id="运行"><a href="#运行" class="headerlink" title="运行"></a>运行</h2><p>通过如下格式的命令运行该可执行文件</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">./a.out</span><br></pre></td></tr></table></figure><p>当然我们可以通过在命令中增加选项来指定生成的可执行文件的名称，例如指定为hello，如下：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">g++ hello.cpp -o hello</span><br></pre></td></tr></table></figure><h1 id="多源文件的编译和运行"><a href="#多源文件的编译和运行" class="headerlink" title="多源文件的编译和运行"></a>多源文件的编译和运行</h1><h2 id="类（class）"><a href="#类（class）" class="headerlink" title="类（class）"></a>类（class）</h2><p>很多时候为了程序的易于理解和方便修改，我们都把一个工程拆分成若干个模块，每个模块是一个单独的源文件，负责某一项功能，且各模块间能够互相调用。在 <strong><em>C++</em></strong> 中，我们就能够在单独的文件中定义一个 <strong>类（class）</strong>，要完成这个工作，首先需要在头文件里声明该类，声明类的属性和方法，接着还需要在同名的 <em>.cpp</em> 文件内作定义。有了定义的类，只需要在其它源文件 <em>#include</em> 对应头文件，就可以在其他程序源文件中实体化该类得到一个对象，通过该对象就可以访问类的属性和方法。</p><h2 id="源程序"><a href="#源程序" class="headerlink" title="源程序"></a>源程序</h2><p>这是一个实现两数相加的简单程序，在<em>cal.h</em>中定义了<em>Cal</em>类，且定义了一个<em>add</em>方法，打印两数相加和。</p><h3 id="cal-h"><a href="#cal-h" class="headerlink" title="cal.h"></a><strong><em>cal.h</em></strong></h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">/***cal.h***/</span><br><span class="line">#include &lt;iostream&gt;</span><br><span class="line"></span><br><span class="line">calss Cal&#123;</span><br><span class="line">    public:</span><br><span class="line">        void add(double a, double b);</span><br><span class="line">&#125;;          //此处的 ; 需特别注意</span><br></pre></td></tr></table></figure><h3 id="cal-cpp"><a href="#cal-cpp" class="headerlink" title="cal.cpp"></a><strong><em>cal.cpp</em></strong></h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">/***cal.cpp***/</span><br><span class="line">#include &quot;cal.h&quot;</span><br><span class="line"></span><br><span class="line">void Cal::add(double a, double b)&#123;</span><br><span class="line">    std::cout &lt;&lt; &quot;a + b = &quot; &lt;&lt; a + b &lt;&lt; std::endl;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h3 id="main-cpp"><a href="#main-cpp" class="headerlink" title="main.cpp"></a><strong><em>main.cpp</em></strong></h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><span class="line">/***main.cpp***/</span><br><span class="line">#include &quot;cal.h&quot;</span><br><span class="line"></span><br><span class="line">int main(int argc, char *argv[])&#123;</span><br><span class="line">    Cal cal1;</span><br><span class="line">    double a, b;</span><br><span class="line">    char repeat = &#x27;y&#x27;;</span><br><span class="line"></span><br><span class="line">    while(repeat != &#x27;N&#x27; &amp;&amp; repeat != &#x27;n&#x27;)&#123;</span><br><span class="line">        std::cout &lt;&lt; &quot;Enter two numbers a&amp;b : &quot; &lt;&lt; std::endl;</span><br><span class="line">        std::cin &gt;&gt; a &gt;&gt; b;</span><br><span class="line">        cal1.add(a, b);</span><br><span class="line"></span><br><span class="line">        std::cout &lt;&lt; &quot;Continue ?(y/n):&quot; &lt;&lt; std::endl;</span><br><span class="line">        std::cin &gt;&gt; repeat;</span><br><span class="line">    &#125;</span><br><span class="line">    return 0;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h2 id="编译-1"><a href="#编译-1" class="headerlink" title="编译"></a>编译</h2><p>如果在 <strong><em>g++</em></strong> 命令中指定多个的源文件，它们将被编译成一个可执行文件，如上例：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">g++ cal.cpp main.cpp -o main</span><br></pre></td></tr></table></figure><p>那么上述的两个源文件都被编译成<em>main</em>可执行文件，其中头文件已经声明，不用在命令中加上头文件。</br><br></br></p><p><strong><em>类</em></strong> 是 <strong><em>C++</em></strong> 里很重要的内容，将在后续继续学习。。</p></br></br></br></br></br><ul><li>end</li></ul>]]>
    </content>
    <id>https://lijinbo.cc/2021/01/24/c++1/</id>
    <link href="https://lijinbo.cc/2021/01/24/c++1/"/>
    <published>2021-01-24T13:40:17.000Z</published>
    <summary>
      <![CDATA[<p>在啃了几十页 <strong><em>《 C++ Primer 》</em></strong> 之后，决定对 <strong><em>C++</em></strong> 的基本语法和运用写一个小实验，编译环境是我的 <strong><em>Red Hat 5 Linux</em></strong>虚拟机。</p>
<h1 id="Helloworld"><a href="#Helloworld" class="headerlink" title="Helloworld"></a>Helloworld</h1><p>下面是hello.cpp源代码</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">/***hello.cpp***/</span><br><span class="line">#include &lt;iostream&gt;</span><br><span class="line"></span><br><span class="line">int main(int argc, char *argv[])&#123;</span><br><span class="line">    std::cout &lt;&lt; &quot;Hello World!&quot; &lt;&lt; std::endl;</span><br><span class="line">    return 0;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>]]>
    </summary>
    <title>Linux下如何编译C++程序</title>
    <updated>2026-07-18T15:00:26.323Z</updated>
  </entry>
  <entry>
    <author>
      <name>COMBER</name>
    </author>
    <category term="Linux" scheme="https://lijinbo.cc/categories/Linux/"/>
    <category term="Linux文件操作" scheme="https://lijinbo.cc/tags/Linux%E6%96%87%E4%BB%B6%E6%93%8D%E4%BD%9C/"/>
    <content>
      <![CDATA[<p>入门 <strong><em>Linux</em></strong> 首先就要了解其文件系统和文件操作，<strong><em>Linux</em></strong> 的文件系统有其自身的结构特点，同时也有丰富的命令操作，下面就这两方面作简短总结。</p><p><img src="https://note.youdao.com/yws/api/personal/file/468CEBD89DD8472487980B8B266BC573?method=download&amp;amp;shareKey=34ffc56e345ec65d92fef6ef4f9f7723" alt=""></p><hr><span id="more"></span><h1 id="文件操作"><a href="#文件操作" class="headerlink" title="文件操作"></a>文件操作</h1><h2 id="ls"><a href="#ls" class="headerlink" title="ls"></a><strong><em>ls</em></strong></h2><h3 id="format"><a href="#format" class="headerlink" title="format"></a>format</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ls [OPTION]... [FILE]...</span><br></pre></td></tr></table></figure><h3 id="option"><a href="#option" class="headerlink" title="option"></a>option</h3><h4 id="a"><a href="#a" class="headerlink" title="-a"></a>-a</h4><p>表示显示所有文件信息，包括</p><ul><li>. : 表示当前工作目录</li><li>.. : 表示上级目录</li><li>.filename : 表示隐藏文件<h4 id="i"><a href="#i" class="headerlink" title="-i"></a>-i</h4>显示文件索引号，计算机识别文件的唯一标识是inode节点号，即文件索引号<h4 id="l"><a href="#l" class="headerlink" title="-l"></a>-l</h4>表示以长格式显示文件信息<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">[root@localhost test]# ls -l</span><br><span class="line">总计 16</span><br><span class="line">-rwxr-xr-x 1 root root 4729 11-29 20:18 a.out</span><br><span class="line">-rw-r--r-- 1 root root    6 11-29 20:13 a.txt</span><br><span class="line">-rw-r--r-- 1 root root   78 11-29 20:18 hello.c</span><br></pre></td></tr></table></figure>其中文件信息的第一块表示文件类型和权限，共10位</br><br>第一位表示文件类型</br></li><li>- : 表示普通文件<br>  d : 表示目录<br>  c : 表示字符设备类文家<br>  b : 表示块设备文件<br>  l : 表示链接文件<br>  p : 表示管道文件<br>  s : 表示套接子文件</br><br>第二到第十位表示权限,三位为一组，共三组,分别表示属主权限–u、表示属组权限–g，其他用户权限–o</br><br>  r : 表示只读<br>  w : 表示只写<br>  x : 表示可执行<br>  - : 表示无权限</br><br>第二块表示文件硬连接数<br>  硬链接 </br><pre><code>创建 &lt;/br&gt;`ln destfile srcfile` &lt;/br&gt;特性 &lt;/br&gt;1、 给文件做一个备份 &lt;/br&gt;2、 硬链接文件inode节点号一致 &lt;/br&gt;3、 不可以对目录备份 &lt;/br&gt;4、 不可以跨分区 &lt;/br&gt;</code></pre>  软连接 </br><pre><code>创建 &lt;/br&gt;`ln -s destfile srcfile` &lt;/br&gt;特性 &lt;/br&gt;1、 相当于创建一个快捷方式 &lt;/br&gt;2、 文件inode节点号不一致 &lt;/br&gt;3、 可以对目录设置 &lt;/br&gt;4、 不可以跨分区 &lt;/br&gt;</code></pre></li></ul><p>第三块表示文件属主，即文件拥有者</br><br>第四块表示文件属组，即文件拥有组</br><br>第五块表示文件大小，以字节计</br><br>第六块表示修改文件内容时间</br></p><ul><li>atime:访问时间 (cat tail head more less …)</li><li>ctime:表示修改文件属性时间(chmod chown)</li><li>mtime:表示内容时间 同时触发atime 和 ctime时间</li></ul><p>第七块表示文件名</p><h4 id="h"><a href="#h" class="headerlink" title="-h"></a>-h</h4><p>表示易读方式显示文件大小</br><br>bit =&gt; byte =&gt; K =&gt; M =&gt; G =&gt; T =&gt; P =&gt; ….</p><h2 id="chmod"><a href="#chmod" class="headerlink" title="chmod"></a><strong><em>chmod</em></strong></h2><p>指定权限命令</p><h3 id="原有基础上添加权限"><a href="#原有基础上添加权限" class="headerlink" title="原有基础上添加权限"></a>原有基础上添加权限</h3><h4 id="案例"><a href="#案例" class="headerlink" title="案例"></a>案例</h4><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">[root@localhost test]# ll</span><br><span class="line">总计 0</span><br><span class="line">-rw-r--r-- 1 root root 0 12-04 20:34 aa</span><br><span class="line">[root@localhost test]# chmod u+x aa</span><br><span class="line">[root@localhost test]# ll</span><br><span class="line">总计 0</span><br><span class="line">-rwxr--r-- 1 root root 0 12-04 20:34 aa</span><br></pre></td></tr></table></figure><h3 id="原有基础上取消权限"><a href="#原有基础上取消权限" class="headerlink" title="原有基础上取消权限"></a>原有基础上取消权限</h3><h4 id="案例-1"><a href="#案例-1" class="headerlink" title="案例"></a>案例</h4><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">[root@localhost test]# ll</span><br><span class="line">总计 0</span><br><span class="line">-rwxr--r-- 1 root root 0 12-04 20:34 aa</span><br><span class="line">[root@localhost test]# chmod u-w aa</span><br><span class="line">[root@localhost test]# ll</span><br><span class="line">总计 0</span><br><span class="line">-r-xr--r-- 1 root root 0 12-04 20:34 aa</span><br></pre></td></tr></table></figure><h3 id="直接指定文件的权限"><a href="#直接指定文件的权限" class="headerlink" title="直接指定文件的权限"></a>直接指定文件的权限</h3><h4 id="案例-2"><a href="#案例-2" class="headerlink" title="案例"></a>案例</h4><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">[root@localhost test]# chmod  u=rwx aa</span><br><span class="line">[root@localhost test]# ll</span><br><span class="line">总计 0</span><br><span class="line">-rwxr--r-- 1 root root 0 12-04 20:34 aa</span><br></pre></td></tr></table></figure><h3 id="一次性指定权限"><a href="#一次性指定权限" class="headerlink" title="一次性指定权限"></a>一次性指定权限</h3><h4 id="案例-3"><a href="#案例-3" class="headerlink" title="案例"></a>案例</h4><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">[root@localhost test]# ll</span><br><span class="line">总计 0</span><br><span class="line">-rwxr--r-- 1 root root 0 12-04 20:34 aa</span><br><span class="line">[root@localhost test]# chmod u=rx,g+w,o-r aa</span><br><span class="line">[root@localhost test]# ll</span><br><span class="line">总计 0</span><br><span class="line">-r-xrw---- 1 root root 0 12-04 20:34 aa</span><br></pre></td></tr></table></figure><h3 id="修改文件属主或者属组"><a href="#修改文件属主或者属组" class="headerlink" title="修改文件属主或者属组"></a>修改文件属主或者属组</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">chown username:groupname filename</span><br></pre></td></tr></table></figure><h4 id="案例-4"><a href="#案例-4" class="headerlink" title="案例"></a>案例</h4><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line">[root@localhost test]# chown tom aa</span><br><span class="line">[root@localhost test]# ll</span><br><span class="line">总计 4</span><br><span class="line">---------- 1 tom root 19 12-04 20:48 aa</span><br><span class="line">[root@localhost test]# chown :jim aa</span><br><span class="line">[root@localhost test]# ll</span><br><span class="line">总计 4</span><br><span class="line">---------- 1 tom jim 19 12-04 20:48 aa</span><br><span class="line">[root@localhost test]# chown jim:tom aa</span><br><span class="line">[root@localhost test]# ll</span><br><span class="line">总计 4</span><br><span class="line">---------- 1 jim tom 19 12-04 20:48 aa</span><br></pre></td></tr></table></figure><h2 id="cd"><a href="#cd" class="headerlink" title="cd"></a><strong><em>cd</em></strong></h2><p>作用是切换工作目录</p><h3 id="绝对路径"><a href="#绝对路径" class="headerlink" title="绝对路径"></a>绝对路径</h3><p>从根开始路径就是绝对路径</p><h3 id="相对路径"><a href="#相对路径" class="headerlink" title="相对路径"></a>相对路径</h3><p>从当前工作目录开始就是相对路径</p><h3 id="特殊目录"><a href="#特殊目录" class="headerlink" title="特殊目录"></a>特殊目录</h3><table><thead><tr><th>符号</th><th>表示</th></tr></thead><tbody><tr><td>.</td><td>表示当前工作目录</td></tr><tr><td>..</td><td>表示上级目录</td></tr><tr><td>~</td><td>表示当前用户家目录</td></tr></tbody></table><h3 id="用户"><a href="#用户" class="headerlink" title="用户"></a>用户</h3><blockquote><p>区分用户是通过用户的uid来区分的</br><br>[root@localhost bb]# <code>id root</code></br><br>uid=0(root) gid=0(root)</br><br>groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)</br><br>[root@localhost bb]# <code>id tom</code></br><br>uid=500(tom) gid=500(tom) groups=500(tom)</br></p></blockquote><ul><li><p>管理员用户root</br></p><pre><code>/root</code></pre><p>   普通用户：</br></p><pre><code>/home/&lt;/br&gt;</code></pre><p>   <code>cd</code> : 表示回到当前用户家目录下</p><p>   <code>-</code> : 表示返回上次所处的目录环境</p><p>   <code>pwd</code>查看当前工作目录绝对路径<br>/test</p></li></ul><h2 id="touch"><a href="#touch" class="headerlink" title="touch"></a><strong><em>touch</em></strong></h2><p>创建文件</br></p><h3 id="format-1"><a href="#format-1" class="headerlink" title="format"></a>format</h3><p><code>touch filename</code></br><br><code>touch a&#123;1..100&#125;</code>    //创建了100个文件</p><h2 id="cp"><a href="#cp" class="headerlink" title="cp"></a><strong><em>cp</em></strong></h2><p>实现拷贝，复制功能</p><h3 id="format-2"><a href="#format-2" class="headerlink" title="format"></a>format</h3><pre><code>`cp option srcfile destfile`</code></pre><h3 id="option-1"><a href="#option-1" class="headerlink" title="option"></a>option</h3><ul><li>-r : 表示拷贝目录</li></ul><h3 id="案例-5"><a href="#案例-5" class="headerlink" title="案例"></a>案例</h3><p>拷贝文件时候如果目标文件存在，则无需交互式确认</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">/bin/cp srcfilename destfilename</span><br><span class="line">\cpsrcfilename destfilename</span><br></pre></td></tr></table></figure><h2 id="mv"><a href="#mv" class="headerlink" title="mv"></a><strong><em>mv</em></strong></h2><p>实现移动、改名功能</p><h3 id="案例-6"><a href="#案例-6" class="headerlink" title="案例"></a>案例</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">[root@localhost test]# ls</span><br><span class="line">a.txt</span><br><span class="line">[root@localhost test]# mv a.txt b.txt  表示改名</span><br><span class="line">[root@localhost test]# ls</span><br><span class="line">b.txt</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">[root@localhost test]# ls</span><br><span class="line">aa  b.txt</span><br><span class="line">[root@localhost test]# mv b.txt aa表示移动</span><br><span class="line">[root@localhost test]# ls</span><br><span class="line">aa</span><br><span class="line">[root@localhost test]# tree</span><br><span class="line">.</span><br><span class="line">`-- aa</span><br><span class="line">    `-- b.txt</span><br><span class="line"></span><br><span class="line">1 directory, 1 file</span><br></pre></td></tr></table></figure><h3 id="移动并改名"><a href="#移动并改名" class="headerlink" title="移动并改名"></a>移动并改名</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">[root@localhost test]# mv aa/b.txt /tmp/c.txt</span><br><span class="line">[root@localhost test]# tree</span><br><span class="line">.</span><br><span class="line">`-- aa</span><br><span class="line"></span><br><span class="line">1 directory, 0 files</span><br><span class="line">[root@localhost test]# tree /tmp/</span><br><span class="line">/tmp/</span><br><span class="line">|-- a.txt</span><br><span class="line">|-- b.txt</span><br><span class="line">`-- c.txt</span><br></pre></td></tr></table></figure><h2 id="rm"><a href="#rm" class="headerlink" title="rm"></a><strong><em>rm</em></strong></h2><p>删除</br></p><p><code>rm option filename</code></p><h3 id="option-2"><a href="#option-2" class="headerlink" title="option"></a>option</h3><ul><li><p>-f : 表示无序确认删除<br>   -r : 表示删除目录</p><h2 id="通配符"><a href="#通配符" class="headerlink" title="通配符"></a>通配符</h2><p>   <code>*</code>: 匹配任意多个字符<br>   <code>?</code>: 匹配任意一个字符</p></li></ul><h2 id="mkdir"><a href="#mkdir" class="headerlink" title="mkdir"></a><strong><em>mkdir</em></strong></h2><p>表示创建目录</p><blockquote><p>   [root@localhost test]# <code>mkdir aa/bb/cc/dd</code></br><br>    mkdir: 无法创建目录 “aa/bb/cc/dd”: 没有那个文件或目录</br><br>    [root@localhost test]# <code>mkdir -p aa/bb/cc/dd</code></br></p></blockquote><h2 id="cat"><a href="#cat" class="headerlink" title="cat"></a><strong><em>cat</em></strong></h2><p>查看文件内容</p><h2 id="tree"><a href="#tree" class="headerlink" title="tree"></a><strong><em>tree</em></strong></h2><p>树状结构显示目录</p><h2 id="rmdir"><a href="#rmdir" class="headerlink" title="rmdir"></a><strong><em>rmdir</em></strong></h2><p>删除目录，不能删除非空目录</p><h2 id="grep"><a href="#grep" class="headerlink" title="grep"></a><strong><em>grep</em></strong></h2><p>查看匹配关键字的行</p><h3 id="案例-7"><a href="#案例-7" class="headerlink" title="案例"></a>案例</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">grep root ./passwd  //表示查看匹配字符串</span><br><span class="line">grep -w root a.txt //表示查看匹配关键字</span><br><span class="line">grep  -v root a.txt //表示查看不匹配字符串行</span><br><span class="line">grep  -i root a.txt //表示不区分大小写查看</span><br><span class="line">grep  ^root a.txt//表示查看以root开头行</span><br><span class="line">grep  root$ a.txt   //表示查找root结尾行</span><br><span class="line">grep  -n root$ a.txt  //表示查看第几行</span><br><span class="line">grep -v ^$ ./a.txt  //表示去除空行</span><br></pre></td></tr></table></figure><h2 id="alias"><a href="#alias" class="headerlink" title="alias"></a><strong><em>alias</em></strong></h2><p>给命令定义别名</p><h3 id="案例-8"><a href="#案例-8" class="headerlink" title="案例"></a>案例</h3><p>临时有效地定义一个命令别名</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">[root@localhost test]# llll</span><br><span class="line">bash: llll: command not found</span><br><span class="line">[root@localhost test]# alias llll=&#x27;ls -l&#x27;</span><br><span class="line">[root@localhost test]# llll</span><br><span class="line">总计 4</span><br><span class="line">drwxr-xr-x 2 root root 4096 12-13 19:33 aa</span><br></pre></td></tr></table></figure><p>永久有效地定义命令别名</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">vim ~/.bashrc </span><br></pre></td></tr></table></figure><p>修改内容为</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">alias llll=&#x27;ls -l&#x27;</span><br></pre></td></tr></table></figure><p>生效</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">source ~/.bashrc</span><br></pre></td></tr></table></figure><hr><p></br></br></br></br></br></p><ul><li>end</li></ul><p>​<br>​        </p><p>​    </p>]]>
    </content>
    <id>https://lijinbo.cc/2020/12/20/linux_3/</id>
    <link href="https://lijinbo.cc/2020/12/20/linux_3/"/>
    <published>2020-12-20T13:34:36.000Z</published>
    <summary>
      <![CDATA[<p>入门 <strong><em>Linux</em></strong> 首先就要了解其文件系统和文件操作，<strong><em>Linux</em></strong> 的文件系统有其自身的结构特点，同时也有丰富的命令操作，下面就这两方面作简短总结。</p>
<p><img src="https://note.youdao.com/yws/api/personal/file/468CEBD89DD8472487980B8B266BC573?method=download&amp;amp;shareKey=34ffc56e345ec65d92fef6ef4f9f7723" alt=""></p>
<hr>]]>
    </summary>
    <title>第三篇  简单文件操作</title>
    <updated>2026-07-18T15:00:26.331Z</updated>
  </entry>
  <entry>
    <author>
      <name>COMBER</name>
    </author>
    <category term="Linux" scheme="https://lijinbo.cc/categories/Linux/"/>
    <category term="Linux快捷键与命令" scheme="https://lijinbo.cc/tags/Linux%E5%BF%AB%E6%8D%B7%E9%94%AE%E4%B8%8E%E5%91%BD%E4%BB%A4/"/>
    <content>
      <![CDATA[<h1 id="linux介绍"><a href="#linux介绍" class="headerlink" title="linux介绍"></a>linux介绍</h1><h2 id="定义"><a href="#定义" class="headerlink" title="定义"></a>定义</h2><p><strong><em>Linux</em></strong>–是一种类unix操作系统，确切的说是指操作系统的内核(kernel)。Linux是自由软件和开放源代码软件发展中最著名的例子。<br><img src="https://note.youdao.com/yws/api/personal/file/D3295E70B2F74F16A7E1635854FEA7C3?method=download&amp;amp;shareKey=cfd459ab323d1ca94ffca90810c6f719" alt=""></p><span id="more"></span><h2 id="Linux-发行版本"><a href="#Linux-发行版本" class="headerlink" title="Linux 发行版本"></a><strong><em>Linux</em></strong> 发行版本</h2><ul><li><strong><em>redhat</em></strong> : 公司运营，提供完整的解决方案，更专业</li><li><strong><em>fedora</em></strong> : 和Ubuntu的包管理不一样，Fedora对新软件及新技术吸纳比较快</li><li><strong><em>debian</em></strong> : 最遵循GNU规范操作系统，Ubuntu就是基于Debian的</li><li><strong><em>Ubuntu</em></strong> : 国内乃至全球热门的Linux发行版，安装简单，社区活跃</li><li><strong><em>Centos</em></strong> : 特点是相当稳定，版本更新紧跟RedHat，非常适合作为服务器操作系统使用</li><li><strong><em>Suse linux</em></strong> : 德国著名linux，被称为“最华丽的Linux发行版”</li><li><strong><em>红旗Linux</em></strong> : 由中国中科红旗软件技术有限公司开发,方便国内的用户使用</li></ul><hr><h1 id="快捷键和命令"><a href="#快捷键和命令" class="headerlink" title="快捷键和命令"></a>快捷键和命令</h1><h2 id="关于桌面环境"><a href="#关于桌面环境" class="headerlink" title="关于桌面环境"></a>关于桌面环境</h2><h3 id="打开终端"><a href="#打开终端" class="headerlink" title="打开终端"></a>打开终端</h3><p><strong><em>alt + F2</em></strong></p><h3 id="关闭"><a href="#关闭" class="headerlink" title="关闭"></a>关闭</h3><p><strong><em>exit</em></strong></p><h3 id="在一个终端上打开多个标签"><a href="#在一个终端上打开多个标签" class="headerlink" title="在一个终端上打开多个标签"></a>在一个终端上打开多个标签</h3><p><strong><em>ctrl + shift + t</em></strong></p><h3 id="标签之间切换"><a href="#标签之间切换" class="headerlink" title="标签之间切换"></a>标签之间切换</h3><p><strong><em>alt + num</em></strong></p><h3 id="放大字体"><a href="#放大字体" class="headerlink" title="放大字体"></a>放大字体</h3><p><strong><em>ctrl + shift + ‘ + ‘</em></strong></p><h3 id="缩小字体"><a href="#缩小字体" class="headerlink" title="缩小字体"></a>缩小字体</h3><p><strong><em>ctrl + ‘ - ‘</em></strong></p><h3 id="最大化窗口"><a href="#最大化窗口" class="headerlink" title="最大化窗口"></a>最大化窗口</h3><p><strong><em>alt + F10</em></strong></p><h3 id="最小化"><a href="#最小化" class="headerlink" title="最小化"></a>最小化</h3><p><strong><em>alt + F9</em></strong></p><h3 id="关机"><a href="#关机" class="headerlink" title="关机"></a>关机</h3><p><strong><em>init 0</em></strong> </br><br><strong><em>shutdown -h now</em></strong> </br></p><h3 id="重启"><a href="#重启" class="headerlink" title="重启"></a>重启</h3><p><strong><em>init 6</em></strong> </br><br><strong><em>shutdowm -r now</em></strong> </br><br><strong><em>reboot</em></strong> </br></p><h2 id="linux基本命令"><a href="#linux基本命令" class="headerlink" title="linux基本命令"></a>linux基本命令</h2><h3 id="分类"><a href="#分类" class="headerlink" title="分类"></a>分类</h3><ul><li>内部命令：就是shell自带的一些命令，而这些命令是不可以卸载。</li><li>外部命令：就是用户自己安装的一些命令。而这些命令是有路径。</li></ul><h3 id="区分内部命令和外部命令"><a href="#区分内部命令和外部命令" class="headerlink" title="区分内部命令和外部命令"></a>区分内部命令和外部命令</h3><blockquote><p><code>type + cmd</code> </br><br>[root@localhost /]# <code>type fdisk</code> </br><br>fdisk is hashed (/sbin/fdisk) //表示外部命令 </br><br>[root@localhost /]# <code>type cd</code> </br><br>cd is a shell builtin    //表示内部命令 </br></p></blockquote><h3 id="查看命令别名"><a href="#查看命令别名" class="headerlink" title="查看命令别名"></a>查看命令别名</h3><blockquote><p>[root@localhost /]# <code>type ls</code> </br><br>ls is aliased to ‘ls –color=tty’ </br><br>[root@localhost /]# <code>which ls</code> </br><br>alias ls=’ls –color=tty’ </br><br>/bin/ls</p></blockquote><h3 id="输出命令"><a href="#输出命令" class="headerlink" title="输出命令"></a>输出命令</h3><p>输出命令既是内部命令也是外部命令 </br></p><blockquote><p>[root@localhost /]# <code>echo hello</code> </br><br>hello </br><br>[root@localhost /]# <code>type echo</code> </br><br>echo is a shell builtin </br><br>[root@localhost /]# <code>which echo</code> </br><br>/bin/echo </br></p></blockquote><hr><h3 id="tab-键"><a href="#tab-键" class="headerlink" title="tab 键"></a><strong><em>tab</em></strong> 键</h3><p>作用是自动补齐</p><ul><li>文件名自动补齐</li><li>命令自动补齐</li></ul><blockquote><p>如果按一次tab键没有反应，有下列情况：</br><br>    1、 没有该文件或者命令</br><br>    2、 可能匹配多个文件或者命令 则再按一次。</p></blockquote><hr><h3 id="man—帮助命令"><a href="#man—帮助命令" class="headerlink" title="man—帮助命令"></a><strong><em>man</em></strong>—帮助命令</h3><p>man命令是Linux下的帮助指令，通过man指令可以查看Linux中的指令帮助、配置文件帮助和编程帮助等信息。</p><ul><li>Format&nbsp;&nbsp;&nbsp;:&nbsp;&nbsp;&nbsp;<code>man + cmd</code></br><blockquote><p>案例&nbsp;:&nbsp;<code>man 7 man</code> </br></p></blockquote></li><li>Option:       </li><li>a：在所有的man帮助手册中搜索；</br></li><li>f：等价于whatis指令，显示给定关键字的简短描述信息；</br></li><li>P：指定内容时使用分页程序；</br></li><li>M：指定man手册搜索的路径。</br></li></ul><table><thead><tr><th>参数（代号</th><th>含义</th><th>代表内容</th></tr></thead><tbody><tr><td>1</td><td>Commands</td><td>表示基本命令</td></tr><tr><td>2</td><td>System calls</td><td>表示kernel说明信息</td></tr><tr><td>3</td><td>Library calls</td><td>表示C库或者第三方图形库</td></tr><tr><td>4</td><td>Special files</td><td>表示设备类文件说明（字符设备、块设备）</td></tr><tr><td>5</td><td>File formats and conventions</td><td>表示文件格式说明文档</td></tr><tr><td>6</td><td>Games</td><td>表示游戏开发相关说明文档</td></tr><tr><td>7</td><td>Conventions and miscellaneous</td><td>表示网络相关说明文档</td></tr><tr><td>8</td><td>System management commands</td><td>表示管理员命令</td></tr><tr><td>9</td><td>Kernel routines</td><td>内核相关说明文档</td></tr></tbody></table><h3 id="help"><a href="#help" class="headerlink" title="help"></a><strong><em>help</em></strong></h3><p>help 是非常简单的命令，而且不经常使用。对于外部命令，可以使用<code>cmd --help</code>来获取帮助。</p><blockquote><p>案例：<code>ls --help</code></br></p></blockquote><p>对于内部命令，可以直接使用<code>help cmd</code>格式还获取命令帮助。</p><blockquote><p>案例： <code>help cd</code></p></blockquote><h3 id="info"><a href="#info" class="headerlink" title="info"></a><strong><em>info</em></strong></h3><p>info命令是Linux下info格式的帮助指令。</p><blockquote><p>案例：<code>info ls</code></br></p></blockquote><ul><li>Option：</br></li><li>d：添加包含info格式帮助文档的目录；</br></li><li>f：指定要读取的info格式的帮助文档；</br></li><li>n：指定首先访问的info帮助文件的节点；</br></li><li>o：输出被选择的节点内容到指定文件。</br></li></ul><h3 id="ls"><a href="#ls" class="headerlink" title="ls"></a><strong><em>ls</em></strong></h3><p>显示当前工作目录的所有信息</p><ul><li><p>Format:</br></p><blockquote><p><code>ls [OPTION] [FILE]</code> </br></p></blockquote></li><li><p>Option :</br><br>  -a : 表示显示所有信息(包括 . .. 和隐藏文件或者目录) </br><br>  . &nbsp;:&nbsp; 表示当前工作目录 </br><br>  ..&nbsp; :&nbsp; 表示上级目录 </br><br>  .filename &nbsp;: &nbsp;表示隐藏文件</br><br>  -i &nbsp;:&nbsp; 显示文件索引号</br>inode节点号（文件索引号）是计算机识别文件的唯一标识</br><br>  -l &nbsp;:&nbsp; 表示长格式显示文件信息</br></p></li></ul><blockquote><p>案例：[root@localhost test]# ls -l</br><br>        总计 16</br><br>        -rwxr-xr-x 1 root root 4729 11-29 20:18 a.out</br><br>        -rw-r–r– 1 root root    6 11-29 20:13 a.txt</br><br>        -rw-r–r– 1 root root   78 11-29 20:18 hello.c</br></p></blockquote><ul><li>第一列：表示文件类型和权限</br></li></ul><p>第一位表示文件类型</br></p><blockquote><p>  -&nbsp;: 表示普通文件</br><br>    d : 表示目录</br><br>    c : 表示字符设备类文家</br><br>    b : 表示块设备文件</br><br>    l : 表示链接文件</br><br>    p : 表示管道文件</br><br>    s : 表示套接子文件 </br></p></blockquote><p>第二到第十位表示权限</br></p><blockquote><p>   r : 表示只读</br><br>    w : 表示只写</br><br>    x : 表示可执行</br><br>    - : 表示无权限</br><br>        三位为一组，共分为三组</br><br>        第一组：表示属主权限</br><br>        第二组：表示属组权限</br><br>        第三组：表示其他用户权限</br></p></blockquote><ul><li>第二列：表示文件硬连接数</br></li><li>第三列：表示文件属主 – 文件拥有者</br></li><li>第四列：表示文件属组 – 文件拥有组</br></li><li>第五列：表示文件大小（字节）</br></li><li>第六列：表示时间</br></li><li>第七列：表示文件名</br></li></ul><hr><h1 id="系统"><a href="#系统" class="headerlink" title="系统"></a>系统</h1><h2 id="创建用户"><a href="#创建用户" class="headerlink" title="创建用户"></a>创建用户</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">useradd zhangsan </span><br></pre></td></tr></table></figure><p>表示创建一个zhangsan的用户</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">passwd zhangsan</span><br></pre></td></tr></table></figure><p>设定用户密码</p><h2 id="文件系统"><a href="#文件系统" class="headerlink" title="文件系统"></a>文件系统</h2><p>在linux下，所有的设备皆文件，所有的文件都是从根开始。</p><h3 id="文件目录详解"><a href="#文件目录详解" class="headerlink" title="文件目录详解"></a>文件目录详解</h3><ul><li>/ : 表示根<br>   etc ： 表示配置文件目录<br>   sbin ： 表示存放管理员命令可执行文件目录<br>   bin ： 表示基本命令目录<br>   home ： 表示普通用户家目录<br>   media ： 表示挂在U盘、光盘目录<br>   opt : 表示扩展包存放路径<br>   proc ：通过proc可以得到系统的信息，并可以改变内核的某些参数</br><br>  <code>cat /proc/cpuinfo</code> ： 查看CPU信息</br><br>  <code>cat /proc/meminfo</code> ： 查看内存大小<br>   sys  ： 表示虚拟目录<br>   dev ： 表示设备类目录<br>   lib ： 表示库目录<br>  动态库： .so<br>  静态库： .a<br>   mnt : 表示挂载目录<br>   root ：表示管理员家目录</br><br>  /root/Desktop/ ： 表示桌面</li></ul><hr><h2 id="查看系统"><a href="#查看系统" class="headerlink" title="查看系统"></a>查看系统</h2><ul><li><p>[root@localhost /]# <code>lsb_release -a</code></p><pre><code>LSB Version:&lt;/br&gt;</code></pre><p>  :core-3.1-ia32:core-3.1-noarch:graphics-3.1-ia32:graphics-3.1-noarch</br><br>  Distributor ID: RedHatEnterpriseServer //系统名</br><br>  Description:    Red Hat Enterprise Linux Server release 5.5 (Tikanga)</br><br>  Release:        5.5     //表示系统版本</br><br>  Codename:       Tikanga</br></p></li><li><p>[root@localhost /]# <code>uname -a</code></p><p> Linux localhost.localdomain 2.6.18-194.el5 #1 SMP Tue Mar 16 21:52:43 EDT</br><br> 2010 i686 i686 i386 GNU/Linux</br><br> Linux : 表示内核</br><br> localhost.localdomain ：表示主机名</br><br> 2.6.18-194.el5    ：表示内核版本</br><br> #1 SMP Tue Mar 16 21:52:43 EDT 2010 : 表示发布时间</br><br> i686 i686 i386 ：表示系统位数</br><br> GNU/Linux        ：表示操作系统名</br></p></li><li><p>[root@localhost /]# <code>uname -r</code> : 查看内核版本</p><p> 2.6.18-194.el5</br><br> 表示 : x.y.z</br><br> x : 表示主版本号，除非系统架构发生改变</br><br> y : 表示次版本号 </br><br> 奇数：测试版本</br><br> 偶数：稳定版本</br><br> z : 表示释放版本</br></p></li><li><p>[root@localhost /]# <code>uname -m</code> : 系统位数</br></p><pre><code>i686    ：表示32位系统&lt;/br&gt;</code></pre><p>  x86_64  : 表示64位系统</br></p></li></ul><hr><p></br></br></br></br></p><ul><li>end</li></ul>]]>
    </content>
    <id>https://lijinbo.cc/2020/12/13/linux_2/</id>
    <link href="https://lijinbo.cc/2020/12/13/linux_2/"/>
    <published>2020-12-13T11:36:15.000Z</published>
    <summary>
      <![CDATA[<h1 id="linux介绍"><a href="#linux介绍" class="headerlink" title="linux介绍"></a>linux介绍</h1><h2 id="定义"><a href="#定义" class="headerlink" title="定义"></a>定义</h2><p><strong><em>Linux</em></strong>–是一种类unix操作系统，确切的说是指操作系统的内核(kernel)。Linux是自由软件和开放源代码软件发展中最著名的例子。<br><img src="https://note.youdao.com/yws/api/personal/file/D3295E70B2F74F16A7E1635854FEA7C3?method=download&amp;amp;shareKey=cfd459ab323d1ca94ffca90810c6f719" alt=""></p>]]>
    </summary>
    <title>第二篇  Linux基础知识</title>
    <updated>2026-07-18T15:00:26.330Z</updated>
  </entry>
  <entry>
    <author>
      <name>COMBER</name>
    </author>
    <category term="Linux" scheme="https://lijinbo.cc/categories/Linux/"/>
    <category term="NFS服务" scheme="https://lijinbo.cc/tags/NFS%E6%9C%8D%E5%8A%A1/"/>
    <category term="Linux网络操作" scheme="https://lijinbo.cc/tags/Linux%E7%BD%91%E7%BB%9C%E6%93%8D%E4%BD%9C/"/>
    <content>
      <![CDATA[<h1 id="网络操作"><a href="#网络操作" class="headerlink" title="网络操作"></a>网络操作</h1><p>开始之前，先了解一下Windows下和Linux下各自的基本网络操作，以备后用；</br><br><strong><em>Linux</em></strong>的网络命令比较多，<strong><em>Linux</em></strong>网络操作命令的一个特点是，命令参数选项和功能很多，一个命令往往还可以实现其它命令的功能，许多细节以自行查询为宜。</p><p><img src="https://note.youdao.com/yws/api/personal/file/F9A4356BBBC64B3BAA604FE8E71849AE?method=download&amp;amp;shareKey=48a9dfcbc02c9bd8e1050a093d34d985" alt=""></p><span id="more"></span><h2 id="查看IP地址"><a href="#查看IP地址" class="headerlink" title="查看IP地址"></a>查看IP地址</h2><h3 id="Windows下"><a href="#Windows下" class="headerlink" title="Windows下"></a>Windows下</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ipconfig /all</span><br></pre></td></tr></table></figure><p>得到Windows下主机IP地址为<em>192.168.0.106</em>；</p><h3 id="Linux下"><a href="#Linux下" class="headerlink" title="Linux下"></a>Linux下</h3><p>Linux虚拟机的网络设置有两个问题需要注意</p><h4 id="注意问题"><a href="#注意问题" class="headerlink" title="注意问题"></a>注意问题</h4><blockquote><p>问题1：</br><br>    确保虚拟机的网络为桥接方式!!!</br><br>问题2：</br><br>    确保网卡处于激活状态!!!</br><br>    查看方法如下：</br></p><ul><li>输入命令：<code>system-config-network</code></li><li>会出现弹窗，检查eth0是否为活跃状态，如果不是活跃状态，激活即可。</li></ul></blockquote><p><img src="https://note.youdao.com/yws/api/personal/file/F31F15FEA656434A8DDF51786372C396?method=download&amp;amp;shareKey=9f1f08460881cef86078a2f9057df5a3" alt=""></p><h4 id="查看ip地址"><a href="#查看ip地址" class="headerlink" title="查看ip地址"></a>查看ip地址</h4><p>命令：<code>ifconfig</code></br><br>得到Linux下的主机IP地址为<em>192.168.10.183</em></p><h2 id="测试连通性"><a href="#测试连通性" class="headerlink" title="测试连通性"></a>测试连通性</h2><h3 id="重启网络"><a href="#重启网络" class="headerlink" title="重启网络"></a>重启网络</h3><p><code>service network restart</code> </p><h3 id="测试连通性-1"><a href="#测试连通性-1" class="headerlink" title="测试连通性"></a>测试连通性</h3><p>在Windows命令行中，看是否可以ping通Linux主机。</br><br><code>ping 192.168.10.183</code><br><img src="https://note.youdao.com/yws/api/personal/file/AC6473A86C1243FD95206378EE706E44?method=download&amp;amp;shareKey=c1e010f81238db1ccf748bf2cf2b28eb" alt=""></p><h2 id="其他操作"><a href="#其他操作" class="headerlink" title="其他操作"></a>其他操作</h2><h3 id="临时指定IP"><a href="#临时指定IP" class="headerlink" title="临时指定IP"></a>临时指定IP</h3><p><code>ifconfig eth0 192.168.0.?(10-253)</code></p><blockquote><p>注意：同一局域网内IP地址不能重复</p></blockquote><h3 id="终止命令执行组合键"><a href="#终止命令执行组合键" class="headerlink" title="终止命令执行组合键"></a>终止命令执行组合键</h3><p> <strong><em>ctrl + c</em></strong></p><h3 id="从服务器下载资源"><a href="#从服务器下载资源" class="headerlink" title="从服务器下载资源"></a>从服务器下载资源</h3><h4 id="测试网络是否连通"><a href="#测试网络是否连通" class="headerlink" title="测试网络是否连通"></a>测试网络是否连通</h4><p><code>ping 192.168.0.254 -c 3</code></p><blockquote><p>192.168.0.254是服务器的IP地址，关于如何在个人主机上搭建服务器，在下一篇详述。</p></blockquote><h4 id="查看共享文件"><a href="#查看共享文件" class="headerlink" title="查看共享文件"></a>查看共享文件</h4><blockquote><p>   [root@localhost linux]# <code>showmount -e 192.168.0.254</code></br><br>   Export list for 192.168.0.254:</br><br>    /example 1      *        </br><br>    /example 2   *        </br><br>    /example 3 *        </br></p></blockquote><p>上述三个目录便是服务器端分享的文件目录</p><h4 id="挂载"><a href="#挂载" class="headerlink" title="挂载"></a>挂载</h4><p>挂载共享目录到本机</br></p><p><code>mount 192.168.0.254:/27_course /mnt</code></p><h4 id="下载到本机"><a href="#下载到本机" class="headerlink" title="下载到本机"></a>下载到本机</h4><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">mkdir /zhangsan      //创建一个下载目录&lt;/br&gt;</span><br><span class="line">\cp /mnt/* /zhangsan -rf     //拷贝文件</span><br></pre></td></tr></table></figure><h4 id="解挂"><a href="#解挂" class="headerlink" title="解挂"></a>解挂</h4><p><code>umount /mnt</code></p><hr><h1 id="实现NFS服务"><a href="#实现NFS服务" class="headerlink" title="实现NFS服务"></a>实现<strong><em>NFS</em></strong>服务</h1><p><strong>NFS</strong> ：<em>Network File System</em>，即网络文件系统。是由<strong>Sun</strong>公司开发的一个基于内核的文件系统，基于<strong>RPC</strong>（远程过程调用协议）实现。通过使用NFS服务，用户和程序可以像访问本地文件一样访问远端系统上的文件。</p><h2 id="服务器端配置"><a href="#服务器端配置" class="headerlink" title="服务器端配置"></a>服务器端配置</h2><h3 id="获取镜像文件"><a href="#获取镜像文件" class="headerlink" title="获取镜像文件"></a>获取镜像文件</h3><p>把系统镜像存放到 <em>/tools/</em> 目录下，检查是否已存在</br></p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ls /tools/rhel55.iso</span><br></pre></td></tr></table></figure><!--more--><h3 id="挂载镜像文件"><a href="#挂载镜像文件" class="headerlink" title="挂载镜像文件"></a>挂载镜像文件</h3><p>在根目录下创建 <em>/iso</em> 文件夹作为挂载点。</br></p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">mkdir /iso</span><br><span class="line"></span><br><span class="line">mount -t iso9660 -o loop /tools/rhel55.iso /iso</span><br></pre></td></tr></table></figure><h3 id="配置yum"><a href="#配置yum" class="headerlink" title="配置yum"></a>配置<em>yum</em></h3><h4 id="打开yum配置文件"><a href="#打开yum配置文件" class="headerlink" title="打开yum配置文件"></a>打开<em>yum</em>配置文件</h4><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">/etc/yum.repos.d/rhel-debuginfo.repo</span><br></pre></td></tr></table></figure><h4 id="含义"><a href="#含义" class="headerlink" title="含义"></a>含义</h4><table><thead><tr><th>文件内容</th><th>含义</th></tr></thead><tbody><tr><td>[rhel-debuginfo]</td><td>表示标签</td></tr><tr><td>name=Red Hat Enterprise Linux $releasever - $basearch - Debug</td><td>表示名字</td></tr><tr><td>baseurl=<a href="ftp://ftp.redhat.com/pub/redhat/linux/enterprise/。。。">ftp://ftp.redhat.com/pub/redhat/linux/enterprise/。。。</a></td><td>表示路径</td></tr><tr><td>file://</td><td>表示本地文件</td></tr><tr><td>enabled=0</td><td>0 表示关闭、1 表示开启</td></tr><tr><td>gpgcheck=1</td><td>0 表示不校验、1 表示校验</td></tr></tbody></table><h4 id="修改"><a href="#修改" class="headerlink" title="修改"></a>修改</h4><p>修改文件内容如下：</p><p><img src="https://note.youdao.com/yws/api/personal/file/7BECEE5ACF054CB9ACD9E3092BED669F?method=download&amp;amp;shareKey=4fbdfd56b354b55d10bc8b61b0472a58" alt=""></p><h3 id="重载"><a href="#重载" class="headerlink" title="重载"></a>重载</h3><p>清空以前配置并重新加载现在配置</br></p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">yum clean all</span><br></pre></td></tr></table></figure><h3 id="安装NFS服务"><a href="#安装NFS服务" class="headerlink" title="安装NFS服务"></a>安装NFS服务</h3><h4 id="命令"><a href="#命令" class="headerlink" title="命令"></a>命令</h4><p>安装命令</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">yum install nfs*</span><br></pre></td></tr></table></figure><p>卸载命令</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">yum erase nfs*</span><br></pre></td></tr></table></figure><h3 id="配置-NFC-服务"><a href="#配置-NFC-服务" class="headerlink" title="配置 NFC 服务"></a>配置 <em>NFC</em> 服务</h3><h4 id="配置文件"><a href="#配置文件" class="headerlink" title="配置文件"></a>配置文件</h4><p>在 <em>/etc/</em> 目录下创建配置文件</br></p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">vim /etc/exports</span><br></pre></td></tr></table></figure><p>然后按照以下格式输入内容。</p><h4 id="格式"><a href="#格式" class="headerlink" title="格式"></a>格式</h4><p>共享目录名(必须是绝对路径)  client(option)</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">/example1 *(ro)</span><br><span class="line">/example2 *(rw)</span><br><span class="line">/example3 *(ro)</span><br></pre></td></tr></table></figure><blockquote><p><strong><em>client</em></strong> :</br><br>    * : 表示所有可以ping通的客户端</br><br><strong><em>option</em></strong> :</br><br>    <strong>ro</strong> : 表示只读</br><br>    <strong>rw</strong> : 表示可读可写</p></blockquote><h3 id="重启-NFS-服务"><a href="#重启-NFS-服务" class="headerlink" title="重启 NFS 服务"></a>重启 <em>NFS</em> 服务</h3><h4 id="命令-1"><a href="#命令-1" class="headerlink" title="命令"></a>命令</h4><p><code>service nfs restart</code></p><hr><h2 id="客户端配置"><a href="#客户端配置" class="headerlink" title="客户端配置"></a>客户端配置</h2><h3 id="检测网络是否连通"><a href="#检测网络是否连通" class="headerlink" title="检测网络是否连通"></a>检测网络是否连通</h3><p><code>service network restart</code></p><h3 id="查看共享文件-1"><a href="#查看共享文件-1" class="headerlink" title="查看共享文件"></a>查看共享文件</h3><p><code>showmount -e service_ip</code></p><h3 id="挂载-1"><a href="#挂载-1" class="headerlink" title="挂载"></a>挂载</h3><p><code>mount service_ip:sharedir  /mnt</code></p><h3 id="拷贝"><a href="#拷贝" class="headerlink" title="拷贝"></a>拷贝</h3><p><code>cp /mnt /dest_dir</code></p><h3 id="解挂-1"><a href="#解挂-1" class="headerlink" title="解挂"></a>解挂</h3><p><code>umount /mnt</code></p><hr><p></br></br></br></br></br></p><ul><li>end</li></ul>]]>
    </content>
    <id>https://lijinbo.cc/2020/12/13/linux_4/</id>
    <link href="https://lijinbo.cc/2020/12/13/linux_4/"/>
    <published>2020-12-13T11:36:15.000Z</published>
    <summary>
      <![CDATA[<h1 id="网络操作"><a href="#网络操作" class="headerlink" title="网络操作"></a>网络操作</h1><p>开始之前，先了解一下Windows下和Linux下各自的基本网络操作，以备后用；</br><br><strong><em>Linux</em></strong>的网络命令比较多，<strong><em>Linux</em></strong>网络操作命令的一个特点是，命令参数选项和功能很多，一个命令往往还可以实现其它命令的功能，许多细节以自行查询为宜。</p>
<p><img src="https://note.youdao.com/yws/api/personal/file/F9A4356BBBC64B3BAA604FE8E71849AE?method=download&amp;amp;shareKey=48a9dfcbc02c9bd8e1050a093d34d985" alt=""></p>]]>
    </summary>
    <title>第四篇  使用NFS服务实现Linux间文件共享</title>
    <updated>2026-07-18T15:00:26.333Z</updated>
  </entry>
  <entry>
    <author>
      <name>COMBER</name>
    </author>
    <category term="Linux" scheme="https://lijinbo.cc/categories/Linux/"/>
    <category term="Linux虚拟机安装" scheme="https://lijinbo.cc/tags/Linux%E8%99%9A%E6%8B%9F%E6%9C%BA%E5%AE%89%E8%A3%85/"/>
    <content>
      <![CDATA[<p>工欲善其事，必先利其器。我安装的Linux版本是<strong><em>Red Hat Enterprise Linux 5</em></strong>红帽企业版5，下面就装起来吧。</br></p><div style='text-align: center;'><p><img src="https://note.youdao.com/yws/api/personal/file/EABFAA0E2B484CF0B069259D86F62084?method=download&amp;amp;shareKey=45868aa08f4426b9037fa0e22202a0f8" alt=""></p></div><span id="more"></span></br><h1 id="创建新的虚拟机"><a href="#创建新的虚拟机" class="headerlink" title="创建新的虚拟机"></a>创建新的虚拟机</h1><p>在<strong><em>WORKSTATION</em></strong>首页创建一个新的虚拟机，以下主要说明一些需要注意的步骤，未提及的其它步骤一般选择默认或推荐。</br></p><h2 id="稍后安装操作系统"><a href="#稍后安装操作系统" class="headerlink" title="稍后安装操作系统"></a>稍后安装操作系统</h2><div style='text-align: center;'><p><img src="https://note.youdao.com/yws/api/personal/file/85B7D90EBCD6446A8B17776351D7D443?method=download&amp;amp;shareKey=ce6c4c72baed94b5de66c3274953210a" alt=""></p></div><h2 id="选择Linux版本"><a href="#选择Linux版本" class="headerlink" title="选择Linux版本"></a>选择Linux版本</h2><div style='text-align: center;'><p><img src="https://note.youdao.com/yws/api/personal/file/41F98698FAD34F45B066AAE4E83B4769?method=download&amp;amp;shareKey=6db62f07e0f927c421f1b2d16deb197a" alt=""></p><center style="font-size:14px;color:#C0C0C0;text-decoration:none">图2 选择Linux版本</div><h2 id="选择安装位置"><a href="#选择安装位置" class="headerlink" title="选择安装位置"></a>选择安装位置</h2><p>安装位置选择一个独立文件夹</p><div style='text-align: center;'><p><img src="https://note.youdao.com/yws/api/personal/file/ADFA3D96919944F6BEF878BCE487008C?method=download&amp;amp;shareKey=5d451fb52859b2dc5519fbf4390a8113" alt=""></p></div><h2 id="分配内核"><a href="#分配内核" class="headerlink" title="分配内核"></a>分配内核</h2><div style='text-align: center;'><p><img src="https://note.youdao.com/yws/api/personal/file/542B071CF0914CB3BBBBE6B2B85536C4?method=download&amp;amp;shareKey=aac09768020c3c2c058d8e42539d6981" alt=""></p></div><h2 id="分配内存"><a href="#分配内存" class="headerlink" title="分配内存"></a>分配内存</h2><div style='text-align: center;'><p><img src="https://note.youdao.com/yws/api/personal/file/E01B589C606D40CC86DC850658EE70D0?method=download&amp;amp;shareKey=a4286d2605e248bd0d053a9cfbc1ae3e" alt=""></p></div><h2 id="选择桥接网络"><a href="#选择桥接网络" class="headerlink" title="选择桥接网络"></a>选择桥接网络</h2><div style='text-align: center;'><p><img src="https://note.youdao.com/yws/api/personal/file/9AB1DC54BE904E14823B8602B06ADF7C?method=download&amp;amp;shareKey=2ca776fccce8e239458ad3f516cb3f67" alt=""></p></div><h2 id="选择内存"><a href="#选择内存" class="headerlink" title="选择内存"></a>选择内存</h2><div style='text-align: center;'><p><img src="https://note.youdao.com/yws/api/personal/file/722D2AA8F97C40E2A98565D45FE7649C?method=download&amp;amp;shareKey=cc09679665f8d9bf9032e2b8463af6eb" alt=""></p></div><h2 id="新建完成"><a href="#新建完成" class="headerlink" title="新建完成"></a>新建完成</h2><div style='text-align: center;'><p><img src="https://note.youdao.com/yws/api/personal/file/DE25B84FB6E642D0ACD36FBC64A1D5D4?method=download&amp;amp;shareKey=fb8ad8f1c7d3764930fb80ebd6babe09" alt=""></p></div><h2 id="打开虚拟机配置，选择镜像文件"><a href="#打开虚拟机配置，选择镜像文件" class="headerlink" title="打开虚拟机配置，选择镜像文件"></a>打开虚拟机配置，选择镜像文件</h2><div style='text-align: center;'><p><img src="https://note.youdao.com/yws/api/personal/file/E53C89723A2D4EC7BDC9875E9B3F706B?method=download&amp;amp;shareKey=c342cb2138f2b4ed8d4482797594f1cb" alt=""><br><img src="https://note.youdao.com/yws/api/personal/file/8C84DE454B014A1D8CF2916AF03CA50B?method=download&amp;amp;shareKey=10bcee2923beeb90390735767f824d60" alt=""></p></div><hr><h1 id="系统安装"><a href="#系统安装" class="headerlink" title="系统安装"></a>系统安装</h1><h2 id="媒体检测"><a href="#媒体检测" class="headerlink" title="媒体检测"></a>媒体检测</h2><p>媒体检测，选择 <strong><em>Skip</em></strong></p><div style='text-align: center;'><p><img src="https://note.youdao.com/yws/api/personal/file/EB768CEB85D3431DAB1DE798F4C19B1D?method=download&amp;amp;shareKey=04f1f29cc8b4612006063ea28355d977" alt=""></p></div><h2 id="选择"><a href="#选择" class="headerlink" title="选择"></a>选择</h2><p>安装语言包选择简体中文，键盘选择美国英语式，选择跳过输入安装号码</p><div style='text-align: center;'><p><img src="https://note.youdao.com/yws/api/personal/file/C9CE6838DB104D259699050749C8EE04?method=download&amp;amp;shareKey=ab7dc19c552b32697ed75caae0174779" alt=""></p></div><h2 id="自定义分区"><a href="#自定义分区" class="headerlink" title="自定义分区"></a>自定义分区</h2><div style='text-align: center;'><p><img src="https://note.youdao.com/yws/api/personal/file/DEFA9243947F4CB18A5A3E67B06B2AF7?method=download&amp;amp;shareKey=5c7c5b21c850e26a76965e8bb2b4ef70" alt=""></p></div><h2 id="新建分区"><a href="#新建分区" class="headerlink" title="新建分区"></a>新建分区</h2><p>新建3个分区如下</p><div style='text-align: center;'><p><img src="https://note.youdao.com/yws/api/personal/file/F1902B904AB448D69229EE66CD406E15?method=download&amp;amp;shareKey=57a75007ae87b185746291d0649391cf" alt=""><br><img src="https://note.youdao.com/yws/api/personal/file/A1F435FF375E404890C2AF6D884610ED?method=download&amp;amp;shareKey=13dde3882f648aac8e7359b6a942a0df" alt=""><br><img src="https://note.youdao.com/yws/api/personal/file/FC2EA184152A475E9DF5A8DE4F17EC2D?method=download&amp;amp;shareKey=ad64f220d026d1cc88fc0a19ff939d41" alt=""></p></div><h2 id="引导系统标签"><a href="#引导系统标签" class="headerlink" title="引导系统标签"></a>引导系统标签</h2><h2 id="网卡设置"><a href="#网卡设置" class="headerlink" title="网卡设置"></a>网卡设置</h2><p>选择dhcp</p><h2 id="时区设置"><a href="#时区设置" class="headerlink" title="时区设置"></a>时区设置</h2><p>选择亚洲/上海</p><h2 id="设置root用户密码"><a href="#设置root用户密码" class="headerlink" title="设置root用户密码"></a>设置root用户密码</h2><p>往后我们直接使用root用户登录，所以后面的创建普通用户步骤直接跳过，而且以后使用root身份创建其他用户更简单，此处先略过</p><div style='text-align: center;'><p><img src="https://note.youdao.com/yws/api/personal/file/1F69B9FADEC64B12B070E92FA9968F18?method=download&amp;amp;shareKey=4f69bf24c7c8839be6b1814eaa78bc3a" alt=""></p></div><h2 id="选择安装包"><a href="#选择安装包" class="headerlink" title="选择安装包"></a>选择安装包</h2><p>选择要安装的包并选择现在定制</p><div style='text-align: center;'><p><img src="https://note.youdao.com/yws/api/personal/file/1E790E0EE17949EC89B20A705FE0A781?method=download&amp;amp;shareKey=eb778acdc086c10e5e60f8003ae40602" alt=""></p></div><h2 id="包定制"><a href="#包定制" class="headerlink" title="包定制"></a>包定制</h2><table><thead><tr><th>开发</th><th align="left">语言支持</th></tr></thead><tbody><tr><td>开发工具</td><td align="left">中文支持</td></tr><tr><td>开发库</td><td align="left">英文支持</td></tr><tr><td>对上述项目右键选择所有的可选软件包</td><td align="left"></td></tr></tbody></table><div style='text-align: center;'><p><img src="https://note.youdao.com/yws/api/personal/file/B676059D387E45E0935BC23E1DE54F92?method=download&amp;amp;shareKey=f24242b53315da97253b06c28e7344d6" alt=""><br><img src="https://note.youdao.com/yws/api/personal/file/958FF0A69BFF469C9CD5DFDF0EFDBABA?method=download&amp;amp;shareKey=fc81db8c8da6df9a6caea3d145c8b7ca" alt=""></p></div><h2 id="重新引导"><a href="#重新引导" class="headerlink" title="重新引导"></a>重新引导</h2><div style='text-align: center;'><p><img src="https://note.youdao.com/yws/api/personal/file/C2A54C39624646B6AE3204A1BC159CA5?method=download&amp;amp;shareKey=7d9e9524295532ee80daa89e1ba48197" alt=""></p></div><h2 id="禁用防火墙，禁用SELinux"><a href="#禁用防火墙，禁用SELinux" class="headerlink" title="禁用防火墙，禁用SELinux"></a>禁用防火墙，禁用SELinux</h2><div style='text-align: center;'><p><img src="https://note.youdao.com/yws/api/personal/file/EACC1AB230F541D18F1BF8A2D29BD0B5?method=download&amp;amp;shareKey=e82166b9684a7c45677cdba6cc28705c" alt=""><br><img src="https://note.youdao.com/yws/api/personal/file/E008D2DD751E4501A41C2D898A42F41A?method=download&amp;amp;shareKey=da7928cf19beef847065a07ce1ce7396" alt=""></p></div><hr><h1 id="安装VMware-tools工具"><a href="#安装VMware-tools工具" class="headerlink" title="安装VMware-tools工具"></a>安装VMware-tools工具</h1><p>VMware Tools 是一套可以提高虚拟机客户机操作系统性能并改善虚拟机管理的实用工具。例如，下面是在安装 VMware Tools 后才能使用的一部分功能：</p><ul><li>支持 Aero 的操作系统上大大提升的图形性能和 Windows Aero 体验</li><li>使虚拟机中的应用程序像其他任何应用程序窗口一样显示在主机桌面上的 Unity 功能</li><li>主机与客户机文件系统之间的共享文件夹</li><li>在虚拟机与主机或客户端桌面之间复制并粘贴文本、图形和文件</li><li>改进的鼠标性能, 无需来回切换</li><li>虚拟机中的时钟与主机或客户端桌面上的时钟同步</li><li>帮助自动执行客户机操作系统操作的脚本</li><li>启用虚拟机的客户机自定义</li></ul><h2 id="安装入口"><a href="#安装入口" class="headerlink" title="安装入口"></a>安装入口</h2><p>点击菜单栏  VM（虚拟机） –&gt; install vmware-tools…</p><div style='text-align: center;'><p><img src="https://note.youdao.com/yws/api/personal/file/E859C78017C54D629A44A704F85525A2?method=download&amp;amp;shareKey=2044550d17c061249d086517c71afd39" alt=""></p></div><h2 id="在终端中打开"><a href="#在终端中打开" class="headerlink" title="在终端中打开"></a>在终端中打开</h2><p>弹出文本框点击右键，在终端中打开</p><div style='text-align: center;'><p><img src="https://note.youdao.com/yws/api/personal/file/9C1D919035E74C2A8C5B397D985F691D?method=download&amp;amp;shareKey=f38745d18624e537c2e12dcc4ab3bab3" alt=""></p></div><h2 id="拷贝文件"><a href="#拷贝文件" class="headerlink" title="拷贝文件"></a>拷贝文件</h2><p>拷贝文件到 /tmp 目录</p><div style='text-align: center;'><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">cp VMwareTools-8.4.5-324285.tar.gz /tmp</span><br></pre></td></tr></table></figure></div><blockquote><p>此处文件名<strong>VMwareTools-8.4.5-324285.tar.gz</strong>有可能是不一样的，只要输入<strong>VMware</strong>然后按<strong><em>Tab</em></strong>键就能自动补全</p></blockquote><h2 id="切换工作目录"><a href="#切换工作目录" class="headerlink" title="切换工作目录"></a>切换工作目录</h2><div style='text-align: center;'><p><code>cd /tmp</code></p></div><h2 id="解压"><a href="#解压" class="headerlink" title="解压"></a>解压</h2><div style='text-align: center;'><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">tar -xvf VMwareTools-8.4.5-324285.tar.gz</span><br></pre></td></tr></table></figure></div><h2 id="进入解压目录"><a href="#进入解压目录" class="headerlink" title="进入解压目录"></a>进入解压目录</h2><div style='text-align: center;'><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">cd vmware-tools-distrib</span><br></pre></td></tr></table></figure></div><h2 id="安装"><a href="#安装" class="headerlink" title="安装"></a>安装</h2><div style='text-align: center;'><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">./vmware-install.pl</span><br></pre></td></tr></table></figure></div><p>安装过程需要交互，一直按回车即可，最后会需要选择分辨率，输入数字进行选择</p><div style='text-align: center;'><p><img src="https://note.youdao.com/yws/api/personal/file/738CD705BA214D8E8C96EF7B9492F655?method=download&amp;amp;shareKey=c6abd4c41c3218eb279d0db932253408" alt=""></p></div><h2 id="重启"><a href="#重启" class="headerlink" title="重启"></a>重启</h2><div style='text-align: center;'><p><code>reboot</code></p></div><ul><li>end</li></ul>]]>
    </content>
    <id>https://lijinbo.cc/2020/12/04/linux_1/</id>
    <link href="https://lijinbo.cc/2020/12/04/linux_1/"/>
    <published>2020-12-04T15:21:14.000Z</published>
    <summary>
      <![CDATA[<p>工欲善其事，必先利其器。我安装的Linux版本是<strong><em>Red Hat Enterprise Linux 5</em></strong>红帽企业版5，下面就装起来吧。</br></p>
<div style='text-align: center;'>

<p><img src="https://note.youdao.com/yws/api/personal/file/EABFAA0E2B484CF0B069259D86F62084?method=download&amp;amp;shareKey=45868aa08f4426b9037fa0e22202a0f8" alt=""></p>
</div>]]>
    </summary>
    <title>第一篇  安装Linux虚拟机</title>
    <updated>2026-07-18T15:00:26.328Z</updated>
  </entry>
  <entry>
    <author>
      <name>COMBER</name>
    </author>
    <category term="模电原理及应用" scheme="https://lijinbo.cc/categories/%E6%A8%A1%E7%94%B5%E5%8E%9F%E7%90%86%E5%8F%8A%E5%BA%94%E7%94%A8/"/>
    <category term="元器件选型" scheme="https://lijinbo.cc/tags/%E5%85%83%E5%99%A8%E4%BB%B6%E9%80%89%E5%9E%8B/"/>
    <content>
      <![CDATA[<h1 id="电阻的选型"><a href="#电阻的选型" class="headerlink" title="电阻的选型"></a>电阻的选型</h1><h2 id="首先确认电阻的基本参数"><a href="#首先确认电阻的基本参数" class="headerlink" title="首先确认电阻的基本参数"></a>首先确认电阻的基本参数</h2><ul><li><p>1、阻值大小；</p></li><li><p>2、精度，常规使用优选1%精度；</p></li><li><p>3、额定功率和体积，优先选择常规功率的体积，具体参见下表1；</p></li><li><p>4、温漂，有特殊要求的应用，比如传感器应用，必须关注此参数带来产品性能的影响；</p></li><li><p>5、工作温度范围，超过70摄氏度的环境必须降额使用；</p></li><li><p>6、电阻类别，贴片厚膜电阻，贴片薄膜电阻，线绕电阻等，普通应用为贴片厚膜电阻或者薄膜电阻。</p><span id="more"></span></li></ul><h2 id="具体选型原则"><a href="#具体选型原则" class="headerlink" title="具体选型原则"></a>具体选型原则</h2><ul><li>1、电阻阻值优先选用10系列，12系列，15系列，20系列，30系列，39系列，47系列，51系列, 68系列，82系列；</li><li>2、贴片电阻优选0603和0805的封装，0402以下的封装禁选；</li><li>3、插脚电阻优选0.25W， 0.5W，1W，2W，3W， 5W，7W，10W ，15W；</li><li>4、对于电阻的温漂，J档温漂不能超过500ppm/℃，F档温漂不能超过100ppm/℃，B档温漂不能超过10ppm/℃；</li><li>5、慎选电位器，如果无法避免，选用多圈的；</li><li>6、 优选贴片封装；</li><li>7、特殊场合电路如反馈电路，电流/电压采样检测电路选无感电阻，精度越高越好。</li></ul><h1 id="电容的选型"><a href="#电容的选型" class="headerlink" title="电容的选型"></a>电容的选型</h1><h2 id="铝电解电容"><a href="#铝电解电容" class="headerlink" title="铝电解电容"></a>铝电解电容</h2><h3 id="缺点"><a href="#缺点" class="headerlink" title="缺点"></a>缺点</h3><p>体积大，ESR（等效串联电阻）大，感抗较大，温度敏感；</p><h3 id="适用场合"><a href="#适用场合" class="headerlink" title="适用场合"></a>适用场合</h3><p>温度变化小、工作频率低（&lt;25kHz）的场合；</p><h3 id="选型规则"><a href="#选型规则" class="headerlink" title="选型规则"></a>选型规则</h3><ul><li>1、需快速充放电的场合禁用铝电解电容；</li><li>2、寿命：普通应用中选择标准型、寿命1000HR~3000HR（为价格考虑，慎选长寿命型），优选2000Hr；</li><li>3、耐压：降额使用，3.3V系统取10V、5V系统取10V、12V系统取25V、24V系统取50V；48V系统选100V；</li><li>4、在发热元件附件使用，慎选电解电容；</li><li>5、滤波电路，按（电路额定电压+噪声叠加后）的电压峰值*（1.2—1.5）选择电解电容耐压；</li><li>6、额定电压*1.3 作为电容器的浪涌电压，工作电压&gt;160V时，额定工作电压+50V作为浪涌电压；</li><li>7、 降额标准参见GJB/Z35 《元器件降额准则》 ；</li><li>8、工作温度：铝电解电容必须选用工作温度为105度的；</li><li>9、容值：优选10、22、47系列；25V以下禁选224、105、475之类容值型号（用片状多层陶瓷电容或钽电解电容替代）；</li><li>10、极性：对于高压型铝电解电容保留400V，禁选无极性铝电解电容；</li><li>11、 封装：优先选用贴片的铝电解电容。</li></ul><h2 id="钽电解电容"><a href="#钽电解电容" class="headerlink" title="钽电解电容"></a>钽电解电容</h2><h3 id="优点"><a href="#优点" class="headerlink" title="优点"></a>优点</h3><p>在串联电阻、感抗、对温度的稳定性方面与铝电解电容相比优势明显；</p><h3 id="缺点-1"><a href="#缺点-1" class="headerlink" title="缺点"></a>缺点</h3><p>工作电压较低。</p><h3 id="选型规则-1"><a href="#选型规则-1" class="headerlink" title="选型规则"></a>选型规则</h3><ul><li>1、漏电流要求较高的场合，不选钽电解电容，需选用薄膜电容；</li><li>2、耐压：降额选用，禁止选用耐压超过35V以上的，3.3V系统取10V、5V系统取16V、12V系统取35V；</li><li>3、10V、16V、35V为优选，4V、6.3V、50V为禁用（用铝电解电容替代），电源输入级或低阻抗环境使用，推荐降额到0.3，电源输出级及一般应用环境推荐降额0.5；</li><li>4、封装：插脚式钽电解电容禁选。</li></ul><h2 id="片状多层陶瓷电容"><a href="#片状多层陶瓷电容" class="headerlink" title="片状多层陶瓷电容"></a>片状多层陶瓷电容</h2><h3 id="选型规则-2"><a href="#选型规则-2" class="headerlink" title="选型规则"></a>选型规则</h3><ul><li>1、选用基本原则：高谐振频率，ESR越小越好；</li><li>2、Q值：高Q值陶瓷电容慎选，只用在射频电路上；</li><li>3、封装：0603、0805优选、1206、1210慎选、1808以上禁选；</li><li>4、耐压：优选25V、50V、100V； 106（含）以上容值的耐压不大于25V；</li><li>5、容量：优选10、22、33、47、68系列；</li><li>6、材料：优选NPO、X7R、X5R，其它禁选。</li></ul><h1 id="电感的选型"><a href="#电感的选型" class="headerlink" title="电感的选型"></a>电感的选型</h1><h2 id="电感选型时考虑的因素"><a href="#电感选型时考虑的因素" class="headerlink" title="电感选型时考虑的因素"></a>电感选型时考虑的因素</h2><ul><li>1、体积大小；</li><li>2、工作频率；</li><li>3、开关频率下的电感值为实际电感值；</li><li>4、线圈的直流阻抗(DCR)越小越好；</li><li>5、 工作电流应降至额定饱和电流的0.7倍以下；</li><li>6、交流阻抗(ESR)越小越好；</li><li>7、Q因子越大越好；</li><li>8、屏蔽类型优先选择屏蔽式；</li><li>9、工作频率和绕组电压不可降额。</li></ul><h1 id="磁珠的选型及应用"><a href="#磁珠的选型及应用" class="headerlink" title="磁珠的选型及应用"></a>磁珠的选型及应用</h1><h2 id="磁珠滤波机理"><a href="#磁珠滤波机理" class="headerlink" title="磁珠滤波机理"></a>磁珠滤波机理</h2><p>磁珠的外形与电感相似，其作用也是滤波，其主要功能是吸收电源、信号上的噪声干扰。</p><p>电容的滤波，其原理是在高频时构建一条通到地的低阻抗通道，以便将噪声泄放到地。在设计中，一般是采取宁滥勿缺的原则，即布放尽量多的电容，这样做不仅浪费大量宝贵的PCB面积，而且许多电容并没有真正的发挥作用，造成无用成本的上升。而由电感构成的低通滤波器，甚至无法将噪声泄放到地上，其工作原理是将噪声予以反射，噪声仍在电路里四处游串；低通滤波的另一个缺陷是，其应用频率范围一般都只是在几十MHz之内，无法有针对性地滤除某些特定频率上的高频噪声。</p><p>可以看出两种滤波方式都没有真正的消灭噪声，只是改变了噪声的传播路径。而磁珠在一定频带内能反射噪声，在一定的频带内还能吸收噪声，转化为热量。磁珠的阻抗Z由电阻成分R和电抗成分X共同决定。在低频阶段，X起主导作用，磁珠主要体现为电感性，功能是反射噪声；在高频段，R起到决定作用，磁珠主要体现电阻性，功能是吸收噪声并将噪声转化为热量。两者的临界点就是下图曲线上，R和X相等的频率。因此，临界点所在频率越高，体现电阻性频带越宽，对低频噪声的吸收能力越弱；临界点所在的频率越低，磁珠体现电阻性频带越宽，对噪声的吸收能力越强。</p><div style='text-align: center;'><p><img src="/2020/11/21/%E5%9F%BA%E6%9C%AC%E5%85%83%E5%99%A8%E4%BB%B6%E9%80%89%E5%9E%8B/%E7%A3%81%E7%8F%A0%E7%89%B9%E6%80%A7.png" alt="磁珠特性">  </p></div><h2 id="电路设计中磁珠选型要点"><a href="#电路设计中磁珠选型要点" class="headerlink" title="电路设计中磁珠选型要点"></a>电路设计中磁珠选型要点</h2><p>在磁珠选型时，需要仔细分析电路上信号和噪声所处的频带，所选择的磁珠应满足——电路噪声的频带大于磁珠转化频率，以便使磁珠吸收噪声而不是反射噪声；电路的信号频率尽量小于磁珠转化频率，以防有效信号被磁珠衰减。<br>对于串联了磁珠的线路，磁珠的转化点频率越低，线路振荡和波形失真越小；反之越大。<br>除了转换点频率外，磁珠选型还需要考虑额定电流、直流电阻和谐振频率等因素。考虑电阻生成的压降问题、选择谐振点高的磁珠。需要注意的是，转换点的频率与谐振频率在意义上是不同的。</p><h2 id="理解要点"><a href="#理解要点" class="headerlink" title="理解要点"></a>理解要点</h2><ul><li>1、磁珠的转换点频率越低，线路振荡和波形失真越小，反之则越大</li><li>2、磁珠的工作电流不能大于其额定电流，设计中需要考虑到由于直流电阻的存在而造成压降</li><li>3、当工作频率高于谐振频率时，磁珠表现出电容性</li><li>4、磁珠的转换点频率和谐振频率在意义上有所不同</li></ul><h2 id="磁珠和电感的比较"><a href="#磁珠和电感的比较" class="headerlink" title="磁珠和电感的比较"></a>磁珠和电感的比较</h2><h3 id="不同点"><a href="#不同点" class="headerlink" title="不同点"></a>不同点</h3><ol><li>电感和磁珠都可以滤波，但是机理不一样。电感滤波是将电能转化为磁能，磁能将通过两种方式影响电路，方式一是重新转化为电能，表现为噪声；另一是向外部辐射，表现为EMI（电磁干扰）。而磁珠是将电能转为热能，不会对电路构成二次干扰 。</li><li>电感在低频段滤波性能较好，但在50MHz以上的频段滤波性能较差；磁珠利用其电阻成分充分吸收高频噪声，并将其转换为热量，达到彻底消除高频噪声的目的。</li><li>从EMC（电磁兼容）的层面说，磁珠是将电能转为热能，因此具有非常好的抗辐射功能，是常用的抗EMI器件，常用于用户接口信号线滤波、单板上的高速时钟器件的电源滤波等。</li><li>电感和电容构成低通滤波器时，由于电感和电容都是储能器件，因此两者的配合可能产生自激；磁珠是耗能器件，与电容协同工作，不会产生自激。</li><li>一般而言，电感的额定电流相对较大，因此电感多用于需要大电流的电源电路上，如用于电源模块滤波；而磁珠一般仅用于芯片级电源滤波。</li><li>磁珠和电感都具有直流电阻，磁珠的直流电阻相对于同样的滤波性能的电感更小一些，压降更小。</li></ol><h3 id="重要参数"><a href="#重要参数" class="headerlink" title="重要参数"></a>重要参数</h3><ol><li>额定电流。当电感的工作电流超过其额定电流时，电感值迅速减小，但电感器件未必被损坏；而磁珠的工作电流超过其额定电流，将会对磁珠造成损害。</li><li>直流电阻。用于电源线路时，线路上存在一定的电流，如果电感或磁珠本身的直流电阻较大，则会产生一定的压降。因此选型中，都要求选择直流电阻小的器件</li><li>频率特性曲线。电感和磁珠的厂家资料都附有器件频率特性曲线图。选型中，需要仔细参考这些曲线，以选择合适的器件</li></ol><p></br></br></br></br></br></br></p><ul><li>end</li></ul>]]>
    </content>
    <id>https://lijinbo.cc/2020/11/21/%E5%9F%BA%E6%9C%AC%E5%85%83%E5%99%A8%E4%BB%B6%E9%80%89%E5%9E%8B/</id>
    <link href="https://lijinbo.cc/2020/11/21/%E5%9F%BA%E6%9C%AC%E5%85%83%E5%99%A8%E4%BB%B6%E9%80%89%E5%9E%8B/"/>
    <published>2020-11-20T16:00:00.000Z</published>
    <summary>
      <![CDATA[<h1 id="电阻的选型"><a href="#电阻的选型" class="headerlink" title="电阻的选型"></a>电阻的选型</h1><h2 id="首先确认电阻的基本参数"><a href="#首先确认电阻的基本参数" class="headerlink" title="首先确认电阻的基本参数"></a>首先确认电阻的基本参数</h2><ul>
<li><p>1、阻值大小；</p>
</li>
<li><p>2、精度，常规使用优选1%精度；</p>
</li>
<li><p>3、额定功率和体积，优先选择常规功率的体积，具体参见下表1；</p>
</li>
<li><p>4、温漂，有特殊要求的应用，比如传感器应用，必须关注此参数带来产品性能的影响；</p>
</li>
<li><p>5、工作温度范围，超过70摄氏度的环境必须降额使用；</p>
</li>
<li><p>6、电阻类别，贴片厚膜电阻，贴片薄膜电阻，线绕电阻等，普通应用为贴片厚膜电阻或者薄膜电阻。</p>]]>
    </summary>
    <title>基本元器件的选型</title>
    <updated>2026-07-19T12:27:07.769Z</updated>
  </entry>
  <entry>
    <author>
      <name>COMBER</name>
    </author>
    <category term="模电原理及应用" scheme="https://lijinbo.cc/categories/%E6%A8%A1%E7%94%B5%E5%8E%9F%E7%90%86%E5%8F%8A%E5%BA%94%E7%94%A8/"/>
    <category term="开关电源" scheme="https://lijinbo.cc/tags/%E5%BC%80%E5%85%B3%E7%94%B5%E6%BA%90/"/>
    <content>
      <![CDATA[<h1 id="开关电源如何降低纹波？"><a href="#开关电源如何降低纹波？" class="headerlink" title="开关电源如何降低纹波？"></a>开关电源如何降低纹波？</h1><h2 id="1、加大电感值和输出电容值"><a href="#1、加大电感值和输出电容值" class="headerlink" title="1、加大电感值和输出电容值"></a>1、加大电感值和输出电容值</h2><p>根据开关电源的公式，电感内电流波动大小和电感值成反比，输出纹波电压和输出电容值成反比，如下式，可以得出结论，加大电感值和输出电容值可以减小纹波。</p><p><strong><em>Vripple=Imax/(Co×f)</em></strong></p><p>通常的做法，对于输出电容，使用铝电解电容以达到大容量的目的。但是电解电容在抑制高频噪声方面效果不是很好，而且ESR也比较大，所以会在它旁边并联一个陶瓷电容，来弥补铝电解电容的不足。同时，开关电源工作时，输入端的电压Vin不变，但是电流是随开关变化的。这时当开关断开时，输入电源不会很好地提供电流，通常在靠近电流输入端(以Buck型为例，是Switch附近)，并联电容来提供电流。</p><p>上面这种做法对减小纹波的作用是有限的。电感的话，因为体积限制，电感不会做的很大；电容的话，输出电容增加到一定程度，对减小纹波就没有明显的效果了；增加开关频率的话，又会增加开关损耗。所以在要求比较严格的场合，这种方法并不是很好。</p><span id="more"></span><h2 id="2、二级滤波——再加一级LC滤波器"><a href="#2、二级滤波——再加一级LC滤波器" class="headerlink" title="2、二级滤波——再加一级LC滤波器"></a>2、二级滤波——再加一级LC滤波器</h2><p>LC滤波器对噪声纹波的抑制作用比较明显，根据要去除的纹波频率选择合适的电感电容构成滤波电路，一般能够很好的减小纹波。选用这种方法滤除纹波，又会面临两种选择：</p><p>采样点选在LC滤波器之前，输出电压会降低。因为任何电感都有一个直流电阻，当有电流输出时，在电感上会有压降产生，导致电源的输出电压降低，而且这个压降是随输出电流变化的。</p><p>采样点选在LC滤波器之后，这样输出电压就是我们所希望得到的电压。但是这样在电源系统内部引入了一个电感和一个电容，有可能会导致系统不稳定。关于电源系统稳定，可以查阅更多资料。</p><h2 id="3、开关电源输出之后，接LDO滤波"><a href="#3、开关电源输出之后，接LDO滤波" class="headerlink" title="3、开关电源输出之后，接LDO滤波"></a>3、开关电源输出之后，接LDO滤波</h2><p>这是减少纹波和噪声最有效的办法，优势很明显，输出电压恒定，不需要改变原有的反馈系统，但也是成本最高，功耗最高的办法。 任何一款LDO都有一项指标——噪音抑制比，是一条频率—幅度（dB）曲线，这也是选择LDO产品的依据。</p><p>对减小纹波，开关电源的PCB布线也非常关键，这是个很赫手的问题，对于高频噪声，由于频率高幅值较大，后级滤波虽然有一定作用，但效果不明显，简单的做法是在二极管上并电容C或RC，或串联电感。</p><h2 id="4、在二极管上并联电容或RC支路"><a href="#4、在二极管上并联电容或RC支路" class="headerlink" title="4、在二极管上并联电容或RC支路"></a>4、在二极管上并联电容或RC支路</h2><p>二极管高速导通、截止时，要考虑寄生参数。在二极管反向恢复期间，等效电感和等效电容成为一个LC振荡器，产生高频振荡。为了抑制这种高频振荡，需在二极管两端并联电容C或RC缓冲网络。电阻一般取10Ω-100 Ω，电容取4.7pF-2.2nF。在二极管上并联的电容或者RC，其取值要经过反复试验才能确定。如果选用不当，反而会造成更严重的振荡。对高频噪声要求严格的话，可以采用<a href="https://baike.baidu.com/item/%E8%BD%AF%E5%BC%80%E5%85%B3/2126984">软开关技术</a>。</p><h2 id="5、二极管后接电感"><a href="#5、二极管后接电感" class="headerlink" title="5、二极管后接电感"></a>5、二极管后接电感</h2><p>这也是常用的抑制高频噪声的方法。针对产生噪声的频率，选择合适的电感元件，同样能够有效地抑制噪声。需要注意的是，电感的额定电流要满足实际的要求。</p><h1 id="如何改善开关电源的动态响应？"><a href="#如何改善开关电源的动态响应？" class="headerlink" title="如何改善开关电源的动态响应？"></a>如何改善开关电源的动态响应？</h1><h2 id="1、适当改善反馈响应速率"><a href="#1、适当改善反馈响应速率" class="headerlink" title="1、适当改善反馈响应速率"></a>1、适当改善反馈响应速率</h2><p>如适当减小431上RC电路中的电容量、增加光耦电流、减小电流检测PIN脚上RC电路中的电容值，但需注意噪声、重载开机问题；另外，这一方案也受制于实际设计方案的选择：<br><a href="https://zhuanlan.zhihu.com/p/35998770">PWM方式</a>受最大占空比的限制(Flyback：约0.8，单端正激0.5，其他如Push-pull、Half-bridge，Full-bridge等为0.8，Boost为0.9等)，因此设计初期最大占空比的选择就应当保留一定的余量;<br><a href="https://zhuanlan.zhihu.com/p/35998770">PFM方式</a>也受制于工作频率限制，以免产生噪声或EMI的问题。<br>在容许的情况下(较低的电容电压)，尽可能让占空比或开关频率在动态情形下逐步增大，以避免如电流应力加大等问题;</p><h2 id="2、适当降低输出储能电感的感量"><a href="#2、适当降低输出储能电感的感量" class="headerlink" title="2、适当降低输出储能电感的感量"></a>2、适当降低输出储能电感的感量</h2><p>电感中的电流不能突变，这是影响输出动态响应的关键，尤其在CCM（连续导通）模式的时候，因此，适当降低感量可以改善动态响应，但需要考虑轻载时的反馈稳定性问题(CCM转变成DCM会造成系统不稳定)。</p><h2 id="3、增加电容容量或数量"><a href="#3、增加电容容量或数量" class="headerlink" title="3、增加电容容量或数量"></a>3、增加电容容量或数量</h2><p>电容的电流可以突变，因此，如果Layout空间允许的话，可以考虑适当考虑<strong>增加电容容量或数量</strong>来改善。通常采用大容量电解电容，这些电解电容能够在最初负载瞬态变化通过时对负载提供支持。 </p><h2 id="4、采用多个变换器并联方案"><a href="#4、采用多个变换器并联方案" class="headerlink" title="4、采用多个变换器并联方案"></a>4、采用多个变换器并联方案</h2><p>成本会较高，这在电流变化速率要求较高的场合(如CPU供电的3~6相V-core电路)会用到。</p><h2 id="5、增加开关频率"><a href="#5、增加开关频率" class="headerlink" title="5、增加开关频率"></a>5、增加开关频率</h2><p>以更快的速度传递能量，但需考虑元器件的频率特性、EMC及效率等问题。</p><p></br></br></br></br></br></br></p><ul><li>end</li></ul>]]>
    </content>
    <id>https://lijinbo.cc/2020/10/11/%E5%BC%80%E5%85%B3%E7%94%B5%E6%BA%90%E5%A6%82%E4%BD%95%E9%99%8D%E4%BD%8E%E7%BA%B9%E6%B3%A2/</id>
    <link href="https://lijinbo.cc/2020/10/11/%E5%BC%80%E5%85%B3%E7%94%B5%E6%BA%90%E5%A6%82%E4%BD%95%E9%99%8D%E4%BD%8E%E7%BA%B9%E6%B3%A2/"/>
    <published>2020-10-10T16:00:00.000Z</published>
    <summary>
      <![CDATA[<h1 id="开关电源如何降低纹波？"><a href="#开关电源如何降低纹波？" class="headerlink" title="开关电源如何降低纹波？"></a>开关电源如何降低纹波？</h1><h2 id="1、加大电感值和输出电容值"><a href="#1、加大电感值和输出电容值" class="headerlink" title="1、加大电感值和输出电容值"></a>1、加大电感值和输出电容值</h2><p>根据开关电源的公式，电感内电流波动大小和电感值成反比，输出纹波电压和输出电容值成反比，如下式，可以得出结论，加大电感值和输出电容值可以减小纹波。</p>
<p><strong><em>Vripple=Imax/(Co×f)</em></strong></p>
<p>通常的做法，对于输出电容，使用铝电解电容以达到大容量的目的。但是电解电容在抑制高频噪声方面效果不是很好，而且ESR也比较大，所以会在它旁边并联一个陶瓷电容，来弥补铝电解电容的不足。同时，开关电源工作时，输入端的电压Vin不变，但是电流是随开关变化的。这时当开关断开时，输入电源不会很好地提供电流，通常在靠近电流输入端(以Buck型为例，是Switch附近)，并联电容来提供电流。</p>
<p>上面这种做法对减小纹波的作用是有限的。电感的话，因为体积限制，电感不会做的很大；电容的话，输出电容增加到一定程度，对减小纹波就没有明显的效果了；增加开关频率的话，又会增加开关损耗。所以在要求比较严格的场合，这种方法并不是很好。</p>]]>
    </summary>
    <title>开关电源如何降低纹波和改善动态响应</title>
    <updated>2026-07-18T15:00:26.343Z</updated>
  </entry>
</feed>
