SuperSimpleController [OriginalCPU]
標準ロジックICなどを使ってオリジナルCPUを検討してみました。
FPGAなどで作った方が容易そうですが、限られた環境の中で考えてみるのが楽しそうだったからです。
(結構特殊なロジックICを使ったりするので海外手配の場合、時間がかかって進捗がイマイチです^^;)
フェッチしたインストラクションの値からROMで実装したルックアップテーブルでコントロール信号を生成する予定で、この部分はCISCプロセッサのマイクロコードに対応します。言い換えれば機械語の処理を実現するために記述するメタ言語的なものになります。
今後の検討で変更する可能性もありますが下図のような構成を考えています。
まずはマイクロコードの実行部分の実験としてjump命令と制御信号出力のみの機能を搭載した簡易版のコントローラを作ってみました。
今回は制御信号出力でLCDへの表示も行ってみました。最終的には制御信号出力によりCPU内のリソース制御を行うことでオリジナルCPUにする予定です。
回路は下図のとおりで74AS867、74HC04、W27C512の3チップ構成で非常にシンプルな構成です。
目視で動きが判るようにクロックを遅く設定していますが、数MHzでの動作も可能なのでこれだけでも何かの固定的な制御に使えそうですね。
制御信号のMSB(D7)がlowの時にアドレスがD0..D6の値に設定されるようにすることでjump命令を実装しています。
最初に下記の簡単なパターンをROMに書込み動作確認してみました。
0008Hアドレスの00Hで先頭にjumpします。
実際に動かしてみた時の波形が下図です。想定通り00Hでアドレスがクリされて先頭に戻っています。
次にLCDを接続して文字を表示してみることにします。
バイナリデータを直書きしてもいいのですが可読性を向上させるためにマクロアセンブラのマクロ機能を利用し、HEXファイルを生成しています。
LCDの制御に関しては「PIC24FJの出力コンペアモジュールとLCD3V駆動の実験」の記事で書いた処理をマイクロコードに書き換えています。
電源オン直後の波形が下図です。信号名のカッコ内はLCD側の信号名称です。
YouTubeに動作サンプルをアップしましたので貼っておきます。
赤LEDがアドレスで緑LEDがデータです(上記の回路図にはLED部分は含まれていません)
https://www.youtube.com/watch?v=EuEsv856V10
[TOP] [ 前へ ] 連載記事 [ 次へ ]
FPGAなどで作った方が容易そうですが、限られた環境の中で考えてみるのが楽しそうだったからです。
(結構特殊なロジックICを使ったりするので海外手配の場合、時間がかかって進捗がイマイチです^^;)
フェッチしたインストラクションの値からROMで実装したルックアップテーブルでコントロール信号を生成する予定で、この部分はCISCプロセッサのマイクロコードに対応します。言い換えれば機械語の処理を実現するために記述するメタ言語的なものになります。
今後の検討で変更する可能性もありますが下図のような構成を考えています。
オリジナルCPU概要ブロック図 |
|
まずはマイクロコードの実行部分の実験としてjump命令と制御信号出力のみの機能を搭載した簡易版のコントローラを作ってみました。
今回は制御信号出力でLCDへの表示も行ってみました。最終的には制御信号出力によりCPU内のリソース制御を行うことでオリジナルCPUにする予定です。
回路は下図のとおりで74AS867、74HC04、W27C512の3チップ構成で非常にシンプルな構成です。
超シンプルなコントローラー |
目視で動きが判るようにクロックを遅く設定していますが、数MHzでの動作も可能なのでこれだけでも何かの固定的な制御に使えそうですね。
制御信号のMSB(D7)がlowの時にアドレスがD0..D6の値に設定されるようにすることでjump命令を実装しています。
最初に下記の簡単なパターンをROMに書込み動作確認してみました。
0008Hアドレスの00Hで先頭にjumpします。
テストデータ |
|
実際に動かしてみた時の波形が下図です。想定通り00Hでアドレスがクリされて先頭に戻っています。
テストデータ実行時の波形 |
|
次にLCDを接続して文字を表示してみることにします。
バイナリデータを直書きしてもいいのですが可読性を向上させるためにマクロアセンブラのマクロ機能を利用し、HEXファイルを生成しています。
LCDの制御に関しては「PIC24FJの出力コンペアモジュールとLCD3V駆動の実験」の記事で書いた処理をマイクロコードに書き換えています。
LCD制御用マイクロコード |
|
電源オン直後の波形が下図です。信号名のカッコ内はLCD側の信号名称です。
LCD制御での電源ON直後の波形 |
|
YouTubeに動作サンプルをアップしましたので貼っておきます。
赤LEDがアドレスで緑LEDがデータです(上記の回路図にはLED部分は含まれていません)
https://www.youtube.com/watch?v=EuEsv856V10
[TOP] [ 前へ ] 連載記事 [ 次へ ]