集成电路开短路测试分为开路测试(open short to VDD)和短路测试(open short to VSS)。
一般来说,芯片的每个引脚都有泄放或保护电路是两个首尾相连的二极管,一端接VDD,一端接VSS,信号是从两个二极管的接点进来测试时测试时,先把芯片的VDD引脚接0伏(或接地),再给每个芯片引脚供给一个100uA到500uA从测试机到芯片的电流,电流会经上端二极管流向VDD(0伏),然后测引脚的电压,正常的值应该是一个二极管的偏差电压0.7伏左右,我们一般设上限为1.5伏,下限为0.2伏,大于1.5伏判断为openfail,小于0.2伏判断为shortfail.这就是open_short_to_VDD测试。
open_short_to_VSS测试的原理基本相同。同样把先VDD接0伏,然后再给一个芯片到测试的电流,电流由VSS经下端二级管流向测试机。然后测引脚的电压,同样正常的值应该是一个二极管的偏差电压0.7伏左右,只是电压方向相反,上限还是为1.5伏,下限为0.2伏,大于1.5伏判断为openfail,小于0.2伏判断为shortfail.这就是open_short_to_VSS测试。
总体设计
详细设计
(一)硬件设计
1. 恒电流电路设计
5V电压源通过电路产生2.5V电压,供电流源使用。电流源是通过Q1和Q2两个PNP管基极共联以及三个电阻按右上图所示连接而成,该电流源主要用于提供100mA到500mA的电流用于测试输入,其中C4电容主要是在瞬间断电起到缓冲作用
2. 判决电路设计
比较电路上端接2.5V,通过电阻的分压作用在芯片LM358AM的2号引脚产生1.5V的电压,在5号引脚产生0.2V的电压;将3和6号引脚电位与他们比较,以此来选通二极管D1或D2,当3和6号引脚电位高于1.5V或低于0.2V时二极管其中一个导通,介于两电位之间时两个二极管全部截止,其中3和6号引脚电位等于所U3选通引脚电位。
3. 控制电路设计
控制电路主要通过对AT89S52编程控制U2和U3的6,9,10,11号引脚实现;右上图是AT89S52的复位电路。
4. 选通电路设计
选通电路主要用于选择被测芯片的引脚,芯片U2选通的引脚通过其3号引脚将被测引脚点置0,芯片U3选通的引脚置于与其3号引脚相同的电平,之后通过发光二极管来显示两引脚是开路或短路,还是正常。
(二)软件设计
#include《reg52.h》
#include《intrins.h》
#define uint unsigned int
#define uchar unsigned char
sbit P1_0 =P1^0; //定义p1.0口
sbit P1_1 =P1^1;//定义P1.1口
void deplay(uint z) //延时
{
uint x,y;
for(x=z;x》0;x--)
for(y=110;y》0;y--);
}
void open_short_to_VDD() //开路测试
{
uint i,j;
P2=0x34;
i=P2&0x0f;
j=(P2&0xf0)》》4;
for(i=3;i《=6;i++)
{if(j==i) continue;
P2=(j《《4)|i;
if(P1_0)P1_1 =1;else P1_1 =0;
deplay(700);
}
}
void open_short_to_VSS() //短路测试
{
uint i,j;
P2=0x23;
i=P2&0x0f;
j=(P2&0xf0)》》4;
for(i=3;i《=6;i++)
{
if(i==j) conTInue;
P2=(j《《4)|i;
deplay(700);
}
}
void short_out_to_PIN() //对各引脚测短路
{uint i,j;
P2=0x32;
i=P2&0x0f;
j=(P2&0xf0)》》4;
for(i=3;i《=6;i++)
{
for(j=3;j《=6;j++)
{
if(j==i) conTInue;
P2=(j《《4)|i;
deplay(1000);
}
}
}
main()
{
while(1)
{
open_short_to_VDD();
deplay(700);
open_short_to_VSS();
deplay(700);
short_out_to_PIN();
}
}
系统设计
硬件原理图
测试
眼前最亮的黄灯亮了说明芯片没问题,后面的红灯亮指示的电源