| ホーム |     私の電子工作作品集

146. 簡易 S-RAM チェッカー (1 bit/4 bit)

[ 初公開日:2013年6月17日 ]

 先に作製した8ビット幅の "簡易 S-RAM チェッカー (8 bit)" の作製結果に気を良くして、 続いて1ビット幅と4ビット幅に対応した "簡易 S-RAM チェッカー (1 bit/4 bit)" を作製してみました。

 8ビット幅の S-RAM と違って それほど多くの数は持ち合わせてないのですが、それでも現在、機器に搭載中のものや使わずに在庫しているものを合わせると、 180 個ほど現存しています。 そこで今回の対象は、8ビット幅の S-RAM よりももう一世代古い、これらの1ビット幅と4ビット幅の S-RAM です。

 1ビット幅の S-RAM では "2102" と "4044" タイプを、4ビット幅の S-RAM では "5101" と "2114" タイプをチェックの対象としています。

 今回は基板のサイズの関係で、チェッカー本体と S-RAM ソケット部分に分けて作製をしたので、この S-RAM ソケット部分を変更作製すれば、 他の S-RAM タイプにも対応可能となります。(ただし、ソフトウエアの追加変更も必要)


ケースに収納 ( 2016/1/26 更新 )

 本機は長い間、上写真に示すようにプリント基板のままにしてありましたが、この度ケースに収納しました。 ただ、ケースサイズの 思わしいものが見つからなかったため、本機を収納するだけでは大き過ぎる "フリーケース A5 L8998 (サナダ精工株式会社)" 内に、 8ビット幅の "簡易 S-RAM チェッカー (8 bit)" と同居させることにしました。

■ 回路図 ■

| 回路図 (StaticRamCk1-4bit.CE3) | ページトップ |

■ チェッカーの全体像 ■

本機 "簡易 S-RAM チェッカー (1 bit/4 bit)" の全体像 ケース内部を真上から見たところ ( 拡大

| ページトップ |

■ 機能概要と使用法 ■

  • 本装置は、昔懐かしいレガシーなデバイスの、1ビット幅のスタティックRAM(種類:2102、 4044)と、4ビット幅のスタティックRAM(種類:5101、2114)のメモリチェックを 行なうのを目的とする。

  • 本装置は、電源スイッチをオンすると、"ピポッ" と起動ブザー音を出力後、液晶(LCD)にスタート メッセージとして、次の文字列が約3秒間表示される。 また同時に、BUSY(黄)、OK(緑)、NG(赤)の各 LED を、 約1.5秒間細かく交互に点滅させて、点灯チェックも行う。
    		"StaticRamChecker"
    		" (1 bit / 4 bit)"
    


  • その後、次のメッセージに切り替わって約1.5秒間表示され、その後には無表示が約1.5秒間続く。
    		"    ver.x.xx    "
    		"  by m.yamamoto "
    


  • やがて無表示の後、次のような SRAM タイプの選択メッセージが表示され、初期値として 2102 が選択されて、 その文字列先頭の "2" の位置がブリンク表示されている。 また同時に、"ピポッ" とブザー音を出力して ユーザに選択の注意を喚起する。
    		"Type?_ 2102 4044"
    		"       5101 2114"
    


  • これはユーザからのスイッチの入力待ちの状態を表し、←(LEFT)/ →(RIGHT)スイッチ の操作によって、 自由に SRAM タイプの選択を行なうことができる。 すなわちこのスイッチ操作によって "ポッ" というブザー音とともに ブリンク位置が移動し、今ブリンクしている文字列の SRAM タイプが選択されていることになる。



  • SRAM タイプを選択したなら、次に ENTER スイッチを押下することによりその選択が決定され、次のチェックの スタート促進メッセージが表示される。この時にもユーザの注意を喚起するため、"ピポッ" とブザー音を出力する。
    		"<xxxx>  Start?_ "		; xxxx 位置に選択された RAM タイプが入る
    		"                "
    


  • そしてその後、ENTER スイッチ が押下されればそのまま SRAM チェックがスタートすることになるが、もしここで 何らかの理由により SRAM タイプの選択を変更したい場合には、BREAK スイッチ を押下することによってチェック スタートされることなく、再び SRAM タイプの選択メッセージの表示に戻ることができる。

  • そのまま ENTER スイッチが押下されると、いよいよ SRAM チェックがスタートし "ピポッ" と開始ブザー音とともに、 まず次のようなチェック進行メッセージが表示される。
    		"<xxxx>   Er:0000"
    		"A:     W:   R:  "
    
          チェック開始直前 チェック終了後

  • 一方、メモリチェックがスタートされると上記のチェック進行メッセージが表示され、A: はアドレス を、 W: は書き込みデータ を、R: は読み出しデータ をそれぞれ表し、":" の後にその内容が表示されてチェックの 進行にしたがって刻々と変化をして行く。 これらはすべて16進数で表示され、通常は A:xxxx、W:xx、R:xx の形式で表示される。 また、Er: は 16進数4桁表示で そのときまでに起こったエラー数 を表示する。

  • また、SRAM をチェックするのに4つの方法が用意されており、それぞれ SELECT 1, 0 スイッチ(SW5: DIP スイッチの内の左端、SW4: 右端)の設定で、自由に選択が可能である。 ただし、1ビット幅の SRAM (種類: 2102、4044)では3つの方法のみが用意。(それらの方法については 下記 プログラム の項を参照のこと)

  • この SRAM のチェックの進行中にエラーが多発したような場合で、もうこれ以上チェックを続行させても無駄と 判断した場合には、BREAK スイッチ を押下することによって、いつでもチェックを中断し終了させることも可能である。 ただし、エラーが起こってなくても BREAK スイッチを押下すれば、やはりチェックは中断終了してしまうので そのスイッチの扱いには十分注意を要する。

  • 一方、次のチェックのスタート促進メッセージが表示されているときに、PAUSE (←(LEFT)スイッチと兼用) スイッチを押しながら ENTER スイッチを押下した場合 には、エラー発生時に ポーズ動作 を行なう。 すなわち、エラーが発生した場合には、その時点での A: アドレス、W: 書き込みデータ、R:読み出しデータの内容、 および Er: エラー数が表示された状態で、一時的にチェックの進行が中断される。 このとき、結果 NG(赤LED) が 点灯するとともに "ブー" というブザー音も出力してエラー表示を行ない、ポーズ状態に入ったことをユーザに知らせる。
    		"<xxxx>  Start?_ "		; xxxx 位置に選択された RAM タイプが入る
    		"                "
    


  • したがって、そのときの液晶(LCD)に表示されている内容を確認した後、CONTINUE (→(RIGHT)スイッチと兼用) スイッチ を押下すると、結果 NG(赤LED) が消灯してこのポーズ状態から抜けチェックが続行される。 この CONTINUE スイッチで続行しても、再度エラーが発生すれば再びポーズ状態に移行することになる。 また、続行を中断したい場合には BREAK スイッチ を押下すれば、やはりチェックは中断し終了処理に移行する。

  • 上記のように4つのチェック方法の相違によって、チェックから終了処理に至るまでの過程は違うものの、 やがてプログラミングされた予定の処理に終了を迎えた場合、または上記のように BREAK スイッチによって 強制的に中断終了させた場合に、終了処理に移行する。

  • 終了処理では、まず SRAM チェックの総合結果を LED の表示とブザー音の出力でユーザに知らせる。 エラーがなく 正常に終了した場合( BREAK 終了も含む)には、結果 OK(緑LED) が点灯して同時に "ポッポッポッポッ" というブザー音を出力して正常終了をユーザに知らせる。また、エラーが1件以上あって終了した場合には、 結果 NG(赤LED) が点灯して同時に "ブッブー" というブザー音を出力してエラー終了をユーザに知らせる。

  • これでとりあえず1つの SRAM のチェックが終了したことになるが、続いて他の同タイプの SRAM のチェックを 行ないたい場合には、ここで ENTER スイッチ を押下すれば、再び以下のスタート促進メッセージが表示されるとともに、 "ピポッ" とブザー音を出力してユーザの注意を喚起する。したがって、他のSRAM に交換して新たにチェックを行なう。
    		"<xxxx>  Start?_ "		; xxxx 位置に選択された RAM タイプが入る
    		"                "
    


  • また、他のタイプの SRAM のチェックを行ないたい場合には、上記のスタート促進メッセージが表示されているときに BREAK スイッチを 押下すれば、再び SRAM タイプの選択メッセージの表示に戻ることができる。
  (機能追加)
  • 通常のチェック進行メッセージの表示では、あまりにも早過ぎてどのようなことが行なわれているのか 普通は追随できない。 しかしエラーが起こっている場合などでは、おおよそのことが目視で知りたい場合がある。 そこでそれが可能なように機能を追加した。

  • ENTER スイッチを押下しながら POWER スイッチをONした場合 には、液晶(LCD)に表示するチェック進行メッセージの 更新時間を遅延表示 することが可能となる。

  • デフォルトでは 500mS が設定されているが、進行メッセージが表示されているチェック中に、←(LEFT)/ →(RIGHT) スイッチの1回の操作によって、100mS 単位でその更新時間の変更が可能で、←(LEFT)スイッチ では −(マイナス) 方向に、→(RIGHT)スイッチ では +(プラス)方向に働く。

  • またその遅延変更の範囲は、最小 100mS から最大 1500mS まで の15段階の設定が可能であり、その段階値を次のように 1行目の X の位置に液晶(LCD)表示する。
    		"<xxxx> X Er:0000"
    		"A:xxxx W:xx R:xx"
    

| ページトップ |

■ プログラム ■

先に作成した8ビット幅の "簡易 S-RAM チェッカー (8 bit)" と同様、 基本的には、ある番地に書き込んだ内容を一定時間後に読み出してみて、両者の内容が比較一致すれば問題はない ―― との考えから、 同様な次の4つの方法を考えてみました。 高級言語風のプログラムらしきものは、チェックする方法の考え方の概要を表します。 実際には SELECT_1,0 スイッチの指定でどの方法でも選択できるように、それぞれのチェックパタンを割り当てています。 扱うデータとしては当然ながら、1ビット幅の S-RAM では "0" と "1" のみで、また4ビット幅の S-RAM では "0" から "F" までの 16 種類が対象となります。

(1) sel_sw = b'00' の場合

1つのメモリアドレスに付き、まず h'00' のデータを書き込んで次にすぐ読み出し、両者のデータ内容を比較して一致すれば OK で、 次にデータを h'01' にして同様チェックをし、次々にデータを1ずつインクリメントしながら h'0F' まで繰り返す。 h'00' から h'0F' までの 16 種類の全データパタンが終了したなら、次に、1つインクリメントした次のメモリアドレスについて同様チェックを 行なう。 ・・・ これを 0 番地から MAX 番地までの全アドレスについて行なう、というものです。
		for ADDRESS = 0 to max
			for W_DATA = 0 to 1(1 bit 幅) or '0f'(4 bit 幅)
				(write)
				(read)
				if R_DATA = W_DATA then
					OK
				else
					NG
				endif
			next
		next
(2) sel_sw = b'01' の場合

1つの同一のデータパタンを、まず 0 番地から MAX 番地までの全アドレスについて一気に書き込みます。次にまた 0 番地に戻って、 その内容を読み出し先に書き込んだ内容と比較して一致すれば OK で、1ずつインクリメントした次々のメモリアドレスについて 同様チェックを行ないます。 MAX 番地までの全アドレスについて比較チェックが済んだなら、次にデータを1つインクリメントして 同様、全アドレスについてチェックを行ないます。このようにデータ内容を h'00' から h'0F' までの 16 種類の全データパタンに ついて繰り返しチェックします。
		for W_DATA = 0 to 1(1 bit 幅) or '0f'(4 bit 幅)
			for ADDRESS = 0 to max
				(write)
			next
			for ADDRESS = 0 to max
				(read)
				if R_DATA = W_DATA then
					OK
				else
					NG
				endif
			next
		next
(3) sel_sw = b'10' の場合

基本的には (2) のチェック方法と同じですが、書き込むデータ内容が異なっています。(2) ではアドレスのループ内で扱うデータ 内容は一定ですが、この (3) ではアドレスのループ内で扱うデータは常に1ずつインクリメントしています。要するに、隣同士の アドレスでは扱っているデータの内容が1ずつ異なっています。
		for wk = 0 to 1(1 bit 幅) or '0f'(4 bit 幅)
			W_DATA = wk
			for ADDRESS = 0 to max
				(write)
				W_DATA = W_DATA + 1
			next
			W_DATA = wk
			for ADDRESS = 0 to max
				(read)
				if R_DATA = W_DATA then
					OK
				else
					NG
				endif
				W_DATA = W_DATA + 1
			next
		next
(4) sel_sw = b'11' の場合(4 bit 幅のみ)

(1) と同様に、まず1つのメモリアドレスに着目しながら、 0 番地から MAX 番地までの全アドレスについてチェックを行なって いく方法をとりますが、書き込むデータパタンが異なっています。 (1) のように全データパタンは書き込みません。ある人の 意見を取り入れたものですが、全データパタンを書き込まなくても、 h'01', h'02', h'04', h'08', h'00' の5つのパタンだけで 十分と言うものです。 h'0F', h'05', h'0A' については私が付け加えたものです。
		for ADDRESS = 0 to max
			for W_DATA = '01','02','04','08','00','0f','05','0a'
				(write)
				(read)
				if R_DATA = W_DATA then
					OK
				else
					NG
				endif
			next
		next

現在の最新バージョン: Ver. 1.02

| ページトップ |

■ RAM 別ピンアサイン ■

今回チェックの対象としたスタティック RAM 別の、ピンアサインを次に示します。 これは上記 回路図 の該当部分を拡大して再掲したものです。

ピン端子の信号名
A0-A11: (Address Inputs) アドレス入力
DI,DI1-DI4: (Data Inputs) データ入力
DO,DO1-DO4: (Data Outputs) データ出力
D1-D4: (Data Inputs/Outputs) データ入出力
CS,CE,CE1,CE2: (Chip Select Inputs) チップセレクト入力
R/W: (Read / Write Input) リードライト制御入力
OD: (Output Disable Input) 出力制御入力
Vcc: (Power Supply) 電源
GND: (Ground) グランド

| ページトップ |

■ プリント基板(1)パターン図 (部品面) ■

| プリント基板パターン図 (部品面) (StaticRamCk1-4bitPC.CE3) | ページトップ |

■ プリント基板(1)パターン図 (ハンダ面) ■

| プリント基板パターン図 (ハンダ面) (StaticRamCk1-4bitPC1.CE3) | ページトップ |

■ プリント基板(2)パターン図 (部品面) ■

今回の 1 bit/4 bit 幅の簡易 S-RAM チェッカーでは、チェックする S-RAM を装着するためのICソケットに、 ゼロプレッシャー型のものが入手できなかったため、したがって単なる丸ピンのICソケットのみを使用しています。

そのため、ピン間が開いている S-RAM をICソケットに装着するのに、写真のような器具を使用して S-RAM を挟み、 一時的にピン間を狭くしながら装着することにしました。

 

ここで問題が発生します。試験中はいくつもの S-RAM を取っ替え引っ替えしてチェックするのですが、器具が金属でできているため、 そのままではICソケットに繋がっている電源ピンと GND ピンが当然ながらショートしてしまいます。

それを回避するためには、S-RAM を交換する度に、チェッカー本体と S-RAM ソケット部の両プリント基板を繋いでいるコネクタを抜くか、 またはチェッカー本体の POWER スイッチを OFF にしなければなりません。前者の方法では何百回もの抜き差しを行なうのは コネクタの信頼性が失いかねない恐れがありますし、後者では POWER スイッチを ON してから立ち上がるまでの待ち時間と、 その都度の S-RAM 選択の手間が馬鹿になりません。

そこで丁度うまい具合に、S-RAM ソケット部の …楕円で囲んだ部分に空きスペースがあったため、そこにも POWER スイッチを 設けて S-RAM ソケット部の電源 ON/OFF を可能とし、ついでに電源監視の LED も追加改造しました。

| プリント基板パターン図 (部品面) (StaticRamCk1-4bit2PC.CE3) | ページトップ |

■ プリント基板(2)パターン図 (ハンダ面) ■

| プリント基板パターン図 (ハンダ面) (StaticRamCk1-4bit2PC1.CE3) | ページトップ |

■ チェック結果 ■

30年ほど以前、8080Aによるマイコンシステムを作製していた頃に、秋葉原で買い求めた 1 bit/4 bit 幅の S-RAM が主な、今回の本装置によるメモリチェックの対象です。

タイプ サイズ 型名 メーカー 外形 現状 個数   実施日 (1) b'00' (2) b'01' (3) b'10' (4) b'11' OK数 NG数 備考
2102 1 bit x 1024 M5L2102AP-4 三菱 DIP-16P 在庫 7   2010/08/16 01''09 01''66 01''74 -- -- 7 0  
μPD2102AL-2 NEC DIP-16P 在庫 24   2010/08/16 01''09 01''66 01''74 -- -- 23 1 (3)でError
使用中 8   2010/08/16 01''09 01''66 01''74 -- -- 8 0  
μPD2102AL-4 NEC DIP-16P 在庫 8   2010/08/16 01''09 01''66 01''74 -- -- 8 0  
使用中 56   2010/08/17 01''09 01''66 01''74 -- -- 56 0  
4044 1 bit x 4096 TMS4044-45NL テキサス DIP-18P 在庫 32   2010/08/15 03''15 05''43 05''72 -- -- 31 1 (2)(3)でError (A:0CFF,W:01,R:00)
使用中 16   2010/08/17 03''14 05''43 05''72 -- -- 15 (1) 9ピン(GND)折れ
5101 4 bit x 256 μPD2101AL-4 NEC DIP-22P 使用中 4   2010/08/19 01''43 Error Error 00''96 0 4 (2)(3)でError (多発)
2114 4 bit x 1024 MSM2114L3RS DIP-18P 在庫 8   2010/08/19 04''49 10''62 11''10 02''62 8 0  
2114UCB SEMI DIP-18P 在庫 16   2010/08/19 04''49 10''62 11''10 02''62 4 12 (2)(3)でError (多発)
                               
( 総合計 )   179     160 19  
プログラム (ver.1.02) にて再チェック
5101 4 bit x 256 μPD2101AL-4 NEC DIP-22P 使用中 4   2010/08/23 01''43 Error Error 00''96 0 4 (2)(3)でError (多発)
2114 4 bit x 1024 MSM2114L3RS DIP-18P 在庫 8   2010/08/22 04''71 10''76 11''30 02''73 8 0  
2114UCB SEMI DIP-18P 在庫 16   2010/08/22 04''71 10''77 11''31 02''73 15 1 (2)(3)でError 詳細は次表を参照
                               
( 総合計 )   28     23 5  


チェック方法 エラー番号 アドレス 書き込みデータ 読み出しデータ 原因考察   チェック方法 エラー番号 アドレス 書き込みデータ 読み出しデータ 原因考察
(2) b'01' Er:0001 A:0276 W:0F (1111) R:02 (0010) +3になる

?????
  (3) b'10' Er:0001 A:0276 W:04 (0100) R:00 (0000) -4になる

bit2の欠け
Er:0002 A:0276 W:00 (0000) R:03 (0011)   Er:0002 A:0276 W:05 (0101) R:01 (0001)
Er:0003 A:0276 W:05 (0101) R:08 (1000)   Er:0003 A:0276 W:06 (0110) R:02 (0010)
Er:0004 A:0276 W:06 (0110) R:09 (1001)   Er:0004 A:0276 W:07 (0111) R:03 (0011)
Er:0005 A:0276 W:07 (0111) R:0A (1010)   Er:0005 A:0276 W:0C (1100) R:08 (1000)
Er:0006 A:0276 W:08 (1000) R:0B (1011)   Er:0006 A:0276 W:0D (1101) R:09 (1001)
Er:0007 A:0276 W:0D (1101) R:00 (0000)   Er:0007 A:0276 W:0E (1110) R:0A (1010)
Er:0008 A:0276 W:0E (1110) R:01 (0001)   Er:0008 A:0276 W:0F (1111) R:0B (1011)

| ページトップ |

■ 使用部品表 ■

(主要部品: IC, トランジスタ等)

(データシート)
PICマイコン .................... PIC16F877A
HC-MOS IC (Inverter) .................... TC74HC04AP
HC-MOS IC (D-Type Flip Flop) .................... TC74HC574AP
LCDモジュール .................... SC1602BS-B
圧電ブザー .................... PKM13EPY

| 部品表 | Excel ファイル (StaticRamCk1-4bit_parts.xls) | ページトップ |

■ 参考サイト ■

簡易 S-RAM チェッカー (8 bit) ..... http://xyama.sakura.ne.jp/hp/StaticRamChecker.html

| ページトップ | ホーム |


Copyright (C) 2010-2023 やまもとみのる
初版:2010年8月7日、初公開:2013年6月17日、最終更新:2023年10月30日