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

DIP ICの刻印強化とピン清掃 [その他]

 今回はDIP ICのレーザー刻印強化と古めのDIP ICの黒ずんだピンの清掃方法について書いてみます。

 刻印の強化は修正液とアルコールを使用する方法が知られていますが、今回は色鉛筆を使ってやってみました。
 酸化して黒ずんでしまったICピンの清掃はプラスティック消しゴムで擦ると綺麗になりますが、ピンの内側をきれいにするためにノック式の消しゴムを使ってみたところ楽に作業ができました。

 下の写真は今回使用した色鉛筆とノックj式消しゴムです。色鉛筆は百均で購入したものですが他のタイプの色鉛筆でも問題無いと思います。
 ノック式の消しゴムはヨドバシさんで302円で購入しました。

今回使用したツールたち


 ICの刻印部分を下の写真のように小さな丸を描きながら色鉛筆で塗り込んだ後に余分な部分をティッシュで拭き取ります。

レーザー刻印の塗り込み


 ICピンの外側の清掃は下の写真のようにICを雑誌等に挟みながらプラスティック消しゴムで擦ると綺麗になります。
 この場合はノック式よりも普通のタイプのプラ消しの方が作業が効率的だと思います。

DIP ICピンの外側の清掃


 ICピンの内側の清掃はノック式の消しゴムが威力を発揮します。

DIP ICピンの内側の清掃


 手持ちのDIP ICで刻印が薄く、かつピンが黒ずんでいるような適当なサンプルが無かったのですが対処前後の比較が下の写真です。
 対処後の左側はピンがピカピカで刻印も白くてくっきりですね。

対処後(左側)と対処前(右側)の比較


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

SuperSimpleController(その24)VDPSG基板の改版その2 [OriginalCPU]

 前回の記事で書いたように自作CPUボード(Simple8Z)用に作成したサブボード(Simple8Vdpsg)の修正版のプリント基板がALLPCBさんから2021/09/04に届きました。手配したのが2021/08/28 23時なのでかなり速いですね^^

ALLPCBさんから届いたプリント基板


 出来栄えは下の写真のように特に問題ないものでした(久々に緑色の基板です)
 無料クーポン使用時のソルダーレジストの色は緑か白の2択のようです。
 送料も込みで無料というALLPCBさんの太っ腹なクーポンサービスはありがたいですね(どういうビジネスモデルなのか心配になってしまいます)

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


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


 プリント基板は短期間で製造してもらったのですが、RCAジャックが見つからず共立エレショップさんから再購入したこと等もあり部品の取付が遅くなりました^^;
 自分自身のメモの意味合いも込めて部品取り付け後の写真を貼っておきます。
 RCAジャックのフットプリントを今回修正していますが問題無くピッタリ入りました^^

Simple8Vdpsg基板(トップ面)


 下の写真がボトム面になります。修正箇所の反映が一カ所漏れていたのでジャンパー線が1本発生してしまいましたorz
 今後のこともあるので再発防止策も検討しておきたいと思います。
 今回は目立たないようにジャンパー線の色を基板の色に合わせました。

Simple8Vdpsg基板(ボトム面)


 13個のDIP ICで構成される自作のオリジナルCPU(Simple8Z)と連結した状態が下の写真です。

CPUボード(Simple8Z)とサブボード(Simple8Vdpsg)の連結


 部品実装が終って試験プログラムを動かしてみるとVDP(TMS9918)の表示のみならずPSG(AY-3-8910)も動作しませんorz
 PSG側は回路図の机上確認でPSGのA9/ピンをGND接続に変更するという修正が漏れていたことに気が付き、ボトム面の写真のように基板を修正して動作するようになりました。

 VDP側は表示が不安定な状態で下の写真のような表示になってしまいます。

NG状態の画面表示例


 参考に画面表示が安定した際の表示例も貼っておきます。

参考)安定動作時の画面表示例


 表示するテキストコードはVRAMに概ね書けていますが、キャラクタの表示色を指定するカラーテーブルがうまく設定できていないような状態に見えます。

 カラーテーブルをモニタのOUT命令を使って設定するとうまく表示するようになったりするのでDRAMへの書込み動作が不安定な状態のようです。
 カラーテーブル設定時のDRAMのRAS/,CAS/,WE/等の信号をざっと確認して見ると下図のような状態で想定通りのように見えます。

DRAMライト時のタイミング(NG時) ロジアナサンプリング:40MHz


 NG原因が判らないのでDRAM(uPD41464-10)のライトサイクルの各タイミングが規格を満たしているか測定した結果が下図になります。
 図中の青色文字が規格値(アクセスタイム100nsの場合)で茶色と赤色の文字が測定値です。ロジアナのサンプリングは40MHzなので時間分解能は25nsになります。

DRAMライトサイクルのタイミング確認結果


 2ヶ所ある赤色の星マーク部が規格を満たしていない箇所です。
 tRCDは最大50nsとなっていますがデータシートに注意書きがあり、この値はアクセスタイム100nsを保証する場合の値であり、この値よりも大きい場合、アクセスタイムはtCAC(Access time from CAS/)に依存すると書かれています。tCACは最大50nsなので今回の場合は問題ありません。

 もう一つのNG箇所であるtRWLは純粋に規格を満たしていないので、これが原因で不安定な表示になっているものと推測されます。
 対処するにはRAS/信号を遅らせるかWE/信号を早める必要があります。後者の対処をすることにし、もともとHCT245の遅延時間対応のために付けていたWE/信号を遅延する部分が過剰だったのでCRの遅延を無くすためにC12を取り外して動作確認したところ表示が安定するようになりました(図中のMWR/信号はVDPから出力されるR/W信号です)

tRCDタイミングの修正箇所

   ★変更 2021/09/16 R3を削除すると不安定になるので残すように変更


★追記 2021/09/16 {
 上図の回路変更でR3も削除するように書いていましたが、実際にR3をショート状態にしたところ画面表示が不安定になったのでR3は残すように変更しました。パターン上はC12のみ削除するようにしたいと思います。
 尚、下図のロジアナでの測定時はR3がある状態で測定しています。
}
 安定動作時のDRAMライトタイミング図も貼っておきます。tRWLは50nsになり、規格を満たすようになりました。

DRAMライト時のタイミング(OK時) ロジアナサンプリング:40MHz


★追記 2021/09/15
 ハードディバッグ時の写真を貼っておきます。
 フッククリップは高級品の方が使い易そうなのですが結構高いので安価なものを使っています。
 ラジオペンチで先端のピンを整形しながら使っています。
 周りの状況はあまりにも混沌としているので写せませんw

ハードディバッグ時の状況


★追記 2021/09/21
 タイミング調整可能なようにC12のパターンは残すこととし、修正版をVer0.03としてALLPCBさんの太っ腹クーポンを使って9/20に製造依頼しました。

Vdpsg基板の修正



★追記 2021/09/25
 今回はALLPCBさんに9/20に製造依頼してなんと9/25の朝に届きました。
 パッケージに書いてあるように SO QUICK です^^
 今回も6枚入っていました。

早々に届いたプリント基板



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

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

SuperSimpleController(その23)VDPSG基板の改版 [OriginalCPU]

 前回の記事で自作CPUボード(Simple8Z)用に作成したサブボード(Simple8Vdpsg)でPSG(AY-3-8910)を使った自動演奏について書きましたが、Simple8Vdpsgボードがうまく動いているようなので回路図に修正部分を反映して整理しました。
 自分のためのメモの意味も込めて整理後の回路図などの情報を記録しておきたいと思います。

 初版の回路図は「SuperSimpleController(その17)TMS9918Aの接続 その2」の記事に書いていますが、今回は下記の変更を行っています。
  1. RCAジャックのフットプリントの変更
  2. DRAMのOE/タイミングの調整
  3. PSGの制御信号の見直し
  4. PSGのBポートのコネクタ出力

 4項は初耳(初目?)だと思いますが、PSGはポート毎に入力/出力の設定ができるのでA/Bの両ポート共にコネクタに出力するようにしました。
 下図が修正した回路図になります。制御のためのコネクタ部はSIMPLE8というバスに準拠しており、Z-80等のCPUでも簡単に繋がるはずです。

修正後のSimple8Vdpsgの回路図

  ★変更 2021/09/18 Ver0.03 VDPのA9/端子をGNDに接続(修正反映漏れ^^;),C12:100pF->0pF


 回路図の変更に伴いパターン図もアップデートしました。

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



 グランドベタ化後のトップ面とボトム面のパターン図が下図になります。

Simple8Vdpsgのパターン図(トップ面)



Simple8Vdpsgのパターン図(ボトム面)



 3Ⅾ表示した図も貼っておきます。

Simple8Vdpsg基板のCADによる3D表示



 また、今回はtwitter等で話題になっているALLPCBさんに基板製造を依頼しました。
 腹周りが2mくらいあるんじゃないかと思える太っ腹なクーポンにより初回の注文は輸送費も含めて只になります(7月に只クーポン使った人は8月にも只クーポンを貰えたらしい)

 注文時の設定画面が下図でMin Spacingに関しては、今回0.3mmで設計しmil換算では 11.8 mil(=0.3/(2.54/100))なので10milを選択しました。
 今回の設計ではビアの穴径を0.42mmにしたのでMin Hole Sizeを0.4mmにしています(CPU基板(Simple8Z)の方は高密度化のために0.3mmで設計しています)

ALLPCBでPCB製造注文時の設定例



 上記の設定値と価格との関連は未確認ですが、今回は下図の最初の行の「Order Now」ボタンを押すことで、クーポンを使った只の注文ができました。
 Order Time:2021/8/28 23:17:33 で現在(8/29 14:00)のステータスは Allpcb auditing(ALLPCBで監査中)です。
 出荷予定日は Estimated Shipping Time:2021/09/01 となっています。

ALLPCBでの注文形態選択一覧



★追記 2021/09/22
 製造依頼したプリント基板は9/4に届きました。ALLPCBさんでは毎月送料込みでの無料クーポンが発行されるようで9月分も発行されました。
 また、ALLPCBさんのサイトで今回のプリント基板製造工程の時刻が結構詳しく確認できたので貼っておきます。

No.ProcessTime(GMT+8)
1 Cutting2021-08-30 T11:22
2 First Drilling2021-08-30 T12:50
3 Copper Plating2021-08-30 T18:41
4 Panel Plating2021-08-30 T22:53
5 Dry Film Coating2021-08-30 T23:30
6 Circuit Inspection2021-08-31 T00:59
7 Etching2021-08-31 T00:59
8 Etching Inspection2021-08-31 T01:07
9 Solder Mask2021-08-31 T01:08
10 Solder Mask Positioning2021-08-31 T02:13
11 Solder Mask Positioning Inspection 2021-08-31 T03:35
12 Silk Screen2021-08-31 T03:36
13 Surface Finishing2021-08-31 T07:10
14 Testing2021-08-31 T08:43
15 Profiling2021-08-31 T10:45
16 FQC2021-08-31 T13:07
17 Final Inspection2021-08-31 T13:14
18 Packing2021-08-31 T17:00


★追記 2021/09/23
 DHLでの配達記録も参考に貼っておきます。
Time Operation 2021-09-01 13:34:00 Shipment picked up 2021-09-01 16:58:00 Processed at ZHEJIANG PROVINCE-CHN 2021-09-01 17:12:00 Departed Facility in ZHEJIANG PROVINCE-CHN 2021-09-01 17:19:04 Clearance processing complete at EAST CHINA AREA-CHN 2021-09-01 19:51:00 Arrived at Sort Facility EAST CHINA AREA-CHN 2021-09-02 00:27:00 Processed at EAST CHINA AREA-CHN 2021-09-02 01:22:00 Departed Facility in EAST CHINA AREA-CHN 2021-09-02 04:10:02 Customs status updated 2021-09-02 18:30:06 Customs status updated 2021-09-03 11:24:00 Arrived at Sort Facility TOKYO-JPN 2021-09-03 12:27:00 Clearance processing complete at TOKYO-JPN 2021-09-03 13:31:00 Processed at TOKYO-JPN 2021-09-03 13:33:00 Departed Facility in TOKYO-JPN 2021-09-03 14:12:00 Arrived at Delivery Facility in YOKOHAMA-JPN 2021-09-03 14:47:00 Forwarded for delivery 2021-09-04 07:15:00 Forwarded for delivery 2021-09-04 10:08:00 Delivered - Signed for by


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

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

SuperSimpleController(その22)PSG(AY-3-8910A)の動作確認 その2 [OriginalCPU]

 前回の記事オリジナルCPU(Simple8Z)基板用に作成したサブボード(Simple8VDPSG)に実装したPSG(AY-3-8910)機能のハードディバッグ状況について書いたようにPSGが動くようになったので、今回はPSGを使って遊んでみた内容について書いてみます。

 PSG内のレジスタ構成は下表(マイクロチップ社のデータシートからの抜粋)のようになっています。レジスタ番号は8進数の表記でなので10進表記だとR0~R15の16個のレジスタがあります。

PSG register



 PSGのClock端子にはMSXと同様にVDPのCPUCLK出力(3.579545MHz)を2分周したもの(1.7897725MHz)を入れています。ロジアナで確認したクロック波形が下図になります。

PSGのクロック波形 サンプリング:100Hz



 PSG内で更に16分周した信号を各チャンネルの音程分周比レジスタ(R0~R5)に設定された値で分周した信号がトーン信号として出力されます。

 従って各音階を出力する場合のPSGの音程分周比は下表のようになります。
 表中の青色部分が4オクターブのラの音(440Hz)で、この値から指数演算(半音分が1/12乗)して下表の値を算出しています。ある行の次の行が1オクターブ高い(2倍の周波数)行になりますが、右シフト(x0.5)した値が下の行の値と一致しない場合があるのは小数点部分を四捨五入している為です。

octド#レ#ファファ#ソ#ラ#
CC# DD# E F F# GG# AA#B
10D5C0C9D0BE70B3C0A9B0A02097308EB 086B07F207800714
206AE064E05F4059E054D050104B90475043503F903C0038A
30357032702FA02CF02A70281025D023B021B01FC01E001C5
401AC0194017D016801530140012E011D010D00FE00F000E2
500D600CA00BE00B400AA00A00097008F0087007F00780071
6006B0065005F005A00550050004C004700430040003C0039


 Web上でPSGをエミュレートしているPSG Padというサイトがあり、PSGが動作するハードウェアが無くても気軽に動作を確認することができます。

 音階データの一覧表ができたので簡単な自動演奏をしてみたいと思います。
 ネット上には著作権の関係で楽譜のデータはあまりないのですが簡単移調楽譜屋というサイトでありがたいことに著作権が消滅した民謡・童謡・クラシック等の楽曲の楽譜を入手できます。その中にサイモンとガーファンクルで有名なスカボロフェアがあったので楽譜を入手しました。この曲は意外なことにイングランド民謡だったんですね。

 PSGで自動演奏しようとする際にエンベロープパターンを使ってピアノ音のようにしようと思ったのですが、エンベロープパターンは各チャンネル独立ではなく、1パターンを3チェンネルで共有しているので上手くいきません・・
 例えば、主旋律が無音時に対旋律を鳴らすと主旋律も鳴ってしまうのです^^;。

 そこで各トーンの音量をソフトで制御することにして、各チャンネルを独立したエンベロープで鳴らせるようにしました。
 今回の自作CPUにはタイマー割込み等は無いので音符長の処理内でエンベロープも処理するようにしています。

 各チャンネルで独立したエンベロープ処理ができれば、あとは音階データをPSGに流すだけで簡単に自動演奏ができます。

 スカボロフェアの演奏例を貼っておきます。今回作成したエンベロープ処理では初期音量も変更でき、この演奏例では主旋律と対旋律をそれぞれ二通りの音量(合計4種類)で制御しています。



★追記 2021/08/25
 動画付きでtwitterに投稿したメッセージを貼っておきます。
 手持ちの小型LCDモニタでは色ずれしないのにNTSC信号をキャプチャしてパソコン画面に表示すると結構色ずれしてますね・・
 中華製の超安かったキャプチャだからかなぁ~



★追記 2021/08/26
 動画を少し編集してYoutubeにアップしました。
https://www.youtube.com/watch?v=QoaBjz2VHSE



★追記 2021/08/27
 Youtubeで見つけた本物の「スカボローフェア」を貼っておきます。
 ボーカルに勝る楽器は無いということを思い知らされる気がします。すばらしぃ・・・
(中学の頃、姉が買ったサイモン&ガーファンクルのLPをよく聞いてたなぁ)

 Simon and Garfunkel - Scarborough Fair Remastered study (HQ audio)



[TOP] [ 前へ ] 連載記事 [ 次へ ]
nice!(0)  コメント(0) 
共通テーマ:趣味・カルチャー

SuperSimpleController(その21)PSG(AY-3-8910A)の動作確認 [OriginalCPU]

 前回の記事オリジナルCPU(Simple8Z)基板用に作成したVDP(TMS9918),PSG(AY-3-8910)及びシリアル通信(MC68B50)を搭載したサブボード(Simple8VDPSG)のVDP機能が動いたことを書いたので今回はPSGの動作確認についてメモしておきます。

 このPSGはVDPSG基板を10cmx10cmにした場合、空きスペースが生じるので急遽付け足した機能で、ブレッドボード上での動作は未確認な状態でプリント基板化しています。

 PSGのA9/にはHC138からのPSGSEL/(PSGセレクト信号)を入れて、CPU基板からのRD/、WR/信号をPSGSEL/とANDしてPSGのBDIRBC1に接続しています。
 BC2にはA0を接続していてどうにかなるだろうと思っていました(マニュアルをじっくり見ての検討をしていなかった^^;)

BDIRBC2BC1
 PSGRD/   A0   PSGWR/ 


 PSGのバスコントロールは下表のように柔軟な設計になっていて(かえって紛らわしい)赤枠で囲んだ状態を使用して制御しようと思いました。

PSG Bus Control Function Table



 具体的なI/Oアドレスと制御方法は下表のような想定です。

No.addressRD/WRFunction
121HRead read from PSG 
220HWrite latch address
321HWrite write to PSG


 しかし、プリント基板の電源を入れてモニタでPSGのレジスタ設定しても全く動きません(設定したレジスタ値も読めません)^^;
 PSGへのクロックやコントロール信号は想定した通りに出ています・・・

 データシートをまじめに見て確認した結果、2つの問題があることが判りました。


【問題点と対策】
  1. コントロール信号
     上記の「PSG Bus Control Function Table」を見るとBDIR,BC2,BC1が111の場合、LATCH ADDRESSの状態になります。この状態はPSGアクセス時以外でも発生するので不要なLATCH ADDRESSが発生してしまいます。

     ネット上でPSGを接続した回路例を探してみると、ほとんどの例がパラレルI/Oに接続してBUS CONTROLをソフト制御するようになっていました。しかし、回路を簡略化するためにもPSGを直接I/O命令で制御したいものです
     WR/,RD/,A0の三つの信号で制御することにするとWR/とRD/はHC138でアドレスディコードしたPSGSEL/信号とANDするのでPSGアクセス以外では変化しませんが、A0の値は常に変化します。上記の「PSG Bus Control Function Table」からINACTIVEの状態をすべて列挙すると

    No.BDIRBC2BC1Function
    1000 INACTIVE 
    2010 INACTIVE 
    3101 INACTIVE 

    となり、1,2のパターンを使ってBC2にA0を割り振るとA0はDon't careになり、PSGアクセス時以外で変化しても問題無くなります。
     PSGへのRDとWR信号をアクティブハイにすればPSGアクセス時以外では0になります。

     INACTIVE以外のBUS CONTROLを列挙したものが下表です。read/writeは1パターンしかないので下表の1,2のパターンは採用で決定で、LATCH ADDRESSは4のパターンを採用するとBDIRの値が"write to PSG"と同じになり辻褄が合うようになります。

    No.BDIRBC2BC1Function
    1011 read from PSG 
    2110 write to PSG 
    3001 latch address 
    4100 latch address 
    5111 latch address 

     結果としてPSGへのコントロール信号の接続は

    BDIRBC2BC1
     PSGWR   A0   PSGRD 

    となり、具体的なI/Oアドレスと制御方法は冒頭に書いたものと同様で下表のようになります。

    No.addressRD/WRFunction
    121HRead read from PSG 
    220HWrite latch address
    321HWrite write to PSG


  2. PSGのアクセスタイミング
     PSGへのアドレスラッチとデータ書込みタイミングを下図に示します。
     これを見るとBUS CONTROL自体が80系CPUにおける書込み信号(WR信号)でBUS CONTROLがINACTIVEに変化する際にDATAバス上のデータを取り込むようです。
     しかし現状の回路ではBUS CONTROLがINACTIVEになった時点でDATAバス上のデータも変化してしまいます。


    PSG Latch Address Timing


    PSG Write Data Timing


     対処としてはPSGSEL/に接続していたPSGのA9/をGNDへ接続するように変更し、「SuperSimpleController(その20)TMS9918Aの接続 その5」の記事で対処したR1レジスタでアドレス指定するI/Oライト命令を使うことでBUS CONTROLがINACTIVEになった後も1クロック分、データバス上の書込みデータが保持されるようになります。

     以上の対処により、PSGのレジスタへの書込み/読込みができるようになり、トーン音やノイズ音が出力可能になりました。


【プリント基板の改造】

 上記内容で改造したプリント基板の写真を貼っておきます。

 最初に改造後のプリント基板のトップ面です。PSGはなんとGI社製です。最初はAlliexpressさんから購入した超安価@65円(送料別)を使っていましたが、動かなかったので40年程前に作った基板から抜き取り差し換えています。
 上記の改造後はAlliexpressさんから購入したマイクロチップ社製のもの(本物かどうかは疑わしい)でも動作しました。
 未使用のゲートの入力ピンは両面でベタグランドにサーマルパッドで4点接続されているのでICのピンを折り曲げて丸ピンソケットで接続しています。

VDPSG基板トップ面



 改造後のVDPSG基板のボトム面が下の写真です。今回はPSG部分をブレッドボードで確認せずにプリント基板にしたので結構ジャンパー線が飛び交っています。
 PSGRD/とPSGWR/を反転して正論理にする際に、未使用のインバータ(HCT04)が1個しかなかったのでDRAMのリード信号のタイミング調整用に使っていた2個のインバータを未使用のアンドゲート(HC32)と入れ替えたことがジャンパー線が多くなった要因の一つです。

VDPSG基板ボトム面



 上記のGI社製PSGを抜き取った基板もおまけに貼っておきます。

昔作ったPSG基板



 抜き取ったGI社製PSG(40年程前に亜土電子で購入したもの)の写真も貼っておきます。

GI社製PSG



 Alliexpressさんから購入した格安PSGの写真も・・・

MicroChip社製PSG




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

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