当前位置:首页 期刊杂志

基于J750Ex的鼠标控制器测试技术研究∗

时间:2024-05-04

王 庆

(武汉数字工程研究所 武汉 430205)

1 引言

鼠标是一种很常用的电脑输入设备,是计算机显示系统纵横坐标定位的指示器。它可以对当前屏幕上的游标进行定位,并通过按键和滚轮装置对游标所经过位置的屏幕元素进行操作。鼠标应用广泛,使用对象不仅有传统的计算机、测试设备,还有现在的智能电视、机顶盒,就连汽车、机器人等,也采用到了鼠标的功能技术[1~2]。

本文介绍了在J750Ex集成电路自动测试系统上测试鼠标控制器EM84510的方法。美国EMC公司的EM84510鼠标控制器可以工作在光电模式、键模式、机械模式等,应用广泛[3~4]。美国 Teradyne公司的J750Ex数字集成电路测试系统的每个数字通道都拥有灵活的时间和电平配置[5],针对该芯片测试需求,能够为EM84510提供足够的测试资源。本文通过研究EM84510基于自动测试设备(Automatic Testing Equipment,ATE)的测试方法,运用该测试方法在J750Ex数字集成电路测试系统上开发测试程序、设计测试适配器、编制测试程序,最终完成EM84510的测试。

2 EM84510的结构

EM84510滚动鼠标控制器是专门用来控制PS/2鼠标的芯片[6]。EM84510的结构如图1所示。EM84510有三个按键输入L、M、R,三对方位输入X1、X2、Y1、Y2和 Z1、Z2,对 Z1、Z2的设置可以使EM84510工作在多个模式:光电模式、键模式、电压模式和机械模式。EM84510通过时钟管脚CLK和数据管脚DATA与应用系统进行通讯。EM84510的时钟由RC振荡器产生,其中R需要外接,阻值为51*(1±5%)kΩ。外接51kΩ电阻时,振荡器产生的频率为37.5*(1±10%)kHz。振荡器产生的时钟经内部系统分频后提供系统基准时钟,对CLK和DATA进行时序控制。

图1 EM84510的结构

3 EM84510测试内容

对EM84510的测试分为三个方面:功能测试、直流参数测试和交流参数测试[7~8]。直流参数包括连通性测试、输入高/低电平测试、输出高/低电平测试、漏电流测试、电源电流测试等,其中,连通性测试主要测试每个管脚的开路、短路故障。交流参数主要是对频率和输入输出传输延迟时间tphl、tplh等的测试。进行参数测试时,一般要使芯片工作在指定的状态,如输出高电平测试时,指定管脚要输出高电平。也就是说,只有在正确的功能状态下才能进行参数测试[9]。

功能测试用于检测芯片的功能。根据器件资料描述的功能进行测试,主要依据有波形图、真值表等,由测试系统对器件施加激励信号,然后检测输出端的数据是否正确。对器件测试最难的就是功能测试,功能测试中最难的往往是测试向量的编写,实现测试系统与被测器件(DUT)之间的沟通。

鼠标的功能主要是定位和按键,对鼠标控制器来说,就是将输入的定位信号和按键信号发送给系统,以及接收系统的设置信号和反馈的控制信号。鼠标控制器与应用系统之间的数据传输比较简单,每个数据帧都是由8位数据加上起始位0、奇校验位和终止位1构成的,数据帧在鼠标控制器和应用系统之间进行串行传输。

由于信号比较简单,因此我们可以采用“金器件[10]”的方法编制测试向量。如鼠标自动复位后输出完成码AA和00,在向量编写时,只需要保持基本的输入不变,书写长度足够的向量,将器件测试自动产生的输出复制下来,对结果进行人工确认即可。并据此获得鼠标向系统输出的数据的格式。

当系统向鼠标输入时,只需要将CLK拉低足够长的时间(≥100μs),鼠标就会自动产生CLK时钟信号,我们按照鼠标向系统输出的数据的格式,在指定的CLK时钟范围内加入数据,等待鼠标的自动响应,并将结果复制下来,进行人工确认即可。

4 J750Ex与DUT的同步匹配

在对EM84510测试时,测试向量是容易获得的,我们可以采用学习的方式。将被测器件上电后产生的信息复制下来,辨识是否正确。由于此时信号简单,手动书写即可完成。困难的是被测器件与测试系统之间的同步问题。对EM84510测试时,相同的测试向量,在不同次运行时,测试结果总会有些延迟或提前,不管CLK的信号属于什么模式(RL(返回到0)、RH(返回到1)、还是NR(不返回))[11],都无法解决这一问题。究其原因,在于测试系统与被测器件之间的不同步。

EM84510的时钟由RC振荡器产生,外接51kΩ电阻时,振荡器产生的频率为37.5kHz左右。振荡器产生的时钟经内部系统分频后提供系统基准时钟,对CLK和DATA进行时序控制。我们用示波器观测振荡器频率为35.1kHz~35.2kHz。而CLK有信号时,频率为振荡器频率的3倍,如图2所示,CLK(CH1)与振荡器的输出 OSC.OUT(CH2)十分同步。由于振荡器是由外接电阻产生的,上电后振荡器开始震荡,鼠标自动运行。不受测试系统控制,被测器件难以与J750Ex同步。

图2 EM84510工作时的CLK信号和OSC.OUT信号

经实际测试,使用R=51k时,上电时间约为380ms左右,这段时间的不确定度至少有300μs。以CLK的时钟约86μs计算,不确定度至少有三个CLK周期。对测试系统来说,测试结果很难定位在具体的某一条向量中。很显然,这也不是更改时钟周期能解决的问题。

因为时钟不能够被控制,失去了捕捉高低电平变化的同步点,所以只能以match(匹配)的方式来测试功能。与其他集成电路测试系统(如V93000)不同的是[12],J750Ex未能提供match指令。我们仅能利用测试图形生成器(pattern generator)中的各种标志位和跳转指令来实现match功能。

向量匹配要用到几个向量操作码,这些操作码及描述如下所示[13~14]。

subr label:子程序定义,匹配时,调用匹配子程序。

set_loopX count:定义循环、设置循环次数,X可以是A、B、C,count的范围是1-65536。

Ign:对当前向量,无视‘Halt on Fail’。

pipe_minus X:对当前向量重复执行,次数为(流水线深度-X)。

clr_flag(flag list):无条件的清除指定的标志位。

end_loopX label:循环的最后一句。执行完后跳转到label处,这里label标记的向量不能包含set_loop操作码。(X 可以是A、B或C)。

if(flag)jump label:如果指定的标志位flag为真,执行跳转。

clr_cond:控制位,在条件语句中使用,如果条件为ture,则清除条件语句所使用的标志位。只能在条件语句中使用,且只能清除在当前向量测试中的条件。

clr_fail:清除fail计数,清除fail累加寄存器(AFR)。

需要注意的是,clr_fail只能清除fail计数,而不能清除fail标志位,而clr_cond和clr_flag具有清除标志位的功能。

在J750Ex中实现match功能的关键就是理解fail标志位的建立不是在当条向量运行失效时产生的,而是在N条向量之后设置的。这里的N,指的是J750Ex的流水线深度pipeline depth。在J750Ex的帮助文件中,会得到pipeline depth的参考值,但实际上,每个测试系统的N都是不一样的。通过“pipe_minus 0”的执行来获得pipeline depth的具体数值,本文中N=43。

另外,fail标志位的清除也有滞后。clr_flag(fail)清除的fail是N条向量以前的fail,而无法清除前N条向量以内的fail。

考虑到fail标志位置1和清0的滞后问题,我们设计了基于J750Ex的match设置方案,如图3所示。

图3 J750Ex的match方案

具体的代码如下:

subr submatch: pipe_minus 0 //1运行N次正确向量

if(fail)jump setfail //2 如 果 有错,设置失败

set_loopA 50000 //3设置循环,查找匹配点

loop1: if(fail)exit_loop extloop1//4 如果找到,退出循环

end_loopA loop1 //5

jump setfail //6如果没找到,设置失败

extloop1: pipe_minus 0 //7匹配后运行N次正确向量

clr_flag(fail)//8 清 除match过程产生的fail=1

return //9

在此过程中,要注意到实际的匹配点与exit_loop之间有N条向量的间隔,而pipe_minus 0又执行了N条向量,因此,匹配点与return之间有2N+2条向量。在J750Ex的extended模式下,周期最小为20ns,所以从实际匹配点到return至少有20ns*(2N+2),N=43时,这段时间为1.76μs。对EM84510来说,其影响可以忽略不计。为了节省测试成本,match期间的周期可以调节到适合的大小,而不是最小的20ns。EM84510的CLK周期为86μs,可以设置match器件的周期为1μs,这样match完后,向量正好运行至下个周期。

5 降低测试成本的方法

EM84510的测试主要是基于R=51kΩ,振荡频率为35kHz。在这种配置下,EM84510每次启动需要约380ms(从上电到发送启动码AA和00)。每个测试项都执行400ms,测完所有项,测试时间就需要几秒钟。如何能在不影响测试质量的情况下缩短测试成本呢?

从图1中EM84510的结构图可以看出,RC振荡输出将连接内部系统时钟。而器件管脚OSC.OUT在实际应用中没有用处,至少在数据手册中没有看到实际用处。我们可以假设EM84510的内部结构是这样的,RC振荡器的输出同时连接到了OSC.OUT上和系统内部时钟上,如图4所示。

我们直接由测试系统向OSC.OUT管脚输入时钟。事实上这是可行的。对器件没有影响,而且可以将时钟频率增加数倍。振荡器的工作频率为35kHz左右,我们灌进的时钟频率可以提升数倍,使得最终测试的时间缩短,大大降低了测试成本[15]。

图4 EM84510的时钟结构

6 测试适配器设计

EM84510的工作需要R=51k电阻,但实验证明,对OSC.OUT灌入时钟也不会影响鼠标控制器的使用和测试,还能节省测试时间。为了兼顾EM84510自身的特性,在不减少故障覆盖率的情况下,节省测试成本,我们设计了下面的测试电路。

EM84510在J750EX测试系统上的硬件连接方式如图5所示,其中EM84510通过适配器与集成电路测试系统的数字通道相连。51kΩ电阻一端连接OSCR,另一端连接测试系统通道CHn。在程序中,将电阻连接到CHn通道的这一端命名为Rend,类型为I/O,当测试EM84510上电启动功能时,输入低电平,电压值设为0V,等同于将R接地。此时振荡器工作,用match方法测试EM84510的完成码0xAA和0x00。

在其他测试项中,设置Rend输出X(don't care),相当于悬空,振荡器不会工作,这时,对OSC.OUT灌入高频时钟,测试鼠标控制器的其他功能。

需要注意的是,Rend从输出X到输入0,可以使振荡器从不工作到工作。但反过来,Rend从0到X,却不能让已经工作的振荡器停止工作。因此,自启动测试和其他功能测试必须在不同的测试项中。

图5 EM84510测试硬件连接

7 结语

对于像EM84510这样的自有时钟的芯片,芯片时钟难以与集成电路测试系统完美契合时,我们需要用到测试向量同步匹配的方法。文中的J750Ex测试系统的测试向量同步匹配的方法,还可应用于触发测试和那些读写时间不确定、等待时间长的芯片测试中。另外,通过合理地利用芯片管脚和测试系统通道资源对EM84510进行测试,不仅使测试程序的可靠性更高、重复性更好,还能节省测试成本,对其他集成电路的测试开发也具有借鉴意义。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!