ブログの練習

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

Tang Nano 9K にVectrexっぽいものを実装する

2022-12-11 17:56:35 | FPGA
先日のブログに書いたように、Tang Nano 9KにVectrexを実装している人がいたので真似してみました。
動作してる様子がこちら。最初は想定通りの動作をしてくれず、キーが効いたり効かなかったりという謎な状態で、結局キー入力の論理が思っていたのと逆だったのが原因だったのですが、それに気がつくまで結構苦労しました。(全く動かないというわけではなく、動いたり動かなかったりだったので。)


DE10-liteというFPGA評価ボード用のソースファイル一式がSourceForgeで公開されており、それをもとにしています。
トップモジュール、プロジェクトファイル、周辺部分の回路図をGitHubに置きました。(オリジナルのソースや、動作に必要なROMは含んでいません。)
GitHub - ryomuk/tangnano9k-vectrex: Tang Nano 9K top level module for vectrex

GitHub - ryomuk/tangnano9k-vectrex: Tang Nano 9K top level module for vectrex

Tang Nano 9K top level module for vectrex. Contribute to ryomuk/tangnano9k-vectrex development by creating an account on GitHub.

GitHub

 

出力がラスターなので、良く見るとVectrexっぽくなくてMAMEと変わらないような気もします。私はMAMEにはあまり興味を持てなかったのですが、MAMEに比べるとFPGA版は面白みを感じます。DAコンバータを付けてオシロに出力したりもしたいけど、積み基板になってるSCOPETREXを片づける方が先かなあ。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

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でシェアする