SSブログ
English Version

超小型Z80マイコン(その10)確認用基板作成 [Z80]

 前回の記事で書いたパターン図でプリンタと基板の製造を依頼したものが届きました。
 しかし、TF(SD or MMC、以降TF と記す)カードソケットの位置が微妙に Z80 のソケットのピンに干渉するのでカプトンテープで保護しながら組み立ててみましたが CP/M は立ち上がらず、Z80 からのメッセージ出力する部分まで動いていない様子でしたorz
 プリント基板の Z80 用ソケットに接続するような信号モニタ用のヘッダピン付き基板を汎用基板で作ろうかとも思いましたが、SMD 部品搭載の基板で部品交換や配線変更をするのは効率が悪そうだったので汎用基板で試験ボードを作成することにしました。

 今回の配線作業では「ワイヤリングペンの作成」の記事で書いたワイヤリングペンが大活躍しました(と言うか作ったばかりのワイヤリングペンを使ってみたかったw)
 従来からやっていたラッピングワイヤーを使って手半田する場合と比較して被覆を剥く作業が無い分、効率的ですがブレッドボードの5倍位は時間がかかります。
 自作のワイヤリングペンはワイヤ固定ボタンも上手く動作し、特に改善箇所は見当たりませんでした(しいて言えば固定ボタン部分は色を変えて判り易くした方がいい)。

 完成した試験ボードに USB ケーブルを接続すると上記のプリント基板のような状態です(まだ信号確認等はしていないので全く同じ状態なのかは未確認)。しかし、今までの使い回しのブレッドボードよりは安定しているはずなので CP/M が立ち上らない原因を安定した環境で調査できるはずです。

 組み上げた基板の写真も貼っておきます。秋月さんの両面スルホール B タイプの基板を使い Z80 と PIC の各ピンには信号確認し易い様にピンヘッダを付けました。

Z80PicCompact開発用基板(部品面)


 半田面は下の写真のようにウレタン線で配線しています。コンデンサとショットキーバリアダイオードは表面実装タイプのものを使い半田面に実装しています。

Z80PicCompact開発用基板(半田面)


 今回は半田面で配線しているのでボトムビューでのピンに慣れていないため、IC の端からのピン数を数えて確認したりしましたが、基板の半田面に IC のボトムビューを貼った方が効率的だったかなぁ~と思います。

 また、配線は束になると結構出っ張るので保護するために簡易的な保護ケースを作成しました。

Z80PicCompact開発用基板の保護ケース( CAD 画面)


 簡易ケースに入れた基板の写真も貼っておきます。

Z80PicCompact開発用基板(保護ケースに格納した状態)



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



nice!(0)  コメント(0) 

ワイヤリングペンの作成 [3D_printer]

 新規に回路を設計する場合はブレッドボードで確認後にプリント基板化してきました。
 しかし、「超小型Z80マイコン(その9)回路図とパターン設計」の記事にも書いたように使い回したブレッドボードでは不安定な場合もあり、電源の電圧降下も結構生じるので(ブレッドボードの接点の酸化やジャンパー線の断線などによるものと推測)、汎用基板による評価環境も整えておこうかと思います。

 今まで汎用基板での配線はラッピングワイヤーを使って部品面に配線して半田付けしていましたが ウレタン線での半田面での配線&半田付けも手軽なので急に思い立ちワイヤリングペンを作成してみました。

 CAD(DesignSparkMechanical)で設計したものが下図になります。持ち易さを考慮して少し太めにしました。先端には以前プリント基板のスルホールの作成検討用に購入した外径1mm、内径0.6mmの真鍮パイプを装着しました。
 先端の横にあるボタンはワイヤー固定用のものでこのボタンを押すとワイヤーが固定され引っ張っても出てこなくなります。このボタンの操作に関しては押した際に固定かフリーなのか少し悩みましたが日常生活においては多くの場合「力を入れると固定される」なのでそれに合わせました。

ワイヤリングペン設計のCAD画面(その1)


 また、ウレタン線を交換する際はペン先までワイヤーを通す必要があるので、先端の固定はネジ方式を採用し取り外せるようにしてみました。

ワイヤリングペン設計のCAD画面(その2)


★追記 2022/12/27 {
 ボタンなどの構造が判り易い様に 断面図を追加しました

ワイヤリングペン設計の断面図
}

 3Dプリンタで出力し、先端に真鍮パイプを取り付けた状態が下の写真です。

組立後のワイヤリングペン


 ワイヤー固定ボタンの部分は再考の余地がありそうですが、とりあえずのこの状態で使ってみて問題があったら改善したいと思います。

 尚、STLファイルは下記からダウンロード可能です。商用目的以外であれば使用可能とします。

[history]
*Ver 0.02 2022/12/28 スプリングパーツを10度開いた状態に変更


[TOP] [ 前へ ] 連載記事一覧 [ 次へ ]
nice!(1)  コメント(0) 

超小型Z80マイコン(その9)回路図とパターン設計 [Z80]

 20 ピンの USB 対応の PIC(PIC18F14K50)を使った 3 チップ構成の小型 Z80 基板を引き続き検討中です。
 前回の記事の最後に追記したように HexLoader で CP/M の IPL を実行することで CP/M が動作するようになりました。その後、ソフトウェアによるタイミング調整により CP/M が安定して動くようになりました。
 使いまわしているブレッドボードとジャンパーワイヤを使用しているためか、まだ不安定になる時もありますがプリント基板にすることで安定化するのではないかと思います(安定している時は割合長い間安定しているので原因はソフトウェアでは無いと思う)。ブレッドボード用の接点復活剤のようなものがあればいいのにねw

 今回は小型化のためにピン数の少ない PIC を使用したので I/O 数が圧倒的に不足し、殆どの I/O で制御を兼用しており、予期せぬ問題が発生し、色々楽しめました。
 RB7 に至っては WAIT/ 信号の出力、IORQ/ 信号の読み取り及び TF(SD or MMC、以降 TF と記す)カードのセレクト信号出力の3つの機能を兼用しています。
 TF カードのセレクト時は TF カード用のクロックの不要な立上りエッジを発生してはいけないのですが、クロック発生用の制御信号は Z80 のアドレス(A0)読込みと兼用しており、Z80 が WAIT 中(= TF カードセレクト中)はクロックの立下りだけを発生することで TF カードのアクセスに影響しないようにできたので、今回の制御信号は絶妙な割り振りだったのではないでしょうか?

 今回の開発では初回の記事である「超小型Z80マイコン(その1)USBシリアル対応とピンアサイン」で書いたピンアサインの検討時に考えたシナリオ通りに進められましたが、最大の不安要素は上記のクロックでした。動作しない場合は水晶発振子を active 発振のものに変更して PIC の CLKOUT(3ピン)を TF カードのセレクト信号専用にアサインすることも考えていました。

 下図が PIC(PIC18F14K50)の現時点でのメモリ使用量です。

PIC のメモリ使用量


 PIC 側で TF カードのアクセス用に 512 Bytes のバッファを確保したかったのですが、グローバル変数を追加しなくても関数の数が増えるだけでデータメモリの消費量が増加してしまうのでバッファサイズは 128 Bytes のままにしています。このため CP/M の BIOS で Blocking/Deblocking の処理の実装ができず、TF カードのアクセスが若干遅く感じます(昔の FD に比べれば十分に速いですが)。
 動作試験として HITECH C で ASCIIART をコンパイルして動作させましたが問題無く実行できました。Twitterに動画付きコメントをアップしていますので興味があれば見てください。

 漸く安定して動作するようになったので回路図を貼っておきます。
  • Z80(Z84C0010PEC) 12MHz 40 Pin(Z84C020PECを実装)
  • PIC(PIC18F14K50) 48MHz 20 Pin
  • Memory 128KB(CY62128) 32 Pin

の 3 チップ構成です。

Z80PicCompact 回路図


 下図がトップ面とボトム面を合わせたパターン図です。黄緑色の部分はグランドになります。 基板のサイズを Z80 の 40 ピンの DIP に合わせたため、トラックは少々込み合っています。

Z80PicCompact パターン図(グランドベタ化前のトップ面とボトム面)


 グランドベタ化後のトップ面のパターンが下図になります。左端に USB コネクタ(Mini-B)を配置しました。中央左の IC3 はメモリです。

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


 下図はボトム面のパターンです。中央に PIC を配置し、右端に TF カードコネクタを設けました。

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


 プリント基板設計 CAD の DesignSparkPCB で表示した3D画面も貼っておきます。40 Pin の DIP パッケージが Z80 で左端は USB コネクタですがピンヘッダのように描画されてしまっています。
 USB 対応の PIC を使用しているので USB ケーブルを接続するだけで CP/M が立ち上り、パソコン側との通信も爆速です。「Pic24MC68Kマイコン(その7)CP/M-68Kの移植」の記事で 64 Pin の MC68HC000 のチップサイズで USB ケーブル接続のみで CP/M-68K が起動する Pic24MC68K の開発について書きましたが、今回やりたかったのはまさにこれの Z80 版なのです。

Z80PicCompact 3D表示(トップ面)


 下図は Z80 を除いた3D表示です。

Z80PicCompact 3D表示(トップ面 Z80 除外)


 下図がボトム面の3D表示です。中央左の小さな黒い四角のチップは表面実装タイプの水晶発振子です。右端の朱色の細長い直方体は PIC 書込み用のピンヘッダ(穴のみで実装はしない)で、その左側の朱色の四角は 3.3V のレギュレータです。

Z80PicCompact 3D表示(ボトム面)



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

nice!(0)  コメント(0) 

超小型Z80マイコン(その8)メモリカードエラーの調査 [Z80]

 20 ピンの USB 対応の PIC を使った 3 チップ構成の小型 Z80 基板を引き続き検討中です。前回の記事で書いた TF(SD) カードの読み書きでのエラーの原因について調査したのでメモを残しておきます。今まではロジアナで SPI 信号を確認していましたが、今回は信号の波形をオシロで確認してみました。

 下図は初期化処理で最初に発行する CMD0 の波形例で、クロック周波数は 400KHz で 8GB の TF カードで試験しています。
 各信号は、1(黄色):SDCS/、2(水色):SDCK、3(紫):SDO、4(緑):SDI です。

CMD0 コマンドとその応答


 次に発行するコマンドの CMD8 も含めた波形が下図になります。

CMD0 と CMD8 コマンドの波形


 TF の出力である SDI(緑)のレベルが段々低くなっているので USB から給電されている 5V からレギュレータで作っている 3.3V 電源の電圧が低下するようです。

 今回は 20 ピンの PIC(PIC18F14K50)を使用し、I/O 数が少ないため I/O を兼用して制御していることもあり、TF エラーの原因を切り分けるために PIC と TF のみの構成で安定化電源からの 3.3V 給電で動く環境をブレッドボードで作成し確認して見ました。

 その結果、TF のリードもライトも問題無く実行できたので SPI 関連の設定等は問題無さそうです。
 SPI の信号自体は問題無いことが判ったので元々のブレッドボードの環境で USB からの 5V 給電はやめて、安定化電源から 5V を給電するようにしました。更に TF カードの電源直下に 10uF のセラコンを追加しました(これが結構効果があったようです)

 結果として TF カードの読み書きができるようになりました。
 CMD0 と CMD8 の波形が下図で TF カードの出力である SDI の信号の電圧低下も発生していません。CMD0 の先頭からレスポンス直前までの SDI のハイレベルが若干低くなっていますが、TF 側がレスポンス出力直前までは SDI が High 出力状態(この時点では SPI モードになっていない)でレスポンス出力時にオープンコレクタの状態になるのではないかと推測しています。SDI はプルアップが必須なので今回は 4.7K でプルアップしています。尚、安定化電源の出力電流は 119mA 程度でした。

安定化電源からの給電時の CMD0 と CMD8 コマンドの波形

CMD0 と CMD8 コマンドのロジアナ波形(サンプリング:32MHz)


 ロジアナで確認したライト時とリード時の波形も貼っておきます。初期化後にクロックを 400KHz から 2MHz に変更しています。

 下図はブロックライト後にブロックリードした際のロジアナ波形です。

ブロックライト&リード時のロジアナ波形例(サンプリング:32MHz)


 下図はライト時のコマンド(CMD24)の最初の部分の拡大波形です。

CMD24 の先頭部分のロジアナ波形例(サンプリング:32MHz)


 下図はブロックライト時のデータ送信部分のロジアナ波形です。

CMD24 でブロックライト時のデータ送信部分の拡大波形(サンプリング:32MHz)


 CMD17 でブロックリード時のデータ受信部分の拡大波形が下図になります。

CMD17 でブロックリード時のデータ受信部分の拡大波形(サンプリング:32MHz)


 最後に上記の PIC と TF カードだけの環境で 512MB と 128MB カードで実験を行った結果をメモしておきます。
 初期化処理に関しては意外なことに従来通りの CMD0、CMD8、CMD55、CMD41、CMD58 を使った初期化も通りました。
 試しに CMD0 と CMD1 での初期化もやってみましたがこれも通りました。CMD1 ではレスポンスが 0x00 になるまでリトライするようにしています。
 ソフト的には CMD8 で無応答の場合は CMD1 で初期化するように追加しておきました。

 CMD8 の応答は 128MB/256MB 共に 80 ff 80 00 で(8GB カードでは最初が 0xC0 )、ネット情報によれば、最初のデータの 0x40 のビットは SDHC の時に立つ bit です。

 ブロックリード/ライトに関して、128MB のカードではレスポンスが 0x20 (アドレスエラー)になり、CMD16 でブロックサイズを 512 に指定しても変化はありませんでした。

 256MB のカードに関しては ブロックライトは OK でしたが ブロックリードは最初のみ OK で、ライト後のリードやリード後のリードではトークン応答が無い現象が発生し、今回は原因究明までは行っていません。

 512MB カードでのロジアナ波形も貼っておきます。

512MB カードでの CMD1 波形(サンプリング:32MHz)


512MB カードでの CMD24(ライト)波形(サンプリング:32MHz)


512MB カードでの CMD17(リード)の OK 時の波形(サンプリング:32MHz)


512MB カードでの CMD17(リード)の 無トークン時の波形(サンプリング:32MHz)



★追記 2022/12/15
 Hex ローダーで IPL をロードすることで CP/M の起動に成功しました。
 使い回しのブレッドボードやジャンパーワイヤを使用していることもあり、配線に触ったりすると状態が変化してしまいます。
 最近はプリント基板を安く作れるので、評価用のプリント基板を作るか悩み中です。
 twitter に投稿した動画付きのコメントで CP/M 起動時の様子を動画で見れます。

CP/M 起動画面





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

nice!(0)  コメント(0)