MITOUJTAGとは何か
製品について
ご購入を検討中の方へ
サポート
JTAGについて
JTAG技術サービス(有料)
JTAG開発日記
JTAGを熱く語る

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は、以下のいずれかの方法でリセットすることができます。
- TMS=‘1’に保ってTCKに5回パルス
- TRST=‘0’にする(エッジを検出)
- 電源を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ビットシフトします。