目前常用的晶体管图示仪,主要是测量,显示晶体管的静态(低频)特性曲线,有些图示仪可以将多个管子的特性曲线叠加显示,通过观察,了解不同管子特性的相似性。我们使用这种图示仪,除了大致了解晶体管的静态特性外,主要是用于配对。但用只能显示特性曲线的图示仪配对晶体管,效率是非常低的。下图是8个同型号晶体管输出特性曲线显示在一起的图像。
大致看可以认为匹配度还不错,但如果要看出哪些管子的匹配度更高,就比较困难了。更何况如果要从数十,数百只管子里找到匹配度高的管子,这种用肉眼看的方式,效率是非常低的。
因此,可以考虑用算法计算不同晶体管之间的相似度,然后再筛选出相似度高的晶体管。
1. 晶体管特性数字化
要用算法计算相似度,那么第一步首先要把晶体管的特性数字化。也就是说要把特性曲线的测量结果保存下来。
例如双极性晶体管BJT,典型的特性曲线包括输入特性IbVbe@Vce和输出特性曲线IcVce@Ib,需要采集保存的量有Ib,Vbe,Ic,Vce。典型的BJT输入特性曲线和输出特性曲线如下图:
对于场效应管,不论是JFET,还是MOSFET,由于输入电流Ig可以忽略,所以主要考虑转移特性曲线IdVgs@Vds,输出特性曲线IdVds和IdVgs是等价的。需要保存的量有Vgs,Id,Vds。典型的MOSFET转移特性和输出特性曲线如下图。
2. 计算相似度
第二步是要考虑计算相似度的方法
2.1 工作点法计算相似度
最简单的是可以选取几个典型的工作点,比较在工作点上管子之间的相似度。例如工作点可以是下图中的几个点:
BJT晶体管是电流驱动型元件,通常工作点的设置是确定Ib和Vce,然后测量Ic和Vbe。因此,在晶体管的的四个参数Ib, Vbe, Ic, Vce中,对不同的BTJ管子,给予同样一组Ib,Vce,比较测量到的Ic和Vbe,就可以判断工作点相似度。
FET是电压驱动型元件,通常工作点的设置是确定Vgs,Vds,然后测量Id。因此,对于不同的FET管子,给予同样一组Vgs, Vds,比较测量到的Id,就可以判断工作点相似度。
这种方法的好处是测量的点比较少,管子不容易发热,从而可以减小温漂对测量结果的影响。不足之处是显而易见的,就是不够全面,特别是对晶体管的一些参数,例如BJT的HFE,JFET的\(V_{cutoff},I_{dss}\),MOS管的\(V_{on}\)等参数,不能全面兼顾。
不过这确实是一个值得考虑的方法,特别是针对大功率管,大电流工作点的配对测量。
2.2 拟合函数法计算相似度
理想一点的方法是对曲线建立数学模型。也就是用一个参数方程或者拟合函数来描述特性曲线,然后比较拟合函数中各参数的相似性,确定曲线特性的相似性。
我们常用的仿真软件用到的Spice器件模型就是这样一个参数方程。这个参数方程是建立在半导体物理特性基础上的,是比较准确的模型。但这个模型的参数太多,而且大多数很难通过简单的测量获得。
比较简单实用的的办法是用拟合函数来表示曲线。输入特性是一个拟合函数,输出特性是另一个拟合函数。拟合函数的参数作为曲线的特征向量。每条特性曲线对应特征向量的一个取值。不同的管子在同样的测量条件下,测得的曲线,通过拟合得到特征向量。计算特征向量间的距离就可以确定曲线的相似度。
2.2.1 BJT的拟合函数
BJT晶体管的典型输入特性如下图:
对于BJT输入特性,通常用以下拟合函数
这个函数表示,在一定的\(u_{ce}\)条件下,\(i_b\)是\(u_{be}\)的函数。函数的参数是A, B。只要计算出A, B,一条特定条件下(即\(u_{ce}\)为某一固定值)的输入特性曲线就确定了。如果对这条曲线求导数,可以得到输入特性中某一点的动态电阻的倒数。
BJT晶体管典型的输出特性曲线如下图:
对于输出特性,通常用以下拟合函数:
这个函数表示,在一定的\(i_b\)条件下,\(i_c\)是\(u_{ce}\)的函数。函数的参数是A,K,B。只要计算出A,K,B,一条特定条件下(即\(i_b\)为某一固定值)的输出特性曲线就确定了;
但仔细观察一下这个函数,其实是有问题的。可以想象一下如果\(u_{ce}\)很大,函数的第二项\(Ke^{-Bu_{ce}}\)趋向于0,那么此时\(i_c=A\),变成一条水平线了。而由于晶体管的Early效应,所有曲线都会反向交于一点。如下图所示:
但如果把Early电压考虑到拟合函数中,又无法直接测量其值。考虑到\(u_{ce}\)比较大时,曲线可以看成有一定斜率的直线,这样就需要对上述拟合函数进行简单的修订。
引入\(K_1u_{ce}\),其中\(K_1\)代表直线斜率。这样BJT输出拟合函数就包括四个参数A, K, B, K1
再仔细观察一下这个函数,可以大致了解各参数和函数图像的关系。
参数\(A\)基本就是曲线的“膝盖”位置对应的\(i_c\),即饱和区(非线性区域)和放大区(线性区域)的拐点。这无疑是非常重要的一个参数。
参数\(K, B\)描述了非线性区域到线性区域,曲线的弯曲程度。在大多数情况下,这两个参数的影响性,不如参数A那么大。
参数\(K1\)描述了线性区域曲线的斜率。这也是决定曲线相似度的一个比较重要的参数。
由于这几个参数在确定曲线形状方面,影响程度是不同的。因此在比较不同曲线相似性的时候,也需要进行不同的考虑。
2.2.2 FET的拟合函数
典型的J-FET转移特性曲线如下图:
对于J-FET的转移特性曲线,通常可以用以下拟合函数:
\(i_d=B \times (u_{gs}-V)^2|u_{ds}, u_{gs} \ge V\)
这个函数中有两个参数B, V。通过这个函数,可以看出,在特定的\(u_{ds}\)条件下:
- 当\(u_{gs}=V\)时,\(i_d=0\), 说明参数V就是JFET的夹断电压\(V_{cutoff}\)
- 当\(u_{gs}=0\)时,\(i_d=B\times V^2\), 此时的\(i_d\)就是JFET的IDSS
如果两条曲线的B, V参数相似度高,不仅说明夹断电压和IDSS相似度高,而且曲线的弯曲程度也比较一致,即曲线上任一点的相似度都比较高。
对于MOS-FET,其典型的转移特性曲线如下图:
常用的拟合函数和JFET类似,只不过定义域是相反的。
\(i_d=B \times (u_{gs}-V)^2|u_{ds}, u_{gs} \le V\)
这个函数中有两个参数B, V。在特定的\(u_{ds}\)条件下:
当\(u_{gs}=V\)时,\(i_d=0\), 说明参数V就是MOS-FET的开启电压\(V_{on}\)
如果两条曲线的B, V参数相似度高,不仅说明开启电压相似度高,而且曲线的弯曲程度也比较一致,即曲线上任一点的相似度都比较高。
对于JFET和MOS-FET的输出特性曲线,其形状和BJT输出特性曲线类似。可以采用相同的拟合函数。
2.3 计算相似度
在确定好拟合函数后,就可以利用采集到的曲线数据,计算相似度了。计算的基本思路分以下三步:
第一步:计算曲线特征向量
将一条曲线上采集到的点坐标\((x,y)\),作为一个样本列表,输入对应的拟合函数,就可以求出这个拟合函数的相应参数。这些参数再加上曲线的测量条件,就可以作为当前曲线的特征向量。
对于BJT的\(I_bV_{be}|V_{ce}\)曲线,测量条件是\(V_{ce}\),参数是A,B。经过拟合,可以得到曲线的特征向量 \(<A,B>|V_{ce}\)
对于BJT的\(I_cV_{ce}|I_b\)曲线,测量条件是\(Ib\),参数是A, K, B, K1。经过拟合,可以得到曲线的特征向量\(<A, K, B,K1>|I_b\)
对于FET的转移曲线,输出曲线,也可以分别建立特征向量。
通过这种方式对曲线建模,建模的对象是一条二维曲线。但实际上把测量条件作为第三个维度后,晶体管的特性可以看成是一个三维曲面。利用测量的实际值作为样本,可以对三维曲面进行拟合建模。这样描述晶体管的特性更加理想。而且可以实现即使不同晶体管的测量条件不同,也可以进行相似度比较。
但实际操作的时候,这个三维模型的拟合程度还不够理想。留待以后慢慢研究吧。
第二步:计算不同晶体管在同样条件下,特征向量的相似度
找到不同晶体管相同测量条件的特征向量,计算向量距离\(d\),把\(d\)作为当前两条曲线的相似度。
正如前面分析BJT输出特性拟合函数时提到的,特征向量的不同参数对曲线形状的影响度不同。
例如参考A决定曲线的“膝盖”位置,也就是曲线的整体高度,K1决定了曲线线性区域的斜率。如果参数A差别比较大,那K1相似度再高,也不能说两条曲线相似。
因此简单的应用向量距离算法是不合适的。其实标准的向量距离算法要求各个参数(维度)是相互独立的。在实际计算相似度的时候,要考虑参数计算的优先级,以及不同参数的权重。
第三步:计算整体相似度
将各曲线的相似度按照输入曲线,输出曲线进行汇总,分别计算输入相似度和输入相似度,然后对输入相似度和输出相似度进行加权平均后,就可以得到两个晶体管之间最终的相似度。
3. 筛选配对组
配对筛选的过程,本质是对晶体管按照相似度进行分组的过程。
一个相似组的定义是这个组里的所有元件两两之间的相似度都满足最低相似度要求。例如设定最低相似度为0.96,一个相似度组里有5个元件,那么就意味着这5个元件中,任意两个的相似度都不小于0.96。
假设计算相似度的维度只有两个\((x,y)\),那么每个晶体管在这两个维度上的得分就可以在二维坐标中,以一个点的方式表示出来。两个管子的相似度可以用两个点之间的距离表示。距离越近,说明相似度越高;距离越远,相似度越低。
如下图所示。A和B的距离比A和C的距离近,也就是说A和B的相似度比A和C的相似度高。
如果用\(d\)表示最低相似度,那么某元件和\(A(x_a, y_a)\) 满足相似度筛选条件,就意味着该元件位于以\(A(x_a, y_a)\) 为圆心,\(d\)为半径的圆内,称\(d\)为\(A(x_a, y_a)\)的相似半径。
上图中B在A的相似半径内。那么A和B就是要找的一个相似组。
假如上图的相似度情况如下图。把A,B,C相似半径的圆都画出来。
可以看出B,C都在A的相似半径内。但是B和C不在彼此的相似半径内。
这样A,B,C就不能在一个相似度组里。筛选结果应该是:
组一:A, B
组二:A, C
可以看出,在筛选结果中,一个元件可能出现在两个,甚至多个相似组里。
元件比较多时,情况就会更加复杂。这些是配对筛选算法处理的核心内容。