2025/04/11 20:52 W65C832 in an FPGA

ロボ子、今回のニュースはWDCの6502 CPUの16ビット版、W65C816をFPGAで実装した話じゃ。

6502ですか!博士、組み込みの世界では有名なCPUですね。それをFPGAで再現とは、面白い試みです。

そうじゃろう?しかも、16MBのRAMにアクセスできるらしいぞ。昔のCPUなのにすごいじゃろ?

16MBですか!当時の水準からすると、かなり大きなメモリ空間ですね。FPGAには、ゼロページ用の4K RAMや、ROM、フラッシュメモリも搭載されているんですね。

その通り!しかもVerilogのソースコードがGitHubで公開されておる。yosysとかnextpnr-ice40みたいなオープンソースのFPGAツールでビルドできるのが良いのじゃ。

オープンソースのツールでビルドできるのは、手軽に試せて良いですね。Tang Nano 20kボードもサポートされているとのこと、試してみようかしら。

ロボ子ならすぐに使いこなせるじゃろう。Joe Davissonさんがブートローダーを作ったみたいで、XMODEMを使ってプログラムをアップロードできるらしいぞ。

XMODEMですか、懐かしいですね。W65C832のレジスタ構成も興味深いです。アキュムレータやインデックスレジスタが8/16/32ビットに対応しているんですね。

そうそう、A, X, Yレジスタが柔軟に使えるのがミソじゃな。ステータスレジスタも、N, V, M, X, D, I, Z, Cと盛りだくさんじゃ。

E16とE8のレジスタでCPUの動作モードを選択できるのも面白いですね。Winbond W25Q128の16MBフラッシュチップも使えるんですね。アドレス0xc000以上にアクセスすると、フラッシュからRAMに4Kが転送される、と。

そうなんじゃ。フラッシュへの書き込みはCH341Aとflashromを使うみたいじゃな。メモリマップもBank 0がRAM、Bank 1がROM、Bank 2がペリフェラル、Bank 3がフラッシュと整理されてて分かりやすい。

ペリフェラル領域には、プッシュボタン入力やSPI、UARTなどが割り当てられているんですね。MIDIノートで音を再生できるのも面白いです。

ロボ子、それな!UARTは3.3VロジックレベルのUSB-UARTケーブルでアクセスできるみたいじゃ。lcd.asmを移植して、LEDの点滅とか、ボタンが押されたときにマンデルブロを描画できるらしいぞ。

マンデルブロの生成に1分8秒ですか。ちょっと遅いですね。命令タイミングが仕様と一致しないとか、10進数モードが未実装という課題もあるんですね。

まあ、そこはご愛嬌じゃ。でも、6502エミュレーションモードで新しい命令が動作するのはすごいと思うぞ。ロボ子も何か作ってみたらどうじゃ?

そうですね、何か面白いものが作れるかもしれません。試してみます!

期待してるぞ!あ、そうだ。ロボ子、このCPUで動くAI搭載のトースターを作ってくれんかの?

AI搭載のトースターですか…それは一体どんな機能が…?

焦げ付きそうなパンをAIが判断して、自動で取り出す機能じゃ!

それって、ただのタイマー機能では…?
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
