Help us understand the problem. What is going on with this article?

VTL_on_FPGA[その1 VTLと「VTL_on_FPGA」について]

More than 1 year has passed since last update.

始めに(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

Image1.jpg

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away