JTAG総合情報サイト>JTAGとは何か>JTAG技術的解説>TAPコントローラ

TAPコントローラ

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

 TAPコントローラはTMSによって制御される16状態のステートマシンです。各ステートには名前がついており、TCK信号の立ち上がりによって図7のように遷移します。TAPコントローラには、ステート名の末尾が-DRとなっているデータレジスタを制御するステートと、末尾が-IRとなっている命令レジスタを制御するステートの、2つの主要なパスがあります。これらのパスは対象となるレジスタが異なるだけで基本的な動作は同じものです。

図7 TAPコントローラの遷移

 

 

 なお、TAPの現在の状態が不明であっても、TRSTをLに遷移させるか、もしくはTMSをHに保った状態でTCKに5回のクロックを入力すると、必ずTEST-LOGIC-RESETステートに遷移するようになっています。

 

 次に、各TAPの状態の動作を詳しく解説します。

 

■CAPTUREステート

 CAPTUREでは、シフトレジスタに値がロードされます。ロードされる値は、バウンダリスキャンレジスタが選択されている場合であれば各I/O端子の状態であり、命令レジスタが選択されている場合であれば、"IRステータスワード"という値になります。

 

■SHIFTステート

 このステートでは、TDIから取り込まれた新しいデータがシフトレジスタに入力され、シフトレジスタの古い内容がTDOに出力されます。すなわち、このステートを通過するたびにデータが1ビット分シフトします。複数のビットをシフトしたい場合は、TMSをLに保ったままTDIにデータをセットし、TCKに必要な回数のクロックを入力します。最後のビットをシフトする際にはTMSをHにしてクロックを与えます。

 JTAGのレジスタの長さは、デバイスの種類やそのときの状態によって変わります。したがって、TDIから与えたデータが、希望するICの希望するセルの位置にたどり着いたかどうかは、制御プログラムが正確に把握していなければなりません。複数のJTAGデバイスをチェーン接続すると、全体のレジスタ長も変わってくるので、シフトの回数には十分な注意が必要です。

 

■UPDATEステート

 このステートでは、シフトレジスタの内容がラッチされ、ICの内部回路に与えられます。バウンダリスキャンを行っていれば各端子の状態が更新されます。インストラクションレジスタが選択されていれば、各コマンドが発効されます。

 

■その他のステート

 Test-Logic-Resetステートは、テストロジックをリセットする状態です。TRST信号をLに遷移させた場合や、TMSをHに保ったままTCKに5回のクロックを与えるとこのステートに到達します。

 Run-Test/Idleはいわゆるアイドル状態で、このステートには無制限にとどまっていることができます。また、このステートではBuilt-in Self Testなどの特定の命令が実行されることがあります。

 SelectやExitなどのステートは、一時的に通過するためのもので、特に機能はありません。Pauseステートはシフト動作を一時的に停止させるためのステートで、一説によるとTCKを止めることができないJTAG制御装置で使われるそうです。