Pic24MC68Kマイコン(その7)CP/M-68Kの移植 [68K]
前回の記事でプリント基板に部品を実装して動作確認ができたことを書きましたが、回路図をまだブログに書いていなかったことに気が付きましたw
順番が前後してしまいますが回路図は下図になります。自作の回路なのでいつものように使用部品を最小限にするように考慮しました。
MC68HC000(MC68000のCMOS版)とPIC24FJ64GAを連携させるためには
スペックの概要としては MC68HC000 が 16MHz で動作(ジャンパーピンで 8MHz に切り替え可能)し、メモリは 512K x 16bit 実装しているので、小ぶりながらなかなかの高スペックです。
具体的な回路図は下図になります(クリックでPDF表示になります)
下図がグランドベタ化前の両面のパターン図です。今回は表面実装部品を多用して基板サイズを MC68000 の 64 ピンの DIP サイズにまとめたのでトラックは少々混みあっています。
グランドベタ化後のトップ面のパターンが下図になります。MC68000チップの下にメモリ(AS6C8016:512K x 16bit)とバッファICなどを実装しています。メモリは 5V 対応の 8M のスタティックRAM で、1カ月ちょっと前に購入したものですが、予備として追加購入しようと通販サイトを見たところ、2倍以上に値上がりしていて驚きました。
ボトム面には PIC と USBシリアル変換用IC(PL2303SA)、USBコネクタ、SDカードコネクタ等を実装しています。USB ケーブルを直に接続できるというのは結構便利です。
3D 表示の図も貼っておきます。
ボトム面の 3D 表示は下図になります。
CP/M-68Kは以前 MC68008 を使って自作した Pic24CPM-68K のプリント基板を作った時に移植済みだったので、今回は CP/M-68K の環境を使って割合すんなり移植できました。
68K は A0 のアドレス線が無く、上位バイトが偶数アドレスで下位バイトにはその次の奇数アドレスが振られている(ビッグエンディアンなのでまっとうな割り振りだと思う)のですが、PIC 側は 16bit に一つのアドレスなのでアドレスの値は MC68K の 1/2 になります。
更に ワード単位では MC68K と PIC は同じデータですが PIC 内でワードからバイトに変換する際に逆になる(PICはリトルエンディアンなので)ので頭が少し混乱しますw
SD カードとのインターフェースである SPI はバイト単位でしかアクセスできないので PIC内で上位/下位バイトを交換後、外部メモリをワードアクセスする必要があります。
PIC 側の PMP機能でバイトイネーブル信号の論理を逆にすれば、PIC 内でのバイト/ワード変換時の並び替えは不要になるのですが、この場合、PIC の上位バイトはメモリの下位バイトに書かれることになり、更に頭が混乱してバグの元になりそうだったので止めましたw
CP/M-68K を自動起動に設定し、リセットボタンを押下して CP/M-68K が立ち上った際の画面キャプチャが下図になります。
★追記 2022/02/10
「TRY! CPM-68Kの巻き」のサイトに SD カード上での hello.c のコンパイルに時間が掛かるというようなことが書いてあったので実測してみた結果をメモしておきます。
因みに、PIC 側のソフトウェアは自作の picle コンパイラで開発しており、SPI 機能を含め、C言語のライブラリは一切使用していません。
★追記 2022/02/19
今回開発した MC68K のチップサイズと同程度のサイズのプリント基板をイメージし易いように、twitterに投稿した動画付きメッセージを貼っておきます。
★追記 2022/03/18
Twitterに投稿した動画にプリント基板の写真などを追加して Youtube で公開しました。
[TOP] [ 前へ ] 連載記事 [ 次へ ]
順番が前後してしまいますが回路図は下図になります。自作の回路なのでいつものように使用部品を最小限にするように考慮しました。
MC68HC000(MC68000のCMOS版)とPIC24FJ64GAを連携させるためには
- スリーステートバッファ
- 反転ゲート
- ANDゲート
スペックの概要としては MC68HC000 が 16MHz で動作(ジャンパーピンで 8MHz に切り替え可能)し、メモリは 512K x 16bit 実装しているので、小ぶりながらなかなかの高スペックです。
具体的な回路図は下図になります(クリックでPDF表示になります)
Pic24MC68K回路図 |
|
下図がグランドベタ化前の両面のパターン図です。今回は表面実装部品を多用して基板サイズを MC68000 の 64 ピンの DIP サイズにまとめたのでトラックは少々混みあっています。
Pic24MC68Kのパターン(グランドベタ化前) |
|
グランドベタ化後のトップ面のパターンが下図になります。MC68000チップの下にメモリ(AS6C8016:512K x 16bit)とバッファICなどを実装しています。メモリは 5V 対応の 8M のスタティックRAM で、1カ月ちょっと前に購入したものですが、予備として追加購入しようと通販サイトを見たところ、2倍以上に値上がりしていて驚きました。
Pic24MC68Kのパターン(トップ面) |
|
ボトム面には PIC と USBシリアル変換用IC(PL2303SA)、USBコネクタ、SDカードコネクタ等を実装しています。USB ケーブルを直に接続できるというのは結構便利です。
Pic24MC68Kのパターン(ボトム面) |
|
3D 表示の図も貼っておきます。
Pic24MC68Kの 3D 表示(トップ面) |
|
ボトム面の 3D 表示は下図になります。
Pic24MC68Kの 3D 表示(ボトム面) |
|
CP/M-68Kは以前 MC68008 を使って自作した Pic24CPM-68K のプリント基板を作った時に移植済みだったので、今回は CP/M-68K の環境を使って割合すんなり移植できました。
68K は A0 のアドレス線が無く、上位バイトが偶数アドレスで下位バイトにはその次の奇数アドレスが振られている(ビッグエンディアンなのでまっとうな割り振りだと思う)のですが、PIC 側は 16bit に一つのアドレスなのでアドレスの値は MC68K の 1/2 になります。
更に ワード単位では MC68K と PIC は同じデータですが PIC 内でワードからバイトに変換する際に逆になる(PICはリトルエンディアンなので)ので頭が少し混乱しますw
SD カードとのインターフェースである SPI はバイト単位でしかアクセスできないので PIC内で上位/下位バイトを交換後、外部メモリをワードアクセスする必要があります。
PIC 側の PMP機能でバイトイネーブル信号の論理を逆にすれば、PIC 内でのバイト/ワード変換時の並び替えは不要になるのですが、この場合、PIC の上位バイトはメモリの下位バイトに書かれることになり、更に頭が混乱してバグの元になりそうだったので止めましたw
CP/M-68K を自動起動に設定し、リセットボタンを押下して CP/M-68K が立ち上った際の画面キャプチャが下図になります。
Pic24MC68Kでの CP/M-68K 起動時の画面例 |
|
★追記 2022/02/10
「TRY! CPM-68Kの巻き」のサイトに SD カード上での hello.c のコンパイルに時間が掛かるというようなことが書いてあったので実測してみた結果をメモしておきます。
因みに、PIC 側のソフトウェアは自作の picle コンパイラで開発しており、SPI 機能を含め、C言語のライブラリは一切使用していません。
compile | link | total |
---|---|---|
8 sec | 13 sec | 21 sec |
★追記 2022/02/19
今回開発した MC68K のチップサイズと同程度のサイズのプリント基板をイメージし易いように、twitterに投稿した動画付きメッセージを貼っておきます。
MC68Kとほぼ同サイズのプリント基板でCP/M-68Kが動くようになりました
— skyriver (@wcinp) January 28, 2022
MC68Kは16MHzで動作し、メモリは512Kx16bit実装(最近このメモリが高くなった^^;)しています
動画では手動で起動していますが自動起動設定も簡単にできますhttps://t.co/3H681XePq0#MC68HC000 #MC68000 #Pic24MC68K #CPM68K pic.twitter.com/xIYxaxo8ZW
★追記 2022/03/18
Twitterに投稿した動画にプリント基板の写真などを追加して Youtube で公開しました。
[TOP] [ 前へ ] 連載記事 [ 次へ ]
コメント 0