JTAG総合情報サイト>JTAGアドベントカレンダー>12月1日 JTAGとは何か

12月1日 JTAGとは何か

組み込み機器では、いろいろなところでJTAG(ジェイタグ)という言葉を聞きます。

JTAGは組み込みシステムの開発に必須の技術ですが、その仕様のほとんどはICメーカーによって隠されており、まさにブラックボックスです。

JTAGについてもっと詳しく知りたい、トラブルを回避する確実な回路を作りたいと思っても、バウンダリスキャン以外の「現代のJTAG」に関する実践的な資料はほとんどありませんでした。

そこで、このアドベントカレンダーでは、「現代のJTAG」についてひも解いていきたいと思います。

 

 

私とJTAGとの出会い

私がはじめてJTAGに遭遇したのは大学3年生くらいでした。Intel 486DX2というCPUとRAMとROMを万能基板に乗せた、シンプルなマイコンボードを作ろうとして、CPUから生えているTCK、TDI、TMS、TDOという4つの信号線をどう処理してよいかわからなかったという思い出です。

486ボード

↑486ボードの残骸。CPUは盗まれた!

 

最近の高性能なCPUやCPLD、FPGAには必ず、この4つのTCK、TDI、TMS、TDOという信号が出ています。

これがJTAGの信号線なのですが、そもそもJTAGとはいったい何でしょうか。何ができるのでしょうか。

 

JTAGとは何か

JTAGとは、4本のシリアル接続でICの内部回路と通信し、ICの端子や内部状態をプローブする技術です。この規格は1990年にIEEE1149.1として策定されました。そのときの規格を制定した団体の名称「Joint Test Action Group」が、そのままJTAGという規格の名称となりました。

※IEEE(アイトリプルイー)というのは国際的な規格を定めているエラい団体のこと。

ちなみに、「J-TAG」と書くのは間違いです。ハイフンを入れずに、大文字でJTAGと続けて書くようにしてください。

図1 JTAGとは何か

 

JTAGのコネクタ

JTAGのコネクタの形状や、ピン配置、信号の電圧振幅などはIEEEの規格では定められていません。

そのため、各社がそれぞれの規格でコネクタを作っています。

主なメーカーのピン配置についてはこちらのページをご覧ください。

 

JTAGとバウンダリスキャンとIEEE1149.1の違い

JTAGは、もともとLSI間の導通検査や絶縁検査のためのバウンダリスキャンという目的のために作られました。

JTAG、バウンダリスキャン、IEEE1149.1、この3つは混同されやすい(混同しても不都合はないが・・・)ので、違いをわかりやすくまとめておきます。

  • バウンダリスキャンというのは、ICの中と外の境界の部分にシフトレジスタを入れて、入出力信号をモニタしたり、操作したりすること
  • IEEE1149.1というのは、4本信号線でIC内部と通信するための一連のプロトコル(標準レジスタ、標準命令コードの形式など)を定めた規格
  • JTAGというのは、IEEE1149.1でバウンダリスキャンをするための規格を作ったワーキンググループの名前のこと。

 

厳密にはこうなりますが、普通はIEEE1149.1のインタフェースのことをJTAGと呼びます。

バウンダリスキャンについては12月7日の記事で解説します。

 

JTAGの用途

JTAGはバウンダリスキャンで基板検査をするために作られた規格なのですが、バウンダリスキャンをする人がそもそもそんなに多くなかったのと、そもそも基板のエラーを100%の範囲(カバレッジという)を検出できないなどの理由により、「原始のJTAG」バウンダリスキャンを利用するのはごく一部の人たちに限られてきました。

 

しかし、JTAGを使えば、

  • ICの中のテスト回路と4本の線で通信ができるという手軽さ
  • コネクタや電圧・プロトコルが自由であること
  • コストの安さ

などがうけて、フラッシュROMやCPLD、FPGAの書き換え、CPUのデバッグ、FPGAの拡張機能との通信といった、オプション機能のほうが良く使われるようになってきました。

ほとんどの場合、JTAGの利用されている分野はCPUのデバッグか、FPGAの拡張機能でしょう。

本アドベントカレンダーでは、バウンダリスキャンだけではなく、CPUやFPGAといった「現代のJTAG」について解き明かしていきたいと思います。