Show page source of TimingChartViewer #74048

= !TimingChartViewer =

こんな風にソースコードに書いて、
{{{ code c++
// 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
}}}

こんな出力が得られるソフトウェアを作りました。
[[Embed(TimingChartViewer.png)]]

== 動作環境 ==
 * Java(TM) SE Runtime Environment (動作は Windows7(x86_64)上のJava 1.6.0_27(64bit版) で確認しました)

== 使い方 ==

[http://sourceforge.jp/projects/noodlybox/releases/ リリース一覧]から、!TimingChartViewer_r???をダウンロードして、適当なディレクトリに展開してください。
中に入っているtcv.jarが実行ファイルとして動作します。

起動は、以下のように打ち込んでください。
{{{
<tcv.jarを置いたパス>\tcv.jar <ファイル名>
}}}

!TimingChartViewerは、波形の記述が埋め込まれたVerilog HDLやVHDLのソースコードが与えられることを想定して開発されていますが、入力はテキストファイルであれば何でもかまいません。

ボタンとその動作
|| ボタン || 動作 ||
|| Reload || ファイルを読み直します。 ||
|| Clip   || 波形画像をクリップボードにコピーします。 ||
|| PNG    || PNG形式の画像を、与えられたファイルと同一のディレクトリに出力します。 ||
なお、ボタンにフォーカスがあたっている状態でスペースキーを押すと、マウスでボタンを押した場合と同じ効果があります。

== 制限など ==
 * 信号の変化点を前後にずらすことはできないので、非同期信号の記述には向きません。
 * クロックがHigh Activeであることが前提なので、クロックがLow Activeなタイミングチャートは表現できません。
 * r219 および r226 ではバスにHi-Zを記述するとエラーになります。バグですので、修正を予定しています。

複雑な波形を描かなければならない場合は、 [http://www.mech.tohoku-gakuin.ac.jp/rde/contents/library/tchart/indexframe.html タイミングチャート清書ツール] などをご検討ください。

== 文法 ==

サンプルが [http://sourceforge.jp/projects/noodlybox/svn/view/trunk/doc/tcvsample.vhd?view=markup&root=noodlybox 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 /|/ / / /}}} || [[Embed(CLK_I.png)]] ||
|| {{{\}}}              || 次の行に続く      || {{{-- 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}}} || [[Embed(01zx.png)]] ||
|| {{{v}}}              || 瞬間的にLow       || {{{-- B_O 0|0 1v1 0}}} || [[Embed(v.png)]] ||
|| {{{^}}}              || 瞬間的にHigh      || {{{-- C_O 1|0^0 0 1}}} || [[Embed(hat.png)]] ||
|| {{{A B ... : comment}}} || バスのコメント || {{{-- INST_I x|A B x A : LD MOV}}} || [[Embed(bus.png)]] ||