超小型Z80マイコン(その6)制御信号兼用の問題 [Z80]
前回の記事から時間が空いてしまいましたがメモの意味も兼ねて状況を書いて置きたいと思います。
今回は USB 機能を搭載した 20 ピンの PIC(PIC18F14K50)を使用しているため I/O 数が非常に少なく「超小型Z80マイコン(その1)USBシリアル対応とピンアサイン」の記事に書いたように超ケチケチ設計で 1 ビットの制御信号で複数の制御を行っていたりします。
このため I/O 数に余裕があり専用の制御を行っていればなんら問題にならないような部分でも色々問題が発生してしまいます。今回は 2 つの問題について解決方法も含めてメモとして書き残しておきます。
以上の対処で SD カードを物理的に接続した状態でも Z80 が安定して動作するようになりました。
次は SD カードのアクセスですが、今回使用している PIC(PIC18F14K50)は汎用メモリと特殊機能レジスタ及び USB 用のデュアルポートRAMの合計で 768 バイトしかなく、SD カードのセクタ長が 512 バイト固定なので USB 送受信用のバッファを SD 用のバッファに切替えながら使う必要があります。このようにメモリに関してもキツキツの状態であり、お楽しみ要素が豊富にありますw
[TOP] [ 前へ ] 連載記事一覧 [ 次へ ]
今回は USB 機能を搭載した 20 ピンの PIC(PIC18F14K50)を使用しているため I/O 数が非常に少なく「超小型Z80マイコン(その1)USBシリアル対応とピンアサイン」の記事に書いたように超ケチケチ設計で 1 ビットの制御信号で複数の制御を行っていたりします。
Z80PicCompact ピンアサイン(再掲) |
|
このため I/O 数に余裕があり専用の制御を行っていればなんら問題にならないような部分でも色々問題が発生してしまいます。今回は 2 つの問題について解決方法も含めてメモとして書き残しておきます。
- SDI 接続後の問題
Z80 へのリセット信号を生成する時のみ、PIC 側が出力ポートに変更して、5V 駆動によりトランジスタが ON になるように 3V のツェナーダイオードを使用する予定でした。
しかし、3.3V にプルアップした SDI を接続するだけで RESET/ がアクティブになってしまいました。シミュレータで確認したところ、下図のように 4.7V のツェナーでさえ 2.5V 程度でトランジスタが ON になってしまいます。
ツェナーダイオードの挙動
ツェナーの特性は下図の例のようにツェナー電圧より数ボルト程度低い電圧でも少量の電流は流れるのでトランジスタが ON してしまいます。特にツェナー電圧が低い場合にはこの現象は顕著に表れるので注意が必要です。
ツェナーダイオードの特性例
対策として下図のようにベース電圧を抵抗で分圧して与える方式に変更し、3.8V くらいでトランジスタが ON するようにしました。
変更後のリセット生成回路のシミュレーション結果
リセット信号発生部の回路図も貼っておきます。
対処後のリセット信号発生部の回路
- SDCS/ 接続後の問題
SDCS/ を接続する RB7 は上記のピンアサインの表に示すように IORQ/ と WAIT/ にも接続されています。SDCS/ は 3.3V 制御の SD カード側とインターフェースを取るために ショットキーバリアダイオードを介して 3.3V にプルアップしています。この為、IORQ/ で WAIT/ をアクティブにする際のディレーが大きくなり下図の赤丸印部分のように稀に IORQ/ による wait が入らず wait から直ぐに抜けて( I/O 命令では自動的に wait が 1 サイクル入る)暴走してしまう現象が発生しました。
SDCS 接続後の問題
対処として IORQ/ と接続している抵抗の値を 1K から 510 に変更することで安定に動作するようになりました。小さすぎる気もしますが PIC 側との競合は瞬間的なので問題無いと思います。
以上の対処で SD カードを物理的に接続した状態でも Z80 が安定して動作するようになりました。
次は SD カードのアクセスですが、今回使用している PIC(PIC18F14K50)は汎用メモリと特殊機能レジスタ及び USB 用のデュアルポートRAMの合計で 768 バイトしかなく、SD カードのセクタ長が 512 バイト固定なので USB 送受信用のバッファを SD 用のバッファに切替えながら使う必要があります。このようにメモリに関してもキツキツの状態であり、お楽しみ要素が豊富にありますw
[TOP] [ 前へ ] 連載記事一覧 [ 次へ ]
コメント 0