ブログの練習

ブログを書く練習です。
最近はレトロな計算機(電卓、マイコン、パソコンなど)
に関することを書き始めました。

Tang Nano 9KにSBC8080を実装してみる

2022-12-08 11:13:27 | FPGA
Tang Nano 9KというFPGAボードが流行っているようなので買ってみました。秋月で税込2480円。Aliだともう少し安いようですが、ケチるほどの値段ではありません。機能を考えたら何でこんなに安いんだろうと不思議に思うぐらいの安さです。開発環境もタダだし。これ20年前なら何百万円とかのレベルなのではないだろうか。
実はFPGAを使うのは20年以上(ほぼ30年?)ぶりで、完全に浦島太郎状態です。ハードウェア記述言語は、修論でVerilogを、会社に入ってからVHDLを少しだけかじった程度なので完全に忘れています。というわけなので、リハビリから始めることにしました。
まずはインターフェース2022年12月号の付録を見ながら開発環境をインストール。書き込み用ツールは別途用意するとありましたが、私の環境ではそのツールはボードをうまく認識してくれず、メーカー(Gowin)が配布してるEDAのプログラマーで問題無く書き込めたのでそちらを使うことにしました。
Lチカも問題無く動いたので、次は何を試してみようかと調べてみたところ、4KBASICを実装している人がいたので真似してみることにしました。Twitterではスペースインベーダーや風船割りを実装している人やVectrexを実装している人もいるので、将来的にはそのぐらいの物を作ってみたいと思っていますが、とりあえず簡単そうなところから始めてみます。

参考にしたブログがこちら。

Tang-Nano-9KでBasicを動かす - Qiita

#目的 Tang-Nanoについて調べていたら、Tang-Nano-9Kと言うボード名が引っ掛かった。 Sipeedの新商品らしい。 ◆◆◆ これを買わなくてどうする ◆◆◆ という事で、ど...

Qiita

 

light8080というCPUコア

GitHub - jaruiz/light8080: Synthesizable i8080-compatible CPU core.

Synthesizable i8080-compatible CPU core. Contribute to jaruiz/light8080 development by creating an account on GitHub.

GitHub

 

を使って、tangnanoで動かしたということのようです。
github(tang-nano-9K/l80soc_4KBAS at master · hi631/tang-nano-9K)にコードを置いてくれていたのでダウンロードしてビルドしてみたところ、ちゃんとBASICが起動しました。
しかし、マンデルブロ集合のベンチマークを走らせてみたところうまく動きません。原因を調べたところ、どうやらIF文がfalseになったときに止まってしまうみたい。ここをスタート地点にしてデバッグするのはあまり気が進まなかったので、オリジナルのlight8080コアをスタート地点にしてインストールし直すことにしました。

上記light8080のgithubのREADME.mdによると、
- このプロジェクトは以前はOpenCores(https://opencores.org/projects/light8080)にあった。
- Verilog版はまだGitHubに移していない
- Altair 4K BasicのデモもGitHubに移していない
ということだったので、OpenCoresのアカウントを作成して古いプロジェクト一式をダウンロードしてみましたが、どうやら別の人がGitHubに置いているこれ
GitHub - ofenerci/light8080: Lightweight 8080 compatible coreと同じもののようでした。

Verilog版とVHDL版を見比べてみたところVHDL版の方がわかりやすかったのと、オリジナルがVHDLの方だということもあるので、VHDL版で始めることにしました。
ここから紆余曲折があってデバッグに3日ぐらいかかったのですが、出来上がったのがこれ。

GitHub - ryomuk/tangnano9k-sbc8080-light8080: SBC8080-like computer implemented on Tang Nano 9K using light8080 CPU core

SBC8080-like computer implemented on Tang Nano 9K using light8080 CPU core - GitHub - ryomuk/tangnano9k-sbc8080-light8080: SBC8080-like computer implemented on T...

GitHub

 

コア部分はオリジナルのコードをそのまま使用、mcuフォルダにあった周辺部分のコードを改変して、メモリ空間をSBC8080っぽくしています。主な修正内容はREADME.mdに書いた通り。
電脳伝説さんのsbc8080_datapack(下記サイトから入手)に入っているBASICやモニターのプログラムが動くことを確認しました。

SBC8080 CPUルーズキット

スイッチサイエンスさんのマーケットプレイスでSBC8080 CPUルーズキット(550円+税)の販売を開始しま…

電脳伝説

 

マンデルブロ集合のベンチマークは70秒。2MHzの8080実機だと10分ぐらいのようなので、8.5倍速いようです。ちなみにTang Nano 9Kのクロックは27MHzです。




コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« Intel 4004 (その4) Lチカの巻 | トップ | Tang Nano 9K にVectrexっぽ... »
最新の画像もっと見る

コメントを投稿

FPGA」カテゴリの最新記事