4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Tang-NanoでBasicを動かす

Posted at

#目的
 Tang-Nanoと言うボードが去年(2019)の終わりごろに売り出されていた。一年近く立ってからやっと気が付いた。
 規模は1000LUT程度、xilinxのxc6lx9の1/10位かな。
 これで何か実用的なものを作れないかな。
 ◆◆◆ そうだ、Basicの動くパソコンを作ろう ◆◆◆
 Basicが動くのがパソコンって訳でもないし、
 パソコン擬きだからって、実用的とも言えないけどもね。

#経緯
 Tang-NanoでTD4何て言う、Toy-CPUは動かせた。でもロジック使用率は1/10程度。
 もう少し実用的?なものを作れないかと、google様にお伺いを。
 OLDパソコンって言っても常識的には、8080コアを入れるだけでアップアップじゃないのって思ったが、
 「Light8080」なんてのが有るじゃありませんか。
 僅かなLUTで構成出来て、Basic(altair 4K Basicらしい)も動作するなんて、素晴らしい。
 仕掛けとしては、ロジックをマイクロコード化する事により、ロジックをシュリンクしている。
 但し弊害として、動作速度の低下とROMエリアが別途必要となる。
 でも動作速度低下は、8080が80MHzで動作すれば大丈夫だろう(何が)。
 ROMについては、GW1NにはFlashが利用可能なので、リソースを圧迫しない。
 主要スペック: LUT4 1152, Flip-Flop 864, BSRAM(bits) 72K, USER Flash(bits) 96K
 こりゃ行けるぞと。

#シリアル通信
 Basicの入出力にはシリアル通信を使うのが簡便。しかーし、
 GW1N本体の所為では無いが、Tang-Nanoのシリアルは問題を抱えている。
 通信に使用しているCH552Tは、そのままでは通信に使えない下記の致命傷が有る。
  1.CH552Tのフォームウェアが通信に対応していない。
  2.通信に使用するピンがConfigピンとバッティング。
 解決策は有るが、下記の作業が必要となる。
  「Tang NanoのFPGAとPC間でUART通信をする
 コストダウンの所為だろうが、敷居を高くしている事は否めない。ちと微妙。
  ※なんせCH552Tは安いものね、Driverの使用はグレーな気がするが。
 上記の対策を行った「通信テストプログラム test_rs」をGithubに上げている。
 入力をエコーバックするだけだが、まず通信テストを行ってほしい。(115200bps)

#Flash書き込み
 FPGAの通常の動作確認はRAMへの書き込みだが、今回はFlashへの書き込みも必要となる。
  Programer2の起動 -> SRAM ProgramをダブルクリックでDevice config... が表示される。
  Access ModeをEnvedded...にし、OperationをEmbFlash Erase,Programに設定。
  User Flash...を有効にし、File nameをいれてsaveすると、次回のProgramはFlashに書かれる。
   ※再度Device config...を表示すると、User Flash...は忘れているようなので要注意。
Image34-2.jpg
 Flashへの書き込みには***.fiファイルが必要となるので、basicのbinをfi形式に変換している。
 fi形式はFlashのダンプファイルから類推したが、多分合っているのだろう。

#Light8080
 マイクロプログラムが正しく格納されていれば、一般のCPUコアと変わりはない。そこで、
 まず、マイクロプログラムをRAM上に展開。
 始めにリセットにより、マイクロプログラムが先頭から読まれることを確認する。
 次にループするプログラムで、CPUとしての動作を確認する。
 上手く言ったらマイクロプログラムを、Flashに追いやって、RAM領域を開ける。
  ※Flashの使い方がちと怪しい。動いているから問題は無いだろうが。
 動作した「Tango-Nano 4KBASIC」をGithubに上げている。
 この構成で、342LUTとなっている。LUTより最大8KBのRAMの方がネックかな。
 それでも、Basicのプログラムエリアが4KB取れている。
 残ったLUTにロジックを追加すれば、なんか計測装置が出来そうな。
  ※LCD.Displayを追加してみたが、スクロールなんかの処理が結構面倒で、
   RAMを2KB,LUTを400も使ったので、之はお蔵入り。
Image34-3.jpg

#感想
 以外に出来るもんだと感心。まあ、Light8080のおかげだろうが。
 時間と知恵が有れば、Z80に拡張したいが、多分無理だろうな。
 だだ、Tang-Nanoはライセンスの有り方が先行き不安なので、これ以上は利用しない予定。
 値段安くて、コンパイル早いから、使いやすいんだけどもね。多分日本を相手にしていないのだろう。
 アマチュアとしてはサポート無くても使える体制を望みたいものだ。まあ、販売元の自由だろうが。
 なお、上記記載内容は全て無保証であり、各自の責任においてご利用願います。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?