UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 4641

Synplify - HDL で JTAG ピン (TDI、TDO、TCK、TMS) を通常の I/O としてインスタンシエーションする方法

説明

キーワード : TDI, TDO, TCK, TMS, VHDL, Verilog, Synplify, XC4000, XC5200

重要度 : 標準

概要 :
Synplicity の Synplify 用にモード ピン (TDI、TDO、TCK、TMS) をインスタンシエーションする方法を示します。

ソリューション

1

JTAG ピン セルをインスタンシエーションするには、Synplify に含まれているザイリンクス ファミリのライブラリを使用します。 ザイリンクス用セルのインスタンシエーション方法の詳細については、(Xilinx Answer 244) を参照してください。

メモ : HDL での BSCAN のインスタンシエーション方法の詳細については、(Xilinx Answer 2805) を参照してください。

コンフィギュレーション後、バウンダリ スキャンを使用しない場合は、TMS、TCK、および TDI の各パッドに制約はなく、ユーザーが定義できます。また、TDO パッドは双方向のトライステート I/O パッドとして使用できます。 詳細については、(Xilinx Answer 1356) を参照してください。

この機能は XC4000E/X、Spartan、および XC5200 FPGA ファミリのみで使用できます。

メモ : ポートは最上位レベルのポート リストには表示されません。

JTAG ピン (VHDL の場合)

library IEEE;
use IEEE.std_logic_1164.all;
library xc4000;
use xc4000.components.all;

entity jtag_pins is
port ( din, clk : in STD_LOGIC;
qout : out STD_LOGIC);
end jtag_pins;

architecture xilinx of jtag_pins is

attribute black_box : boolean;

component TDI
port (I : out STD_LOGIC);
end component;

component TCK
port (I : out STD_LOGIC);
end component;

component TMS
port (I : out STD_LOGIC);
end component;

component TDO
port (O : in STD_LOGIC);
end component;

component IBUF
port (I : in STD_LOGIC;
O : out STD_LOGIC);
end component;

component OBUF
port (I : in STD_LOGIC;
O : out STD_LOGIC);
end component;

signal TCK_I, TDI_I, TMS_I, TDO_I : STD_LOGIC;
signal TCK_O, TDI_O, TMS_O, TDO_O : STD_LOGIC;

begin

U1 : TDI port map (I => TDI_I);
U2 : TCK port map (I => TCK_I);
U3 : TMS port map (I => TMS_I);
U4 : TDO port map (O => TDO_O);
U5 : IBUF port map (I => TDI_I, O => TDI_O);
U6 : IBUF port map (I => TCK_I, O => TCK_O);
U7 : IBUF port map (I => TMS_I, O => TMS_O);
U8 : OBUF port map (I => TDO_I, O => TDO_O);

-- User application insert here
process (clk)
begin
if (clk'event and clk = '1') then
qout <= TDI_O xor TCK_O xor TMS_O;
end if;
end process;

TDO_I <= din;

end xilinx;

2

JTAG ピン (Verilog の場合)

`include "/products/synplify/lib/xilinx/xc4000.v"

module jtag_pins (din, clk, qout);
input din, clk;
output qout;

reg qout;

wire TCK_I, TDI_I, TMS_I, TDO_I;
wire TCK_O, TDI_O, TMS_O, TDO_O;

TDI U1 (.I (TDI_I));
TCK U2 (.I (TCK_I));
TMS U3 (.I (TMS_I));
TDO U4 (.O (TDO_O));
IBUF U5 (.I (TDI_I), .O (TDI_O));
IBUF U6 (.I (TCK_I), .O (TCK_O));
IBUF U7 (.I (TMS_I), .O (TMS_O));
OBUF U8 (.I (TDO_I), .O (TDO_O));

-- User application insert here
always @(posedge clk)
qout <= TDI_O ^ TCK_O ^ TMS_O;

assign TDO_I = din;

endmodule

3

Synplify の xc4000.v ライブラリは TDI、TCK、TMS を入力ピンとして定義しています。 しかし、これらのピンは、XC4000/XC4000X/Spartan/Spartan-XL デバイスで、入力、出力のいずれにもコンフィギュレーションできます。

これらの 3 つのピンを Verilog で出力としてコンフィギュレーションする方法を、次に示します。

1. xc4000.v を、<path_to_synplicity>/lib/xilinx からプロジェクト ライブラリにコピーします。
2. TDI を出力ピンにするには、次のようにモジュール宣言を変更します。

module TDI(I)/*synthesis syn_black_box*/;
input I /*synthesis .ispad=1*/;
endmodule

メモ : ポート I の方向が、出力から入力に変更されていることに注目してください。

3. 必要に応じて、ほかのピンも同じように変更します。
4. 上記の Verilog の例で示すように、デザインのピンをインスタンシエーションします。

メモ : TDI は出力ピンになったので、OBUF に接続します。

5. プロジェクト ファイル リストに xc4000.v を含め、ほかの Verilog プロジェクト ファイルと共に合成します。 `include 命令は、変更された xc4000.v を含めるのにも使用できます。

4

Synplify の xc4000.vhd ライブラリは TDI、TCK、TMS を入力ピンとして定義しています。 しかし、これらのピンは、XC4000/XC4000X/Spartan/Spartan-XL デバイスで、入力、出力のいずれにもコンフィギュレーションできます。

これらの 3 つのピンを VHDL で出力としてコンフィギュレーションする方法を、次に示します。

1. xc4000.vhd を、<path_to_synplicity>/lib/xilinx からプロジェクト ライブラリにコピーします。
2. TDI を出力ピンにするには、次のようにコンポーネント宣言を変更します。

component TDI
port( I: in STD_LOGIC);
end component;
attribute synthesis_noprune of TDI: component is true;

メモ : ポート I の方向が out から in に変更され、コンポーネントに synthesis_noprune 属性が使用されます。

3. 必要に応じて、ほかのピンも同じように変更します。
4. 上記の VHDL の例で示すように、デザインのピンをインスタンシエーションします。

メモ : TDI は出力ピンになったので、OBUF に接続します。

5. 「xc4000」を「work」に変更します。 これは、xc4000.vhd を work ライブラリにコンパイルするためです。 ライブラリ宣言は、次のようになります。

library work;
use work.components.all;

6. TDI (または、ほかのピン) のコンポーネント宣言をデザイン ファイルから削除します。
7. プロジェクト ファイル リストに xc4000.vhd を含め、ほかの VHDL プロジェクト ファイルと共に合成します。
AR# 4641
日付 12/16/2002
ステータス アクティブ
タイプ 一般