AN 556: インテルFPGAにおけるデザイン・セキュリティー機能の使用

ID 683269
日付 11/12/2019
Public
ドキュメント目次

内部JTAGインターフェイス

28nmおよび20nm FPGAのJTAG制御ブロックにアクセスするには、外部JTAGインターフェイスと内部JTAGインターフェイスの2つのインターフェイスがあります。

外部JTAGインターフェイスのJTAG制御ブロックへのアクセスは、物理JTAGピン (TCKTDITDO および TMS) を介して行います。FPGAコンフィグレーションに外部JTAGインターフェイスを使用するのは、 JTAGコンフィグレーション手法をプログラミング・ケーブルを介して使用する場合、またはJTAG命令を外部プレーヤーまたはJAMプレーヤーやJTAGチェーン・デバッガー・ツールなどのプロセッサーを使用して行う場合です。内部JTAGインターフェイスとは、内部FPGAコア・ファブリックからの TCKTDITDO 、および TMS 信号とJTAGコントロール・ブロックの間の接続を指します。

JTAGコントロール・ブロックにアクセスするには、このインターフェイスのいずれかを一度に1つずつ使用します。たとえば、内部JTAGインターフェイスを使用すると、JTAG制御ブロックへの外部JTAGインターフェイスはディスエーブルされます。内部JTAGインターフェイスにアクセスするには、WYSIWYGアトムを インテル® Quartus® Primeデザインに含めてください。

図 3. 内部および外部JTAGインターフェイスの接続


表 18.  28nmおよび20nm FPGAのWYSIWYGアトム
デバイスファミリー JTAG WYSIWYGアトム
Arria® V
arriav_jtag <jtagblock_name>
(
.clkdruser(),
.corectl(),
.runidleuser(),
.shiftuser(),
.tck(),
.tckcore(),
.tckutap(),
.tdi(),
.tdicore(),
.tdiutap(),
.tdo(),
.tdocore(),
.tdouser(),
.tdoutap(),
.tms(),
.tmscore(),
.tmsutap(),
.updateuser(),
.usr1user()
);
Cyclone® V
cyclonev_jtag <jtagblock_name>
(
.clkdruser(),
.corectl(),
.runidleuser(),
.shiftuser(),
.tck(),
.tckcore(),
.tckutap(),
.tdi(),
.tdicore(),
.tdiutap(),
.tdo(),
.tdocore(),
.tdouser(),
.tdoutap(),
.tms(),
.tmscore(),
.tmsutap(),
.updateuser(),
.usr1user()
);
Stratix® V
stratixv_jtag <jtagblock_name>
(
.clkdruser(),
.corectl(),
.runidleuser(),
.shiftuser(),
.tck(),
.tckcore(),
.tckutap(),
.tdi(),
.tdicore(),
.tdiutap(),
.tdo(),
.tdocore(),
.tdouser(),
.tdoutap(),
.tms(),
.tmscore(),
.tmsutap(),
.updateuser(),
.usr1user()
);
インテル® Arria® 10
twentynm_jtag <jtagblock_name>
(
.tms(),
.tck(),
.tdi(),
.ntrst(),
.tdoutap(),
.tdouser(),
.tmscore(),
.tckcore(),
.tdicore(),
.ntrstcore(),
.tmscorehps(),
.tckcorehps(),
.tdicorehps(),
.ntrstcorehps(),
.tdocorefrwl(),
.corectl(),
.ntdopinena(),
.tdo(),
.tmsutap(),
.tckutap(),
.tdiutap(),
.ntrstutap(),
.tmsuhps(),
.tckuhps(),
.tdiuhps(),
.ntrstuhps(),
.tmscoreout(),
.tckcoreout(),
.tdocorehps(),
.ntrstcoreout(),
.shiftuser(),
.clkdruser(),
.updateuser(),
.runidleuser(),
.usr1user(),
.tdocore(),
);
インテル® Cyclone® 10 GX
twentynm_jtag <jtagblock_name>
(
.tms(),
.tck(),
.tdi(),
.ntrst(),
.tdoutap(),
.tdouser(),
.tmscore(),
.tckcore(),
.tdicore(),
.ntrstcore(),
.tdocorefrwl(),
.corectl(),
.ntdopinena(),
.tdo(),
.tmsutap(),
.tckutap(),
.tdiutap(),
.ntrstutap(),
.tmscoreout(),
.tckcoreout(),
.tdocorehps(),
.ntrstcoreout(),
.shiftuser(),
.clkdruser(),
.updateuser(),
.runidleuser(),
.usr1user(),
.tdocore(),
);
表 19.  WYSIWYGアトムのポートの機能
ポート 入力/出力 機能
<jtagblock_name>

Arriaii_jtag WYSIWYGアトムの識別子。Verilog HDL、VHDL、およびAHDLなど指定の記述言語に対して有効な識別子名を表します。

.corectl() 入力

JTAGコントロール・ブロックへのアクティブhigh入力。コア・インターフェイスからの内部JTAGアクセスをイネーブルします。コンフィグレーション後にFPGAがユーザーモードに入る時、このポートはデフォルトでlowになっています。このポートをロジックhighにすると、内部JTAGインターフェイスがイネーブルされ (同時に外部JTAG インターフェイスがディスエーブルされ) 、ロジックlowにすると、内部JTAGインターフェイスがディスエーブルされます (同時に外部JTAG インターフェイスがイネーブルされます) 。

.tckcore() 入力 コア TCK 信号。 19
.tdicore() 入力 コア TDI 信号19
.tdocore() 出力 コア TDO 信号19
.tmscore() 入力 コア TMS 信号19
.clkdruser() 入力/出力

これらのポートは、内部JTAGインターフェイスを使用したJTAGセキュアモードをイネーブルするためには使用されていないため、未接続のままにできます。

.runidleuser()
.shiftuser(),
.tck()
.tckutap()
.tdi()
.tdiutap()
.tdo()
.tdouser()
.tdoutap()
.tms()
.tmsutap()
.updateuser()
.usr1user()
19 外部JTAGインターフェイスについては、各デバイスのデータシートでJTAGコンフィグレーションのタイミング仕様を参照してください。内部JTAGインターフェイスの場合は、タイミング制約およびタイミング・クロージャーの解析をこれらのパスに対して実行し、セットアップまたはホールド時間の要件を満たす必要があります。