集成电路芯片测试仪设计.doc_第1页
集成电路芯片测试仪设计.doc_第2页
集成电路芯片测试仪设计.doc_第3页
集成电路芯片测试仪设计.doc_第4页
集成电路芯片测试仪设计.doc_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘 要 集成电路(IC)测试是伴随着电子技术的发展而来的,数字集成芯片在使用过 程中容易被损坏,用肉眼不易观察。早期的人工测试方法对一些集成度高,逻辑复 杂的数字集成电路显得难于入手,因而逐渐被自动测试所取代,因此很需要设计一 种能够方便测试常用芯片好坏的仪器。 本系统以单片机AT89C52为核心,由芯片测试插座、独立按键、74HC573驱动8位 数码管显示、5V直流电源控制模块等组成。根据数字集成芯片的引脚特性以及集成 芯片的真值表编写测试程序。该系统能完成14脚以内常用TTL74、54系列数字集成芯 片的功能测试。 关键字:关键字:测试仪;数字集成电路;单片机 ABSTRACT Integrated circuit (IC) test is accompanied with the development of electronic technology, Digital integrated chip is easily damaged during use, and difficult to observe with the naked eye. Early manual test methods for some high integration, the logic of complex digital integrated circuits become difficult,thus gradually replaced by automated testing, so it is necessary to design a testing instrument to distinguish the Common chips is good or bad conveniently. The system is with AT89C52 microcontroller at the core, including the chip test socket,the independent button, 74HC573drives an 8-bit digital display, 5V DC power supply control module and other components, etc. According to the characteristics of digital IC pins and the truth table write integrated chip test program. The system can be completed within 14 feet common TTL74, 54 series digital integrated chip functional test. Keywords: tester; digital integrated circuit; microprocessor control unit 目录 1系统总体方案1 2 系统硬件电路设计2 2.1 硬件系统电路原理框图.2 2.2 硬件系统电路各模块设计2 2.2.1 MCS-52 单片机最小系统2 2.2.2 独立按键模块3 2.2.3 芯片测试模块4 2.2.4 显示模块5 2.2.5 电源供电模块7 3 系统软件设计8 3.1 测试对象 TTL74 系列芯片简介8 3.2 测试原理.8 3.3 程序流程图.9 3.4 模块程序关键代码.11 3.4.1 主程序11 3.4.2 独立按键扫描程序11 3.4.3 74HC573 控制数码管显示程 序.15 3.4.4 信号检测程序17 4 系统仿真测试19 总结21 致谢22 参考文献23 附录24 附录 A 源程序24 附录 B 元件清单35 附录 C 整体电路图36 1 系统总体方案 在数字集成电路的设计、制造和应用阶段,不可避免地会出现故障,为了保证 数字集成电路工作的可靠性,需要对其进行必要的测试。设计门电路自动测试仪目 的在于能够方便检测数字集成芯片的好坏。 然而,由于常用的TTL系列芯片种类繁多,不同型号的数字集成芯片其逻辑功 能不同、引脚排列不同、甚至哪些引脚作为输入,哪些引脚作为输出都不固定,也 就是说,某个型号的集成芯片的其中一只引脚是输入脚,而另一个型号的集成芯片 的同一只引脚却可能是输出脚了。在进行硬件电路设计时,必须要有这样的接口电 路:和集成芯片引脚连接的检测端口既可作为输入,又可作为输出。 正由于上述原因,本方案设计一套数字集成电路测试装置,能够实现对指定几 种14脚常见的74系列数字电路测试。芯片有 74LS00、74LS04、74LS20、74LS74、74LS86。 对数字系统进行测试基本方法是:从数字集成电路的原始输入端施加若干输入 矢量作为激励信号,观察由此产生的输出响应,并与预期的正确结果进行比较,一 致则表示芯片完好,不一致则表示芯片有故障。因此判断一个集成电路芯片是否存 在故障,可用该芯片被检测出来的功能是否同设计规范的功能一致来判断。要让测 试结果直观明了,就需设计一个显示模块显示对应测试结果,在此系统中我选用8位 数码管来显示芯片型号和两个发光二极管显示测试结果。此外,由于集成芯片的型 号不同,为了提高测试的效率,还需设计一个独立按键模块用于输入检测芯片的型 号,方便操作。 综合以上所涉及的几个问题,完整的门电路自动测试仪应包括按键输入模块, 显示模块,芯片测试插座模块,结合单片机最小系统来加以控制。在确立硬件结构 的基础上,结合软件完成。软件部分主要由数据检测程序和显示驱动程序,以及按 键子程序三大部分组成。在设计过程中,首先使用Protel和Proteus仿真软件作为开发 平台来进行硬件电路的设计,并运用软件Keil uVision编写程序完成系统的仿真实现, 结合软、硬件完成系统的整体调试。 2 系统硬件电路设计 2.1 硬件系统电路原理框图 该测试系统的原理框图如下图 1 所示。 图 1 测试仪原理框图 此次所设计的数字集成电路检测系统由单片机控制单元,独立按键输入单元, 信号检测单元,数码管显示单元和电源供电单元组成。 2.2 硬件系统电路各模块设计 2.2.1 MCS-52 单片机最小系统 MCS-52 单片机内部主要由 CPU,存储器,可编程 I/O 口,定时器/计数器, 串行口,中断控制系统,时钟电路等组成。 52 系列单片机应用广泛,成本低,控 制应用等电路成熟。此系统中,我选择单片机 AT89C52 最小系统进行控制,它的 P0、P1、P2、P3 端口是准双向 I/O 口:既可作为输入口,又可作为输出口,为信号 的检测控制奠定了重要的基础。其连接如图 2 所示。 图 2 AT89C52 单片机最小系统 单片机在电路中起到控制整个系统的作用,无论是信号检测,还是数码管显示, 都通过编程完成控制。 2.2.2 独立按键模块 采用独立按键的优点是控制程序和硬件电路都很简单,缺点是如果每个按键都 要占用一个I/O口,当按键较多时占用I/O口较多。但考虑到本次设计只需要三个按 键:检测型号键、复位键、自动检测键。因此在实际的测试中分别对应 P3.0P3.1P3.2通过按键查询就可以简单的起到控制输入的目的。 值得注意的是,在用单片机对按键处理的时候涉及到了一个重要的过程,那就 是按键的去抖动。当用手按下一个键时,按键并不会立刻稳定地接通,在释放一个 键时,也不会立刻断开。因而在闭合和断开的瞬间都会伴随着一连串的抖动。抖动 的持续时间随按键材料和操作员而异,不过通常总是不 5-10ms。这种抖动对于单片 机来说是完全可以感觉到的,所以必须消除抖动。通常有两种方法可以消除抖动, 一种是硬件方法,需要硬件电路,另一种是软件方法,用软件方法可以很容易地解 决抖动问题,只需通过延迟 10ms 来等待抖动消失这之后,在读入按编码值。所以, 我们采用软件消抖法。独立按键电路如图 3 所示。 图 3 独立按键与单片机连接图 2.2.3 芯片测试模块芯片测试模块 结合单片机的 I/O 口使用情况,以及设计的局限,在该系统中我选用了 16 脚 的通用 IC 紧锁座作为芯片测试插座,能够测试 14 脚以下的常用数字集成芯片。根 据 AT89C52 中 P0 口与 P2 口的特点,本设计采用 AT89C52 的 P1 口和 P2 口连接测 试芯片接口,单片机的 P0 口的 P0.0P0.7,P2 口中的 P2.0P2.5 共 14 条通用 I/O 线和检测插座构成了检测电路,其中,P2 口中 P2.7 用于控制 14 管脚电源地转换, 因为规则芯片的右上脚都为电源(Vcc),左下脚都为地(GND)。测试插座优先考虑 14 脚的通用测试情况。单片机与测试插座之间的连接如图 4 所示。 图4 单片机与测试插座连接图 在单片机与紧锁座之间需串接470(或510)的电阻。串接电阻目是对 AT89C52起限流保护作用,假设,P2.0输出高电平,此时,测试芯片又为非门,那么 将引起灌电流现象,致使P2.0口线上电流非常大,对AT89C52有害。 2.2.4 显示模块 (1)数码管显示模块 在系统中,由于系统的独立按键模块和测试插座模块已经使用了单片机的 P1,P2 和 P3 口,只剩下一组 I/O 口可供选择。74HC573 是 8 数据锁存器。主要用于 数码管、按键等的控制,至此,我选用一块芯片 74HC573 直接控制 8 位数码管。有 效的节省了单片机的 I/O 口的使用,极大地简化了硬件电路。由 5 片芯片 74HC573 和 4 个 7 段共阴极数码管构成了显示电路,用于向用户提供按键输入信息及输出检 测结果等。通过单片机的三个 I/O 口来控制信号输入。 74HC573与AT89C52单片机的硬件连接如图6所示,74HC573锁存器的数据输入端 连接单片机的P0口,P0口同时加了上拉电阻,数码管中的C1,C2,C3,C4是它们的 位选端。 图 6 74HC573 驱动 8 位数码 (2) 发光二极管显示模块 为了使测试结果直观明了,分别在单片机的两个 I/O 口 P3.6 和 P3.7 分别串接 两 分别显示芯片好坏两种状态,发光二极管与单片机连接图个红、绿色发光二极管 连接图如图 7 所示。 图 7 发光 LED 指示灯与单片机连接图 2.2.5 电源供电模块 在该设计系统中,所需电压都为直流 5V,它由电源变压器,桥式整流电路(4 个二极管 D1D4 构成) ,滤波电容,防止自激电容和一只固定式三端稳压器 (LM7805)极为简捷方便地搭成的,为了保证输入 LM7805 电压的稳定性,在 7805 之前我使用一只 7812 保证电流稳定输入 12V。 如图8所示,220V交流电通过电源变压器变换成交流低压,再经过桥式整流电路 BR1和滤波电容C6的整流和滤波,在固定式三端稳压器LM7812和LM7805的Vin和GND两 端形成一个并不十分稳定的直流电压(该电压常常会因为市电电压的波动或负载的变 化等原因而发生变化),此直流电压经过LM7812和LM7805的稳压和C4,C5的滤波便在 稳压电源的输出端产生了精度高、稳定度好的直流输出电压。 图8 220V转5V直流电源连接图 LM7805用来给单片机等其它芯片供电,整流电路后的C6为滤波电容,容量较大, 输出端电容C4、C5主要是抑制高频干扰,此外还在两个稳压块中加散热片。 3 系统软件设计 软件设计包括主程序模块,按键控制模块,芯片信号检测模块和数码管显示模块 等,下面将逐一介绍各个模块的详细设计过程。由于测试芯片种类繁多,在进行程 序设计时首先需要分析常用数字集成芯片的一些规律,便于编程控制。TTL74系列作 为两大主流集成芯片,地位和作用极其重要,基于此,接下来就对测试对象中的常 用系列数字集成电路进行分析。 3.1 测试对象 TTL74 系列芯片简介 TTL电路以双极型晶体管为开关元件,所以又称双极型集成电路,74系列的工作 环境温度规定为O70,电源电压的工作范围为5V士5。 此外,为满足用户在提高工作速度和降低功耗这两方面的要求,继TTL74、54系 列之后,又相继研制和生产了74H系列、74S系列、74LS系列、74AS系列和74ALS系列, 以及54H系列、54S系到、54LS系列、54AS系列和54ALS系列,就像74系列和54系列的 区别那样,它们之间的区别也仅在于工作环境温度与电源电压工作范围不同。据于 设计的局限及考虑到程序的繁琐,表1列举了14脚以内的要测试TTL74芯片,本设计 中只实现对指定几种14脚常见的74系列数字电路测试。芯片有 74LS00、74LS04、74LS20、74LS74、74LS86。 表 1 TTL74 系列芯片列表(14 脚以内) 序号序号品种代号品种代号类别名称类别名称特征特征引脚数引脚数 17400 四2输入与非门 14 27404 六反相器 14 37420 二4输入与非门 14 47474 二3输入或非门OC、OD 14 57486 四2输入异或门 OC14 3.2 测试原理 对于逻辑芯片的检测,我们主要实现检测芯片逻辑功能好坏亦或是确定芯片的 型号,由于主控单元采用AT89C52单片机,其I/O与TTL电平完全兼容,因而直接由单 片机对芯片插座的引脚进行扫描,由于是固定的14脚芯片,为了编程方便,使芯片 测试引脚17分别为P1.0P1.6,引脚148分别为P2.0P2.6。实现了通过单片机输出 端口模拟芯片的各种输入状态,并通过单片机读回芯片的输出结果,通过与芯片真 值表的比较即可判断芯片逻辑功能的好坏的目的。在进行芯片扫描时,必须先将芯 片的输出引脚I/O置为高电平,然后对芯片的输入引脚进行各种状态的扫描,通过单 片机读回芯片的输出,再依据芯片的真值表对其输出进相比较,不一致则说明芯片 的逻辑功能发生错误,断定芯片为坏的,若芯片的输出与真值表完全相符,则说明 芯片的逻辑功能正确,可以判断为好芯片。 然后再依据所检测的结果,通过单片机 对芯片的逻辑功能加以详细测试,并对结果加以显示。在自动检测的时候,为了提 高准确度,我们编写了程序,采用对同一端口两次输入再两次读回其状态的比较方 法,来对芯片好坏进行准确测试,继而返回正确的芯片型号。 此次在测试过程中我选用 7400 来进行系统的调试。其中,7400 为四 2 输入与 非门,在编写测试程序时,主要从以下思路入手:首先,根据测试插座与单片机的 各 I/O 口连接情况,分别送给测试芯片各引脚送值。送值的时候是将所有可能出现 的各种逻辑情况进行组合送入至芯片输入端,而输出端都给它置 1,并根据真值表 推断出预期的正确结果先存于寄存器中,送值结束后,读取芯片输出端的值,判断 输出是否与预期的值相符,若一致则继续判断另一组输入逻辑值的情况,直至每一 组都完成后对各组结果相与,逻辑为真则表示芯片是好的,若为假表示芯片是坏的。 当然,在测试时若遇其中一组的逻辑为假,则直接判断出芯片是坏的。 3.3 程序流程图 流程图如图 9 所示。 图 9 程序流程图 3.4 模块程序关键代码 3.4.1 主程序 在主程序中,需要完成对各状态的初始化,如单片机引脚,寄存器的初始化、 74HC573 控制数码管显示的初始化、按键扫描,信号检测等工作。主程序将根据检 测芯片的型号,按键的输入提示分别完成信号的测试比较、结果显示等不同的操作。 关键代码如下所示: int main()/主程序 reset();/初始化 while(1)/不停扫描按键 keyscan(); return 0;/结束程序 3.4.2 独立按键扫描程序 在按键控制时采用了全扫描方式,这种方式是直接在主程序中插入按键扫描子 程序,主程序每执行一次则按键检测子程序被执行一次,对按键进行检测一次。如 没有按键按下,则跳过键识别,直接执行主程序;如果有键按下,则通过按键扫描 子程序识别按键,得到按键的编码值,然后根据编码值进行相应的处理,处理完成 在回到主程序执行。另外我们采用软件消抖法,具体代码如下所示: void keyscan(void) /键盘扫描函数 int i; unsigned char output1,output2; if(key1=0)/按键 1 的子程序 delayms(10);/延时 10ms if(key1=0) while(key1=0);/等待按键释放 k=detect(); display(namek); if(key2=o)/按键 2 的子程序 delayms(10); if(key2=0) ( while(key2=0);/等待按键释放 ledR = 1;/灭绿 led 灯 ledG = 1;/灭红 led 灯 display(0);/数码管显示为 0000 if(key3=0)/按键 3 的子程序 delayms(10); if(key3=0) while(key3=0);/等待按键释放 k=detect(); /调用检测芯片型号子程序 delayms(100); if(k=0)/检测芯片好坏 for(i=0;i #include #include /这是头文件 /*=宏定义=*/ #define M 4/要测试的芯片好坏的个数 #define N 8 #define input1 P1/用于检测的引脚 #define input2 P2 #define uchar unsigned char #define uint unsigned int sbit key1=P30; / 选择检测芯片型号 sbit key2=P31; / 复位 sbit key3=P32; / 自动检测 sbit ledR=P37;/*红色发光 led 接单片机 P3.7 */ sbit ledG=P36;/*绿色放发光 LED 接单片机 P3.6 */ sbit dula4=P26;/声明锁存器的锁存端 sbit dula1=P33; sbit dula2=P34; sbit dula3=P35; sbit wela =P27; unsigned int name=7400,7404,7420,7486,7474,7492; uchar code table =0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71;/共阴极数码管编码 /*=按键的标志位=*/ unsigned char time=0;/用来标示某芯片各通道检测均完好的标志位 unsigned char k=0;/返回自动检测后芯片序号在已定义的数组中的序号 unsigned char code LS0044= 0x3f,0x3f,0x1b,0x1b,/74ls00 0x24,0x24,0x24,0x24, 0x36,0x36,0x36,0x36, 0x2d,0x2d,0x2d,0x2d ; unsigned char code LS0424= 0x2a,0x2a,0x2a,0x2a,/74ls04 0x3f,0x3f,0x15,0x15 ; unsigned char code LS20164= 0x24,0x24,0x24,0x24,/74ls20 0x25,0x25,0x25,0x25, 0x26,0x26,0x26,0x26, 0x27,0x27,0x27,0x27, 0x2c,0x2c,0x2c,0x2c, 0x2d,0x2d,0x2d,0x2d, 0x2e,0x2e,0x2e,0x2e, 0x2f,0x2f,0x2f,0x2f, 0x34,0x34,0x34,0x34, 0x35,0x35,0x35,0x35, 0x36,0x36,0x36,0x36, 0x37,0x37,0x37,0x37, 0x3c,0x3c,0x3c,0x3c, 0x3d,0x3d,0x3d,0x3d, 0x3e,0x3e,0x3e,0x3e, 0x3f,0x3f,0x1f,0x1f ; unsigned char code LS8644= 0x24,0x24,0x00,0x00,/74ls86 0x36,0x36,0x36,0x36, 0x2d,0x2d,0x2d,0x2d, 0x3f,0x3f,0x1b,0x1b ; unsigned char code ICMN= 0x24,0x24,0x24,0x24,0x3f,0x3f,0x1b,0x1b, /7400 0x3f,0x3f,0x15,0x15,0x3f,0x3f,0x15,0x15, /7404 0x3f,0x3f,0x1f,0x1f,0x3f,0x3f,0x1f,0x1f, /7420 0x3f,0x3f,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b/7486 ; void delayms(unsigned int z)/延时函数 unsigned int x,y; for(x=z;x0;x-) for(y=110;y0;y-); /*=14 脚芯片识别函数=*/ unsigned char detect(void) /14 脚芯片识别函数 unsigned char i,output1,output2; /7474 的检测 P1=0xff; /初始化测试端口 P2=0xff; input1=0x3b; input2=0x39; delayms(100); input1=0x3f; /上升沿 input2=0x3d; delayms(100); output1=input1 output2=input2 if(output1=0x1f /7400/04/20/86 的自动检测 P1=0xff; /初始化测试端口 P2=0xff; for(i=0;iM;i+) input1=ICi0; input2=ICi1; delayms(500); output1=input1 /将芯片逻辑结果 input1 通过 if(output1=ICi2 input2=ICi5; delayms(500); output1=input1 output2=input2 if(output1=ICi6 void display(uint namex)/数码管显示子程序 uchar qian,bai,shi,ge; qian = namex/1000;/千位,把一个 4 位数分离后分别送数码管显示 bai = namex%1000/100;/百位 shi = namex%100/10;/十位 ge = namex%10;/个位 dula1 = 1; P0 = tableqian;/送段选数据 dula1 = 0; P0 = 0xff;/送位选数据前关闭所有显示 delayms(500);/延时 500ms dula2 = 1; P0 = tablebai; dula2 = 0; P0 = 0xff; delayms(500); dula3 = 1; P0 = tableshi; dula3 = 0; P0 = 0xff; delayms(500); dula4 = 1; P0 = tablege; dula4 = 0; P0 = 0xff; delayms(500); P0 = 0xff; wela = 1; P0 = 0xc0; wela =0; while(1) if(key1=0) break; if(key2=0) break; int reset(void)/数码管和发光 led 初始化 ledR = 1; /led 初始化,都熄灭 ledG = 1; wela = 1;/数码管初始化,显示为 0000 P0 = 0xc0; wela = 0; dula1 =1; dula2 =1; dula3 =1; dula4 =1; P0 = table0; dula1 = 0; dula2 = 0; dula3 = 0; dula4 = 0; void keyscan(void) /键盘扫描函数 int i; unsigned char output1,output2; if(key1=0)/按键 1 的子程序 delayms(10); if(key1=0) while(key1=0);/等待按键释放 k=detect(); display(namek); if(key2=o)/按键 2 的子程序 delayms(10); if(key2=0) ( while(key2=0);/等待按键释放 ledR = 1;/灭绿 led 灯 ledG = 1;/灭红 led 灯 display(0);/数码管显示为 0000 if(key3=0)/按键 3 的子程序 delayms(10); if(key3=0) while(key3=0);/等待按键释放 k=detect(); /调用检测芯片型号子程序 delayms(100); if(k=0)/检测芯片好坏 for(i=0;i4;i+) input1=LS00i0; input2=LS00

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论