当前位置:文档之家› 集成电路封装与系统测试

集成电路封装与系统测试

集成电路封装与系统测试课程实验报告电子、集成专业(2014—2015学年第一学期)课程名称集成电路封装与系统测试课程类别□必修□√限选班级学号姓名任课教师考试日期目录一、实验目的......................................................... - 2 -二、实验原理......................................................... - 2 -BC3199集成电路测试系统简介 ..................................... - 2 -测试电路原理图................................................... - 3 -测试参数分析..................................................... - 3 -测量输出电压Vo ............................................. - 3 -测量电源电压调整率.......................................... - 4 -测量负载电压调整率.......................................... - 4 -三、实验设备......................................................... - 4 -四、实验步骤......................................................... - 4 -焊制电路板...................................................... - 4 -建立LM7805测试程序............................................. - 5 -测试数据及结果.................................................. - 5 -五、实验结论......................................................... - 6 -六、心得体会......................................................... - 6 -附录:............................................................... - 7 -一、实验目的随着各种模拟、数字集成电路的用量越来越大,其质量对整机的性能和可靠性起着越来越大的作用,因此深入开展集成电路相关测试技术的研究具有重要的意义。

本次实验我们以BC3199测试系统作为集成电路测试平台,将模拟集成电路LM7805作为测试对象,测试其输出电压、电源电压调整率和负载电压三个参数。

二、实验原理BC3199集成电路测试系统简介B C3199 测试系统是一款模拟数字混合信号测试系统,用于测试电源管理类器件、运算放大器、模拟开关、 DAC/ADC 以及中小规模数字电路,适用于工程测试与量产测试。

BC3199 集成电路测试系统分为电源箱与测试头两部分,适配器可以直接安装到测试头引出的测试插座之上,无需任何测试连接线,测试时通过双手按压测试控制板的两个测试按钮进行测试。

SBC主控计算机安装在机箱的上部,分体机外接主计算机。

PCI 槽上插有一块专用接口板,用于计算机和系统主机之间数据传输,此接口板通过 50 线扁平电缆与机内的系统接口板连接。

机内有系统接口板、电压/电流源、电压测量及数据采集板、时间测量单元、交流信号源、数字 I/O板等。

系统框图如图1所示。

图1 BC3199集成电路测试系统框图VeritestATE 为BC3199集成电路测试机的配套控制软件,可以对被测器件进行测试序列生成、测试参数生成以及自动测试,同时具有设备校准与自检,测试结果保存和分析,以及 HANDLER连接等功能。

该软件可以在 Windows XP 系统上运行。

系统软件采用与测试程序分离的编程方法,用户可以建立单独的工程编写测试方案的代码,所生成的动态连接库可以被系统软件识别和运行,用户可以在所生成的工程中调试这些代码。

测试电路原理图通过查找资料分析综合后采用如下电路原理图图2 测试原理图其中C1=,C0=测试参数分析根据LM7805的器件参数文档,需要器件的测试参数如下图3所示。

图 1 LM7805电气特性测量输出电压Vo输出电压即为在一定条件下,LM7805输出端口的电压值。

在代码中,利用GetVo函数即可得到不同条件下的Vo值。

测量电源电压调整率电源电压调整率即为当输入侧电压从允许输入的最低值变化到规定的最大值时,输出电压的相对变化值占额定输出电压的百分比,一般不超过%。

在图2中,通过测出的输出电压Vo值,利用公式:res[1] = fabs(Vo2-Vo1);regline =((res[1] / )/ (fabs(Vi2)-fabs(Vi1)))*100;测量负载电压调整率负载调整率来源于电源的输出电压因负载大小的变化(空载到满载),而电压调整率来源于电源在满载时,其输出电压因该电源的供电电压波动引起的变化。

三、实验设备BC3199 VC2005四、实验步骤焊制电路板焊制后的电路板如下图:图4 实际电路建立LM7805测试程序BC3199 测试程序编写采用 C++语言对系统硬件行为进行描述。

它采用了测试策略与数据分离的设计。

用户可以通过测试程序编写出所需要的全部或者基本测试参数,通过系统软件界面修改或者输入数据。

用户编写的测试程序最终将生成 DLL 动态链接库,可以使用系统软件调用这些测试程序。

测试代码见附录测试数据及结果加载以上测试程序,进入以下测试界面。

在连测状态下,BC3199测试系统可对测试结果进行数据统计并生成报表。

经测试,得到某批次LM7805测试数据结果报表见表1。

序号Vo(V )Vo7V (V )Vo20V(V )Vo5mA(V )Vo1A (V )Regline1(mV )Regline2(mV )Regload1(mV )Regload2(mV )1 2 345678910表 1 实验测试数据图5 芯片手册数据由实验数据可知,当输入条件为<Io<, 7V<Vi<20V,实验测得的输出电压Vo在~ V范围内,满足标准数据的范围~;Regline1 和Regline2的值分别小于和mV ,远小于标准给出的100mV 和50mV的参考值;最后Regload1和Regload2 测试值分别小于和,也分别远小于标准给出的100mV 和50mV的参考值。

五、实验结论通过本次测试,可以确定我们测得LM7805芯片的输出电压、电源电压调整率和负载电压调整率三个参数要求的,通过相应的电路、步骤和测试原理可以再测试LM7805芯片其他的参数,最终判断其是否为合格产品。

附录:#include ""#include "D:\\BC3199\\NEW-VeriTestATE\\TestFiles\\"ATE_TEST_ITEM_DECLARE(VO); //输出电压ATE_TEST_ITEM_DECLARE(Regline); //电源电压调整率ATE_TEST_ITEM_DECLARE(Regload); //负载电压调整率void CreateTestItem(void) { unsigned int ParameterID = 0;B EGIN(VO, , , "V", 4); ("Output Meas(MAX)", V, "V"), "V");("Vi", V, "V"), "V");("VClamp", V(8, "V"), "V");("Io", V(-500, "mA"), "mA");("IClamp", V(2000, "mA"), "mA");("VsOn_Delay", V, "ms"), "ms");("DIV", V, "---"), "---", 0);("Num", V, "---"), "---", 0);M AKE(VO);B EGIN(Regline, 0, 100, "%/V", 2); ("Output Meas(MAX)", V, "V"), "V");("Vi1", V, "V"), "V");("Vi2", V, "V"), "V");("VClamp", V, "V"), "V");("Io", V(-500, "mA"), "mA");("IClamp", V(2000, "mA"), "mA");("VsOn_Delay", V, "ms"), "ms");("DIV", V, "---"), "---", 0);("Num", V, "---"), "---", 0);M AKE(Regline);B EGIN(Regload, 0, 100, "mV", 2); ("Output Meas(MAX)", V, "V"), "V");("Vi", V(10, "V"), "V");("VClamp", V(8, "V"), "V");("Io1", V(-5, "mA"), "mA");("Io2", V(-1000, "mA"), "mA");("IClamp", V(2000, "mA"), "mA");("VsOn_Delay", V, "ms"), "ms");("DIV", V, "---"), "---", 0);("Num", V, "---"), "---", 0);M AKE(Regload);B EGIN(IQ, 0, , "mA", 3); ("Output Meas (MAX)", V, "V"), "V");("Vi", V, "V"), "V");("VClamp", V(8, "V"), "V");("Io", V(0, "mA"), "mA");("IClamp", V(1000, "mA"), "mA");("VsOn_Delay", V, "ms"), "ms");("DIV", V(200, "---"), "---", 0);("Num", V, "---"), "---", 0);M AKE(IQ);B EGIN(deltaIQ_deltaI, , , "mA", 3); ("Output Meas (MAX)", V, "V"), "V");("Vi", V, "V"), "V");("VClamp", V(8, "V"), "V");("Io1", V(-5, "mA"), "mA");("Io2", V(-1000, "mA"), "mA");("IClamp", V(1200, "mA"), "mA");("VsOn_Delay", V, "ms"), "ms");("DIV", V(200, "---"), "---", 0);("Num", V, "---"), "---", 0);M AKE(deltaIQ_deltaI);B EGIN(deltaIQ_deltaV, , , "mA", 3); ("Output Meas (MAX)", V, "V"), "V");("Vi1", V, "V"), "V");("Vi2", V, "V"), "V");("VClamp", V(8, "V"), "V");("Io", V(-500, "mA"), "mA");("IClamp", V(1000, "mA"), "mA");("VsOn_Delay", V, "ms"), "ms");("DIV", V(200, "---"), "---", 0);("Num", V, "---"), "---", 0);M AKE(deltaIQ_deltaV);B EGIN(VDrop, , , "V", 3); ("Output Meas (MAX)", V, "V"), "V");("Vi_begin", V, "V"), "V");("Vi_end", V, "V"), "V");("VFail", V, "V"), "V");("Step", V, "V"), "V");("VClamp", V(8, "V"), "V");("Io", V(-1000, "mA"), "mA");("IClamp", V(1500, "mA"), "mA");("VsOn_Delay", V, "ms"), "ms");("DIV", V, "---"), "---", 0);("Num", V, "---"), "---", 0);M AKE(VDrop);B EGIN(RR, 62, 100, "dB", 1);("Freq", V(100, "Hz"), "Hz");("VL", V(8, "V"), "V");("VH", V(18, "V"), "V");("VClamp", V(8, "V"), "V");("Io", V(-500, "mA"), "mA");("IClamp", V(1500, "mA"), "mA");("ACMRange", V(2, "---"), "---",0);("VsOn_Delay", V, "ms"), "ms");M AKE(RR);}float GetVO(float VoutMax, float Vi, float VClamp, float Io, float IClamp, floatVsOn_Delay, unsigned{ U SING_RESULT(res);//所有继电器关p Drv->OpenAllCBits();p Drv->Delay(5);//根据判据判断量程i f(VoutMax < pDrv->SetMeasureChannel(BMV0, VM_2V);e lse if(VoutMax < pDrv->SetMeasureChannel(BMV0, VM_5V);e lse if(VoutMax < pDrv->SetMeasureChannel(BMV0, VM_10V);e lse if(VoutMax < pDrv->SetMeasureChannel(BMV0, VM_20V);e lse if(VoutMax < pDrv->SetMeasureChannel(BMV0, VM_50V);//输入电压设置, 判断箝位量程P VI_CURRENT_RANGE irange = PVI20UA;i f(IClamp < irange = PVI20UA;e lse if(IClamp < irange = PVI200UA;e lse if(IClamp < 2) irange = PVI2MA;e lse if(IClamp < 20) irange = PVI20MA;e lse if(IClamp < 200) irange = PVI200MA;e lse if(IClamp < 2000) irange = PVI2A;e lse if(IClamp < 10000) irange = PVI10A; p Drv->VIFV(APVI0, FPRG, Vi, PVIV_AUTO, IClamp, -IClamp, irange);//负载电流设置, 判断箝位量程P VI_VOLTAGE_RANGE vrange = PVI2V;i f(VClamp < vrange = PVI2V;e lse if(VClamp < vrange = PVI5V;e lse if(VClamp < vrange = PVI20V;e lse if(VClamp < vrange = PVI50V;p Drv->VIFI(APVI1, FT3, Io, PVII_AUTO, VClamp, -VClamp, vrange);//接入输入输出滤波电容p Drv->SetCBits(pDrv->GetRelay(), pDrv->GetRelay(54, 55)); p Drv->Delay(5);//打开输出继电器i f(fabs(Io) >pDrv->EnableOut(APVI0); p Drv->Delay(10); p Drv->VIOn(APVI0); p Drv->Delay(10); p Drv->EnableOut(APVI1); p Drv->Delay(VsOn_Delay); //测量p Drv->SetTriggerTimer(VsOn_Delay); p Drv->VoltageMeausure(SITE1,TRIG, DIV, NUM); p Drv->SetCBits(pDrv->GetRelay(55), pDrv->GetRelay()); p Drv->DisableOut(APVI1); p Drv->Delay(5); p Drv->VIOff(APVI0);//关闭输出继电器p Drv->DisableOut(APVI0); p Drv->Delay(10); p Drv->OpenAllCBits(); p Drv->Delay(5); p Drv->VMReadResult(SITE1, res); r eturn res[1]; }void ReglineProc(PARAMLIST) { U SING_PARAM_POS(VoutMax, 0);U SING_PARAM_FLOAT(Vi1, 1);U SING_PARAM_FLOAT(Vi2, 2);U SING_PARAM_POS(VClamp, 3);U SING_PARAM_FLOAT(Io, 4);U SING_PARAM_POS(IClamp, 5);U SING_PARAM_POS(VsOn_Delay, 6);U SING_PARAM_UINT(DIV, 7);U SING_PARAM_UINT(NUM, 8);U SING_RESULT(res);f loat VO1 = GetVO(VoutMax, Vi1, VClamp, Io, IClamp, VsOn_Delay, DIV, NUM, pDrv,pCond);f loat VO2 = GetVO(VoutMax, Vi2, VClamp, Io, IClamp, VsOn_Delay, DIV, NUM, pDrv,pCond);r es[1] = fabs(VO2 - VO1);r es[1] = ((res[1] / / (fabs(Vi2) - fabs(Vi1))) * 100;R ETURN_UNIT_RESULT(SITE1, res, "%/V");}void RegloadProc(PARAMLIST) { U SING_PARAM_POS(VoutMax, 0);U SING_PARAM_FLOAT(Vi, 1);U SING_PARAM_POS(VClamp, 2);USING_PARAM_FLOAT(Io1, 3);USING_PARAM_FLOAT(Io2, 4);U SING_PARAM_POS(IClamp, 5);U SING_PARAM_POS(VsOn_Delay, 6);U SING_PARAM_UINT(DIV, 7);U SING_PARAM_UINT(NUM, 8);U SING_RESULT(res);f loat VO1 = GetVO(VoutMax, Vi, VClamp, Io1, IClamp, VsOn_Delay, DIV, NUM, pDrv,pCond);f loat VO2 = GetVO(VoutMax, Vi, VClamp, Io2, IClamp, VsOn_Delay, DIV, NUM, pDrv,pCond);r es[1] = fabs(VO1 - VO2);R ETURN_UNIT_RESULT(SITE1, res, "mV");}。

相关主题