ロジックICチェッカ(ソフト解説)



・リセット状態
リセット状態とは、電源投入またはリセットボタンを押してから待機状態になるまでをいいます。
1秒間ファームウェアのバージョンを7セグLED(以下7セグ)に表示します。
また、緑LED・赤LEDの順に点灯します。(ハードウェアチェック)
この後に0000を7セグに表示し待機状態になります。
・待機状態
待機状態とは、リセット状態が終了またはチェックまたは設定が終了し何もしていない状態をいいます。
7セグには、最後に試験したICの番号が表示されています。
この状態で設定ボタンを押すと、7セグの数値が点滅し被試験ICNoの設定ができます。
・設定状態
設定状態とは、待機状態で設定ボタンを押し7セグの数値が点滅している状態をいいます。
このときに被試験ICNoの千の位〜一の位の変更ができます。各位は独立に変更できます。
各桁対応のボタンを押すと1増えます。9までいくと0に戻ります。
  74シリーズ:74を取った数値を設定します。右づめで前側は0にします。(7432→0032)
  4000・4500シリーズ:そのまま設定する。
再度設定ボタンを押すと、被試験ICNoが確定され点滅が止まります。
・チェック状態
チェック状態とは、待機状態でスタートスイッチを押し被試験ICにVccを印加しチェックしている状態をいいます。この状態のときにはデバイスの抜き差しを行ってはいけません。チェックが終了すると、OK(緑)またはNG(赤)のLEDが2秒間点灯し待機状態になります。
・拡張状態
拡張状態とは、通信ポートを通じて制御ができる状態です。リセット状態のときのスライドスイッチの状態で決定します。左側になっていると、拡張状態になります。この状態ではボタン操作が無効になります。7セグの表示は、セグメントDのみの点灯となります。
・隠し機能
隠し機能は、通信ポートを通じてチェック中の各状態が見れます。リセット状態のときに千と百の設定ボタンが押されていると、バージョン番号の代わりにセグメントGが点灯します。待機状態からは通常と同じですが、チェック状態のときに通信ポートより情報が吐き出されます。通常は使用しませんので、解説は省きます。
・デバイスエントリテーブル
このチェッカでは、デバイスのチェックに2段階を踏んでいます。被試験ICの登録・未登録およびチェックデータの先頭位置を示す数値の検索(デバイスエントリテーブル)と、実際のチェックデータ(チェックベクタ)の通りに入出力を決定し、期待値と比較する部分があります。
デバイスエントリテーブルは構造体の配列で、およそ以下のようになっています。
{ 0, TTL000 }, { 1, TTL001 }, ...
前側が被試験IC番号、後ろ側が定義されているチェックベクタ先頭位置です。チェックベクタ先頭位置はさらに| EXT(3BIT) |  INV(1BIT) | VECTORENTRY(12BIT) |というビット構成をしており、似た構造を持つ被試験IC間でチェックベクタの共通化をすることでデータ部のサイズを落としています。
EXTは3ビットで構成され、3ステートなどの付加ベクタの数を表します。これにより似ているIC(たとえば7400と7403)間で、片方は通常のチェックのみ、もう片方はさらにオープンコレクタのチェックを付加というように、通常チェック部分の共通化ができます。
INVは1ビットで構成され、入力を反転して判定します。これにより7400と7408のように出力のみ論理が反転しているIC間でチェックベクタの共通化が図れます。
VECTORENTRYは12ビットで構成され、チェックベクタの先頭位置を示します。
TTL000は配列の先頭にあるので、0という値が定義されています。TTL003だと「TTL000+EXT_2(2という値)」が定義されています。TTL000の位置が先頭で、さらに2個の追加チェックがあるという意味になります。

・チェックベクタ
チェックベクタは30バイトのデータで一回分のチェックデータを表します。
このチェックベクタはかなり容量を食っています。が、ROM容量が腐るほどあるのでデータの読みやすさを優先してみました。たとえば、7400は以下のようになっています。

{ "041401XXXXX00H00HH00H00VXXXXX" },  /* 7400試験一回目,チェックは4回,14ピンデバイス */
{ "--0001XXXXX10H10HH10H10VXXXXX" },  /* 二回目 */
{ "--0001XXXXX01H01HH01H01VXXXXX" },  /* 三回目 */
{ "--0001XXXXX11L11LL11L11VXXXXX" },  /* 四回目 */
{ "--0001XXXXX00D00DD00D00VXXXXX" },  /* 拡張一回目(ハイインピーダンスLoテスト) */
{ "--0001XXXXX00U00UU00U00VXXXXX" },  /* 拡張二回目(ハイインピーダンスHiテスト) */

先頭からの2バイトは、以下つづくベクタの個数を示します。追加ベクタ分は数えません。これは先頭の1個にだけあります。
次の2バイトが被試験ICのピン数を示します。この場合14ピンです。
次の2バイトは、このチェックベクタの実行回数(現時点ではクロック実行のみ,16進)を示します。
この次のバイトから3番ピン〜26番ピンまでの状態を表します。(ロジックICは、24ピンまで対応なので)
X:Don’t care(処理しません)
0:Loを出力
1:Hiを出力
H:Hiレベルの入力が期待される
L:Loレベルの入力が期待される
V:Vcc印加位置
D:プルダウンし、Loレベル入力が期待される
U:プルアップし、Hiレベル入力が期待される
C:クロック出力
チェックが開始されると3番ピンの部分から順番にポートの方向と出力を変更し、同様に一つずつ入力して期待値と比較します。
期待値と異なった時点でチェックを終了し、NGとします。一回分が正常に終了したら次のベクタに移動します。
ベクタ個数終了まで正常なら正常とします。追加ベクタの実行があればひきつづき実行します。


戻る

Copyright 2005 Junnichi Tomaru