こんな風にソースコードに書いて、
- // TimingChart
- //
- // ACLK /|/ / / / / / / / / / / / /
- // ARADDR x|A A B B x x x x x x x x x : A B
- // ARVALID 0|1 1v1 1 0 0 0 0 0 0 0 0 0
- // ARREADY x|0 1 0 1 x x x x x x x x x
- // RDATA x|x x x A x x B x C D x E x : \
- // D(A0) D(A1) D(A2) D(B0) D(B1)
- // RLAST 0|0 0 0 0 0 0 0 0 1 0 0 1 0
- // RVALID 0|0 0 0 1 0 0 1 0 1v1 0 1 0
- // RREADY 0|0 0 1 1 0 1 1v1 1v1v1 1 0
- // RREADY 0|0 0 1 1 0 1 1v1 1v1v1 1 0
- //
- // TimingChartEnd
こんな風に起動すると
tcv.jar axi_readburst.v
こんな出力が得られるソフトウェアを作りました。
リリース一覧から、TimingChartViewer_r???をダウンロードして、適当なディレクトリに展開してください。 中に入っているtcv.jarが実行ファイルとして動作します。
起動は、以下のように打ち込んでください。
<tcv.jarを置いたパス>\tcv.jar <ファイル名>
TimingChartViewerは、波形の記述が埋め込まれたVerilog HDLやVHDLのソースコードが与えられることを想定して開発されていますが、入力はテキストファイルであれば何でもかまいません。
ボタンとその動作
ボタン | 動作 |
Reload | ファイルを読み直します。 |
Clip | 波形画像をクリップボードにコピーします。 |
PNG | PNG形式の画像を、与えられたファイルと同一のディレクトリに出力します。 |
なお、ボタンにフォーカスがあたっている状態でスペースキーを押すと、マウスでボタンを押した場合と同じ効果があります。
複雑な波形を描かなければならない場合は、 タイミングチャート清書ツール などをご検討ください。
サンプルが tcvsample.vhd にあります。
各行の形式は、バスでない1本の信号ならば
信号名 信号レベル|信号レベル 信号レベル ...バスならば
信号名 信号レベル|信号レベル 信号レベル ... : コメント コメント ...のように記述します。
1本の信号の場合は、キャラクタとして / 0 1 z x が使用できます。
バスの場合は、キャラクタとして x A B C ... Z が使用できます。
最初の信号レベルは、タイミングチャートに載る以前の信号レベルを意味します。 最初の信号レベルと次の信号レベルの間に|があるのは可読性を上げるためであり、空白と同様に扱われます。
vは、Highが連続するけれど瞬間的にLowになる波形、 ^ (ハット)は、Lowが連続するけれど瞬間的にHighになる波形、俗に言うヒゲを表現するために使用します。
バスの場合は、: (コロン) のあとにコメントを書きます。タイミングチャートの中で、Aがコロンのあとの最初の文字列、Bが二番目の文字列、Cが三番目の文字列、というように置換されます。
記述 | 意味 | 例 | 表示 |
TimingChart | 解釈の開始行 | -- TimingChart | |
TimingChartEnd | 解釈の終了行 | -- TimingChartEnd | |
/ | クロック信号 | -- CLK_I /|/ / / / | |
\ | 次の行に続く | -- HOGE_I x|A x B : \ | |
| | 空白と同じ扱い | -- FUGA_O 0|0 1 1 0 | |
0, 1, z, x | Low High HiZ 不定 | -- A_I 0|0 1 z x | |
v | 瞬間的にLow | -- B_O 0|0 1v1 0 | |
^ | 瞬間的にHigh | -- C_O 1|0^0 0 1 | |
A B ... : comment | バスのコメント | -- INST_I x|A B x A : LD MOV |