Tanuki_Bayashin’s diary

電子工作を趣味としています。最近はラズベリーパイPicoというマイコンを使って楽しんでいます

【TB-04】4bitCPUのソースコード

※なにか気になる点がありましたらコメント欄にご記入ください。

【目次】

  • 1.はじめに
  • 2.ROMのデータを生成するツールについて
    • 2.1 デコーダーのROMのデータ
    • 2.2 ALUのROMのデータ
  • 3.アセンブラーについて
  • 4.さまざまなアセンブリコード
    • 4.1 流れるLED
    • 4.2 カウンター
      • 4.2.1 手動モードでの動き
    • 4.3 ラーメンタイマー
    • 4.4 フィボナッチ数列(mod16 version)
    • 4.5 かけ算四四
    • 4.6 1次元のライフゲーム(セルオートマトン)
    • 4.7 捕食動物-被食動物のモデルの計算(近似計算)
  • まとめ

1.はじめに

前々回は4bitCPUの設計に関する記事を、前回は実機を組み立て動作確認するまでの記事を投稿しました。

tanuki-bayashin.hatenablog.com

tanuki-bayashin.hatenablog.com

今回はこのCPUを実際に動かしている様子を残しておきたいと思います。

またこのCPUはデコーダーとALUにROMを使っていて、そのデータを作るのに使ったツールについても紹介しておきたいと思います。
(ROMを使っているので後から仕様を変更することもできます)

さらに簡単なものにはなりますが、このCPU専用のアセンブリ言語があって、それをマシン語に変換するアセンブラーも制作したのでそれについても触れておきたいと思います。

写真1 製作した4bitCPU

またこのCPUを作るのに関係した設計資料、ツール、制作したプログラムやマシン語を収めたリポジトリをGitHub上に公開しています。
GitHub - Myuu1967/TB-04: 4bitCPU(TB-04)に関するリポジトリです · GitHub

ぜひご活用ください。

続きを読む

【TB-04】4bitCPUの完成(アドレス4bitバージョン)

※なにか気になる点がありましたらコメント欄にご記入ください。また、工作や回路を製作する場合には、細かい作業などに対して、細心の注意を払われるようお願いいたします。

【目次】

  • 1.はじめに
  • 2.前回の記事への補足
    • 2.1 各命令の説明
    • 2.2 レジスタ群の選択について
    • 2.3 全体の構成と各部間の信号の流れ
  • 3.実装について
  • 4. 不具合について
    • 4.1 レジスタの指定がおかしい
    • 4.2 ROMのデータがおかしい
    • 4.3 フェーズ信号のタイミング
  • 5.まとめ

1.はじめに

前回の記事では4bitCPUの設計が完了したところまでを説明しました。

前回記事のリンク
【TB-04】4bitCPUの設計 - Tanuki_Bayashin’s diary

今回の記事では基板の製作からCPUとしてちゃんと動作したところまでを追っていきます(長くなってしまうので、プログラムを組む辺りは別の記事にします)

写真1 完成した4bitCPU(回路を変更した痕跡が見えます)



www.youtube.com

動画1 流れるLEDとカウンター表示

下のリンク先に今回(前回のも含む)の製作に関わるコードなどが収められています。参考にしてください。
GitHub - Myuu1967/TB-04: 4bitCPU(TB-04)に関するリポジトリです · GitHub

続きを読む

【TB-04】4bitCPUの設計

【目次】

  • 1.はじめに
  • 2.概略
  • 3.各部の説明
    • 3.1 PC(プログラムカウンタ)
    • 3.2 命令ROM
    • 3.3 デコーダ
    • 3.4 レジスタとマルチプレクサ
    • 3.5 ALU
    • 3.6 フェーズ発生器
    • 3.7 LEDによるモニター
    • 3.8 電源とクロック、リセット
    • 3.9 /WEとPCカウント制御
  • 4.プリント基板の設計について
  • 5.まとめ

1.はじめに

1bitのCPU、2bitのCPUと設計、製作してきました。そして去年の今ごろから準備を重ねようやく4bitCPUの設計までこぎつけました。その内容についてここに書き留めておこうと思います。

設計したプリント基板のCG

過去に製作したCPUに関する記事です。

【自作CPU】2bitCPUをプリント基板で製作した - Tanuki_Bayashin’s diary

1bitCPUの製作~プリント基板編 - Tanuki_Bayashin’s diary

また1月ごろの進捗などについてまとめたものです。
自作CPUの開発(?)に関する覚書 - Tanuki_Bayashin’s diary

回路図とプリント基板の図面(KiCAD9)は以下からpullできます。
https://github.com/Myuu1967/TB-04

続きを読む

【Z80】オセロゲームをアセンブリ言語にて作ってみた~AI編

【目次】

  • 1.はじめに
  • 2.自作CPUを語る会とオセロ大会について
  • 3.開発の経緯
  • 4.オセロAIの基本方針
  • 5.盤面評価の工夫
  • 6.位置重みテーブルの最適化(遺伝的アルゴリズム)
  • 7.先読みの仕組み(Negamax + α-β枝刈り)
  • 8.終盤は完全読みに切り替える
  • 9.Raspberry Pi Picoによる盤面表示
  • 10.Z80アセンブリ実装上のハマりどころ
  • 11.実機デモ・処理時間の計測
  • 12.まとめ

1.はじめに

前回の記事に続いてZ80(実際はSuperAki-80)にてオセロゲームのアセンブリコードを書いたのでまとめておこうと思います。

前回の記事ではオセロゲームとして最低限必要な要素までの開発を進めたところまでを書きました。

今回はZ80がオセロの手を考えて読むあたりについて記述していきます。

写真1 実際に動かしている風景


・前回の記事
【Z80】オセロゲームをアセンブリ言語にて作ってみた - Tanuki_Bayashin’s diary

・以下の記事の方法で開発を進めました
tanuki-bayashin.hatenablog.com

こちらから製作したコードがダウンロードできます。
github.com

なお開発では生成AIであるChatGPTおよびClaude Codeを活用して内容を進めました。

続きを読む

16キー入力用のIC MM74C922を使ってみた

※なにか気になる点がありましたらコメント欄にご記入ください。また、工作や回路を製作する場合には、細かい作業などに対して、細心の注意を払われるようお願いいたします。

【目次】

  • 1.はじめに
  • 2.動作に関して
  • 3.動作のようす
  • 4.まとめ

1.はじめに

16個のキーを入力すると0~15の値を出力するIC「MM74C922」というものを見つけたので、その動作を確認してみました。

簡単にまとめておきます。

写真1 MM74C922A
写真2 実験風景
続きを読む

[習作]かけ算九九ならぬかけ算BBを計算してみた

【目次】

  • 1.はじめに
  • 2.かけ算BBについて
  • 3.かけ算BBの性質
  • 4.まとめ
  • 付録 かけ算BBを作るソースコード

1.はじめに

かけ算九九というものがありますが、ふと12進数の九九バージョンである「かけ算BB」なるものを表として作ってみたいと思いました(しょうもない)。

図1 かけ算BB
続きを読む

【Z80】オセロゲームをアセンブリ言語にて作ってみた

【目次】

  • 1.はじめに
  • 2.全体の流れ
  • 3.まとめ

1.はじめに

Z80(実際はSuper AKI-80)を用いてアセンブリ言語にてオセロゲームを作ったので記事としてまとめておきます。

写真1 開発風景


・以下の記事の方法で開発を進めました。

tanuki-bayashin.hatenablog.com

(ひと言)Z80が誕生して50年経っているので(ちょうど50年!!)、多くのオセロゲーム(海外ではリバーシ)のコードがあると思いますが、自作CPUを語る会にて自作のCPUでオセロ大会を開くらしいので、それの準備として作ってみたといったいきさつがあります。

こちらから製作したコードがダウンロードできます。
ソースコードのダウンロード先

続きを読む