Lola
![]() | この項目では、プログラミング言語について説明しています。その他の用法については「ローラ」をご覧ください。 |
Lola は、同期式デジタル回路を記述するよう設計された単純なハードウェア記述言語。ニクラウス・ヴィルトが開発した言語で、チューリッヒ工科大学の教授時代に計算機科学の学生にFPGA上のデジタル設計について教える道具として作ったものである。
Lola ではハードウェア部品の構造と機能を静的に記述し、部品間の接続を記述する。Lola のテキストは宣言と文から構成される。信号設定の形で論理回路レベルでハードウェアを記述する。信号は演算器を使って統合され別の信号となる。信号とその割り当ては型としてグループ化される。型のインスタンスがハードウェア部品となる。型を他の型の組み合わせで構成することもでき、それによって階層的設計が可能で、ジェネリックプログラミングの一種ということもできる(例えば、ワード幅の回路をパラメータ化するなど)。
以上のような概念は下記の例(二進加算器回路)に示されている。まず基本構成要素(TYPE Cell
)が定義され、次にその Cell
を使ってワード幅 8 ビットのカスケードを宣言し、最後に複数の Cell
を相互接続する。ここで定義されている MODULE Adder
はより高次の設計の構成要素として使用可能である。
MODULE Adder; TYPE Cell; (* Composite Type *) IN x,y,ci:BIT; (* input signals *) OUT z,co:BIT; (* output signals *) BEGIN z:=x-y-ci; co:=x*y+x*ci+y*ci; END Cell; CONST N:=8; IN X,Y:[N]BIT; ci:BIT; (* input signals *) OUT Z:[N]BIT; co:BIT; (* output signals *) VAR S:[N]Cell; (* composite type instances *) BEGIN S.0(X.0, Y.0, ci); (* inputs in cell 0*) FOR i:=1..N-1 DO S.i(X.i,Y.i,S[i-1].co); (* inputs in cell i *) END; FOR i:=0..N-1 DO Z.i:=S.i.z; END; co:=S.7.co; END Adder.
ヴィルトは、自著 Digital Circuit Design で Lola のユーザーから見た説明を行っている。Lola コンパイラの中身の詳細はヴィルトの技術レポート Lola System Notes にある。デジタル設計に関するツール全体の概要は技術レポート Tools for Digital Circuit Design using FPGAs にある(Lola に関するレポート Lola: An Object-Oriented Logic Description Language も含まれている)。
外部リンク
- Lola language page - ウェイバックマシン(2002年3月8日アーカイブ分)(チューリッヒ工科大学)
- 表示
- 編集