忍者ブログ

yoshikiyo Lab

自称makerのブログ。電子工作とかテスラコイルとか 「とりあえず動けばいい」そんな適当すぎるものづくりをしています。

   
カテゴリー「マイコン」の記事一覧

Z80モニタインターフェース2

Z80ワンボードマイコンに接続する入出力インターフェースを製作しました。
このモニタインターフェースとモニタソフトを利用することで
RAM領域の読み書きや任意のROMアドレスからのソフトウェアの実行が可能になりました。


〇Z80モニタインターフェースのブロック図です。

ワンチップマイコンで構成してしまえば簡単にインターフェース回路を構築できますが
できるだけ当時(80年から90年前半)存在していた部品で回路を構成します。
参考にしたオリジナル回路には現在では廃止となっている部品が使用されていたため
廃止部品を現存するロジックICで置き換えて回路を構成しました。

〇ディスプレイ・スイッチコントローラ

ディスプレイ・スイッチコントローラ「UPD8279」を採用し回路を簡略化しています。
7セグのダイナミック点灯やスイッチ入力の処理を内部のハードウェアで行います。
今でも若松通商青丹通商で入手可能です。

ディスプレイ・スイッチコントローラ「UPD8279」の内部ブロックです。


〇駆動電流
Z80ワンボードマイコン+Z80モニタインターフェース接続時の電流
Z80、UPD8279どちらもTTL ICなのでしょうがないですね...


〇保護パネル
ディスプレイと部品の保護のために保護プレートを製作


CNCでアクリルパネルを切削


Z80ワンボードマイコンとモニタインターフェースへの取付


余っていたアクリル板を使用したら片方はピンクエッジタイプでした。


モニタソフトのソースコード
某工業高校で使用されていた教育用ボードのソフトウェアを参考にしています。
MONITOR.asm

拍手[0回]

PR

Z80モニタインターフェース

Z80ワンボードマイコンに接続できるインターフェースボードを製作しました。
これでRAM領域の読み書きや任意のROMアドレスからのソフトウェアの実行が可能になりました。


動作している様子
ROM2(アドレス0x4000~)からLEDをカウントアップするソフトを起動


RAM(ドレス0x8000)へ機械語「0x76」を書き込み→実行
機械語「0x76」はHalt命令にあたるのでHalt信号が出力され赤色LEDが点灯する。


詳細は資料が完成してからまとめたいと思います。

拍手[0回]

ROMライター

Z80ワンボードマイコンを作ってみました。
このワンボードマイコンはROMからプログラムをロードして動作します。
単体のUV-EPROMやEEPROMが必要です。

UV-EPROMは書き込み回数が20回程度と少ないためEEPROMも用意しました。
EEPROMであれば書き込み回数を気にすることなくプログラムの書き換えを行えます。

UV-EPROM「MBM27C64」


EEPROM「UPD28C64」



UV-EPROM or EEPROMにマシン言を書き込める装置が必要になります。
ROMライターとして市販されています。

要は、ROMの書き込みシーケンスに従ってデータを書き込めれば良いわけなので
ワンチップマイコンを使用してROMライターを作ってみました。

ハードウェア構成は以下のようになりました。


H8の外部バスにROMを接続しただけです。
あとは、UV-EPROM用に12Vと21Vの書き込み電源を用意してあります。


外部バス経由で簡単に着込めばよいと考えていましたが.....
UV-EPROMは書き込み速度が遅く高速なバスでは制御ができないことが分かりました。
外部バスにつなげてはありますが、結局ピン設定をIOにしてソフトウェア制御しています。

UV-EPROMの消去は殺菌灯を組み込んだポータブル蛍光灯を使っています。
15~20分程度でROM内容を消去することができます。


ちなみにカバーの透明板を外さないと全く消去ができません。
消去に有効な波長400nm以下の紫外線が吸収されてしまうようです。

拍手[0回]

Z80開発環境構築

80の開発環境の構築について

Z80のソフトウェア開発はアセンブリ言語を用いて行います。
アセンブリ言語(単純にアセンブラと呼ばれることのほうが多い)は、
コンピュータが理解できるマシン語を人間がわかりやすいように記述したものです。
したがってアセンブリ言語からマシン語への変換作業が必要になります。

手作業でマシン語に変換する「ハンド・アセンブル」という手法もありますが
非常にめんどくさいので「Z80アセンブラ」を使用してこの作業を自動化します。

書き込みまでの流れ
------------------------------------------------------------------
アセンブリ言語記述

アセンブラ(ハンド・アセンブルでもOK)

マシン語

HEXファイル(ROMライターによる。なくてもOK)

ROMライター

ROM化
------------------------------------------------------------------

アセンブラにはASxxxx Cross Assemblersを使用します。
HPトップ下のほうの「Get the "ASxxxx Cross Assemblers"」


実行ファイルだけあればよいので「Executables Only Distributions」から
「VS 2015 executables as a zipped file (7353K)」をダウンロード
windows10環境なので、できるだけ新しいVSでコンパイルされたものを選択


ダウンロードしたファイルは解凍して適当な場所に保存しておきます。
様々なCPUに対応したアセンブラがまとめて圧縮されています。
この中で必要なのは「asez80.exe」と「aslink.exe」だけです。
「asez80.exe」がアセンブラ本体で「aslink.exe」はHEXファイルを作るときに必要です。


ASxxxxアセンブラはコンソールアプリケーションなのでコマンドプロンプトから
引数をセットして使用します。


これだと何度もアセンブルする場合に大変なのでバッチファイルを作成して
「TeraPad」に組み込んで開いたファイルを直接アセンブルできるようにしています。


「asez80.exe」を起動するバッチファイルを作成して
そのバッチファイルを「TeraPad」から起動するという流れです。
バッチファイル


「TeraPad」へツール登録


アセンブラを実行するといくつかのファイルが生成されます。
.lstファイルの中身を見てみます。赤枠部分にアドレスとマシン語が記載されています。
正常にアセンブルできていることがわかります。


ソースコードにエラーがある場合はエラー行のメッセージが出力されます。
この出力ファイルを「aslink.exe」に与えることでHEXファイルを生成することもできます。
とりあえずアドレスとマシン語がわかれば何とかなるのでこれで終了です。
ROMライター側がまだ HEXファイル形式に対応していないので.......

今回は「TeraPad」と組み合わせましたが
「TeraPad」だとアセンブリ言語にシンタックスハイライトがつかないので
ほかのエディタに統合して使ったほうがよさそうです。

結局ソースファイルの編集は「Visual Studio Code」使っていますし....
こっちはアドオンを入れることで色分けしてくれます。

拍手[0回]

Z80ワンボードマイコンを作ってみた

有名なZ80CPUを使ってワンボードマイコンを作ってしまいました。


Z80ワンボードマイコンのブロック図です。

Z80を最低限動作させるために必要な回路とROMのほかに
RAM,PIO,CTCが1枚の基板上に構成されています。

Z80ワンボードマイコンのメモリマップ


〇CPU

CPUにはZ80を採用しています。ただしオリジナルのZ80は入手できなかったのでシャープが販売していたZ80セカンドソース品の「LH0080A」を使いました。

〇ROM,RAM

Z80の64kBあるメモリ空間をすべて利用できるように設計しました。
ROMはROM1とROM2に分けています。
各16kBとしてアドレスレコーダによりチップセレクト信号を生成しています。
これはROM1にモニタソフトを入れようと考えているためです。
インターフェースボードを作成してTK80のようにボード単体でソフトウェアを作成できるようにする予定があります。

RAMはZ80のRAM領域32kBすべてを使用しています。

〇パラレルI/O

8255を使って24bit分のパラレルIOポートを設けました。
オリジナルの8255はTTL出力ですが今回はCMOS出力の「D71055C」を使っています。
CMOS出力のほうが何かと接続しやすいので.....

〇CTC
タイマーとしてZ80CTCを使いました。
8bitタイマーが三つ入ったシャープ製「LH0082A」を使っています。

Lチカ成功しました。


回路図




Lチカのソースコード
TEST0.asm

LEDをカウントアップして
一定時間経過すると今度は入力のテストに移行します。

拍手[0回]

最新コメント

[08/21 coiler]
[08/21 yoshikiyo]
[08/21 coiler]
[08/20 yoshikiyo]
[08/20 coiler]

カレンダー

05 2019/06 07
S M T W T F S
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30

ブログ内検索

カウンター

Copyright ©  -- yoshikiyo Lab --  All Rights Reserved
Design by CriCri / Photo by Geralt / powered by NINJA TOOLS / 忍者ブログ / [PR]