JTAG Boundary Scan(3)
2022/03/12
JTAGコントローラの外部アクセス信号
  • 今回はJTAG入出力とBSR制御を行うJTAGコントローラを扱います。まずはIC外部からアクセスする信号ですが、下記5信号が定められており、これらをまとめてTAP(Test Access Port)と呼びます。

    Table 1: TAP(Test Access Port)
    信号名in/out説明
    TCKinputクロック
    TMSinputモードセレクト信号
    TDIinputシリアルデータ入力
    TDOoutputシリアルデータ出力
    TRSTinputコントローラリセット(オプション)

  • TCKはクロックです。Boundary Scanの場合、JTAGコントローラとBSRの両方でクロックとして利用されます。
  • TMSはモードセレクト信号です。JTAGコントローラのステート制御を行います。
  • TDIはシリアルデータ入力です。インストラクションやデータの入力に使用します。
  • TDOはシリアルデータ出力です。TCK negエッジで出力されます。
  • TRSTはJTAGコントローラのリセットですが、オプション扱いで実装のケースは稀です(*1)

JTAGコントローラのコア側ポート
  • 次はJTAGコントローラに存在するIC内部(コア)側のポート信号ですが、制御対象のBSRが持つポート依存(*2)です。前回のレポートBSRの回路を検討しましたが、そこで列挙した信号がコントローラのコア側ポート構成を決めます

    Table 2: JTAGコントローラのコア側ポート例(実装依存)
    信号名in/out接続先説明
    tdo_en_noutputTDO IOマクロのoutput enableTDOデータ出力/Hi-Zの切り替え制御
    bsr_sioutputBSRチェーン最初のBSRのsiBSRチェーンへのデータ出力
    bsr_soinputBSRチェーン最後のBSRのsoBSRチェーンからのデータ入力
    bsr_captureoutputBSR captureBSRキャプチャ制御
    bsr_shiftoutputBSR shiftBSRチェーンシフト制御
    bsr_updateoutputBSR updateBSRアップデート制御
    bsr_mode_ioutputIO入力側割当BSRのmode入力 BSR mode制御
    bsr_mode_ooutputIO出力側割当BSRのmode出力 BSR mode制御
    bsr_mode_eoutputIO出力Enable割当BSRのmode出力Enable BSR mode制御

  • これらの信号は、JTAGコントローラに設定されたインストラクション及び内部ステートによって適切に制御されます。Figure 1は1個の双方向IOを3個のBSRで制御する場合を例とした、JTAGコントローラとBSRの接続イメージです。

    Figure 1: JTAGコントローラとBSRの接続例

JTAGコントローラのインスラクション
  • JTAGコントローラに設定できるインストラクション(命令)は下記9種類が標準として定められています。これらのインストラクションの内BYPASS, EXTEST, SAMPLE/PRELOADは実装必須(Mandatory)です。またIDCODEはオプション(Optional)ですが、事実上必須として扱われます。

    Table 3: JTAGコントローラのインストラクション
    命令タイプ説明
    EXTESTMandatory基板上の部品間接続をテストするための命令です。
    SAMPLE/PRELOADMandatoryICの現入力/出力値を取得(SAMPLE)した後、
    BSRへ値をロード(PRELOAD)します。
    BYPASSMandatoryTDI/TDO間のシフトチェーンを1bitレジスタでバイパスします。
    IDCODEOptional部品識別の32bitレジスタ(DEVICE ID)をTDI/TDO間に接続します。
    事実上Mandatoryです。
    HIGHZOptionalICの出力ポートを全てオープン(ハイインピーダンス)にします。
    CLAMPOptionalICの出力ポートにBSRで設定した値を適用します。
    TDI/TDO間は1bitレジスタでバイパスされます。
    USERCODEOptionalユーザが設定できるレジスタ(USERCODE)をTDI/TDO間に接続します。
    FPGA等ではConfiguration終了確認に利用できます。
    INTESTOptionalBSRを経由してICの内部へ値を設定し、そのIC出力をBSRで取得します。
    RUNBISTOptionalIC内のBIST回路を実行し、その出力を取得します。

  • 今回はJTAG Boundary Scanについてレポートしているため、USERCODE, INTEST, RUNBISTは扱いません。HIGHZとCLAMPは...まぁ...入れようと思います。HIGHZ命令を入れると、前回検討したBSRでHIGHZ制御の信号を持ったmoduleも必要ですね。これについては実装時に説明を追加します。

  • 今回はここまでとして、次回はEXTEST, SAMPLE/PRELOAD, BYPASS, IDCODE, HIGHZ, CLAMP命令について更に説明したいと思います。
Notes
  • 理由は次回以降のレポート、JTAGコントローラのステートにて説明します。
  • JTAGコントローラとBSRはペアで設計されます。
2022/03/12: 初版
2022/03/19: TDO output enable制御信号(tdo_en_n)追加
Copyright(C) 2022 Altmo
本HPについて