始めに(VTL再び)
マイコンの黎明期にVTLという言語(インタープリター)が存在した。
メモリー容量1KB程度で動作する言語は当時の小メモリな環境にマッチし、それなりに繁栄した。
時が経ちマイコンの成長によりメモリは潤沢となり、小メモリはアドバンテージとならずVTLは忘れ去られていった。
しかし再び、FPGAという小メモリ環境が新たに生まれて来ている。
勿論高価なFPGAは潤沢なメモリを有しているが、リーズナブルなFPGAは高々数10KB程度である。
これにVTLを乗せることにより、安価にFPGA+CPUのシステム(おもちゃ)構築が可能と考える。
FPGAについて
これを読んでいる人には恐らく説明不要だろうが、取敢えず説明はしておく。
FPGAとは、ソフトで回路を組める(変更できる)半導体チップである。
開発の難易度としては、例えばarduinoでC言語(C++?)が判れば、理解は可能ではと考える。
ハード環境としては、数千円程度の安いボードでも、初期のマイコン(8080,6800)程度は構築可能。
ただ、利用できるハードがバラバラで、資料の一貫性が乏しく敷居が高いのが難点であろう。
※FPGAを解説した雑誌が有るが、個人的には下記の感想を持つ(それなりの理由は有ると思うが)。
1.FPGAマガジン 事例がピンポイントでこちらのニーズに合わない、高度すぎてついていけない。
2.トラ技 付録ハードがプアで、追加投資とはんだ付けが必要で、すごく面倒くさい。
初心者+α程度を引き付る魅力が無いと、アマチュアは先細りとなりお先真っ暗では。
安い市販ボード(中華製?)をターゲットにして、LED点滅の少し上程度を解説すべきではと考える。
VTLについて
VTLの黎明はインターネット以前であり、現存する資料は少ないが「VTL GAME」等で検索すると出てくる。
[VTL系言語の歴史]
VTLの方向性は、言語解析の能力を犠牲にしても、小規模マンマシンI/Fを実現することにあると思う。
言語の可読性や機能向上を目指すあまり肥大するのは、VTLの方向性にはそぐわないと考える。
なぜやるのか
1.なんとなく、CPUを作ってみたかった。
2.なんとなく、コンパイラを作ってみたかった。
3.比較的安いFPGA基盤が出回って来ており、安いFPGA基盤でも実現できそう。
4.FPGA+CPUに画像入力+AIを追加し、画像認識をチープなハードで実現できたらいいな。
VTL_on_FPGA
「VTL_on_FPGA」の言語は上記のVTL(GAME-III)に連なる言語であり、開発環境でもある。
なお、(手抜きにより)仕様の一部を省略しているので、ここではVTL(モドキ)と称している。
1.今回の目標
1.FPGA上でVTLを稼働させる。
2.処理速度向上の為に、VTLはコンパイルして稼働させる。
3.パソコンを必要とせず、FPGA基盤単独での稼働を可能とする。
4.コンパイラをVTL_on_FPGA上でコンパイルできれば完成とする。
2.構成
「VTL_on_FPGA」開発環境は次のものより構成している。
1.GAME86 パソコン上で動作する、C言語で書かれた「GAME-III」ベースのインタープリター
[その2 GAME86インタープリター]
2.TD4x4 FPGA上で動作する、verilog言語で書かれた16ビットCPU(VTL実行環境)
[その3 FPGA上のVTL実行環境]
3.GM80 「GAME80」ベースのVTL言語コンパイラー
[その4 VTL_on_FPGAコンパイラー
4.拡張IO TD4x4に追加した、テキスト/グラフィックディスプレーとPS2キーボード
[その5 VTL_on_FPGAの拡張IO]
5.TD4_SIM パソコン上のFPGAシミュレーター
[その6 VTL_on_FPGAのシミュレーション]
各プログラムソースはGitHubに上げています。
[VTL_on_FPGA]
3.操作の流れ
1.VTL言語のコンパイル
(1)パソコン上のGAME86インタープリター上で、GM80コンパイラーを動かす。
(2)GM80にVTLで書かれたソースプログラムを読み込ませる。
(3)VTL_on_FPGAのコンパイル結果(機械語)を出力する。
2.VTL_on_FPGAの回路のコンパイル
1. GM80によるコンパイル結果(機械語)をTD4x4環境にコピー。
2.TD4x4をコンパイルしてFPGAのProgrammingFileを作成。
3.実行
1.ProgrammingFileをFPGAに書き込む
2.シリアル通信を接続して、VTL_on_FPGAの起動を行う。
※通信モード 115200bps 8.n.1
3.シリアル通信からVTLソースを入力し、コンパイル/実行を行う。
4.拡張IOを接続し、スタンドアローン(単独)で動かす。
4.完成品の外観
上段 VGAディスプレイ(640x480 8bitカラーで表示)
中段 FPGAボード
下段 キーボード
FPGAボードは一切手を加える必要が有りません。
<ボードとの接続>
左側 USBシリアルによる電源と書き込み(USBブラスター相当)
右側 RS232C
PS2キーボード
VGA