FPGA と Forth
2022-7-29 16:14 JST
とりあえず現時点で Forth の情報を集めるよ。
FPGA と Forth という組み合わせでは swapforth 一択かな?私が移植した Retro が動かんでもないが、でかいんだよね。swapforth の j1 プロセッサのメモリアクセスは Latency 1 で設計されていて、つまり SRAM 前提(私の Retro も基本的に同じ)。そうすると RAM の footprint が小さいのがいいよね。
Swapforth
昔は J1 だけだったんだけど、複数のプロセッサを用意している。
J1a - minimal 16-bit FPGA CPU with 8K of memory
J1b - 32-bit FPGA CPU with 32K of memory
FT900 - 32-bit 100 MHz CPU with 256K flash, 64K RAM
github のレポジトリには esp8266 なんてのもあって興味深い
J1a
16bit CPU。スタックのデータ幅が 16bit という意味ね。メモリに対して書き込みはできるんだけど、リードができない。0x1000 〜 0x1FFF にジャンプすることで0x1000 〜 0x1FFF の read ができる。たぶん、データをスタックに積む。ジャンプ後は R スタックに書いてあるアドレスへ戻る。HDL 的な footprint は小さくなるけど、コードがでかくなるんじゃないかな?
もとのプログラムに 5KB ほど必要で 8KB の SRAM なら 3K は使えると謳っている。
こういう作りなので最初の 4K にはデータとしてアクセスできないんじゃないかな。まぁすでに書かれたディクショナリを書き換えるということはしないのでしょう。
J4
どうも、マルチタスクができるらしい。中に slot という信号線があって、これがアサートされると reboot する。たぶん、reboot して、分岐して、続きをやるのでしょう。
リンク集
Swapforth の本家。ディレクトリが整理されていないし、 重複ファイルもあるんだよね。そしてドキュメントもない。
オリジナルの j1 CPU かな?
excamera という会社になった?もとは例の ROS の開発もとの Willow Garage に勤めていた人らしいよ。
だれかが Scala 版を作っている
Scala で HDL が書ける?Chisel じゃないんだ。
だれかが SystemVerilog で書き直している
よくわからんが pForth。楽譜と関係あるの?