平成19年2月11日更新
このページでは、新しくなったAdvanced
JTAG ロジックアナライザの使い方について紹介します。
1.Advanced JTAGロジックアナライザの新機能
1−1.概要
平成18年の10月にリリースされたAdvanced
JTAG ロジックアナライザでは、以下のような機能が使用できるようになりました。
@ BLOGANAモードの拡張 (信号名の自動設定など)
A バウンダリスキャンモードにおけるサンプリング速度の高速化
B 信号の結合(バス化)対応と、16進、10進、8b/10bデコードなどでの表示
C カーソル機能の強化
D 波形セーブ・ロード機能の強化
1−2.信号のバス化について
従来のJTAGロジックアナライザでは、信号はすべて1ビットの信号として扱われており。複数の信号を束ねて16進で表示させるといったことはできませんでした。
Advanced JTAGロジックアナライザでは、これらの不便さが解消されています。
次の図をご覧下さい。

(クリックで拡大)
上の波形では、RXDATAK_IN(0)、RXDATA_IN(7)・・RXDATA_IN(0)などの信号が1ビットのバラの信号として見えています。
これでは波形を解析するのが大変です。
Advanced JTAGロジックアナライザでは、このような信号を束ねることができます。
例えば、RXDATAK_IN(0)、RXDATA_IN(7)・・RXDATA_IN(0)をバス化したいとします。
このような場合、まず、一番上に表示されているRXDATAK_IN(0)をマウスで左クリックします。

次に、一番下に表示されているRXDATA_IN(0)を、SHIFTキーを押しながらマウスで左クリックします。

すると、最初にクリックした信号と最後にSHIFTを押しながらクリックした信号の間の信号が、範囲選択されます。
なお、CTRLキーを押しながら信号名をクリックすると、範囲選択ではなく、1個づつ信号を選択することができます。
信号を選択したら、SHIFTキーまたはCTRLキーを押しながら右クリックしてください。
次のプルダウンメニューが開きます。

このプルダウンメニューで、「結合」を選択すると、選択された信号がバスとして結合されます。
また、「不可視にする」を選択すると、その信号が見えないように削除されます。なお、削除された信号は「すべての信号を表示」で再び観測することができます。
信号を結合すると、下の図のように、バスとして結合されて表示されます。
結合されたバスは、デフォルトでは2進数で表示するようになっています。

(クリックで拡大)
ここで再度、信号名の上で右クリックをしてください。次のプルダウンメニューが開きます。

16進で表示させたい場合は「16進で表示」を、10進で表示させたい場合は「10進で表示」を選択してください。
通信の解析などで、8b/10bデコードで表示させたい場合は「8b/10bデコードで表示」を選択してください。
8b/10bデコードで表示する場合、バス化された信号は「K
b7 b6 b5 b4 b3 b2 b1 b0」の順に並ぶようにしてください。

1−3.カーソル機能の強化について
波形ウィンドウ上で、マウスクリックを行うことで、カーソルを設定することができます。
左クリックでカーソル@が、右クリックでカーソルAがセットされます。
セットされたカーソルは左右のダブルクリックで削除することができます。
画面右下のステータスバーには、各カーソルが置かれた点の時刻と、カーソル間の差分の時間が表示されます。
例えば下の図の例では、PHY_TXELECIDLEという信号がHレベルになっている間の時間は、カーソル機能によって約336ミリ秒であることが読み取れます。

(クリックで拡大)
1−4.波形セーブ・ロード機能の強化について
ツールバー上のセーブロードボタン
を押すことで、波形を保存したり、保存された波形をいつでも好きなときに読み出すことができます。
保存した波形は、無償のビューワで参照することも可能です。
例えば、MITOUJTAGを使ってサンプリングした波形を、他社や社内の他の部署に送って、無償のビューワで見てもらうといった使い方が可能になります。波形を取得するエンジニアと、解析するエンジニアを分けることができるようになり、デバッグの可能性が広がります。
2.BLOGANAモードの使用方法
BLOGANA(ブロガナ)モードは、XILINX
FPGA内のブロックRAMを活用したJTAGロジックアナライザの機能です。
この章では、BLOGANAの使用方法について紹介します。
2−1.使用可能なFPGA
現在のところ、Spartan3、3E、Virtex2、Virtex2Pro、Virtex4で使用することができます。
2−2.ロジアナIPコアの挿入
BLOGANAモジュールのソースである"blogana.vhdl"を用意しておきます。
XILINXのISEまたは、WebPACKを起動します。
ソースツリーで右クリックをし、「Add
Source」を実行し、"blogana.vhdl"を追加します。

2−3.コンポーネント宣言の追加とインスタンシエート(VHDLソースの編集)
お客様が作成されたVHDLソースにおいて、architecture文に次のようにコンポーネント宣言とsignal宣言を追加します。
signal文での信号名は、必ず下記のとおりの名前にしてください。
component blogana is
Port ( CLK : in std_logic;
TRIG : in std_logic;
DIN : in std_logic_vector(71 downto 0); -- 必ず72本
SAMP_FREQ : in integer range 0 to 2147483647; -- サンプリング周波数
WIDTH72 : in std_logic; -- 1:72ビット 0:36ビット
LENGTH1024 : in std_logic; -- 1:1024ワード 0:512ワード
BUSY : out std_logic -- 必ずどこかに出力すること
);
end component;
signal BLOGANA_TRIG : std_logic;
signal BLOGANA_DIN : std_logic_vector(71 downto 0);
signal BLOGANA_BUSY : std_logic;
|
(上のコードをコピーペーストしてお使いください)
begin文の後ろ、すなわち通常のロジック記述部分で、BLOGANAモジュールをインスタンシエートします。
INST_BLOGANA : blogana port map
( CLK => CLK125M,
TRIG => BLOGANA_TRIG,
DIN => BLOGANA_DIN,
SAMP_FREQ => 125000000,
WIDTH72 => '1',
LENGTH1024 => '1',
BUSY => BLOGANA_BUSY
);
|
上のリストで、赤で書いた数値はお客様の回路によってカスタマイズしてください。この例では、サンプリング周波数(BLOGANAモジュールに入力するクロックの周波数)は125MHzで、72bit幅で1024ワード長のサンプリングすることを示しています。
WIDTH72を'0'に設定した場合は、36ビット幅でサンプリングされます。
LENGTH1024を'0'に設定した場合は、512ワードのサンプリングとなります。
これらの設定を変更することで、ブロックRAMの使用量を節約することができます。
BLOGANA_BUSYは、必ず何らかのロジックを通してFPGAの外に出す信号に接続してください。BLOGANA_BUSYが接続されていない場合は、XILINXの論理合成ツールが、BLOGANAのモジュールを
"入力信号しかないモジュール"と判断して削除してしまいます。 この問題を避けるためには、BLOGANA_BUSY信号が削除されないようFPGAの外に出力することが必要です。
例えば、FPGAの外に出るテストポイントの信号を用意し、
TP <= BLOGANA_BUSY
xor (misc(1) and ...)
などというようにしても構いません。
2−4.見たい信号の指定
先の記述において、BLOGANA_DINという信号は72ビット幅のバスです。
このBLOGANA_DINの信号に、FPGA内部の見たい信号をつないでいきます。
具体的には、例えば、次のように記述します。
BLOGANA_DIN(0) <= txdata(0);
BLOGANA_DIN(1) <= txdata(1);
BLOGANA_DIN(2) <= txdata(2);
BLOGANA_DIN(3) <= txdata(3);
BLOGANA_DIN(4) <= txdata(4);
BLOGANA_DIN(5) <= txdata(5);
BLOGANA_DIN(6) <= txdata(6);
BLOGANA_DIN(7) <= txdata(7);
BLOGANA_DIN(8) <= txdatak(0);
BLOGANA_DIN(9) <= txdata(8);
BLOGANA_DIN(10) <= txdata(9);
BLOGANA_DIN(11) <= txdata(10);
BLOGANA_DIN(12) <= txdata(11);
BLOGANA_DIN(13) <= txdata(12);
BLOGANA_DIN(14) <= txdata(13);
BLOGANA_DIN(15) <= txdata(14);
BLOGANA_DIN(16) <= txdata(15);
BLOGANA_DIN(17) <= txdatak(1);
〜 中略 〜
BLOGANA_DIN(35) <= rxdata_I(10);
BLOGANA_DIN(36) <= rxdata_I(11);
BLOGANA_DIN(37) <= rxdata_I(12);
BLOGANA_DIN(38) <= rxdata_I(13);
BLOGANA_DIN(39) <= rxdata_I(14);
BLOGANA_DIN(40) <= rxdata_I(15);
BLOGANA_DIN(41) <= rxdataK_I(1);
BLOGANA_DIN(46 downto 42) <= LTSTATE;
BLOGANA_DIN(47) <= RX_TLP_END;--;
BLOGANA_DIN(59 downto 48) <= TLP_SEQ_NUM_MINUS1;
BLOGANA_DIN(64) <= RX_InitFC1_P;
BLOGANA_DIN(65) <= RX_InitFC1_NP;
BLOGANA_DIN(66) <= RX_InitFC1_Cpl;
BLOGANA_DIN(67) <= RX_InitFC2_P;
BLOGANA_DIN(68) <= RX_InitFC2_NP;
BLOGANA_DIN(69) <= RX_InitFC2_Cpl;
BLOGANA_DIN(70) <= RX_UpdateFC_P;
BLOGANA_DIN(71) <= RX_UpdateFC_NP;
|
上のリストにおいて、txdataやRX_InitFC2_Cplといった信号はFPGA内部の信号です。これらの信号をロジックアナライザで観測したい場合、上記の例のようにBLOGANA_DINという信号を経由してBLOGANAモジュールに接続します。
つまり、観たい信号をBLOGANA_DINの適切なビットに割り当てて、BLOGANA_DIN全体をBLOGANAモジュールに接続します。BLOGANA_DIN信号を経由すると、MITOUJTAGソフトウェアは、お客様の作成したVHDLファイルを自動的に解析して、信号名を自動で設定することができます。
例えば、下の図のように「ユーザ名」の場所には、VHDLファイルで「BLOGANA_DIN(
) <= 」の右側に書かれた信号名が自動的にセットされます。これらの信号名をユーザが手動で設定する必要はありません。

この機能を「信号名の自動設定」と呼びます。
2−5.トリガー条件の指定
BLOGANAは、トリガー信号が'1'になった場合にサンプリングを開始します。
このためのトリガー信号は、BLOGANA_TRIG信号を経由して設定してください。
トリガーを使用しない場合には、BLOGANA_TRIG信号に常に'1'を設定してください。
例えば、次のリストは、TLP_SEQ_NUMというカウンタが0以外の値になったときにサンプリングを開始するコードです。
BLOGANA_TRIG <= '1' when(TLP_SEQ_NUM /= 0) else '0';
|
2−6.BLOGANAの起動と設定方法
BLOGANAを使用するには、JTAGロジックアナライザを起動した後、下の図の「BRAM」ボタンを押してください。

次のダイアログが開きますので、「ソースファイル(VHDL)」の欄に、先ほどBLOGANAモジュールを埋め込んだVHDLソース指定してください。MITOUJTAGは、ここで指定されたVHDLソースファイルを読み込んで、画面に表示する信号名を設定します。

ファイル名指定欄の右にある「…」ボタンを押すと、ファイル参照が開きます。
ファイルを指定したらOKボタンを押してください。
2−7.サンプリングの開始
「BRAM」ボタンの右にある、緑色の三角ボタン「▲」を押すとサンプリングが開始されます。
あとは、思う存分、BLOGANAをご堪能ください。

3 今後の拡張予定
JTAGロジックアナライザは、以下のような機能拡張の予定があります。
・BLOGANAモードで、トリガー条件となる信号を選択できるようにする
・BLOGANAモードで、1024ワードを超える長さのデータをサンプリングできるようにする
・BLOGANAモードで、72ビットを超える幅のデータをサンプリングできるようにする
・BLOGANAモードを、Spartan2や2E、Virtex5などに対応させる。
・バウンダリスキャンモードでトリガーを使用可能にする。
・バス化した信号を、その数値に応じてアナログ的な波形で表示する。
ご期待ください。