处理老的技术会引起有趣的挑战。虽然现代可编程器件通过JTAG或SPI接口很容易实现在线测试,但测试很早前的器件就没这么方便了。
我从事的是一个大型有线数字电话交换系统的维护工作。这些系统最早是在20世纪80年代初设计的,但目前在美国各地仍能看到这些系统在提供服务,因此需要经常维护和修理。其中,经常需要维修的一块卡是音频信号发生卡。这块卡负责产生电话系统中用到的所有音频信号,比如铃音、忙音、双音多频信号(DTMF)和多频(MF)信号音。
这些声音的产生是通过将数字化的声音片段组合成完整的复音。这块音频信号发生卡上共有6片封装为24pin DIP的老式的1k×8 位PROM,声音片段就存储在这些PROM内。这块卡最常见的问题是其中一片PROM上的某一单元出现故障,但由于电路配置的原因,如果不从板上拔出来然后用编程器一片片读,无法知道是哪片PROM坏了的。幸运的是,这些PROM都用的是插座,比较容易拔。但毕竟已经工作了很多年了,老是插拔也不是个事,这样很容易损坏PROM,而且插拔、测试和替换工作很烦琐,相当耗时间。
本设计实例是一种在线测试器,可以夹到每片RPOM上进行测试,不用再将RPOM从电路板上移除。PCB板上有一个测试点, 它能够禁用 PROM 的地址驱动器,从而使访问完全受测试电路控制。
只要将那个测试点接到地,测试器就可以依次安装到每片PROM上了。测试器上有一片PIC 16F887微控制器,它通过计算纵向校验和来验证PROM。它将计算出来的校验和与6个已知正确的校验和值进行比较。如果发现匹配上了,它就会点亮6个绿色LED中的一个,指示找到一块好的PROM,而且ID也是匹配的 (这是很有用的,万一我插错了PROM,它也能提醒我) 。
如果校验和都不匹配,红色LED将点亮,指示测试器连接的是一个坏的/无法识别的PROM。
测试器的电路是用Diptrace设计的,软件代码则是用Microchip的MPLAB X开发的。
测试器PCB连接到一个24引脚的DIP夹具。夹具的一排引脚被插入并穿过电路板,另一排引脚通过导线连接到电路板,因此可以通过挤压张开来。电路的电源来自待测电路板,也可以通过6脚插头连接到5V,从而用来测试平台上非紧固型PROM。
测试电路很简单。10位的PROM地址总线连接到PIC上的8位PORT A和2位PORT E。PROM数据输出连接到PORT D。LED连接到PORT C。6脚插头用于将PIC连接到PICkit编程模块进行程序下载。
在加电复位后,程序设置端口并初始化变量,然后进入无限循环。它首先清除LED状态,然后逐个地址地读取全部1k地址空间内容,同时将从每个地址读出的数据逐步累加。在读完整个地址范围时,总的累加值就等于待测PROM的纵向校验和。
将这个值与6个已知正确的校验和进行比较。如果找到匹配的,相应的绿色LED就被点亮。如果没有找到有效的校验和,红色LED将被点亮。延时循环将插入一个暂停,然后程序返回到循环开始,将LED关闭。这样对应的LED就会发出我们想要的闪烁状态——证明电路在正常工作。
《电子技术设计》2016年9月刊版权所有,谢绝转载。