JTAG総合情報サイト>JTAGアドベントカレンダー>12月4日 TAPステートマシン

12月4日 TAPステートマシン

さて、TAPコントローラの中身を詳しく見ていきたいと思います。

TAPコントローラはシフトレジスタとTAPステートマシンで出来ています。

TAPステートマシンというのは16個の状態を持ち、現在のステートとTMSに入力された値で、次のステートが決まるステートマシンです。

その状態遷移図を下に示します。

 

図1 TAPコントローラの状態遷移図

例えば、Shift-DRにいるときにTMS='1'で、TCKにパルスが入ると、TCKの立ち上がりでExit1-DRに遷移します。

なお、このステートマシンは規格で定められた基本中の基本ですが、中にはTMS以外の信号線を増やして、独自のステートを作ってデバッグ機能を拡張しているICもあります。

無制限にとどまることができるステート

いくつかのステート(Pauseステートなど)には無制限に留まることができます。

これはクロック(TCK)を止めることができないJTAGコントローラのために用意されているといわれていますが、本当にそんなものあるのでしょうか。

ステートはTCKの立ち上がりで遷移する

ステートはTCKの立ち上がりで遷移します。

TAPステートとTDO

TDO信号は、Shift-IRとShift-DRのときに出力されます。Shift-DRからExit1-DRに遷移するときに入インピーダンスに開放されます。

したがって、Shift-DRでTMS='1'でTCKが0→1になった瞬間に、TDOはハイインピーダンスに向かいます。

TAPのリセット

TAPのリセット方法

TAPは、以下のいずれかの方法でリセットすることができます。

  1. TMS=‘1’に保ってTCKに5回パルス
  2. TRST=‘0’にする(エッジを検出)
  3. 電源をONにする

TRSTを使う方法はTCKとは非同期にTRSTのエッジでリセットがかかります。

IEEE1149.1の規格では、TMS=1でTCK 5回でリセットされることになっていますが、完全にはリセットされないデバイスもあります。そういうやつは規格外なので個別のやり方でリセットします。

TAPリセット後の状態

DRにはIDCODEレジスタが選択されます。IDCODEのないデバイスではBYPASSレジスタが選択されようになっています。

IRには、IDCODE命令が入るのですが、IRに格納されている値は読み出せないのでこの情報を知っていても意味がないかもしれません。また、IDCODEのないデバイスではBYPASS命令が入ります。

そして、EXTESTなどのモードは解除されます。

 

 

TAPステートの役割

重要なステート

いくつかのステートは重要な役割を持っています。

Run-Test/Idle

いわゆるアイドル状態で、無限に留まることができます。このステートならば安全に待機することができます。

TDOはハイ・インピーダンスですが、このRun-test/IdleのときにTDOからテータス(ROMへの書き込み完了フラグ)が出てくるというICもあったので、規格を無視していろいろな拡張がされていることもあり、注意が必要です。

Capture-DR

JTAG回路の他の部分からDRへ値をコピーする

Capture-IR

JTAG回路のステータスをIRへ代入する

Update-DR

現在のDRの値をJTAG回路の他の部分へコピーする

図2 Updateステートとは

 

Update-IR

現在のIRの値をコマンドとして解釈し、ICがコマンドに従って動作をします

Shift-DR、SHIFT-IR

TDIから入った値でシフトレジスタを1ビットシフトします。