服务热线+010-82883755/56

正达系列故障电路板检测仪:可编程逻辑器件PLD功能测试

【正达故障电路板检测仪系列论文】

 

 

可编程逻辑器件PLD功能测试

 

 

摘要:【正达故障电路板检测仪系列论文】可编程逻辑器件简称PLD,是1980年代之后迅速发展起来的新型数字器件,是“与-或”两级式结构的可编程数字器件。除了具有高速度和高集成度等性能之外,突出特点是用户可定义其逻辑功能。因此PLD器件能够适应各种需求,简化系统设计,提高系统可靠性,深受青睐。读写PLD器件应掌握PLD器件的驱动程序,这要求电路测试仪厂家必须具备很高的技术水平。只有正达测试仪具有这种能力。同时,正达测试仪还可以通过编程方式按照PLD器件的逻辑功能进行测试,彰显正达测试仪应用的灵活性。

 

关键词:可编程逻辑器件;PLD器件;GAL器件;应用功能测试;逻辑功能测试

 

0.前言

    旅游部门评定酒店。A城市评定方法:只对酒店做外观观察。若某酒店门窗破损外墙皮脱落,一定不是好酒店。若某酒店门窗完好外墙干净,应该是好酒店。通过改进观察技术,发现某酒店一块玻璃上存在一小块灰尘,或许不是好酒店。B城市评定方法:除了外观观察之外,一定要进入酒店内部。检查酒店的软硬件设施和服务运转情况。

    A城市的评定方法简单便捷。有合理性,也有盲目性。就如同使用电路测试仪对器件进行VI曲线测试。B城市的评定方法科学准确,结论可靠。就如同使用电路测试仪对器件进行功能测试。

    本文为:器件功能测试之——对可编程逻辑器件PLD功能测试。

 

1.GAL器件功能测试方法

    GAL器件是PLD器件中的一种,是“与-或”两级式结构通用阵列逻辑器件。用户可将设计的逻辑电路通过计算机对GAL器件编程。编程过程可分为三步:

    ①根据设计要求写出“与-或”逻辑功能表达式;

    ②利用编译器,由计算机辅助编程,得到阵列熔丝图;

    ③通过编程器将熔丝图写入GAL器件,即构成了一个可实际应用的GAL器件,从而可完成一个特定的电路功能。

    可编程逻辑器件PLD应用广泛,无论是电路维修,还是科研教学,功能测试始终是一个难点。正达测试仪对GAL器件具有两种功能测试方法。

 

其一:应用功能测试。

    正达测试仪能够对GAL器件进行程序读取、复制、清除、校验、加密、全自动操作以及空白检查等操作,从而判断好、坏电路板上处于相同位置的GAL器件的工作状态和实现功能是否一致。适合于电路维修工作。这要求电路测试仪厂家必须掌握PLD器件的驱动程序,具备很高技术水平。只有正达测试仪才具有这种能力和水平。

其二:逻辑功能测试。

    由于正达测试仪数字器件功能测试程序扩充项完全开放给用户,因此正达测试仪能够按照GAL器件具体功能编写专用功能测试程序,对GAL器件进行逻辑功能测试。适合于科研教学工作。这彰显了正达测试仪应用的灵活性。

    本文通过两个具体测试实例,其中之一为某位正达测试仪北京用户的科研教学应用,对正达测试仪GAL器件的两种功能测试方法做出详细介绍。

 

2.GAL器件应用功能测试

    正确连接离线测试板。GAL器件应同离线测试板锁紧插座顶部对齐,缺口朝向手柄方向放置。按照测试提示,通过拨码开关为被测GAL器件施加测试电源。以测试一个双列直插式封装、24管脚、Lattice厂家、型号为“GAL20V8B”的GAL器件为例。见图1.

    GAL器件应用功能测试只能进行离线测试。

 

图1    测试双列直插式封装/24管脚/Lattice厂家/型号为GAL20V8B的GAL器件

 

    进入“GAL器件操作”项。测试对象是已经处于实际应用状态中的非加密状态下的通用阵列逻辑GAL器件,如GAL16V8和GAL22V10等PLD器件。含盖NS,Lattice,AMD等著名厂家的产品,可对其进行程序读取、复制、清除、校验、加密、全自动操作和空白检查操作,从而判断好、坏电路板上相同位置的GAL器件的工作状态和实现功能是否一致。

 

2.1选择器件厂家和型号

    在“选择器件厂家”处选择“LATTICE”.不同厂家的GAL器件在读写方式上存在差异,应根据GAL器件商标正确选择生产厂家。在“选择器件型号”处选择“GAL20V8A/B/B-7”.见图2.

 

图2    对GAL20V8B的GAL器件全自动写芯片

 

2.2测试操作功能

    ①全自动写芯片:将自动依次执行下列出的⑥,③,⑤,⑦操作。

    ②空白检查:检查被测器件是否为空白芯片。

    ③写芯片:将当前缓存区中的内容写入空白芯片。

    ④读芯片:将被测器件中的内容读到缓存区中。

    ⑤校验:将缓存区中的内存与当前被测器件中的内容进行比较。

    ⑥擦除:删除被测器件中的内容,使之成为空白芯片。

    ⑦加密:对写入内容的被测器件进行加密,以防复制。

    说明:GAL器件一旦被加密,将无法用于同其它GAL器件进行比较(读芯片和校验),也无法复制到其它GAL器件中(写芯片)。若要比较和复制已加密的GAL器件,必须采用专用的解密手段。

    ⑧文件装入缓存区:将某个文件调入缓存区。

    ⑨缓存区内容存盘:将缓存区中的内容存盘。

 

2.3测试实例

    将好的GAL20V8B器件放置在锁紧插座中。选择第4项“读芯片”,按“继续”按钮,操作完毕后提示栏处出现“操作完毕→校验和=44839”的提示。从该GAL20V8B器件中读取的内容已经被暂存进缓存区中。在锁紧插座中再放入待比较的GAL20V8B器件。选择第5项“校验”,按“继续”按钮,比较当前被测器内容和缓存区中的内容是否一致。操作完毕后提示栏处出现“校验完毕→两者内容一致”的提示。

    说明:以上测试实例是对比好、坏电路板上相同位置GAL器件的程序内容是否一致,这是实际电路维修过程中的基本操作。

 

3.GAL器件逻辑功能测试

    如果GAL器件是正达测试仪用户自己设计的,知道GAL器件的“与-或”逻辑功能表达式,就可以编写一段功能测试程序,按照GAL器件的具体功能进行逻辑功能测试。特别强调几点:

    ①这是对GAL器件逻辑功能测试。可用于器件功能验证;

    ②支持对GAL器件在线功能测试。可用于电路故障维修;

    ③GAL器件测试程序编写并不复杂,很快就能够熟练掌握;

    ④所有正达测试仪都支持此功能,包括正达ZD4040测试仪;

    ⑤正达测试仪数字器件功能测试程序扩充项完全开放给正达用户,提供详细说明和指令集。

 

3.1扩充数字器件库专用EXPAND语言

    EXPAND语言是正达测试仪编程扩充数字器件库的专用编程语言。EXPAND语言编程规范智能,应用简单灵活,不但是一个有力的扩充器件库工具,还是一个数字器件学习工具,对提高数字器件测试技术水平有很大的帮助。

    采用EXPAND语言扩充器件库时,应具有器件技术资料(如管脚图/真值表/逻辑方程式/时序图等)。如果正达用户自己编写的测试程序无语法错误,系统会显示“扩充完毕”,这时在相应的器件库中会出现该器件。正达测试仪即可对该器件进行在线/离线逻辑功能测试。

    要特别说明的是:历经几十年的积累发展,正达测试仪具有全面的数字器件库,已包含万余种几乎所有型号数字器件。每个器件功能测试程序都凝结着正达开发人员的心血。数字器件型号多,并且持续为正达测试仪用户免费升级器件库。提供EXPAND语言,并非是要将扩充数字器件库这项基础工作甩给用户,而是为正达测试仪用户提供一个开发实践的平台。

 

3.2编程扩充GAL16V8器件功能测试程序实例

    以下节选一段某位正达测试仪北京用户测试GAL16V8器件时编写的测试程序。这是在科研教学中的一个器件功能验证应用实例,也可以用于今后的电路故障维修。该程序是针对一个已知逻辑功能表达式的GAL16V8器件(在电路板上位置编号U15)而专门编写的。

    这位正达测试仪北京用户巧妙地运用EXPAND语言中“SET语句”命令,将“CHECK语句”要面对的冗长“与-或”逻辑关系各自进行两次分解,使测试程序中的每条语句都简短清晰。这段GAL16V8器件测试程序编写得很精彩,令人赞赏。

 

    ①GAL16V8管脚简要说明如下:

    GAL16V8是20管脚通用阵列逻辑“与-或”两级式结构的可编程数字器件,突出特点是:用户可通过编程定义逻辑功能,可定义8个输入(2~9管脚)、8个输出(12~19管脚)。将设计的逻辑功能表达式写入GAL16V8,可构成一个特有的电路功能。

    CLK B C D E F G H I GND /OE O12 O13 O14 O15 O16 O17 O18 O19 VCC

    管脚说明:CLK为第1脚,B为第2脚,C为第3脚…,I为第9脚,GND为第10脚,/OE为第11脚,O12为第12脚,O13为第13脚…,O19为第19脚,VCC为第20脚。

 

    ②已知该GAL16V8的逻辑功能表达式:(/为非  *为与  +为或)

    O19=/B*/C*D + C*/D*/E + B*D*/E

    O18=/C*/E + B*/E + D*/E + B*C*D

 

    ③这位正达测试仪北京用户编写的测试程序:(测试程序文件名:GAL16V8-U15)

NAME(GAL16V8-U15)

PINS(20)

VCC(20)

GND(10)

 

PIN_GROUP(19,2,3,4,5)

PIN_GROUP(18,2,3,4,5)

 

PUT_PIN(2,(001100001100001100001100))

PUT_PIN(3,(000011000000000000110000))

PUT_PIN(4,(110000001100001100000011))

PUT_PIN(5,(110000000011110000000011))

 

BEGIN(1)

 

SET(F19_1,AND3(NOT(PIN(2)),NOT(PIN(3)),PIN(4)))

SET(F19_2,AND3(PIN(3),NOT(PIN(4)),NOT(PIN(5))))

SET(F19_3,AND3(PIN(2),PIN(4),NOT(PIN(5))))

SET(F19,OR3(F19_1,F19_2,F19_3))

 

SET(F18_1,AND2(NOT(PIN(3)),NOT(PIN(5))))

SET(F18_2,AND2(PIN(2),NOT(PIN(5))))

SET(F18_3,AND2(PIN(4),NOT(PIN(5))))

SET(F18_4,AND3(PIN(2),PIN(3),PIN(4)))

SET(F18,OR4(F18_1,F18_2,F18_3,F18_4))

 

CHECK(19,F19,PIN 19 FAILS)

CHECK(18,F18,PIN 18 FAILS)

 

3.3以上GAL16V8器件功能测试程序说明

    无论是多么复杂的器件,还是多么简单的器件,其测试程序的编写都遵循一定的段落顺序。明白了这些段落顺序,在编写一个数字器件测试程序时,可以很快构建起这个测试程序的基本骨架。

    ①程序第1段:被测器件命名和定义电源地等管脚;

    即:这个GAL16V8器件测试程序文件名:GAL16V8-U15,管脚数是“20”,电源管脚是第“20”管脚,接地管脚是第“10”管脚。

    ②程序第2段:定义与各个输出管脚相关联的管脚组;

    即:这个GAL16V8器件的输出管脚19与输入管脚2,3,4,5这4个管脚相关联。输出管脚18同样是与输入管脚2,3,4,5这4个管脚相关联。

    ③程序第3段:定义各个输入管脚的测试数据;

    即:对这个GAL16V8器件的输入管脚2,3,4,5这4个管脚在测试过程中分别施加的测试信号。

    ④程序第4段:一切准备完毕,可以开始测试;

    第4段中只有“BEGIN(1)”这一条语句,“1”表示测试1个数据流周期。所有测试程序都是这样写。“BEGIN语句”表明对该器件所有输入管脚需要施加的测试数据流已准备完毕,可以开始测试。该语句必须位于程序第3段最后一条“PUT_PIN语句”之后。

    ⑤程序第5段和第6段:运用“SET语句”命令的相关段落;

    这是这位正达测试仪北京用户编写颇为精彩的段落。两次运用“SET语句”命令,逻辑功能表达式中的各个“与”(AND)分别赋予给一个变量(例如:F19_1,F19_3,F18_1,F18_4等),各个“或”(OR)又分别赋予给一个变量(例如:F19,F18).

    ⑥程序第7段:定义各个输出管脚与相关联管脚之间的逻辑关系;

    程序最后一段“CHECK语句”是程序处理语句,处在整个测试程序的最后部分。正达测试仪可按照该语句规定的逻辑关系对测试激励信号和被测器件的实际响应信号计算分析,然后给出被测器件“功能测试正确”或者“功能测试失败”的信息。器件有多少个输出管脚,就有多少条“CHECK语句”。

    运用“SET语句”段落是为测试程序“CHECK语句”服务的,有些“CHECK语句”逻辑表达式过于冗长,利用“SET语句”可以预先将其中一些逻辑表达式赋予给一个布尔变量,将复杂的逻辑关系逐步分解。看似增加了一些“SET语句”段落,但测试程序中的每条语句都简短清晰,便于阅读和修改。

    例如:冗长的逻辑表达式O19=/B*/C*D+C*/D*/E+B*D*/E,经过这位正达测试仪北京用户巧妙地两次运用“SET语句”命令,最后的“CHECK语句”就变得非常简单:CHECK(19,F19,PIN 19 FAILS).即:该GAL16V8器件的输出管脚19应该为F19.如果实测不是,则提示管脚19测试失败(PIN 19 FAILS).

 

3.4编辑GAL16V8器件测试程序并添加到器件库

    进入正达测试仪“编程扩数字器件库”项中的“编写器件测试程序”窗口。将以上写好的GAL16V8器件测试程序粘贴到该窗口下,或者直接在该窗口编辑程序。再进入“编程扩数字器件库”中的“扩充器件到器件库”操作。选中待扩充的测试源程序“GAL16V8-U15”,并选择添加到“其他类库”,按“继续”键,即可完成GAL16V8器件功能测试程序的扩充。见图3.从而对这个GAL16V8器件进行在线/离线逻辑功能测试。

 

图3    用户可以自己编写GAL16V8器件功能测试程序

 

4.采用VI曲线测试作用几乎为零

    VI曲线测试对于可编程逻辑器件PLD来说作用极为有限。实践表明:只是在电路维修中对于严重烧毁的PLD器件能够发现问题,这种情况万用表也能发现。除此之外,作用为零。

    在电路维修过程中,可编程逻辑器件PLD内部损坏很常见,VI曲线测试无法通过器件管脚阻抗特性发现问题。只有进行程序读取、复制、清除、校验、加密和空白检查操作,才能判断好、坏电路板上处于相同位置的GAL器件的工作状态和实现功能是否一致。

    在科研教学过程中,VI曲线测试更是毫无作用。当写入一个可编程逻辑器件PLD的程序后,这个PLD器件究竟能否完成写入的逻辑表达式的功能,唯有通过逻辑功能测试才可以验证。VI曲线测试只是检测器件管脚的阻抗特性,和功能测试是两回事,没有意义。

    由于VI曲线测试实现简单,功能测试实现复杂。因此,一些不具有功能测试能力的人会过度宣扬VI曲线测试的作用。这种做法有悖于科学精神,值得注意。

 

5.结语

    正达测试仪对可编程逻辑器件具有两种功能测试方法,不但适用于电路维修,还适用于科研教学等工作。只有正达测试仪才具有这种测试能力和技术水平。

    借助正达测试仪这个先进平台,以文中提到的正达测试仪北京用户为代表的广大技术人员,也充分展现出个人才华,令人赞赏和钦佩。