VLD講習会教育資料

VLD 講習会教育資料
Kazutoshi Kobayashi ([email protected])
2005 年 8 月 26 日-29 日
第 1 章 はじめに
本演習では, Verilog-HDL の文法の解説に引き続き, Verilog-HDL をつかった同期回路のハードウエ
ア設計手法を演習により学ぶ. Verilog-HDL から, 回路を実際に合成して, その回路を FPGA にダウ
ンロードし, 実際にその動作を確かめることで, 記述した HDL が, 実際にどのように動作するかを
自分の目と手を使って確認することができる.
1.1 演習の進め方
本演習は, 次のような手順で進めていく
1. 簡単な記述済の回路を用いて
(a) シミュレーション
(b) 論理合成
(c) FPGA への配置配線
(d) ダウンロード
までの一連の流れを実際に行う.
2. 簡単な 10 進入力回路からはじめて, 最終的には, 加減算電卓を Verilog-HDL により作成し,
FPGA にダウンロード, 実際に動作させる.
1.2 演習問題, 回答等の配布
この他の, 講義資料, ならびに演習資料は, html により配布する.
% netscape file:///home/users11/kobayasi/refresh/index.html
# 最初は/が 3 ついるので注意
をターミナルのコマンドラインから実行します.
文字化けが起る場合は, メニューより, View → Encoding → Japanese (Auto-Detect) を実行して下
さい.
1
第2章
2
第 3 章 電卓設計演習
3.1 5.3 節 2 桁の BCD を入力して内部で 2 進数で保存する回路の設計
演習の前に, 本演習のファイルを格納するディレクトリを作成する.
% cd
% mkdir binshifttop
本演習で使用するファイルはすべて, binshifttop 内に作成または, コピーする.
演習 5.1 binshiftreg の module,endmodule,入出力ピン定義部分を記述せよ。
解答例 verilog/binshiftreg1.v
module binshiftreg(out,decimal,CLK,RST,CE);
output [6:0] out;
input [9:0] decimal;
input CLK,RST,CE;
// ↑ input, output の定義はビット幅毎に
endmodule
演習 5.2 10 ビットの 10 キーからの入力を,4 ビットの 2 進数に変換する組合わせ回路を assign と,
function 文により binshiftreg 内に記述せよ。ただし,function 文 dectobin を d に入力するも
のとする。
解答例 verilog/binshiftreg2.v
module binshiftreg(out,decimal,CLK,RST,CE);
output [6:0] out;
input [9:0] decimal;
input CLK,RST,CE;
wire [3:0] d; //← ビット幅が 1 以上の信号は wire で定義しておく.
assign d=dectobin(decimal); //← function dectobin の出力を d に入力
function [3:0] dectobin; //← [3:0] は出力のビット幅を定義
input [9:0] in; //← function 文の引数を定義
if(in[9]) //← function の中には自由に if, case が書ける
dectobin = 9;
else if(in[8])
dectobin = 8;
else if(in[7])
dectobin = 7;
3
//中略
else if(in[0])
dectobin = 0;
//↑最後の else がなくても組み合わせ回路になる
endfunction
endmodule
演習 5.3 10 キーが押された回数を数える count と,入力値を格納する REGA を,always ブロック
で binshiftreg 内に実現せよ。
演習 5.4 出力ポート out に対応する assign 文を記述せよ.
解答例 verilog/binshiftreg.v
module binshiftreg(out,decimal,CLK,RST,CE);
output [6:0] out;
input [9:0] decimal;
input CLK,RST,CE;
wire [3:0] d;
reg [1:0] count;
reg [6:0] REGA;
assign d=dectobin(decimal);
function [3:0] dectobin;
input [9:0] in;
if(in[9])
dectobin = 9;
else if(in[8])
dectobin = 8;
else if(in[7])
dectobin = 7;
else if(in[6])
dectobin = 6;
else if(in[5])
dectobin = 5;
else if(in[4])
dectobin = 4;
else if(in[3])
dectobin = 3;
else if(in[2])
dectobin = 2;
else if(in[1])
dectobin = 1;
else if(in[0])
dectobin = 0;
endfunction
always @(posedge CLK or negedge RST)
begin
if(!RST)
begin
REGA<=0;
count<=0;
end
else if((decimal != 0) && (count < 2))
begin
REGA<=(REGA*10)+d;
4
count<=count+1;
end
else if(CE)
begin
REGA<=0;
count<=0;
end
end
assign out=REGA;
endmodule
演習 5.5 6 章を参考にして,同期化回路 (syncro),2 進数を BCD に変換しさらに 7 セグメント LED
への出力信号を生成する回路 (binled) の設計を行え。ただし時間のない場合ここはとばして
解答のみダウンロードする.
解答例 verilog/other.v: syncro, ledout, bintobcd を含んだ verilog ファイル
module syncro(out,in,CLK,RST);
parameter WIDTH = 1;
input [WIDTH-1:0] in;
output [WIDTH-1:0] out;
input CLK,RST;
reg [ WIDTH-1:0] q0,q1,q2;
always @(posedge CLK or negedge RST)
begin
if(!RST)
q0<=0;
else
q0<=˜in;
end
always @(posedge CLK or negedge RST)
begin
if(!RST)
q1<=0;
else
q1<=q0;
end
always @(posedge CLK or negedge RST)
begin
if(!RST)
q2<=0;
else
q2<=q1;
end
assign out=q1&(˜q2);
endmodule
module binled(in,ledh,ledl);
input [6:0] in;
output [6:0] ledh,ledl;
wire [3:0] outh,outl;
bintobcd I0(.in(in),.outl(outl),.outh(outh));
ledout I1(.in(outl),.out(ledl));
ledout I2(.in(outh),.out(ledh));
endmodule
5
module bintobcd(in,outl,outh);
input [6:0] in;
output [3:0] outl,outh;
wire [6:0] tmp1,tmp2,tmp3;
assign outh[3] = (in>=80)
? 1
:
assign tmp1
= (in>=80)
? in-80
:
assign outh[2] = (tmp1>=40) ? 1
:
assign tmp2
= (tmp1>=40) ? tmp1-40 :
assign outh[1] = (tmp2>=20) ? 1
:
assign tmp3
= (tmp2>=20) ? tmp2-20 :
assign outh[0] = (tmp3>=10) ? 1
:
assign outl
= (tmp3>=10) ? tmp3-10 :
endmodule
‘define SEG_OUT_0 7’b011_1111
‘define SEG_OUT_1 7’b000_0110
‘define SEG_OUT_2 7’b101_1011
‘define SEG_OUT_3 7’b100_1111
‘define SEG_OUT_4 7’b110_0110
‘define SEG_OUT_5 7’b110_1101
‘define SEG_OUT_6 7’b111_1101
‘define SEG_OUT_7 7’b010_0111
‘define SEG_OUT_8 7’b111_1111
‘define SEG_OUT_9 7’b110_1111
‘define SEG_OUT_ERR 7’b011_1001
module ledout(out,in);
input [3:0] in;
output [6:0] out;
function [6:0] convert;
input [3:0] in ;
case (in)
0:
convert = ‘SEG_OUT_0;
1:
convert = ‘SEG_OUT_1;
2:
convert = ‘SEG_OUT_2;
3:
convert = ‘SEG_OUT_3;
4:
convert = ‘SEG_OUT_4;
5:
convert = ‘SEG_OUT_5;
6:
convert = ‘SEG_OUT_6;
7:
convert = ‘SEG_OUT_7;
8:
convert = ‘SEG_OUT_8;
9:
convert = ‘SEG_OUT_9;
default:
convert = ‘SEG_OUT_ERR;
// If the above line is omitted,
endcase
endfunction
assign out=convert(in);
endmodule
演習 5.6 binshifttop を設計せよ。
verilog/skel/binshifttop.v binshifttop ひな型
verilog/binshifttop.v binshifttop 答え
verilog/binshiftsimgtk.v GTK 版テストフィクスチャ
6
0;
in;
0;
tmp1;
0;
tmp2;
0;
tmp3;
A warning messsage is shown in Synplify Pro
図 3.1: GUI を用いた電卓
3.1.1
シミュレーションの方法
電卓設計演習では, デバッグを用意にするために, X Window 上に構築された仮想的な電卓の GUI
を用いてシミュレーションを行う. シミュレーションを行うには, この GUI は, verilog シミュレー
タの持つ PLI(Programming Language Interface) という C 言語との接続インタフェースにより記述さ
れている. GUI はダイナミックライブラリとして構築されており, verilog 実行時に動的にライブラ
リが読み込まれシミュレーションが行われる. gtksim.sh というコマンドの引数にすべての Verilog
ファイルを与えることでシミュレーションが行われる. binshifttop のシミュレーションを行うには,
下記の通りに UNIX のコマンドプロンプトに入力する.
% gtksim.sh binshiftsimgtk.v binshifttop.v binshiftreg.v other.v
これにより, 電卓を模した GUI(図 3.1) が立ち上がる.
Q により, シミュレーションが終了する以外は, それぞれのボタンが, 回路の入力ピンに対応して
いる. ただし, binshifttop で有効なのは 10 キーと CE と RST のみである. 7 セグメント LED 上部の
小さな LED は, 最後の電卓用の overflow を表示する.
3.1.2 Quartus を用いた binshifttop の論理合成と配置配線
1. Quartus II を立ち上げる. (*unresolved reference*??) 最初に, *unresolved reference*??のウィン
ドウが表示されるので, ”Yes”を選択する. 間違って, No を選択してしまった場合は, File →
New Project Wizard を実行する.
% cd ˜/binshifttop
% quartus
2. Project Wizard ウィンドウ (*unresolved reference*??) が表示されるので, Next ボタンを押す.
Project Wizard が表示されない場合は, File メニューから Project Wizard を実行する.
7
図 3.2: Select Family
3. Working Directory を, ”./”, What is the name of project に, ”binshifttop”, What is the name of
top-level entry に, ”binshifttop”と入力して Next を押す.
4. binshifttop.v, binshiftreg.v, other.v を File Name として指定して, Finish ボタンを押す. 間違って
途中で, Finish を押してしまった場合は, Project → Add/Remove Files in Project を実行して, す
べてのファイルを指定する.
5. Select Family のウィンドウが表示されたら, Cyclone を選択する.
6. binshifttop.tcl1 をダウンロードして, binshifttop/以下に置く.
7. Tools->Tcl Scripts を実行し, Project 内にある binshifttop.tcl を選択して, Run ボタンを押す. こ
れにより, FPGA デバイスの設定とボードに対応したピンのアサインが行なわれる.
8. 紫の矢印 (Start Compilation) を押す.
3.2 5.4 節 演算回路
演習 5.7 enzan を Verilog-HDL により記述せよ verilog/enzan part1.v module のみ
verilog/enzan part2.v +キーに対する動作の追加
verilog/enzan part3.v =キーに対する動作の追加
verilog/enzan part4.v 出力 out の論理
verilog/enzan.v enzan.v の答え
演習 5.8 enzantop の設計 verilog/skel/enzantop.v enzantop ひな型
verilog/enzantop.v enzantop 答え
verilog/enzansimgtk.v GTK 版テストフィクスチャ
表 3.1 ピン配置
1 verilog/binshifttop.tcl
8
表 3.1: enzantop のピン配置
ピン名
push[9:0]
3.2.1
ピン番号
4 3 2 11 8 7 16 15 14 19
CE
23
RST
240
CLK
28
plus
5
equal
17
ledl[6:0]
116 117 118 119 120 121 122
ledh[6:0]
124 125 126 127 128 131 132
シミュレーションの方法
% gtksim.sh enzansimgtk.v enzantop.v enzan.v other.v
3.3 5.6 節 電卓の設計
演習 5.9 負の数の取扱い
• verilog/inverse.v
module inverse;
reg [4:0] A,B,C;//← 5 ビットのレジスタ
initial
begin
A=3;B=-2;
$display("A=%d,%b, B=%d,%b",A,A,B,B);
C=8-5; //←結果は 3
#100
C=5-8; //←結果は-3
#100
C=-10-8; //←結果は-18(オーバーフロー)
#100
C=10+10; //←結果は 20(オーバーフロー)
end
initial
$monitor("%d: ",$time,"C=%d, -%d, %b",C,˜C+5’b00001,C);
//↑˜C+1 では, 結果が 32 ビットになってしまうので注意する.
endmodule
• verilog/inversesigned.v(signed をつかった場合)
module inverse;
reg signed [4:0] A,B,C;//← 5 ビットのレジスタ
initial
begin
A=3;B=-2;
9
$display("A=%d,%b, B=%d,%b",A,A,B,B);
C=8-5; //←結果は 3
#100
C=5-8; //←結果は-3
#100
C=-10-8; //←結果は-18(オーバーフロー)
#100
C=10+10; //←結果は 20(オーバーフロー)
end
initial
$monitor("%d: ",$time,"C=%d, %b",C,C);
//↑ C の値を 10 進と 2 進で表示する.
endmodule
電卓の設計 演習 5.10∼5.17
verilog/skel/calc.v 電卓ひな型
verilog/calc.v 電卓答え
verilog/calcsigned.v 電卓答え (signed 版)
verilog/calctop.v 電卓最上位モジュール (calctop.v) 答え
verilog/calcsimgtk.v GTK 版テストフィクスチャ
表 3.2 ピン配置
表 3.2: calctop のピン配置
ピン名
push[9:0]
4 3 2 11 8 7 16 15 14 19
CE
23
RST
240
CLK
28
plus
5
minus
12
equal
17
ledl[6:0]
116 117 118 119 120 121 122
ledh[6:0]
124 125 126 127 128 131 132
ledsign[6:0]
134 135 136 137 138 139 140
overflow
3.3.1
ピン番号
47
シミュレーションの方法
% gtksim.sh calcsimgtk.v calctop.v calcsigned.v other.v
10
第 4 章 FPGA ボードの仕様
4.1
ボードの構成
本演習で使うのは, 三菱電機マイコン機器ソフトウエア社 http://www.mms.co.jp/製の Power Medusa
MU200-EC6S である. 配置は以下のようになっている.
FPGA としては, Altera 社の Cyclone が搭載されている. Cyclone は大規模であるが安価な FPGA
で, デジタルビデオカメラやプラズマディスプレイ等の民生品にも多数搭載されている.
今回は, SUN のワークステーションを使用する関係上, ボードには, マスタブラスタと呼ばれるシ
リアル, USB をサポートした書き込み器を用いるが, パソコンを用いる場合はパラレルケーブルを
接続すれば良い.
4.2 ボードピン接続表
各スイッチ, LED(発光ダイオード) は表 4.1, 表 4.2 の通りボードに接続されている. また, 今回演
習で使用するマスターブラスタからのケーブルは, ボード本体から延びているケーブルと図 4.2 の
通り, それぞれの赤いケーブルが同じ向きになるように接続する.
4.3 7 セグメント LED
7 セグメント LED の各セグメントは FPGA の出力に接続されている. 出力を 1 にすると LED が
点灯する. LED の各セグメントの英字による表示を図 4.3 に示す.
4.4
クロック周波数
左下のロータリースイッチで FPGA に供給するクロックを設定する. ロータリースイッチの設定
値によるクロック周波数は, 表 4.3 の通りである. ☆の場合には, SW26(1 クロックスイッチ) からク
ロックを供給します.
4.5
プッシュスイッチ
教科書の演習ではプッシュスイッチを電卓のキーとして用いる. その配置は図 4.4 のようにする.
4.6
注意点
1. プッシュスイッチは押さないと 1 が, 押すと 0 が出力される.
11
ピン番号
表 4.1: ボードピン接続表 (その 1)
入力名
ピン番号
入力名
ピン番号
28
CLK
7 セグメント A
7 セグメント E
240
RST
133
A0
87
E0
プッシュスイッチ
134
A1
88
E1
2
A0
135
A2
93
E2
3
A1
136
A3
94
E3
4
A2
137
A4
95
E4
5
A3
138
A5
98
E5
6
A4
139
A6
99
E6
7
B0
140
A7
100
E7
8
B1
7 セグメント B
7 セグメント F
11
B2
123
B0
77
F0
12
B3
124
B1
78
F1
13
B4
125
B2
79
F2
14
C0
126
B3
82
F3
15
C1
127
B4
83
F4
16
C2
128
B5
84
F5
17
C3
131
B6
85
F6
18
C4
132
B7
86
F7
12
入力名
ピン番号
表 4.2: ボードピン接続表 (その 2)
入力名
ピン番号
入力名
ピン番号
プッシュスイッチ
7 セグメント C
7 セグメント G
19
D0
115
C0
65
G0
20
D1
116
C1
66
G1
21
D2
117
C2
67
G2
23
D3
118
C3
68
G3
41
D4
119
C4
73
G4
120
C5
74
G5
LED
周波数
周波数
入力名
47
LED-0
121
C6
75
G6
48
LED-1
122
C7
76
G7
49
LED-2
7 セグメント D
7 セグメント H
50
LED-3
101
D0
57
H0
53
LED-4
104
D1
58
H1
54
LED-5
105
D2
59
H2
55
LED-6
106
D3
60
H3
56
LED-7
107
D4
61
H4
108
D5
62
H5
113
D6
63
H6
114
D7
64
H7
0
表 4.3: ロータリスイッチ設定によるクロック周波数
1
2
3
4
5
6
7
40MHz
20MHz
10MHz
5MHz
1.25MHz
3125kHz
78.1kHz
19.5kHz
8
9
A
B
C
D
E
F
9.8kHz
4.9kHz
2.44kHz
1.22kHz
610Hz
305Hz
1.0Hz
☆
13
電源コネクタ
7セグメント
LED
A B C D E F G H
ブザー
ABCをONに
EP1C6Q240C8
ロータリSW トグルSW
FPGA
LED
プッシュ
スイッチ
クロック
分周
RST
押すと0になる
マスターブラスタ接続
図 4.1: FPGA ボードの構成
マスターブラスタ側
赤いケーブル
赤いケーブル
(裏側)
ボード側ケーブル
図 4.2: ケーブルの接続 (それぞれ赤いケーブルが同じ向きになるように接続する.)
14
A7
A6
A2
A1
A5
A3
A4
A0
図 4.3: 7 セグメント LED
7
8
9
+
A0
2
A1
3
A2
4
A3
5
4
5
6
-
B0
7
B1
8
B2
11
B3
12
A4
6
B4
13
10キー
スイッチ
番号
FPGA
ピン番号
1
2
3
=
C0
14
C1
15
C2
16
C3
17
CE
0
D0
19
C4
18
D1
20
D2
21
D3
23
D4
41
図 4.4: プッシュボタンの配置
15
第 5 章 シミュレーションを会社や学校で行う
ためには
5.1
はじめに
本演習の続きを, 会社や学校に帰って行うことができるように, 電卓の GUI を構築する PLI のソー
スならびに, コンパイル済のライブラリを配布する. ここでは, シミュレータの情報やインストー
ルの方法を記載する. なお, 講習会の資料, PLI のソース等は, http://www-lab13.kuee.kyoto-u.ac.jp/
˜kobayasi/refresh よりダウンロード可能である.
5.2
シミュレータ
Verilog シミュレータで, 今回使っている signed 拡張を実装しているものとして, 次のものがあげ
られる.
Verilg-XL, NC-verilog Cadence 社: Solaris, HP-UX, Windows
VCS Synopsys 社: Solaris, HP-UX, Windows, Linux
modelsim Mentor Graphics 社: Solaris, HP-UX, Windows, Linux
GPL Cver Antrim Design Systems 社
すべて PLI に対応しているので, 上記のシミュレータのライセンスを持っていれば, シミュレーショ
ン可能である. 特に, GPL Cver は, GPL に従って配布されている Verilog Simulator である. Verilog
2001 もほとんどサポートしており, お勧めのシミュレータである.
以下では, このうち, Windows の Cygwin 上にインストールした GPL Cver について, 入手の方法
と電卓用 PLI のインストールの方法を述べる.
また, Solaris, Linux で動く Verilog-XL シミュレータでの電卓用 PLI のインストール方法につい
ても触れる.
5.3
5.3.1
Cver on Cygwin
Cygwin のインストール
1. cygwin をインストールする. www.cygwin.com にアクセスし, ”Install or update now!”をクリッ
クする.
2. Select Packages まで進んだら, Devel 内の, gcc と make を Skip から, Install に変更する.
3. 最後までインストールを進める
16
5.3.2 GPL Cver のインストール
1. GPL Cver のホームページ1 より,gplcver-2.11a.src.tar.bz22 をダウンロードする.
2. cygwin 上で展開する.
$ tar xfj gplcver-2.11a.src.tar.bz2
3. gplcver-2.11a.src/src ディレクトリに移り, make を実行する.
$ cd gplcver-2.11a.src/src
$ make -f makefile.cygwin
4. objs ディレクトリに移り, PLI 版の cver をコンパイルする.
$ cd ../objs
$ make -f makefile.dll dll exe
5. 動くかどうかテストするが, 配布されている makefile に不具合があるので, これと置き換える.3
$
#
$
#
5.3.3
cd ../tests_and_examples/examples.vpi/
makefile.cygwin を, 上記のものと置き換える
make -f makefile.cygwin dll run
うまく行くと最後に下記の通り表示される.
tmp_channel
GTK のインストール
次に, Cygwin で動作する GTK をインストールする.
1. こちら4 より, 最新の Gtk+ Win32 Development Environment をインストールする. インストー
ル先は, C:\cygwin\GTK とする.
2. 正常にインストールされたか確認するために, Makefile5 , helloworld.c6 をダウンロードする.
1 http://www.pragmatic-c.com/gpl-cver/index.htm
2 http://www.pragmatic-c.com/gpl-cver/downloads/gplcver-2.11a.src.tar.bz2
3 cver/makefile.cygwin
4 http://gladewin32.sourceforge.net/
5 cver/Makefile.tex
6 cver/helloworld.c
17
3. cygwin 上で make を行なう
#
$
$
#
5.3.4
Makefile, helloworld.c をダウンロードしたディレクトリ内に移動
make
./helloworld.exe
windows 上に, hello world と表示されれば正常
PLI ライブラリのインストール
1. gtkcalc cver.tgz7 をダウンロードする
2. gplcver-2.11a.src.tar.bz2 を展開したのと同じディレクトリに置く.
3. 展開する.
# 必ず, gplcver-2.11a.src.tar.bz2 を展開したのと同じディレクトリに置くこと
$ tar xfz gtkcalc_cver.tgz
4. すでにコンパイルされているので, そのまま動かすことができる
$ cd gtkcalc
$ ./gtksim.sh
5. うまく行かない場合は, 再コンパイルを行なう
$ make clean
$ make dll
$ ./gtksim.sh
5.4 Verilog-XL on Solaris
5.4.1
GTK+他のインストール
実行に必要なライブラリをまとめたファイルを作成した.gtkcalc/gtklib.tgz をダウンロードして,
適当なところで展開する. なお, ソースからインストールしたい場合は, http://www.gimp.org より, ダ
ウンロードすることができる.
7 cver/gtkcalc
cver.tgz
18
5.4.2
ライブラリのインストール
gtkcalc/solaris/libvpi.so をダウンロードする.
5.4.3
実行シェルスクリプト
gtkcalc/solaris/gtksim.sh をダウンロードして,
CALCLIB=
GTKLIB=
の CALCLIB=のあとに, libvpi.so を置いたディレクトリ, GTKLIB=のあとに GTK のライブラリ
を置いたディレクトリを指定する. gtksim.sh をパスの通ったディレクトリに移して,
chmod +x gtksim.sh
とすれば良い.
5.5 Verilog-XL on Linux
Linux では, 標準またはオプションで, GTK+がインストールされていることが多いので, ここで
は, GTK+はすでにインストールされているものとする. 下記で, 配布する libvpi.so は,
5.5.1
ライブラリのインストール
gtkcalc/linux/libvpi.so をダウンロードする.
5.5.2
実行シェルスクリプト
gtkcalc/linux/gtksim.sh をダウンロードして,
CALCLIB=
の CALCLIB=のあとに, libvpi.so を置いたディレクトリを指定する. gtksim.sh をパスの通ったディ
レクトリに移して,
chmod +x gtksim.sh
とすれば良い.
5.6 PLI ファイルのソース
使用した PLI ファイルのソースは gtkcalc/gtkcalc.tgz です.
19
第 6 章 その他
6.1 FPGA ボード
今回演習に用いたのは, Quartus II である. 今回使用した MU200-EC6S に搭載されている Cyclone
デバイスファミリーは, Quartus II Web Edition という無償で使えるツールにより, Verilog HDL の合
成から配置配線を行なうことができる.
シミュレーションに, GPL Cver を用いて, FPGA ボードに, MU200-EC6S を使えば, ボードの実費
のみで, 本演習と同じことを行なうことができる.
6.2 その他の演習
FPGA を用いた大学生向けの演習は各地で行なわれている.
熊本大学/九州工業大学では, KITE というプロジェクト名で, FPGA ボード上にプロセッサを構築
する演習を古くから行なっている.
京都大学では, Power Medusa シリーズの MU200-AP に液晶キャラクタディスプレイを接続して,
テトリスを Verilog-HDL で実装する演習を 3 回生向けに行なっている.
長崎大学では, SFL 言語を使って, ファミコン互換のハードウエアを FPGA 上に構築する実習に
ついて, 準備を進めている.
東京大学では, Celoxica 社の DK-II シリーズのボードを用いて, C 言語ベースの FPGA 実装演習
を行なっている.
20