パチパチマイコンを作ろう!(その1)
さて,かなり間が空いてしまいましたが,Z80 を使ったコンピュータを作っていこうと思います。
いきなり部品点数の多いものを作るのも面白そうですが,完成までの時間がかかるし,頓挫する可能性が大きい(よくある)ので,まずは最小限の構成でワンボードコンピュータっぽいものを作ろうと思います。
メモリ構成について
メモリは,SRAM 一個です。RAM なので,最初はメモリ内容が未定義です。
CPUを起動するために,メモリにプログラムを書きこむ必要があります。
そのプログラム書き込みですが,外部メディアからファイルをロード…とかではなく,Z80 のマシンコードを 1 バイトずつスイッチで手入力します。
1 バイトは 8bit ですが,8 個のトグルスイッチで,1bit ずつ指定して,書き込みボタンで SRAM に対して書き込みます。
アドレスもトグルスイッチで指定しますが,さすがに手で入力できるプログラムのサイズも限界があるので,アドレスも 8bit,つまりメモリサイズは 256 バイトにします。
ワークエリアやスタックエリアはデータ入力する必要がないので,この 256 バイトとは別に割り当ててもいいのですが,簡略化するため,これらもすべてひっくるめて 256 バイトに入れてしまいます。
アドレス,データともにトグルスイッチでパチパチ指定するので「パチパチマイコン」ですね。
データ入力はダイレクトメモリアクセス
データはメモリにトグルスイッチで書きこむため,Z80 との間でバスの競合が起こります。この辺は前回簡単に説明しました。
データをスイッチで書きこむときには,Z80 に対してバスを解放するように要求します。
/BUSRQ 信号を ローにすると,現在の命令が終了したところで,Z80 が /BUSAK を H レベルから L レベルにします。これが確認できたら,Z80 がバスを解放したことになりますので,バスを自由に使えるようになります。
このように,CPU を介さずに,直接メモリアクセスすることをダイレクトメモリアクセス(DMA)と言います。一般的には,こんな原始的なアクセス方法ではなく,DMA コントローラと呼ばれるものによってメモリ転送することで知られています。
こんな原始的なアクセス方法でも,データをスイッチで入力している間は,CPUからバスを奪ったままになっているので,DMA における「バースト転送モード」と言えるのかな?
入出力は外部コネクタで
コンピュータと言っても,何かしらの入出力が無いと,プログラムの動作結果を確認することができません。
ただ,今回作成するワンボードマイコンもどきに入出力の回路まで入れてしまうと複雑になってしまうので,I/O の信号をコネクタに出しておいて,後で別基板で作ろうと思います。
ということで,次回から制作記事に入り…たいなぁ…。
“パチパチマイコンを作ろう!(その1)” に対して2件のコメントがあります。