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# 22211

XAPP058 - micro.c ファイルを変更してデバイス IDCODE を返す方法

説明

キーワード : XAPP058

ザイリンクスのアプリケーション ノート XAPP058 には、エンべデッド SVF ファイル プレーヤのソース コードが掲載されています。このソース コードは、SVF ファイルを実行し、SVF ファイルに含まれる TDO チェックに基づいて success または failure を返します。[Get Device ID] を実行する SVF ファイルを作成すると、デバイスの IDCODE が SVF ファイルに含まれます。この SVF ファイルを実行してデバイス ID を取得すると、デバイスから IDCODE が取得されて SVF ファイルの値と比較され、デバイスからの IDCODE が返されるのではなく、デバイスの IDCODE が SVF ファイルの IDCODE と一致しない場合にエラーが返されます。micro.c ファイルを変更してデバイスの IDCODE を返すことはできますか。

ソリューション

1

最も簡単なソリューションは、XAPP058 のソース コードと SVF を使用して、特定の IDCODE と一致しているかをチェックすることです。

iMPACT で [Get Device ID] コマンドを実行して SVF ファイルを生成した場合、SVF ファイルで特定デバイスの IDCODE 値をチェックできます。XAPP058 のコードでは、[Get Device ID] を実行する SVF ファイルを実行して、指定したデバイスの IDCODE をチェックできます。JTAG チェーンのデバイスの IDCODE が一致した場合、XAPP058 のソース コードの実行結果は success になります。XAPP058 のソース コードで failure が返された場合、IDCODE が一致しなかったことを示します。この方法により、有効な IDCODE を取得するためバイナリ パターンを解析せずに、micro.c 関数から IDCODE をチェックできます。

複数の IDCODE 値のいずれかに一致することをチェックする場合は、それぞれ個別に SVF ファイルを生成し、XAPP058 ソース コードを使用して実行します。これらの SVF ファイルのいずれかに一致した場合、その SVF ファイルの IDCODE と一致していることを示します。

2

埋め込まれた IDCODE を詳細に評価するためバイナリ パターンを返す必要がある場合、XAPP058 の micro.c コードを変更する必要があります。

JTAG チェーンのデバイスから IDCODE を取得する場合、IEEE 規格 1149.1 デバイスの動作を考慮する必要があります。デバイスを起動して IDCODE を送信する手順、サポートされる命令、および JTAG チェーンに含まれるすべてのデバイスのデータ レジスタ長を理解する必要があります。詳細は、IEEE 規格 1149.1 を参照してください。Test-Logic-Reset ステートを介して JTAG TAP (テスト アクセス ポート) をリセットすると、デバイスの JTAG TAP が Shift-DR ステートに遷移したときに、デバイスから IDCODE が送信されます。この手順を実行するには、JTAG TAP を Test-Logic-Reset ステートに遷移し、その後 JTAG TAP を Shift-DR ステートに遷移して、最後にデータ レジスタ ビットを後で評価するために JTAG デバイスの外にシフトするコードを XAPP058 に追加します。

メモ : 次のコードは、この機能を XAPP058 XSVF プレーヤ ソース コード v5.01 で実行するための擬似コードであり、ザイリンクスでは完全にインプリメントまたはテストしていません。

// Assumes the following XAPP058 data structure exists and is initialized
// SXsvfInfo xsvfInfo;
// xsvfInitialize( &xsvfInfo );


// Here is the function to get the IDCODEs (and BYPASS) bits from all devices:
// You must know how many IDCODE (and BYPASS) bits are to be shifted from the chain.
// The total number is given to the function as the lNumBits parameter.
// Upon exit from the function, the IDCODE (and BYPASS) bits will be
// in the xsvfInfo.lvTdoCaptured array
int xsvfGetIDCODEs( long lNumBits )
{
// Reset all JTAG TAPs to Test-Logic-Reset
// According to 1149.1, this makes the IDCODE (or BYPASS) the active instr.
xsvfGotoTapState( &(xsvfInfo.ucTapState), XTAPSTATE_RESET );

// Go to the Shift-DR state to prepare to shift out IDCODE (or BYPASS) bits
xsvfGotoTapState( &(xsvfInfo.ucTapState), XTAPSTATE_SHIFTDR );

// Shift and save IDCODE and BYPASS bits in the xsvfInfo.lvTdoCaptured array
// xsvfInfo.lvTdi is used for TDI input, but the TDI input value is a don?t care
xsvfShiftOnly( lNumBits, &(xsvfInfo.lvTdi), &(xsvfInfo.lvTdoCaptured), 1 );

// End with TAPs in Test-Logic-Reset
xsvfGotoTapState( &(xsvfInfo.ucTapState), XTAPSTATE_RESET );
}
AR# 22211
日付 10/01/2008
ステータス アクティブ
種類 ??????
このページをブックマークに追加