クリーム色の背景、色付き表示、高コントラスト、大きな文字のほうが読みやすいですか?配色と文字を選ぶと、すべてのページに一度で反映されます。

無料レッスン

波形ファイル(VCD)の読み方

このレッスンのあとで: 波形ファイルを読んで、クロックごとに何が起きたかを言える。

55分のレッスンコマンド8件デジタル設計のラボ:Verilog、VHDL、yosys を 1 台の専用 Ubuntu VM で

信号の変化を記録した波形

波形は、信号が時間とともにどう変わったかを記録したものです。回路が間違えた瞬間を見つけるのに、波形を読む力が一番役に立ちます。

VCD という波形ファイルは、人が読めるただのテキストです。読み方を覚えれば、特別な道具がなくても調べられます。

このレッスンのゴール

メモ

波形ファイルを読んで、クロックごとに何が起きたかを言える。

重要な言葉

ことばいみれい
波形信号の値が、時間とともに変わる様子
VCD信号の変化を、テキストで記録するファイル
識別子VCD の中で、信号を指す短い記号!
時刻#のあとの数。変化が起きた時間
vcd2txt波形を、文字の表にする、ラボの道具

学生が入力するセルは、このプレビューでは空白です。

VCD はテキストのファイル

まず、波形をつくります。ラボの counter_tb.v は、すべての信号を out/counter.vcd に記録します。

次に、そのファイルを sed で読みます。sed は、enddefinitions の行から先を表示します。説明の部分を飛ばして、変化の部分だけを見られます。

ラボのフォルダに入る

コマンド
cd ~/hdl

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

カウンターを準備する

コマンド
iverilog -o /tmp/counter counter.v counter_tb.v

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

動かして波形を作る

コマンド
vvp /tmp/counter

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

変化の部分を読む

コマンド
sed -n '/enddefinitions/,$p' out/counter.vcd | head -n 14

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

信号の宣言を探す

コマンド
grep '[$]var' out/counter.vcd

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

VCD の行の読み方

行意味
$var wire 4 ! q [3:0] $end識別子 ! は、4ビットの信号 q
#5時刻が5になった
1"識別子 " の信号が、1になった
b0 !識別子 ! の4ビットの信号が、0になった
bx !識別子 ! の信号が、まだ決まっていない

学生が入力するセルは、このプレビューでは空白です。

短い VCD の例を読む

コード: bash
$var wire 4 ! q [3:0] $end
$var reg 1 " clk $end
#0
0"
bx !
#5
1"
b0 !

vcd2txt が波形を表にする

生の VCD は読みにくいので、ラボの vcd2txt が表にします。1行が1つの信号、1列が一定の時間です。

1ビットの信号は、0を _、1を # で表します。複数ビットの信号は、数をそのまま書きます。まだ決まっていない値は x です。列の幅は、2つ目の引数で決まります。

1列を5単位にする

コマンド
vcd2txt out/counter.vcd 5

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

1列を10単位にする

コマンド
vcd2txt out/counter.vcd 10

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

波形を絵にする

コマンド
vcd2svg out/counter.vcd out/counter.svg

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

よくある間違い

注意

表の1列が、クロックの1周期だと思いがちです。1列は、渡した列の幅の時間です。10にすると、クロックの立ち上がりを飛ばして、clk がずっと下がったままに見えます。

このラボとソースについて: デジタル設計のラボ:Verilog、VHDL、yosys を 1 台の専用 Ubuntu VM で

授業で使いますか?このモジュールを学生に割り当てると、教員用ガイド、自動採点つきの課題、学生ごとのラボを使えます。