电阻改善信号完整性
1.为什么电路端接电阻能改善信号完整性
由于电信号在PCB上传输,因此在PCB设计中可以把PCB走线认为是信号的通道,当该通道的
物理结构(线宽,线到参考面的距离等)发生变化,特别是有一些突变时,都会产生反射,此时,一部分
信号继续传播,一部分信号就可能反射。而我们在设计过程中一般是控制PCB的宽度。所以,我们
可以把信号在PCB走线上传输,假想为河水流在河道里面,当河道的宽度发生突变时,河水遇到
阻力自然会发生反射,漩涡等现象,同样地,当信号在PCB走线上遇到PCB的阻抗突变时,信号也会
发生反射
这里以光的反射类比信号的反射。光的反射是指光在传播到不同物质时在分界面上改变传播方向,
返回原来物质中的现象。光在遇到介质界面时,其折射率和反射率由材料的介电常数决定。光线在临
界面上的反射率仅与介质的物理性能,光线的波长,以及入射角相关,同样地,信号电磁波在传输过程
中,一且传输线瞬时阻抗发生变化,那么就将发生反射。信号的反射中有一个参数,称为反射系数(p)
其计算公式为
1.为什么电路端接电阻能改善信号完整性
由于电信号在PCB上传输,因此在PCB设计中可以把PCB走线认为是信号的通道,当该通道的
物理结构(线宽,线到参考面的距离等)发生变化,特别是有一些突变时,都会产生反射,此时,一部分
信号继续传播,一部分信号就可能反射。而我们在设计过程中一般是控制PCB的宽度。所以,我们
可以把信号在PCB走线上传输,假想为河水流在河道里面,当河道的宽度发生突变时,河水遇到
阻力自然会发生反射,漩涡等现象,同样地,当信号在PCB走线上遇到PCB的阻抗突变时,信号也会
发生反射
这里以光的反射类比信号的反射。光的反射是指光在传播到不同物质时在分界面上改变传播方向,
返回原来物质中的现象。光在遇到介质界面时,其折射率和反射率由材料的介电常数决定。光线在临
界面上的反射率仅与介质的物理性能,光线的波长,以及入射角相关,同样地,信号电磁波在传输过程
中,一且传输线瞬时阻抗发生变化,那么就将发生反射。信号的反射中有一个参数,称为反射系数(p)
其计算公式为
式中,Z1为变化前的阻抗:Z2为变化后的阻抗
假设PCB传输线的特性阻抗为50Ohm.传输过程中遇到一个理想的100Ohm的贴片电阻接地,那么反
射系数可运用式(1.32.1)计算得到:p=(100-50)/(100+50)=1/3,信号有1/3被反射回源端。反射系数p的计算公式的推导过程此处不展开。
信号沿传输线向前传播时.每时每刻都可能发生阻抗变化.例如.PCB走线宽度或厚度变化.PCB
走线换层,PCB过孔.PCB转角及PCB走线上的电阻,电容、电感,接插件和器件引脚都会产生阻抗变
化:这个阻抗可能是传输线本身的,也可能是中途或末端其他元件的,对于信号来说,它不会区分到
底是什么阻抗,信号是否反射,只会限据阻抗面变化,如果阻抗是恒定的,那么信号就会正常向前传
播:只要阻抗发生了变化,不论是什么因素引起的,信号都会发生反射
不管是COMS电路还是SSTL电路,抑或是射频电路,电路设计工程师希望整个传输链路阻抗都
是一致的,最理想的情况就是源端、传输线和负载端都一样。但是,实际总是事与愿违,因为发送端的
芯片内阻通常会比较小,而传输线的阻抗又为50Ohm.这就造成了不匹配,使信号发生反射,这种情况
在并行总线和低速信号电路中常常出现,而通常对于高速SerDes电路而言.芯片内阻与差分传输线
的阻抗是匹配的
如果确实出现了阻抗不匹配,那么通常的做法是在芯片之外采用电阻端接匹配来实现阻抗一致
性。常用的端接方式有源端端接、并联端接,戴维宁端接,RC端接等。那端接电阻要使用几个?端接
电阻怎么放置?阻值选择多大呢?
1.1.点对点拓扑结构
在介绍端接之前,先来了解一下电路的拓扑结构,电路的拓扑结构是指电路中各个元件之间的
连接关系。常见的电路拓扑结构包括点对点拓扑,星型拓扑,T型拓扑,菊花链拓扑等,最简单的就是
点对点拓扑结构的连接设计。点对点设计也是最常见的电路拓扑设计,在高速电路中几平都是点对
点的连接设计。点对点拓扑虽然简单,但是其限制了带负载的数量。在点对点设计中,由于驱动端的
内部阻抗与传输线的阻抗常常不匹配,因此很容易发生信号反射,使信号失真。这就是一个信号完整
性问题。
图1.32.1所示是点对点拓扑结构.由驱动端,传输线和接收端组成。
在该电路拓扑中,其接收端的信号波形如图1.32.2所示
从上述信号波形可以看出.信号在高电平时稳定电压为1.8V,但是最大值达到了2.619V,有
819mV的上过冲:最小值达到了-731mV,有731mV的下过冲。这种情况在电路设计中需要尽量
免,因为这么大的过冲很容易损毁芯片,即使不损毁,也会存在可靠性问题。所以,在设计中需要把过冲降低,尽量保证电压幅值在电路可接受的范围内,如此案例应尽量保证满足1.8V±5%,这时就需
要通过端接电阻来改善信号质量
1.2.2源端端接
源端端接设计也称为串联端接设计,是一种常用的端接设计,源端端接是指在芯片端出来之后
添加一个端接电阻,并使其尽量靠近输出端。在此电路结构中,关键问题是加多大阻值的电阻,这需
要根据电路的实际情况进行仿真或计算确认。计算原则是源端阻抗Rs与所加端接电阻R0的值等于
传输线的阻抗Z0,在前文介绍的点对点拓扑结构中,加人端接电阻值为33Ohm的R1.其拓扑结构如图132.3所示
使用源端端接后,其接收端的信号波形如图1.32.4所示
使用源端端接后,原本存在的过冲已经基本消除,信号质量得到极大的改善,在加入源端端接电
阻之后,信号的上升沿变缓,上升时间变长
源端端接可以使电路匹配得非常好,但其并不适用于所有电路设计,源端端接有自身的一些特
性,大致归纳如下
(1)源端端接非常简单,只需要使用一个电阻即可完成端接
(2)当驱动端器件的输出阻抗与传输线特性阻抗不匹配时,使用源端端接在开始时就可以使阻抗
匹配:当电路不受终端阻抗影响时,非常适合使用源端端接:如果接收端存在反射现象,就不适合使
用源端端接。
(3)适用于单一负载设计时的端接
(4)当电路信号率比较高时,或者信号上升时间比较短(特别是高频时钟信号)时,不适合使用
源端端接。因为加入端接电阻后,会使电路的上升时间变长
(5)合适的源端端接可以减少电磁干扰(Electromagnetic Interference,EMI)辐射)
1.3.并联端接
并联端接是指把端接电阻并联在链路中,一般把端接电阻放在靠近信号接收端的位置,井联端
接分为上拉并联端接和下拉并联端接,其拓扑结构如图1.32.5所示
端接电阻R0与传输线的阻抗一致,使用并联端接后,其接收端的信号波形如图1326所示
从接收端的信号波形可以看出,过冲基本被消除。上拉并联端接的波形低电平有很明显的上移,
下拉并联端接的波形高电平有很明显的下移。不管是上拉并联端接还是下拉并联端接,信号波形的
峰峰值都比使用源端端接时小一些。
并联端接放在接收端,所以能很好地消除反射,使用的元件也只有电阻
从电路结构可以看出,即使电路保持在静态情况,并联端接依然会消耗电流,所以驱动的电流需
求比较大,很多时候驱动端无法满足并联端接的设计,特别是在多负载时,驱动端更加难以满足并联
端接需要消耗的电流,所以,一般并联端接不用于TTL和COMS电路。同时,由于并联端接的幅度降
低了,因此噪声容限也被降低
1.4.戴维宁端接
戴维宁端接就是使用两个电阻组成分压电路,即用上拉电阻R1,和下拉电阻R2构成端接,通过R1
和R2吸收反射能量。戴维宁端接的等效电阻必须等于走线的特性阻抗。戴维宁端接拓扑结构如
图1.32.7所示
使用戴维宁端接后,其接收端的信号波形如图1.32.8所示
从接收端的信号波形可以看出,戴维宁端接匹配的效果也非常好,过冲基本被消除
戴维宁端接由于一直存在直流功耗,因此其对电源的功耗要求比较高,也会降低源端的驱动能力,从接收端的信号波形也可以看出,戴维宁端接的幅度降低了,所以噪声容限也被降低。同时,戴维宁
端接需要使用两个分压电阻,电阻的选型相对比较复杂,因此很多电路设计工程师在使用这类端
接时总是非常谨慎
DDR2和DDR3的数据和数据选通信号网络的ODT端接电路就采用了戴维宁端接
1.5.RC端接
RC端接在并联下拉端接的电阻下面增加了一个电容,井下拉到地,所以RC端接是由一个电阻和一
个电容组成的。RC端接也可以看作一种并联端接,其电阻等于传输线的阻抗,电容通常取值比较
小,RC端接拓扑结构如图1.32.9所示
使用RC端接后,其接收端的信号波形如图1.32.10所示
从接收端的信号波形可以看出,过冲基本被消除,RC端接能非常好地消除源端带来的反射影
响,但是RC电路也有可能导致新的反射。由于RC端接电路中有电容存在,因此电路静态时的直流
功耗非常小。
信号波形的低电平电压提升了很多,所以RC端接后电路的噪声容限被降低,RC端接后,由于引入了RC延时电路,因此信号波形边沿也明显变缓慢,其变化程度与RC端接的电阻和电容有直接关
系。所以,RC端接并不适合非常高速的信号及时钟电路的端接,同时,RC端接需要使用电阻和电容
两种器件。
从上面分析的几种电阻端接类型来看,它们基本都能达到电路匹配端接的效果,使信号在传递过
程中保持信号不失真,即满足信号完整性的设计要求。对于电子产品设计面言,这是一个系统工程,
其中涉及各个方面,包括信号完整性与电源完整性(Power Integrity,PI),也包括电磁兼容性,电路可靠
性,可加工性,成本等。那么,在使用电阻端接来解决反射问题时,也要考虑到这些方面的影响。在实
际项目的应用中,需要根据项目工程的应用来选择电阻端接的类型
总而言之,从电气性能的角度来说,电阻端接匹配不仅可以改善信号质量,还可以用于控制信号边
沿变化的速率,即控制信号的上升时间:也可以改变信号电平的类型,即起到转换作用
?
2.选择串联端接电阻的大小时如何在信号完整性和电磁兼容性之间平衡
在“为什么电路端接电阻能改善信号完整性?“中介绍了几种端接的方式,也知道了端接用于
匹配电路的阻抗,解决了信号完整性问题,串联端接是一种比较常见的端接方式,这不仅体现在其应
用于端接上,还在于其能控制信号的边沿变化快慢,单纯地从信号传递的角度看设计,工程师都希望
信号边沿尽量陡,这样上升时间段信号传递的时序裕量就会大,产品更加可靠,但是,电磁环境越
来越复杂,产品不仅要满足电气特性,还需要满足各个国家和地区电磁兼容性的要求
图1.33.1所示是一个信号分别使用30Ohm、40Ohm、和50Ohm三个电阻端接后获得的波形,所有波形都满
足Vih和Vil的要求,同时也满足信号完整性其他指标的要求
很显然,3个波形的上升沿变化是不同的,电阻为30Ohm时,上升时间为228ps:电阻为40Ohm时,上升
时间为298ps:电阻为50Ohm时,上升时间为434ps,对于相同的信号码型,不同的上升时间,其频谱是
不同的,上升时间越短,频谱能量越高。把3个波形转换为频谐,如图1.33.2所示
在电磁兼容性认证时,当频谱分量超过认证标准值时,就会导致无法满足电磁兼容性认证标准
所以,在选择端接电阻时,要综合考量信号完整性和电磁兼容性的需求,以求达到一个平衡的状态
3.为什么有时在电路中串联220Ohm电阻?
根据电阻端接的介绍可知:通常在电路输出引脚处串联一个33Ohm的电阻,或者220Ohm,甚至1kOhm的电阻,这是为什么呢?一般在低速接口和连接到背板或面板的接口上采用这种设计。
这个电阻的作用是热插拔保护,那么,这个电阻是如何实现对电路的接口电路进行热插拔保护的呢?
首先介绍一下CMOS电路。MOS管有NMOS管和PMOS管两种,当NMOS管和PMOS管成对出现在电路中,且二者在工作中互补时,称为CMOS管,MOS管有增强型和耗尽型两种,在数字电路中多采用增强型。CMOS管的等效电路形成了一个反相器的功能。
CMOS管内部由多个N型和P型半导体组成。除形成了两个MOS管外,由于半导体的结构,还产生了一些寄生的晶体管,寄生的两个晶体管又组合在一起形成了“N-P-N-P结构,图134.2所示是一个集成的CMOS管结构半导体的剖面图,从图中可以发现有两个多发射级晶体管Q1和Q2寄生。
多发射极晶体管就是把多个发射极做在同一个发射区中的晶体管,实际上也就是多个晶体管并联在一起,但共用一个基区和一个集电区的一种复合晶体管,多发射极晶体管除能够提高集成电路的集成度外,同时还具有其特殊的应用特性,它主要用于TTL与非(NAND)逻辑IC(Integrted Circuit.集成电路)中可以提高IC的工作速度。
可以把多发射极晶体管看成多个晶体管并联,这个电路并不准理解,如果单独把寄生电路拿出来,则可以得到一个可控硅(Silicon Controlled Rectifier,SCR)的结构。所以,很多地方把这个寄生电路称为寄生可控硅,寄生双极晶体管等效电路如图1.34.3所示。
CMOS反相器在正常工作的情况下,输出引脚不会出现电压大于V或小于CND的情况,与输出相连的PN结不会出现正向导通的情况,器件正常工作。
有些公司的设计文档为了便于工程师理解,把寄生双极晶体管等效于两个二极管,这两个二极管烧毁时,器件失效.但其实该PN结比较难烧毁,那到底是什么原因导致了器件失效呢?
当热插拔时,由于Vcc上电有一个过程,因此可能出现器件引脚的电压先于Vcc上电,此时.如果出现了输出电压导致这两个PN结导通,则会进一步导致Q1Q2两个晶体管导通,P-N-P-N正反馈结构的形成过程如下:如果A点有触发电流流过衬底电阻Rsub1,使得Rsub1上的压降UA升高,当达到晶体管Q1发射极正向导通压降时,就会使T1导通。T1管的集电极电流IC1增大,使得衬底电阻Rwel2上的压降UB下降:UB的下降使得T2的UBE2增大而导通,IC2增大,结果导致UA继续增加,如果环路电流增益不小于1,则这种状态将持续下去,直到两个晶体管完全导通,导通后,CMOS反相器处于闩锁状态。其导通电流取决于整个环路的负载及电源电压。
当Q1Q2其中任意一个晶体管完全导通时,就会构成正反馈,很可能导致器件Vcc到GND产生一个很大的电流,过大的电流导致寄生晶体管烧毁,从而导致器件损坏,该现象就称为闩锁。ESD和相关的电压瞬变都会引起闩锁效应,这是半导体器件失效的主要原因之一。
在闩锁情况下,器件在电源与地之间形成短路,造成大电流,EOS(Electrical Over-Stress,电过载)和器件损坏。
要实现闩锁效应的触发,必须具备以下几个条件:
1.其P-N-P-N结构的环路电流增益要求大于等于1,即βNPN*βPNP≥1;
2.触发条件使一个晶体管处于正向偏置,井产生足够大的集电极电流:使另一寄生晶体管也处于正向偏置而导通;
3.外来干扰噪声消失后,只有当电源提供的电流大于寄生可控硅的维持电流或电路工作电压大于维持电压时,导通状态才能继续维持,否则电路将退出闩锁状态。
ESD电压大,持续时间短,热插拔电压小,但是持续时间较长。当电路承受静电或热插拔时,会产生一个闩锁电压,在半导体设计时,可以通过调整半导体结构来优化寄生半导体寄生可控硅的β值,减少闩锁产生的概率。
从硬件设计的角度,可以在一些需要热插拔、防静电,防电磁干扰的电流设计中,通过串联一个电阻来减少闩锁的产生。但需要注意的是,这个电阻的阻值不能太大,太大可能导致上升沿变缓,最终破坏信号完整性。所以,这样的大电阻串联的设计几乎不会在高速接口中使用。
4.无感电阻
35无感电阻的电感真的为0吗?
无感即无感值,这里的无感是指电阻上的感抗值非常小,可以忽略不计,但不能说电感值为0
一些精密的仪器仪表设备,电子工业设备常常需要用到此类无感电阻,因为普通具有高感抗的电阻在
使用中容易产生振荡,损坏回路中的其他器件
无感电阻的特性
严格地说,所有电阻都是LCR的复合体,既存在电阻,也存在电容,电感,我们平时所说的有感
电阻是与无感电阻相对应的,无感电阻是用双线并绕的方法生产的,最终接线时将两线按相反的方向
接入,使两条线上产生的自感互相抵消。由于无感电阻绕制工艺复杂,成本较高,因此无感电阻售价
较高,因为不同工艺生产的电阻功率范围不同,所以可以按照大功率无感电阻和小功率无感电阻分
别进行介绍
(1)大功率无感电阻。无感电阻生产工艺是针对线绕电阻的,主要用于大功率电路。单线线绕电
阻都是有感电阻,由线绕电阻的形状可知,线绕电阻是由一圈一周的导线绕制而成,与电感相比就少
了个磁芯,所以线绕电阻的寄生电感是比较大的
水泥电阻由于其寄生电感特别小,因此一般被称为无感电阻,无感水泥电阻是根据不同的功率
将对应的优质合金无感电阻片放入不同形状的陶瓷壳内部,用特殊不燃性耐热水泥电子填充料,经自
然阴干后高温烘烤而成的,MPR无感水泥电阻是一款在电路中最常见的无感型电阳,在日本习惯称
其为BRP,在欧洲习惯称其为SLR。无感水泥电阻具有很好的耐久性,温度系数小,噪声小,负载能力
强,温度范围宽,电感量小,无感水泥电阻被广泛用于电视、监控设备,计算机、全自动控制系统,高级
音频等电路中
(2)小功率无感电阻。常见的小功率无感电阻主要是碳膜电阻和金属膜电阻,以及少量的金属氧
化膜电阻。这些电阻的生产工艺是通过真空刻蚀的方法控制沉积在瓷管上的碳膜(或金属膜/金属氧
化膜)上的刻槽圈数来得到不同阻值。所以,它们本身都存在自感,都属于有感电阻
除双线无感电阻外,碳质电阻也可以近似认为是无感电阻。小功率无感电阻与一般电阻相比有
以下优点:电阻本身的电感值很小(仅为几微亨),频率响应特性优异,除可广泛用于交,直流电路外
还适用于中,高频电路:伏安特性线性度好,电气性能稳定,耐高压,有良好的绝缘性能:过载能力强
特别适用于间歇式供电和脉冲大电流的电路:电阻的温度特性良好,适用温度范围较宽:机械强度高
可耐冷,热冲击。
无感电阻的选型注意事项
(1)无感电阻最注重的就是感抗值,还要注意设备使用的一致性和稳定性
(2)无感电阻作为负载时产生大量的热量,散热好也是其重要标准之一
(3)如果设备对体积要求较高,则不适合选择线绕电阻这类体积大的无感电阻
(4)在高频测量、耐脉冲负载、泄放等应用中优选厚膜无感电阻。传统上很多选用线绕无感电阻,
但性能方面与厚膜无感电阻有很大差距。对无感电阻的感值做测试:200W厚膜无感功率电阻,测试
率为6.78MHz.使用阻抗测试仅进行感值测试.电感值为192nH:同功率的线绕电阻,电感值为
2.8uH,在失效形式方面,厚膜电阳较为安全,为断路状态,线绕电阻可能会发生爆炸
相关文章:
电阻改善信号完整性
1.为什么电路端接电阻能改善信号完整性 由于电信号在PCB上传输,因此在PCB设计中可以把PCB走线认为是信号的通道,当该通道的 物理结构(线宽,线到参考面的距离等)发生变化,特别是有一些突变时,都会…...
如何选择合适的主键id?
目录标题 MySQL主键一定是自增的吗?自增id、uuid、雪花算法 谁更合适?详细聊聊 UUID详细聊聊 雪花算法 在数据库设计中,选择合适的主键对于数据表的性能和数据完整性都非常重要。接下来,让我们探讨一下自增id、uuid和雪花算法&…...
OpenMP出现Stack Overflow及其疑问
今天对着《OpenMP核心技术指南》练习OpenMP,其中一个案例: #include <stdio.h> #include <math.h> #include <omp.h>#define ITER 100000000void main() {int i;double A[ITER];for (i 0; i < ITER; i)A[i] 2.0 * i;#pragma omp parallel{/…...
vscode查找函数调用
在 VS Code 中,要查找 C 语言函数的调用列表,有以下几种方法可以使用,具体取决于项目的规模和你的需求: 方法 1: 使用全局查找功能 步骤: 打开全局查找: 按 CtrlShiftF (Windows/Linux) 或 CmdShiftF (Ma…...
网络安全-网络安全审计
网络安全审计是为了确保网络系统的安全性和完整性,防范潜在的网络攻击和数据泄露风险。 审计步骤: 1.确定审计目标:明确审计的目的和范围,例如审计网络设备、服务器、应用程序或数据库等。 2.收集信息:收集审计范围…...
刷LeetCode hot100--1.哈希表
哈希表--查找一个元素在不在数组/map/set中 目前用到的数据结构: std::unordered_set哈希表无序否否O(1)O(1) std::unordered_map哈希表key无序key不可重复key不可修改O(1)O(1) 1. 两数之和 - 力扣(LeetCode) 30min 几个问题 1.原来想…...
鸿蒙生态崛起的机遇有什么
鸿蒙生态系统的崛起为各个领域带来了多个机遇,主要体现在以下几个方面: 智能设备的互联互通:鸿蒙系统旨在实现不同设备之间的无缝连接,为物联网(IoT)设备的发展提供了良好的基础。这将推动智能家居、智慧城…...
写入json和读取json文件
/// <summary> ///写入文件 /// </summary> /// <param name"Stns"></param> /// <returns></returns> public ActionResult WriteJsonFile(string Stns) { strin…...
【Java基础入门篇】前言
Java基础入门篇 本系列内容主要针对Java基础知识,总共包含四大部分内容: 变量、数据类型和运算符控制语句和递归算法面向对象和JVM底层分析数组和排序 学习需要具备: IDEA编译器 JDK1.8版本 写在前面 在Java入门的最开始,我们需…...
LangChain——管道提示词 缓存
管道提示词 管道提示词可以将多个提示组合在一起。当我们想要使用部分提示时,这会很有用。这里可以通过PipelinePrompt来完成。 PipelinePrompt由两部分组成: 最终提示:返回的最终提示;管道提示:元组列表,…...
LangGPT社区创始人云中江树:用热爱与坚持点燃实战营课堂
书生大模型实战营第 4 期正在火热进行中,在这里,我们见证了众多同学的成长与进步。今天,让我们一起走进第 4 期导师、结构化提示词 LangGPT 社区创始人云中江树的故事。他的故事不仅是对知识改变命运的生动诠释,更是一段关于热爱与…...
Admin.NET框架使用宝塔面板部署步骤
文章目录 Admin.NET框架使用宝塔面板部署步骤🎁框架介绍部署步骤1.Centos7 部署宝塔面板2.部署Admin.NET后端3.部署前端Web4.访问前端页面 Admin.NET框架使用宝塔面板部署步骤 🎁框架介绍 Admin.NET 是基于 .NET6 (Furion/SqlSugar) 实现的通用权限开发…...
18:(标准库)DMA二:DMA+串口收发数据
DMA串口收发数据 1、DMA串口发送数据2、DMA中断串口接收定长数据包3、串口空闲中断DMA接收不定长数据包4、串口空闲中断DMA接收不定长数据包DMA发送数据包 1、DMA串口发送数据 当串口的波特率大于115200时,可以通过DMA1进行数据搬运,以防止数据的丢失。如…...
Unity 导出 xcode 工程 并给 Info.plist 文件添加字段
Unity 导出 xcode 工程 并给 Info.plist 文件添加字段 在 Editor 文件夹下新建 xxx.cs 脚本 实现静态方法 [PostProcessBuild]public static void OnPostprocessBuild(BuildTarget target, string pathToBuiltProject){// Unity 导出 Xcode 工程自动调用这个方法 }例子 一 us…...
打造高质量技术文档的关键要素(结合MATLAB)
在技术的浩瀚海洋中,一份优秀的技术文档宛如精准的航海图。它不仅是知识传承的载体,也是团队协作的桥梁,更是产品成功的幕后英雄。打造出色的技术文档并非易事,以下将从多个方向探讨如何做到这一点。 文章目录 方向一:…...
C语言-数组
数组的创建 数组结构式 数组类型 数组名称 数组大小 内容 列如 char Arr[3]{1,2,3} int Arr[3]{1,2,3} 注意:在C99之前,【】中需要一个常量才可以 数组的初始化 初始化就是给它赋值,初始化分为完全初始化和非完全初始化 完全初始化…...
hhdb数据库介绍(10-19)
监控 智能物理拓扑 物理拓扑图主要以服务器为视角展示集群组件与服务器的所属关系,同时可查看服务器资源的使用情况以及各集群组件服务运行状态。使用前需保证为集群服务器配置了可用的SSH连接信息,否则只能查看当前服务器与集群组件的所属关系&#x…...
AI开发:生成式对抗网络入门 模型训练和图像生成 -Python 机器学习
阶段1:GAN是个啥? 生成式对抗网络(Generative Adversarial Networks, GAN),名字听着就有点“对抗”的意思,没错!它其实是两个神经网络互相斗智斗勇的游戏: 生成器(Gene…...
68 mysql 的 临键锁
前言 我们这里来说的就是 我们在 mysql 这边常见的 一种锁, 行临键锁 虽然 在平时我们用到的不是很多, 我们这里 主要是 讲一下 它的主要的触发的场景 行临键锁 等价于 行锁 间隙锁, 行间隙锁是一个 左开右开的区间, 行临键锁 是一个左开右闭的区间 但是 它 和 行锁的差异…...
(十一)Python3 接口自动化测试,Pytest-Allure报告的使用
(十一)Python3 接口自动化测试,Pytest-Allure报告的使用 1、安装和使用 1、安装pytest和allure-pytest插件: pip install pytest allure-pytest 2、在你的pytest测试用例中使用allure装饰器或者上下文管理器来生成报告。 例如,你可以使用@allure.feature装饰器来标记特性…...
【Rust 学习笔记】Rust 基础数据类型介绍(一)
博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 博客内容主要围绕: 5G/6G协议讲解 高级C语言讲解 Rust语言讲解 文章目录 Rust 基础数据类型介绍(一)一、固定宽…...
深入理解Oracle DB的锁和闩
1. 引言 本文深入介绍Oracle DB的锁和闩。 2. Oracle DB 锁的基本概念 2.1 定义与作用 锁是 Oracle 数据库用于控制并发访问的一种机制。它用于防止多个事务同时对同一数据进行不一致的操作,确保数据的完整性和一致性。例如,当一个事务正在更新一行数…...
mcu上一种利用伪随机数防止mac地址冲突的方法
一 前言 前段时间开发的一个带tcp功能的项目,出现了mac地址冲突的问题,领导让随机生成一个mac地址,因此研究了下随机数。 二 预研 1.硬随机数 硬随机数又叫真随机数,英文名称”true random number generator“,即通过硬件随机数…...
C# 索引器(Indexer)
文章目录 前言一、索引器的语法规则二、索引器的用途及与属性的对比三、索引器的重载 前言 在 C# 编程中,索引器(Indexer)是一项极具特色且实用的语言特性,它赋予了对象一种独特的访问方式,使得对象能够如同数组一般&a…...
【大数据学习 | Spark-SQL】定义UDF和DUAF,UDTF函数
1. UDF函数(用户自定义函数) 一般指的是用户自己定义的单行函数。一进一出,函数接受的是一行中的一个或者多个字段值,返回一个值。比如MySQL中的,日期相关的dateDiff函数,字符串相关的substring函数。 先…...
Springboot集成通义大模型
1.先到阿里云平台开头阿里云白炼账号,创建apiKey 2. 引入maven依赖 <dependency><groupId>com.alibaba</groupId><artifactId>dashscope-sdk-java</artifactId><version>2.8.3</version></dependency><!-- htt…...
Xilinx PCIe高速接口入门实战(一)
引言:本文对Xilinx 7 Series Intergrated Block for PCI Express PCIe硬核IP进行简要介绍,主要包括7系列FPGA PCIe硬核资源支持、三IP硬核差异、PCIe硬核资源利用等相关内容。 1. 概述 1.1 7系列FPGA PCIe硬件资源支持 7系列FPGA对PCIe接口最大支持如…...
区块链游戏的新观察:自治世界能否成为未来链游的突破口?
区块链游戏(链游)作为加密领域的创新方向,一直被寄予厚望。然而,尽管各类链游层出不穷,大多只是靠代币激励一时爆火,缺乏持久吸引力。这种现象让人对链游未来的发展充满疑虑:是否有一种全新的设…...
Linq中的投影运算 (C#):Select、SelectMany、Zip
投影是指将对象转换为一种新形式的操作,该形式通常只包含那些将随后使用的属性。 通过使用投影,您可以构造从每个对象生成的新类型。 可以投影属性,并对该属性执行数学函数。 还可以在不更改原始对象的情况下投影该对象。 1、Select 下面的…...
GPU 服务器厂家:怎样铸就卓越 AI 算力?
文章来源于百家号:GPU服务器厂家 今天咱来聊聊 GPU 服务器厂家那些事儿,而这其中衡量 AI 算力的因素可是关键所在哦。 先讲讲计算速度这一块。咱都知道 AI 那复杂的活儿,像训练超厉害的图像识别模型,得处理海量图像数据&#x…...
数据结构与算法——N叉树(自学笔记)
本文参考 N 叉树 - LeetBook - 力扣(LeetCode)全球极客挚爱的技术成长平台 遍历 前序遍历:A->B->C->E->F->D->G后序遍历:B->E->F->C->G->D->A层序遍历:A->B->C->D->…...
浏览器的数据六种存储方法比较 :LocalStorage vs. IndexedDB vs. Cookies vs. OPFS vs. WASM-SQLite
在构建该 Web 应用程序,并且希望将数据存储在用户浏览器中。也许您只需要存储一些小标志,或者甚至需要一个成熟的数据库。 我们构建的 Web 应用程序类型发生了显着变化。在网络发展的早期,我们提供静态 html 文件。然后我们提供动态渲染的 h…...
Rust个人认为将抢占C和C++市场,逐渐成为主流的开发语言
本人使用C开发8年、C#开发15年、中间使用JAVA开发过项目、后期在学习过程中发现了Rust语言说它是最安全的语言,能够解决C、C的痛点、于是抽出一部分时间网上买书,看网上资料进行学习,这一学习起来发现和其它语言比较起来,在编码的…...
electron-updater软件自动检测更新 +无服务器本地测试
大家好,我是小黄。 今天分享一下如何0基础实现electron自动检测更新功能。 一. 安装 electron-updater 实现自动更新 安装依赖 electron-updater npm install electron-updater 二. 修改package.josn "publish": {"provider": "generi…...
Flink在Linux系统上的安装与入门
一、Flink的引入 这几年大数据的飞速发展,出现了很多热门的开源社区,其中著名的有Hadoop、Storm,以及后来的Spark,他们都有着各自专注的应用场景。Spark 掀开了内存计算的先河,也以内存为赌注,赢得了内存计…...
鸿蒙面试---都用过哪些装饰器
必答的 State装饰器:组件内状态 State装饰的变量,或称为状态变量,一旦变量拥有了状态属性,就可以触发其直接绑定UI组件的刷新。当状态改变时,UI会发生对应的渲染改变。Prop装饰器:父子单向同步Prop装饰的变…...
微信小游戏/抖音小游戏SDK接入踩坑记录
文章目录 前言问题记录1、用是否存在 wx 这个 API 来判断是微小平台还是抖小平台不生效2、微小支付的参数如何获取?3、iOS 平台不支持虚拟支付怎么办?微小 iOS 端支付时序图:抖小 iOS 端支付:4、展示广告时多次回调 onClose5、在使用单例时 this 引起的 bug6、使用 fetch 或…...
uniapp配置全局消息提醒
1.H5使用根标签插入dom的方式实现。 2.app端使用plus.nativeObj.View的方式绘制实现 H5端app端 H5端 创建组件orderAlert.vue <template><div class"view"><div class"content" v-if"visible"><div class"message&q…...
Docker学习
🎉Docker 简介和安装 Docker 是什么 Docker 是一个应用打包、分发、部署的工具 你也可以把它理解为一个轻量的虚拟机,它只虚拟你软件需要的运行环境,多余的一点都不要, 而普通虚拟机则是一个完整而庞大的系统,包含各…...
【Electron学习笔记(三)】Electron的主进程和渲染进程
Electron的主进程和渲染进程 Electron的主进程和渲染进程前言正文1、主进程2、渲染进程3、Preload 脚本3.1 在项目目录下创建 preload.js 文件3.2 在 main.js 文件下创建路径变量并将 preload.js 定义为桥梁3.3 在 preload.js 文件下使用 electron 提供的contextBridge 模块3.4…...
人工智能的微积分基础
目录 编辑 引言 微积分的基本概念 1. 导数 2. 积分 3. 微分方程 微积分在人工智能中的应用 1. 机器学习中的优化 2. 反向传播算法 3. 概率与统计 4. 控制理论 5. 自然语言处理中的梯度 6. 计算机视觉中的积分 7. 优化算法中的微积分 8. 微分几何在深度学习中的…...
关于BeanUtils.copyProperties是否能正常复制字段【详细版】
话不多说!先总结: 1、字段相同,类型不同(不复制,也不报错) 2、子类父类 (1)子类传给父类(可以正常复制) (2)父类传给子类(可以正常复制) 3、子类父类&#x…...
oracle将select作为字段查询
在Oracle中,如果你想将一个SELECT语句作为字段的值,你可以使用子查询或者使用WITH子句(也称为公用表表达式CTE)。以下是两种方法的示例: 方法1:使用子查询 语法如下: SELECTcolumn1,(SELECT …...
FFmpeg 简介与编译
1. ffmpeg 简介: FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移…...
qt QLinearGradient详解
1、概述 QLinearGradient是Qt框架中QGradient的一个子类,用于创建线性渐变效果。线性渐变是一种颜色沿着一条直线平滑过渡到另一种颜色的效果。QLinearGradient允许你定义渐变的起点和终点,以及在这些点之间的颜色变化。你可以使用它来为图形、背景、边…...
点击A组件跳转到B页面的tab的某一列
1、使用vuex存储点击的数据; 点击A组件里面的button按钮: <div><button click"banli(first)">已办理</button><button click"banli(second)">未办理</button><button click"banli(third)&quo…...
图像小波去噪与总变分去噪详解与Python实现
目录 图像小波去噪与总变分去噪详解与实现1. 基础概念1.1 噪声类型及去噪问题定义1.2 小波去噪算法基础1.3 总变分去噪算法基础2. 小波去噪算法2.1 理论介绍2.2 Python实现及代码详解2.3 案例分析3. 总变分去噪算法3.1 理论介绍3.2 Python实现及代码详解3.3 案例分析4. 两种算法…...
mvn-mac操作小记
1.安装brew 如果报错,Warning: /opt/homebrew/bin is not in your PATH. vim ~/.zshrc,最后一行追加 export PATH“/opt/homebrew/bin:$PATH” source ~/.zshrc 2.安装brew install maven mvn -version查看路径 Maven home: /opt/homebrew/Cellar/mav…...
【娱乐项目】基于批处理脚本与JavaScript渲染视频列表的Web页面
Demo介绍 一个简单的视频播放器应用,其中包含了视频列表和一个视频播放区域。用户可以通过点击视频列表中的项来选择并播放相应的视频,播放器会自动播放每个视频并在播放完毕后切换到下一个视频。本项目旨在通过自动化脚本和动态网页渲染,帮助…...
Faster R-CNN (目标检测)
Faster R-CNN (Faster Region-based Convolutional Neural Networks) Faster R-CNN 是一种高效的目标检测模型,它是在 R-CNN 系列(包括 R-CNN 和 Fast R-CNN)的基础上发展而来的,能够实现对图像中多个对象的检测。Faster R-CNN 引…...