SSブログ
English Version
前の5件 | -

MSX1(CF1200)の購入(その1)カーリッジケースの作成 [MSX]

 最近、Twitter では MSX3 の話題で賑わっています。私は MSX の実機を弄ったことは無いのですが CPU が Z80 なので興味が沸き、MSX1 の初期の頃の機種である National 製 CF1200 の中古をマニュアル&箱付きで購入してみました。

購入した MSX1(CF1200)


 基本的な機能しか試していませんが動作上の問題はなさそうです。
 しかし、これだけでは内蔵 ROM から起動する BASIC で遊べるだけで他に何もできません。そこで、ROM を実装できる カートリッジ用基板が安く販売されていたので購入してみました。

カートリッジ用 ROM 実装基板


 これを使えばモニタプログラム等作り、カートリッジから立ち上げることが出来るようになります。
 基板が剥き出しの状態では扱いづらいのでカートリッジのケースを作ることにしました。ネットで探すとケースのSTL ファイルがいくつか見つかったので上記の基板が取り付けられそうなものを選び、3Dプリンタで出力してみましたが、丸ピンソケットで実装した ROM がつかえてうまくケースに収まりませんorz

 そこでケースを自作しようと思いましたがケースのサイズ情報がフルセットで記載されたサイトまたは資料が見つかりませんでした^^;
 下記のサイトの情報とネットで探した STL ファイルを参照してカートリッジのケースを CAD で設計してみました。

 作成したケースの CAD 表示が下図になります。ROM の部分は窓で外に出し、ROM の上面がケースの外側と面一くらいになりギリギリで収まりました。

カートリッジ用ケース(CAD画面)


 3Dプリンタで出力した結果が下の写真になります。若干お焦げが発生していますね^^;

カートリッジ用ケースの出力結果


 基板を嵌め込むと下図の様になります。基板は下側のホールで固定されていますが、これはナムコ仕様のサポータの位置だと思います(実際のナムコのカートリッジを持っていないので未確認ではありますが)。

カートリッジ用ケースと基板


 下の写真は3Dプリンタで出力したケースに基板を格納し、蓋をネジで固定した状態の様子です。

完成したカートリッジケース


 CF1200 のカートリッジスロットに入れてみましたが問題無さそうです。


nice!(0)  コメント(0) 
共通テーマ:趣味・カルチャー

Z80GalCompactの制作(その5)AMラジオで音楽演奏 [Z80]

 twitter の タイムラインでマイコンから発生する電波を利用してラジオから音楽を流す動画を見かけました。
 学生時代に Z80 マイコンを作り同様なことをやってみたことがありますが、直ぐに1ビットのデジタル出力を使って演奏する方式に移行して二重奏等をやって遊んでいました。

 余りにも懐かし過ぎるので最近開発した Z80 マイコン(Z80GalCompact)を使ってラジオ演奏をやってみました。

 基本はループ処理の周期によってシングルトーンの音を生成するのですが、最初は綺麗な音が中々出ませんでした。色々やってみると AMラジオ側の受信周波数によって聞こえ方が結構違うことに気が付き、良く聞こえる受信周波数にするとそれなりの音が出るようになりました。
 また、演奏音をなるべく綺麗にするために
  1. 雑音低減のために演奏中はタイマ割込みを禁止する
  2. 頻繁に通る分岐処理部分では両方の処理のステート数を合わせる
  3. 音程と長さは1バイト処理にしてトーンジェネレータ以外の処理時間を短くする
等の対策を施すことでそれなりに聞こえるようになりました。今回使用した Z80GalCompact は 20MHz 動作なので上記の第 3 項を実現するために結構な数の NOP 命令をトーンジェネレータ処理部に入れています。

 トーンジェネレータ処理のループ部が合計で 108 ステートとなり、クロック 20MHz の情報と合わせて音程パラメータを計算した結果が下表になります。
 Loop times のカラムがシングルトーンを生成するためのループ回数(=音程パラメータ)で上記のように 1 バイト処理なので Hex カラムが 2 桁以下のデータ部分が使用できる音階になります。

音階パラメータ表


 楽曲としては著作権が消滅しているドイツ民謡で広くなじみのある「かえるの合唱」のデータを使用しました。ネット上にあるこのページ等を参照させて頂きました。
 更に今回は無謀にもラジオを用いた自動演奏による二重奏にチャレンジしてみました。アセンブラで組んだソースが下記になります。

ラジオ演奏 カエルの合唱(Z80 アセンブラ)
;++++++++++++++++++++++++++++++++++++++++ ; play music by AM-radio ; Ver 0.01 2022/07/28 by skyriver ;++++++++++++++++++++++++++++++++++++++++ 0080 LENG EQU 80H ; tone length parameter 0010 WAVREP EQU 16 ; wave repeat times ; note definition($:means #) 00FA N_F0$ EQU 0FAH 00EC N_G0 EQU 0ECH 00DF N_G$0 EQU 0DFH 00D2 N_A1 EQU 0D2H 00C7 N_A$1 EQU 0C7H 00BB N_B1 EQU 0BBH 00B1 N_C1 EQU 0B1H 00A7 N_C$1 EQU 0A7H 009E N_D1 EQU 09EH 0095 N_D$1 EQU 095H 008C N_E1 EQU 08CH 0085 N_F1 EQU 085H 007D N_F$1 EQU 07DH 0076 N_G1 EQU 076H 006F N_G$1 EQU 06FH 0069 N_A2 EQU 069H 0063 N_A$2 EQU 063H 005E N_B2 EQU 05EH 0058 N_C2 EQU 058H 0054 N_C$2 EQU 054H 004F N_D2 EQU 04FH 004A N_D$2 EQU 04AH 0046 N_E2 EQU 046H 0042 N_F2 EQU 042H 003F N_F$2 EQU 03FH 003B N_G2 EQU 03BH 0038 N_G$2 EQU 038H 0035 N_A3 EQU 035H 0032 N_A$3 EQU 032H 002F N_B3 EQU 02FH 002C N_C3 EQU 02CH 002A N_C$3 EQU 02AH 0027 N_D3 EQU 027H 0025 N_D$3 EQU 025H 0023 N_E3 EQU 023H 0021 N_F3 EQU 021H 0000' ASEG ORG 0100H 0100 21 0000 START: LD HL,0 ; wait until serial buffer empty 0103 2B ST00: DEC HL 0104 7C LD A,H 0105 B5 OR L 0106 C2 0103 JP NZ,ST00 0109 F3 DI 010A 21 0150 LD HL,DATA 010D 7E LOOP: LD A,(HL) 010E B7 OR A 010F CA 014E JP Z,EXIT 0112 57 LD D,A 0113 23 INC HL 0114 5E LD E,(HL) 0115 23 INC HL 0116 E5 PUSH HL 0117 0E 80 LD C,LENG ; length 0119 AF XOR A ; clear length sub counter 011A 2E 10 TONE00: LD L,WAVREP ; wave repeat times 011C 42 TONE01: LD B,D ; set tone para 011D 3D TONE02: DEC A ; 4(4) 011E C2 0128 JP NZ,TONE03 ; 10(14) 0121 0D DEC C ; 4 0122 CA 014A JP Z,NEXT ; 10(14) 0125 C3 012E JP TONE04 ; 10(24) 0128 00 00 00 00 TONE03: DB 0,0,0,0 ; 16(30) NOP x 4 012C 00 00 DB 0,0 ; 8(38) 012E 00 00 TONE04: DB 0,0 ; 8(46) 0130 00 00 00 00 DB 0,0,0,0 ; 16(62) 0134 00 00 00 00 DB 0,0,0,0 ; 16(78) 0138 00 00 00 00 DB 0,0,0,0 ; 16(94) 013C 05 DEC B ; 4(98) 013D C2 011D JP NZ,TONE02 ; 10(108) loop:108 * para 0140 2D DEC L 0141 C2 011C JP NZ,TONE01 0144 62 LD H,D 0145 53 LD D,E 0146 5C LD E,H 0147 C3 011A JP TONE00 014A E1 NEXT: POP HL 014B C3 010D JP LOOP 014E FB EXIT: EI 014F C9 RET 0150 DATA: 0150 B1 B1 DB N_C1, N_C1 ; single 0152 B1 B1 DB N_C1, N_C1 0154 9E 9E DB N_D1, N_D1 0156 9E 9E DB N_D1, N_D1 0158 8C 8C DB N_E1, N_E1 015A 8C 8C DB N_E1, N_E1 015C 85 85 DB N_F1, N_F1 015E 85 85 DB N_F1, N_F1 0160 8C 8C DB N_E1, N_E1 0162 8C 8C DB N_E1, N_E1 0164 9E 9E DB N_D1, N_D1 0166 9E 9E DB N_D1, N_D1 0168 B1 B1 DB N_C1, N_C1 016A B1 B1 DB N_C1, N_C1 016C 01 01 DB 1, 1 016E 01 01 DB 1, 1 0170 8C 8C DB N_E1, N_E1 0172 8C 8C DB N_E1, N_E1 0174 85 85 DB N_F1, N_F1 0176 85 85 DB N_F1, N_F1 0178 76 76 DB N_G1, N_G1 017A 76 76 DB N_G1, N_G1 017C 69 69 DB N_A2, N_A2 017E 69 69 DB N_A2, N_A2 0180 76 76 DB N_G1, N_G1 0182 76 76 DB N_G1, N_G1 0184 85 85 DB N_F1, N_F1 0186 85 85 DB N_F1, N_F1 0188 8C 8C DB N_E1, N_E1 018A 8C 8C DB N_E1, N_E1 018C 01 01 DB 1, 1 018E 01 01 DB 1, 1 0190 B1 B1 DB N_C1, N_C1 0192 B1 B1 DB N_C1, N_C1 0194 01 01 DB 1, 1 0196 01 01 DB 1, 1 0198 B1 B1 DB N_C1, N_C1 019A B1 B1 DB N_C1, N_C1 019C 01 01 DB 1, 1 019E 01 01 DB 1, 1 01A0 B1 B1 DB N_C1, N_C1 01A2 B1 B1 DB N_C1, N_C1 01A4 01 01 DB 1, 1 01A6 01 01 DB 1, 1 01A8 B1 B1 DB N_C1, N_C1 01AA B1 B1 DB N_C1, N_C1 01AC 01 01 DB 1, 1 01AE 01 01 DB 1, 1 01B0 B1 B1 DB N_C1, N_C1 01B2 01 01 DB 1, 1 01B4 9E 9E DB N_D1, N_D1 01B6 01 01 DB 1, 1 01B8 8C 8C DB N_E1, N_E1 01BA 01 01 DB 1, 1 01BC 85 85 DB N_F1, N_F1 01BE 01 01 DB 1, 1 01C0 8C 8C DB N_E1, N_E1 01C2 8C 8C DB N_E1, N_E1 01C4 9E 9E DB N_D1, N_D1 01C6 9E 9E DB N_D1, N_D1 01C8 B1 B1 DB N_C1, N_C1 01CA B1 B1 DB N_C1, N_C1 01CC 01 01 DB 1, 1 01CE 01 01 DB 1, 1 01D0 B1 B1 DB N_C1, N_C1 ; duo 01D2 B1 B1 DB N_C1, N_C1 01D4 9E 9E DB N_D1, N_D1 01D6 9E 9E DB N_D1, N_D1 01D8 8C 8C DB N_E1, N_E1 01DA 8C 8C DB N_E1, N_E1 01DC 85 85 DB N_F1, N_F1 01DE 85 85 DB N_F1, N_F1 01E0 8C 8C DB N_E1, N_E1 01E2 8C 8C DB N_E1, N_E1 01E4 9E 9E DB N_D1, N_D1 01E6 9E 9E DB N_D1, N_D1 01E8 B1 B1 DB N_C1, N_C1 01EA B1 B1 DB N_C1, N_C1 01EC 01 01 DB 1, 1 01EE 01 01 DB 1, 1 01F0 8C B1 DB N_E1, N_C1 01F2 8C B1 DB N_E1, N_C1 01F4 85 9E DB N_F1, N_D1 01F6 85 9E DB N_F1, N_D1 01F8 76 8C DB N_G1, N_E1 01FA 76 8C DB N_G1, N_E1 01FC 69 85 DB N_A2, N_F1 01FE 69 85 DB N_A2, N_F1 0200 76 8C DB N_G1, N_E1 0202 76 8C DB N_G1, N_E1 0204 85 9E DB N_F1, N_D1 0206 85 9E DB N_F1, N_D1 0208 8C B1 DB N_E1, N_C1 020A 8C B1 DB N_E1, N_C1 020C 01 01 DB 1, 1 020E 01 01 DB 1, 1 0210 B1 8C DB N_C1, N_E1 0212 B1 8C DB N_C1, N_E1 0214 01 85 DB 1, N_F1 0216 01 85 DB 1, N_F1 0218 B1 76 DB N_C1, N_G1 021A B1 76 DB N_C1, N_G1 021C 01 69 DB 1, N_A2 021E 01 69 DB 1, N_A2 0220 B1 76 DB N_C1, N_G1 0222 B1 76 DB N_C1, N_G1 0224 01 85 DB 1, N_F1 0226 01 85 DB 1, N_F1 0228 B1 8C DB N_C1, N_E1 022A B1 8C DB N_C1, N_E1 022C 01 01 DB 1, 1 022E 01 01 DB 1, 1 0230 B1 B1 DB N_C1, N_C1 0232 01 B1 DB 1, N_C1 0234 9E 01 DB N_D1, 1 0236 01 01 DB 1, 1 0238 8C B1 DB N_E1, N_C1 023A 01 B1 DB 1, N_C1 023C 85 01 DB N_F1, 1 023E 01 01 DB 1, 1 0240 8C B1 DB N_E1, N_C1 0242 8C B1 DB N_E1, N_C1 0244 9E 01 DB N_D1, 1 0246 9E 01 DB N_D1, 1 0248 B1 B1 DB N_C1, N_C1 024A B1 B1 DB N_C1, N_C1 024C 01 01 DB 1, 1 024E 01 01 DB 1, 1 0250 B1 B1 DB N_C1, N_C1 0252 01 01 DB 1, 1 0254 9E 9E DB N_D1, N_D1 0256 01 01 DB 1, 1 0258 8C 8C DB N_E1, N_E1 025A 01 01 DB 1, 1 025C 85 85 DB N_F1, N_F1 025E 01 01 DB 1, 1 0260 8C 8C DB N_E1, N_E1 0262 8C 8C DB N_E1, N_E1 0264 9E 9E DB N_D1, N_D1 0266 9E 9E DB N_D1, N_D1 0268 B1 B1 DB N_C1, N_C1 026A B1 B1 DB N_C1, N_C1 026C 01 01 DB 1, 1 026E 01 01 DB 1, 1 0270 00 DB 0 ; end of data END


 流石に完全な二重奏とまではいきませんが「かえるの合唱」の輪唱がそれなりに聞こえるようになりました^^


★追記 2022/7/28
 twitter に投稿した動画付きのメッセージを貼っておきます。




[TOP] [ 前へ ] 連載記事 [ 次へ ]

nice!(0)  コメント(0) 
共通テーマ:趣味・カルチャー

TL866II Plus用VPP:21V/25V対応アダプタの製作(その5)プリント基板完成 [その他]

 前回の記事で書いた回路更新したプリント基板を 7/3 23時に ELLOCROW さんに製造依頼して 7/11 の午前中に届きました。

 下の写真が出来上がったプリント基板のトップ面です。今回 ZIF ソケットのフットプリントを修正して幅を狭くしていますが、少し狭すぎました^^;
 でも足を少し曲げると入るので問題ありません。

VppConverter プリント基板(トップ面)


 下の写真がボトム面です。左上の "C4" のシルクのCが見えなくなっていますね^^;

VppConverter プリント基板(ボトム面)


 上記のように軽微な問題が2点あったものの機能上は問題無いと思います。
 表面実装部品を実装後のボトム面が下の写真です。今までは SOP パッケージは半田ごてで半田付けしていましたが、今回は他の部品と同様にクリーム半田を使ってヒートガンで半田付けしてみました。クリーム半田の方が速く綺麗にできました。

表目実装部品実装後(ボトム面)


 ボトム面の部品を実装後にトップ面の表面実装部品(と言っても USB コネクタと LED 及び電流制限抵抗)の半田付けを行いました。今回は上記の SOP IC と同様に USB コネクタもクリーム半田で半田付けしてみました。ピン間隔が狭いのでピン毎にクリーム半田を塗ることはできませんでしたがヒートガンを当てると綺麗に分かれて半田付けできました(今までは半田ごてと吸取り線を使って半田付けしていました)。

表目実装部品実装後(トップ面)


 残りはリード部品と ZIF ソケット及びピンヘッダの半田付けなので楽です。注意点として ZIF ソケットの半田付けの前にロムライタとの接続用のピンヘッダを半田付けする必要があります。また ZIF ソケット直下のピンヘッダは ZIF ソケットと干渉しないようにトップ面からの出っ張ったピンの部分をニッパーでカット後に半田付けしました。
 ZIF ソケットは前述のようにフットプリントの幅が少し狭いのでピンを内側に曲げてから半田付けしています。

 部品実装が完了したトップ面とボトム面の写真を貼っておきます。

部品実装後(トップ面)


部品実装後(ボトム面)


 VppConverter が完成したので 手持ちの UV-EPROM を使って動作確認を行いました。結果は 2716/2732/2764 の3種類の UV-EPROM への書込みが成功しました

 今回作成した VppConverter は外部から供給された 5V 電源を昇圧して Vpp 用の 21V/25V を生成していて内部回路のグランドは 外部電源である USB のグランドと同電位ですが、ロムライタ(TL866II Plus、以降 TL866II と記す)側のグランド(ロムライタ側の USB のグランドと同電位)と電位が異なります。
 従ってロムライタを接続したパソコンのUSBから VppConverter に給電しないよう注意する必要があります。モバイルバッテリからの給電が安全です。


 以降に確認結果の詳細を記録しておきます。
  1. NEC製 uPD2716D (Vpp:25V)
     TL866II のデバイス一覧には無いのでデバイスとして INTEL M2716 を選択した状態で試験しました。
     VppConverterによる Vpp の変化を確認するために、最初に UV-EPROM を TL866II に直接つないだ状態での書込み時の波形を確認しました(下図)。
     下図で ch1(黄色)が Vpp で ch2(水色)がCE/ です。TL866II に直付けなので Vpp が18V になっていて書込みは失敗します。

    2716 ダイレクト接続時の波形

     次に VppConverter を使って書き込んだ際の波形が下図になります。Vpp は想定通りほぼ 25V になっています。

    2716 書込み時の波形( VppConverter 使用時)

     書込み後の TL866II の画面が下図で、書込み後のベリファイも成功しています。

    VppConverter 使用時の書込み後の画面表示


  2. NEC製 uPD2732D (Vpp:21V)
     TL866II のデバイス一覧に無いのでインテルの 2732A を選択して確認しました。
     2732 問題(書き込み時に CE/ が High のまま)はソフトウェアの問題なのですがソフトウェアがすぐに対応しそうにないことからハード対応するということを前回の記事で書きました。
     VppConverter 経由で 2732 を接続し、書込み動作を行った際の波形が下図になります。ch1(黄色)が Vpp で ch2(水色)が CE/ です。Vpp は想定通り 21V になっていますし、 CE/ も髭は発生していますが想定通りに Vpp が High の時に low になっています。

    2732 書込み時の波形( VppConverter 使用時)

     書込み後の TL866II 画面が下図になります。書込みは成功していますね。

    2732 書込み後の画面


  3. 富士通製 MBM2764 (Vpp:21V)
     富士通製 MBM2764 は TL866II のデバイス一覧にありました。デバイス選択後の TL866II 画面が下図になります。
     MBM2764 の Vpp はデータシートでは 21V ですが、TL866II では 12V に設定されています。このように TL866II は UV-EPROM のパラメータ設定が間違えている場合があるので注意が必要です。

    MBM2764 選択後の画面

     VppConverter では TL866II からの Vpp が 18V の場合、内部で昇圧した Vpp に切り換えているので Vpp を 18V に手動で設定し直して書込み試験を行いました。書込み時の波形が下図になります。ch1(黄色)が Vpp で ch2(水色)が PGM/ です。

    MBM2764 の書込み時の波形

     書込み後の TL866II の画面が下図になります。ベリファイも通り、書込みは成功しています。

    MBM2764 の書込み後の画面表示


 以上が書込み試験時の波形等の記録です。

 最後に 2732 書込み時の写真を貼っておきます。2732 問題をハードで対応しているのでジャンパ接続不要でスッキリですね^^

2732 書込み時の様子



★追記 2022/07/16
 手持ちのUV-EPROM を使って今回開発した VppConverter での書込み試験を行った結果をメモしておきます。
 書込み試験でのデータは GAMEインタープリタ(0000H~0CB4H)を用いました。

No.MakerTypeVppResult
1NECD2716D25VOK
2FUJITSUMB851625VOK
3SSSM2716F125VOK
4NECD2732D21VOK
5MITSUBISHIM5L2732K25VOK
6FUJITSUMBM2732A21VOK
7NECD2764D21VOK
8NECD27C6421VOK
9FUJITSUMBM276421VOK

★2022/07/17 NEC D2764D を追加

※ST M2732A は 2732の書込み問題の記事の最後の方に追記で 2732 問題が発生している状態でも書き込めるということを書きましたが、大きなデータを書込むと 0800H のアドレスの読込みデータが不一致になりました。
 VppConverter を使って書込みを行うと 0000H で書き込みデータ( 0C3H )が 0FFH に読めるというエラーが発生しました。
 この ROM 自体が壊れている可能性があります。


[TOP] [ 前へ ] 連載記事 [ 次へ ]

nice!(0)  コメント(0) 
共通テーマ:趣味・カルチャー

TL866II Plus用VPP:21V/25V対応アダプタの製作(その4)回路更新 [その他]

 前回の記事で書いたように TL866II Plus(以降、TL866IIと記す)で 2732 を書き込む際に発生する問題は Vpp 電圧が 18V 以下の 2732 でも発生する問題であり、現状の対策は CE/( 18 番ピン)を強制的にグランド( 12 番ピン)に接続する方法しかないようです。また、この問題に対してソフトウェアがすぐには対応しない可能性もあるので今回作成する VppConverter( eBay で同種の基板が VppAdaptorと言う名称で販売されていたので名称を変更)でハード的に対応することにしました。

 上記の既存の対策は TL866II からの CE/ をグランド接続し TL866II 側の負荷が大きくなりあまり宜しくない(そもそも 2732 を焼く時だけジャンパー接続するのは面倒)ので下図のように Vpp でオンするトランジスタの出力とダイオードORを取って 2732 の CE/ として供給するようにします。このトランジスタは 2732 の場合のみオンになるので追加の操作は必要ありません。

2732 問題対応の追加回路


 6/23 に Elecrow さんに製造依頼した基板が本日( 7/3 )に届きました。過去の経験から Elecrow さんでは小さめの基板は10枚作ってくれるようで、今回も予想通り 5 枚の発注で予備分も含めて 12 枚届きました^^
 しかし、次の問題があったため、上記の 2732 対応も追加して改版することにした次第です。
  • ROM ソケットの幅
     2764 のフットプリントをネットからダウンロードし使用したが、ソケット無しの直付けを想定したもののようで幅が広すぎたので修正した
  • ROM ソケットのピン穴サイズ
     ZIF ソケットの足は横幅が大きく入らなかったので 30 Thou(穴径)/ 45 Thou(外径)のピン穴を 40 Thou / 54 Thou に変更した

 改版した全体の回路図が下図になります。

VppConverter 回路図( Ver 0.02 )


 グランドベタ化前のパターンが下図です。前回よりもサイズを少し小さくしました。

VppConverter パターン図(グランドベタ化前)


 グランドベタ化後のトップとボトムのパターン図も貼っておきます。

VppConverter パターン図(トップ面)

VppConverter パターン図(ボトム面)


 トップ面とボトム面の3D表示が下図になります。

VppConverter 3D表示(トップ面)

VppConverter 3D表示(ボトム面)



[TOP] [ 前へ ] 連載記事 [ 次へ ]

nice!(0)  コメント(0) 
共通テーマ:趣味・カルチャー

TL866II Plus用VPP:21V/25V対応アダプタの製作(その3)2732の書込み問題 [その他]

 多機能なロムライター(TL866II Plus)での旧 ROM(Vpp電圧が 21V 以上)対応関連の情報をネットで見ていると 2732 への書込みに問題があるという情報が見つかります。

 この問題についての情報が豊富な 2732 will not program TL866ii plus のフォーラムでは
  1. 書込み中(Vpp=18V)に CE/(18 ピン)が ハイレベルになり、ROM への書き込みが失敗する
  2. この問題を回避するために CE/(18 ピン)と GND(12 ピン)を外部結線した状態で書込むことで ROM への書込みが成功する
  3. 旧タイプのロムライタである TL866A ではこの問題は発生しない
  4. TL866II Plus と TL866A の ROM 書込み時の Vpp と CE/ の波形比較も掲載されている
  5. TL866 用のソフトウェアのブランチ開発での ROM タイプに関するパラメータが提示されていてこの中の protocol_id で書込み時のシーケンスが決まる

と言うようなことが書かれています。

 この 2732 問題に関しては上記のフォーラムの参加者が TL866 の開発元のフォーラムに Issue with programming 2732 eprom due to incorrect logic の表題で問題報告とソフトウェアでの対応を要求しています(2022-5-27 に最新版でも同様の問題が発生することも報告済み)。

 参考として NEC の uPD2732 と uPD2716 のプログラム時のシーケンス図を貼っておきます。

uPD2732 の書込みシーケンス


uPD2716 の書込みシーケンス


 上記フォーラムでは 2716 は書込み中に CE/ はハイレベルのパルスが必要で 2732 はローレベルのパルスが必要であるけれど、TL866II Plus のソフトに移行する際に 2732 用のシーケンスが 2716 のもののままになってしまったのではないかとも書かれています。

 この情報を基に少し調査してみました。以降は今回行った独自調査の内容になります。また、調査対象のソフトのバージョンは現時点で最新の Ver. 12.01 です。

 最初に、上記フォーラムにあったROM パラメータの情報がどこにあるかの特定です。ROM ライタのプログラムがあるフォルダを見渡すとある程度のサイズ(6.6MB)があるファイルとして InfoIC2Plus.dll がありました。ファイル名もそれっぽい感じですね。

 ダンプ表示してみるとROM 名称を含むパラメータのテーブルがありました。比較のために 2732 問題が発生しない TL866A 用のソフトもダウンロード&解凍し、対応する DLL ファイルもダンプしてみました。

TL866II Plus の InfoIC2Plus.dll 内 ROM パラメータテーブル(抜粋)


TL866A の InfoIC.dlll 内 ROM パラメータテーブル(抜粋)


 この中から protocol_id を特定したいのですが、上記フォーラムの情報から
  • TL866II Plus では 2716 と 2732 で同じ値である
  • TL866A では 2716 と 2732 で異なる値である
と言う条件で探してみました。上図のダンプで赤マークが 2716 と 2732 で異なる値のパラメータです。上記の条件に該当するのは TL866II Plus 側では黄色でマークした 0x0B が protocol_id と言うことになりそうです。TL866A では 0x38 と 0x31 がそれぞれ 2716 と 2732 用の protocol_id のようです。

 次に TL866II Plus で 2732 に対応する protocol_id を決定するために TL866A で 0x31 の protocol_id を使用している他の ROM を探してみました。例えば下図の ST2764A のテーブル内のカーソル部になります。

TL866A で protocol_id が 0x31 のパラメータ例


 下図から対応する TL866II Plus の protocol_id は 0x07 であることが判ります。

TL866II Plus での対応する protocol_id 値


 以上から TL866II Plus の 2732 問題に対しては 2732 のパラメータテーブル内の protocol_id を0x07 に変更すれば解決するのではないかという期待が湧いてきます。
 試しに Intel の 2732 のパラメータを覗いてみると下図のようになっていました。

TL866II Plus の Intel 2732 のパラメータ


 あれ、2732 の protocol_id は 0x0b ですが、2732A の protocol_id は既に 0x07 になっていますね。それならば 2732A で書込んだ時には 2732 問題 は発生しないのでしょうか?

 まずはディバイスを Intel 2732 で選択して書込み時の波形を確認してみました。ch1(黄色)が Vpp でch2(水色)が CE/ の波形です。

TL866II Plus での 2732 書込み時の波形


 2732 問題が発生している状態(Vpp が 18V の時、CE/ が high)ですね。
 次に 2732A を選択して書き込んだ際の波形が下図になります。ch と信号の対応は上図と同じです。

TL866II Plus での 2732A 書込み時の波形


 うっ、2732 と全く同じですね ^^;
  protocol_id が 0x07 でも 2732 問題が発生するという結果になりました orz
 結論としては ROM 毎のパラメータが原因ではなく、protocol_id 0x07 の実装自体に問題があるということになるかと思います。

 念のために CMOS 版の NMC27C32B の書込み時の波形を確認して見ました。


TL866II Plus での NMC27C32B 書込み時の波形


 Vpp (黄色) が high の時に CE/ (水色)も High になり 2732 問題が発生しています。物が無いので試せてはいませんが TL866II Plus では Vpp 電圧が 18V 以下の CMOS版の 2732 でも書き込みができないということのようです。

 参考としてデータシートに載っている MNC27C32B の書込み時のシーケンスも貼っておきます。

MNC27C32B の書込み時のシーケンス


【 最後に】
 対応ディバイスが 15000 程度あり、ソフトウェア開発は想像以上に大変なのでしょうが、対応を謳っているディバイスが書込めないというのは日本製では考えられないことです。せめてユーザー側でもっとフレキシブルにシーケンスの変更/追加が出来るようにしてくれたらなぁと思います。
 製品情報の守秘と言う点ではあまり公開したくないかもしれませんが(でも既に回路図やVppを上昇させる内部基板の改造方法等がネットに上がっている)ソフトウェアのメンテ工数の削減という点では上記のことは有効なのではないかと思います(製品価値も上がると思います)


★追記 2022/07/02
 ST の M2732A を入手できたので確認結果を追記します。
 結論から先に書くと TL866II Plus で Vpp の外部注入や CE/ の強制 low を行わなくても書込みができベリファイも通りました。
 書込み時の Vpp(仕様では 21V で TL866 では 18V で設定されている) と CE/ の波形を下図に示します。ch1(黄色)が Vpp で ch2(水色)が CE/ です。

ST M2732A 書込み時音の Vpp と CE/ 信号


 上図の波形を見る限りでは Vpp onの時に CE/ が High であり 2732 問題が発生している状態です。下図にデータシートに記載されている書込みシーケンスを貼りました。一部赤書きで仕様時間を記入しましたが、ライト時の CE/ パルス幅は 最小値でも 45ms になっていますが上図のシンクロで観測した信号を見てみると CE/ のパルス自体が無いのですが、Vpp のパルス幅でも 600us 程度ですので仕様を全く満たしていません。

ST M2732A の書込みシーケンス


 書込み後の TL866II Plus の画面が下図で書込み自体は 9 秒程度で完了しており、容量の 8K バイトから逆算すると 1 バイト当たり 1ms 程度で完了していることになり(画面にある通りブランクスキップは実施していない)、上記のシンクロでの観測結果と一致します。


ST M2732A の書込み後の画面表示


 個体差がある可能性もありますが、今回の確認結果として ST M2732A への書込み&ベリファイ動作は正常に完了するが、実際の波形では 2732 問題が発生している状態であることから
  • ST M2732 は書込み時に CE/ が High でも書込み可能である(らしい)
  • 仕様上のライトパルス幅の 1/100 程度の Vpp パルスでも書き込みが可能である
と言うことになり、デバイス側のこれらの仕様外の動作が今回の 2732 問題を混乱させる一因になっているように思います。


[TOP] [ 前へ ] 連載記事 [ 次へ ]

nice!(0)  コメント(0) 
共通テーマ:趣味・カルチャー
前の5件 | -