Xilinx XAPP058 組み込み型マイクロコントローラを使用するザイリンクスのインシステム プログラミング機能

Similar documents
PowerPoint Presentation

インテル(R) Visual Fortran コンパイラ 10.0

QuartusII SOPC_Builderで利用できるGPIF-AVALONブリッジとは?

Report Template

AN 100: ISPを使用するためのガイドライン

スライド 1

slide5.pptx

arduino プログラミング課題集 ( Ver /06/01 ) arduino と各種ボードを組み合わせ 制御するためのプログラミングを学 ぼう! 1 入出力ポートの設定と利用方法 (1) 制御( コントロール ) する とは 外部装置( ペリフェラル ) が必要とする信号をマイ

XC9500 ISP CPLD JTAG Port 3 JTAG Controller In-System Programming Controller 8 36 Function Block Macrocells to 8 /GCK /GSR /GTS 3 2 or 4 Blocks FastCO

-2 外からみたプロセッサ GND VCC CLK A0 A1 A2 A3 A4 A A6 A7 A8 A9 A10 A11 A12 A13 A14 A1 A16 A17 A18 A19 D0 D1 D2 D3 D4 D D6 D7 D8 D9 D10 D11 D12 D13 D14 D1 MEMR

AN 630: アルテラCPLD におけるリアルタイムISP およびISP クランプ

Quartus II はじめてガイド - Convert Programming File の使い方

TXZ Family Reference Manual BSC-A

外部SQLソース入門

Nios II Flash Programmer ユーザ・ガイド

Notes and Points for TMPR454 Flash memory

1. A/D 入力について分解能 12bit の A/D コンバータ入力です A/D 入力電圧とディジタル値との対応は理論上 入力電圧 0V : 0 入力電圧 +3V : 4095 です 実際はオフセットと傾きがあり ぴったりこの数値にはなりません 2. A/D 入力に使用する信号 STM32L_A

デジタル回路入門

Quartus Prime はじめてガイド - デバイス・プログラミングの方法

PowerPoint Presentation

Report Template

1. 新規プロジェクト作成の準備新規プロジェクトのためのフォルダを用意して そこにプロジェクトを作成します [ 新しいフォルダー ] をクリックして希望のフォルダに新しいフォルダを作成します この例では TrST_F401N_BlinkLD2 というフォルダを作成しました TrST_F401N_Bl

(Microsoft Word - \214\264\215e B_\217\221\202\253\215\236\202\335\225\224.docx)

RTC_STM32F4 の説明 2013/10/20 STM32F4 内蔵 RTC の日付 時刻の設定および読み込みを行うプログラムです UART2( 非同期シリアル通信ポート 2) を使用して RTC の設定および読み込みを行います 無料の開発ツール Atollic TrueSTUDIO for

エレクトーンのお客様向けiPhone/iPad接続マニュアル

Nios II - PIO を使用した I2C-Bus (2ワイヤ)マスタの実装

Microsoft Word - quick_start_guide_16 1_ja.docx

Quartus Prime - プログラミング・ファイルの生成や変換(Convert Programming Files)

スライド 1

ダウンロード方法 アルテラのソフトウェアをインストールするためのダウンロード ファイルには以下の種類が あります.tar フォーマットのソフトウェアとデバイス ファイルがバンドルされたセット ダウンロードとインストールをカスタマイズするための個別の実行ファイル ディスクに焼いて他の場所にインストール

Microsoft Word - DWR-S01D_Updater_取扱説明書_120514A.doc

ダウンロード方法アルテラのソフトウェアをインストールするためのダウンロード ファイルには以下の種類があります.tar フォーマットのソフトウェアとデバイス ファイルの完全なセット ダウンロードとインストールをカスタマイズするための個別の実行ファイル ディスクに焼いて他の場所にインストールするための

CoIDE 用 F4D_VCP の説明 V /07/05 USB の VCP( 仮想 COM ポート ) による非同期シリアル通信を行うプログラムです Free の開発ツール CoIDE で作成した STM32F4 Discovery 用のプロジェクトです プログラムの開始番地は 0x

任意の間隔での FTP 画像送信イベントの設定方法 はじめに 本ドキュメントでは AXIS ネットワークカメラ / ビデオエンコーダにおいて任意の間隔で画像を FTP サー バーへ送信するイベントの設定手順を説明します 設定手順手順 1:AXIS ネットワークカメラ / ビデオエンコーダの設定ページ

MSP430 CCSv5 を使い Flash Memory 内容と version 情報を確認する方法 ( テクニック編 ) Rev: PIC Trout 今回は 下記の2 件について説明します 1) CCSv5 を使用して MSP430 の Flash Memory 内容を

ScanFront300/300P セットアップガイド

2006年10月5日(木)実施

SOPC Builder ペリフェラル 簡易ユーザ・ガイド - PIO (Parallel I/O)

インターネット接続ガイド v110

S1C17 Family Application Note S1C17 シリーズ PORT 多重割り込みアプリケーションノート Rev.1.0

DS-30

ES-D400/ES-D200

EPSON ES-D200 パソコンでのスキャンガイド

ダウンロード方法 アルテラのソフトウェアをインストールするためのダウンロード ファイルには以下の種類があります.tar フォーマットのソフトウェアとデバイス ファイルがバンドルされたセット ダウンロードとインストールをカスタマイズするための個別の実行ファイル ディスクに焼いて他の場所にインストールす

DS099-E09: XC3S5000 FPGA エラッタおよび Spartan-3 データシートの確認

MAX IIデバイスのIEEE (JTAG)バウンダリ・スキャン・テスト

1. ボードの複数台制御 コンフィグ ROM から FPGA が起動できる場合を想定しています FPGA 回路には 特定のレジスタアドレスにプリセットしたデータが必要です 製品出荷時のサンプル FPGA 回路では レジスタ No.3 を 8bit 幅に設定し FPGA 外部の 4bit ディップスイ

DS-70000/DS-60000/DS-50000

ES-D400/ES-D350

1. USB の VCP( 仮想 COM ポート ) について USB の VCP( 仮想 COM ポート ) は USB を非同期シリアル通信として使用するための USB のドライバです PC には VCP ドライバをインストールする必要があります USB の VCP( 仮想 COM ポート )

ServerView with Data ONTAP-v™ PowerChute® Network Shutdown 設定について

2

ファイル メニューのコマンド

Rational Roseモデルの移行 マニュアル

Veritas System Recovery 18 System Recovery Disk

RX600 & RX200シリーズ アプリケーションノート RX用仮想EEPROM

内容 1. 仕様 動作確認条件 ハードウェア説明 使用端子一覧 ソフトウェア説明 動作概要 ファイル構成 オプション設定メモリ 定数一覧 変数一

DWR-S01D Updater 取扱説明書 発行日 :2011/2/28

WAGO PROFIBUS バスカプラ/コントローラと、QJ71PB92Dとのコンフィグレーションマニュアル

TFTP serverの実装

プレポスト【解説】

Microsoft Word - Win-Outlook.docx

DIGNO® ケータイ ユーザーガイド

2015/04/01 改定 オムロン DeviceNet ユニット CJ1W-DRM21 に関するコンフィグレーション作業について 1. 概要 DeviceNet ユニット CJ1W-DRM21 を装着したオムロン製 CJ2 シリーズと WAGO-I/0-SYSTEM DeviceNet 対応バスカ

ScanFront 220/220P 取扱説明書

ScanFront 220/220P セットアップガイド

AWS Client VPN - ユーザーガイド

GT-X830

デザインパフォーマンス向上のためのHDLコーディング法

XAPP453 「3.3V 信号を使用した Spartan-3 FPGA のコンフィギュレーション」 v1.0 (02/05)

PCL6115-EV 取扱説明書

Cisco ViewMail for Microsoft Outlook クイックスタートガイド (リリース 8.5 以降)

PX-504A

使用する前に

PX-434A/PX-404A

Welcome-Kit ~STM32L4-Nucleo~

インテル® Parallel Studio XE 2019 Composer Edition for Fortran Windows : インストール・ガイド

1. UART について UART は Universal Asynchronous Receiver Transmitter の頭文字をとったもので 非同期シリアル通信と呼ばれます シリアル通信とは 一本の信号線でデータをやりとりするために 1bit ずつデータを送出することをいいます データを受

AquesTalk プログラミングガイド

1. ST-LINK Utility のダウンロード Windows7 PC にインストールする場合について説明します 1.1. STMicroelectronics のサイト STMicroelectronics のサイトを開きます ここに ST-LINK と入力して検索します ( 右側の虫眼鏡を

1. はじめに 本書は スプリット演算器 MFS2 用コンフィギュレータソフトウェア の取扱方法 操作手順 注意事項などを説明したものです Windows の操作や用語を理解している方を前提にしています Windows の操作や用語については それぞれのマニュアルを参照してください 1.1. MFS

スクールCOBOL2002

Prog1_12th

Microsoft PowerPoint - RL78G1E_スタータキットデモ手順_2012_1119修正版.pptx

スライド 1

DSP5Dアップグレードガイド

VPN 接続の設定

本書は INpMac v2.20(intime 5.2 INplc 3 Windows7/8/8.1に対応 ) の内容を元に記載しています Microsoft Windows Visual Studio は 米国 Microsoft Corporation の米国及びその他の国における登録商標です

BOM for Windows Ver

kiso2-03.key

Oracle ESB - レッスン02: CustomerDataバッチCSVファイル・アダプタ

AQUOS ケータイ2 ユーザーガイド

RL78開発環境移行ガイド R8C/M16C, H8S/H8SXからRL78への移行(統合開発環境編)(High-performance Embedded Workshop→CS+)

Notes and Points for TM4C123Gx Internal Flash memory

GT-F740/GT-S640

Microsoft Word - Writing Windows Installer's DLL.doc

SuperH RISC engineファミリ用 C/C++コンパイラパッケージ V.7~V.9 ご使用上のお願い

ServerView RAID Manager VMware vSphere ESXi 6 インストールガイド

Powerデバッガ(Version1

Microsoft PowerPoint - kougi7.ppt

Transcription:

XAPP058 (v4.0) 2007 年 0 月 日 アプリケーションノート : ザイリンクスファミリ 組み込み型マイクロコントローラを使用するザイリンクスのインシステムプログラミング機能 本資料は英語版 (v4.0) を翻訳したものです 英語の更新バージョンがリリースされている場合には 最新の英語版を必ずご参照ください 概要 ザイリンクスの高性能 CPLD FPGA およびコンフィギュレーション PROM ファミリは インシステムプログラミング機能 信頼性の高いピン固定機能 JTAG バウンダリスキャンテスト機能を提供します この強力な機能の組み合わせにより デバイスピン配置を維持したままで大幅なデザイン変更も可能となり プリント基板の変更が不要になります 内蔵コントローラを使用してオンボードの RAM または EPROM からこれらの CPLD および FPGA をプログラムすると フィールドでもデザインのアップグレード 変更 テストを容易に行うことができます ザイリンクスファミリ Virtex Spartan CoolRunner XC9500 シリーズ Platform Flash PROM ファミリ XC8V00 ファミリ はじめに ザイリンクスの CPLD および FPGA ファミリでは これまで不可能であった新しいデザインを実現するために卓越した性能と最新アーキテクチャを組み合わせています インシステムプログラミング機能 信頼性の高いピン固定機能 JTAG テスト機能を組み合わせることにより 次の重要な利点を提供します デバイスの処理コストを削減し タイムトウマーケット ( 製品の市場投入までに要する時間 ) を短縮します 新規プリント基板のレイアウトコストを節約します 遠隔地からの保守 変更 テストを可能にします 製品の寿命を伸ばし 機能を強化します 独自のユーザー固有機能を実現します 図 に示す ISP コントローラは EPROM に格納されているデザイン情報でザイリンクスの CPLD および FPGA を自動的にプログラミングする簡単な方法を提供し これまでには得ることができなかった利点を提供します このデザインは アプリケーションを遠隔地からダウンロードするよう変更でき どのマイクロコントローラに対しても 添付の C コードをコンパイルすれば対応可能です デバイスプログラミングファイルを作成するために ザイリンクスは impact TM ツールを提供しています これは ISE ソフトウェアに含まれるツールで 標準の JEDEC/BIT/MCS/EXO デバイスプログラミングファイルを自動的に読み込み オンボード EPROM または RAM に格納可能な XSVF フォーマット ( コンパクトなバイナリ形式 ) に変換します この変換されたフォーマットには CPLD FPGA およびコンフィギュレーション PROM に対するデータとプログラミング命令が含まれます CPLD に対しては JEDEC ファイル FPGA に対しては BIT コンフィギュレーション PROM に対しては MCS/EXO ファイルが変換されます 805 マイクロコントローラは XSVF 情報を解釈し ザイリンクスデバイスに対するプログラミング命令 データ 制御信号を生成します 簡単な IEEE 49. (JTAG) インターフェイスを使用すれば 高価なハードウェアを使用することなく ザイリンクスデバイスを簡単にプログラムしテストすることができます 複数のデバイスをディジーチェーン接続して 4 線式ワイヤ つでアクセスポート (TAP) を構成可能で 任意の数のザイリンクスデバイスや他の JTAG 準拠デバイスを制御することができます このアプリケーションノートに関連するファイルとユーティリティのパッケージが提供されています Web サイト ftp://ftp.xilinx.com/pub/swhelp/cpld/eisp_pc.zip からダウンロードしてください Copyright 2008 Xilinx, Inc. All rights reserved. Xilinx, the Xilinx logo, the Brand Window, Virtex, Spartan, CoolRunner, ISE, and other designated brands included herein are trademarks of Xilinx, Inc. Certain other third-party trademarks are used under license, for further information, see http://japan.xilinx.com/legal.htm. All other trademarks are the property of their respective owners. ( この日本語訳 ( 参考のみ ) は http://japan.xilinx.com/support/ documentation/disclaimer.htm を参照してください ) XAPP058 (v4.0) 2007 年 0 月 日 japan.xilinx.com

Test Access Port to ISP Device 5Mhz 0.uf TCK TMS TDI TDO 2 3 4 7 8 9 805 +5 74x373 OE 3 8 4 7 7 4 8 3 P.0 P. P0.0 AD7 38 P.2 P0. 37 P.3 P0.2 36 P.4 P0.3 35 P.5 P0.4 34 P.6 P0.5 33 P.7 P0.6 AD0 RST P0.7 3 P3.0 EA 30 P3. ALE 29 P3.2 PSEN 28 P3.3 P2.7 27 P3.4 P2.6 26 P3.5 P2.5 25 WR P2.4 24 RD P2.3 23 XTL P2.2 22 XTL2 P2. 2 P2.0 0 2 9 5 6 6 5 9 2 IN OUT 805 CP +5 PSEN Address Bus (A0-A7) Data Bus (D0-D7) Address Bus (A8-A5) Program Memory RD Xilinx Data Memory X058_0_22700 図 : ISP コントローラの回路図 ザイリンクスの CPLD FPGA コンフィギュレーション PROM のプログラミング シリアルベクタフォーマット (SVF) は IEEE 49. (JTAG) のハイレベルバス動作を記述する文法仕様です この SVF は Texas Instruments 社が開発し Teradyne 社や Tektronix 社などの JTAG テスト装置およびソフトウェアメーカにデータ変換の標準として採用されてきました ザイリンクスの CPLD FPGA およびコンフィギュレーション PROM は TAP を通してプログラミングおよび JTAG バウンダリスキャンテスト命令を SVF フォーマットで受け付けます これら TAP 信号のタイミングを 20 ページの図 6 に示します SVF フォーマットは ASCII であり ASCII はメモリを多く必要とするため組み込みアプリケーションには不向きです したがって メモリ要求を最小限に抑えるために SVF をさらに XSVF と呼ばれるよりコンパクトな ( バイナリ ) フォーマットに圧縮します ザイリンクス ISE に含まれる impact ソフトウェアは 標準 JEDEC/BIT/MCS/EXO プログラミングファイルを SVF フォーマットに自動的に変換します このデザインでは 805 の C コードアルゴリズムにより XSVF ファイルを解読して ターゲットに必要な JTAG TAP スティミュラス信号を供給し プログラミングとオプションのテスト動作 (XSVF ファイル内で定義されている ) を実行します メモ : SVF コマンドと XSVF コマンドおよびそれらのファイルフォーマットの説明については [Ref 3] を参照してください このデザインで使用されるプログラミングファイルを生成するためのフローをそれぞれ図 2 図 3 図 4 に示します 2 japan.xilinx.com XAPP058 (v4.0) 2007 年 0 月 日

Create PROM File (MCS/EXO) from FPGA Bitstream(s) with impact or PROMGen. Using Xilinx ISE Software Tools Convert PROM File to XSVF File Using impact Create Intel Hex File Appendix-D c-code can be used if embedded processor cannot convert binary to hex. Program on-board RAM or EPROM with Hex File containing XSVF Code X058_04_09207 図 2: コンフィギュレーション PROM のプログラムフロー Create Design Using Xilinx ISE Software Tools Sythesize and Translate Design Fit Design Generate a JEDEC Programming File Convert JEDEC File to XSVF File with impact Create Intel Hex File Appendix-D c-code can be used if embedded processor cannot convert binary to hex. Program on-board RAM or EPROM with Hex file containing XSVF Code X058_02_092007 図 3: CPLD のプログラムフロー XAPP058 (v4.0) 2007 年 0 月 日 japan.xilinx.com 3

Create Design Using Xilinx ISE Software Tools Translate and Synthesize Design MAP, PAR (Place and Route) Design Generate Programming File in Binary Format (bitstream) with BitGen Convert Bitstream to XSVF File Using impact Create Intel Hex File Appendix-D c-code can be used if embedded processor cannot convert binary to hex. Program on-board RAM or EPROMwith Hex File containing XSVF Code 図 4: FPGA のプログラムフロー X058_03_092007 JTAG 命令の概要 ザイリンクスデバイスは JTAG TAP を使用してプログラミング命令とテスト命令の両方を受け入れます プログラミングと機能テストに使用される JTAG コマンドとその説明を次に示します 表 : プログラムおよびテスト用の JTAG 命令 命令 説明 すべてのデバイスでサポートされる命令 EXTEST INTEST SAMPLE/PRELOAD BYPASS デバイス I/O ピンを内部デバイス回路から分離して デバイス間の接続テストをイネーブルします デバイスピンを使用してテスト値を入力し 結果をキャプチャします デバイスをシステムから分離し テストベクタをデバイス入力ピンに入力し デバイス出力ピンから結果をキャプチャします 値をバウンダリスキャンレジスタにロードして デバイス出力ピンを駆動します また 入力ピンの値もキャプチャします TDI と TDO を機能的に接続して バウンダリスキャンチェーン内のデバイスをバイパスします CPLD FPGA およびコンフィギュレーション PROM に共通の命令 EXTEST IDCODE HIGHZ デバイス I/O ピンを内部デバイス回路から分離して デバイス間の接続テストをイネーブルします デバイスピンを使用してテスト値を入力し 結果をキャプチャします 32 ビットのハードウェア識別コードを返します このコードは部品タイプ メーカ バージョン番号を定義しています 全デバイスピンを未接続のハイインピーダンス状態にします 4 japan.xilinx.com XAPP058 (v4.0) 2007 年 0 月 日

表 : プログラムおよびテスト用の JTAG 命令 ( 続き ) 命令 説明 XC4000/Spartan/Spartan-XL ファミリでのみサポートされる命令 CONFIGURE READBACK 設定のためにコンフィギュレーションバスへのアクセスを可能にします. リードバックのためにコンフィギュレーションバスへのアクセスを可能にします Virtex および Spartan-II/3/3E/3A/3AN ファミリでのみサポートされる命令 CFG_IN/CFG_OUT JSTART 設定およびリードバックのためにコンフィギュレーションバスへのアクセスを可能にします C スタートアップクロック = JTAGCLK のときにスタートアップシーケンスをクロック駆動します. CPLD およびコンフィギュレーション PROM でのみサポートされるコマンド ISPEN XC9500/XL/XV デバイスの ISP 機能をイネーブルし 全デバイス機能ピンをフローティング状態にし プログラミングロジックを初期化します FERASE 指定のプログラムメモリブロックを消去します FPGM FVFY ISPEX 定アドレスの特定ビット値をプログラムします 自動アドレス生成機能を持つ XC9526 とそれより大規模なデバイスには FPGMI 命令を使用します 指定アドレスのヒューズの値を読み出します 自動アドレス生成機能を持つ XC9526 とそれより大規模なデバイスには FVFYI 命令を使用します SP モードから抜け出て デバイスは全ピンが動作可能なプログラムされた機能に初期化されます 次の命令もありますが プログラミングや機能テストには使用されません 表 2 : その他の JTAG 命令 命令 CPLD およびコンフィギュレーション PROM に固有の命令 USERCODE 説明 32 ビットのユーザープログラマブルコードを返します このコードはバージョン制御情報またはその他のユーザー定義変数の保存に使用します XC4000/Spartan/Spartan-XL ファミリに固有の命令これらの命令により ユーザー定義レジスタのキャプチャ シフト USER/USER2 アップデートが可能です Virtex および Spartan-II/3/3E/3A/3AN ファミリに固有の命令 USR/USR2 これらの命令により ユーザー定義レジスタのキャプチャ シフト アップデートが可能です コンフィギュレーション PROM に固有の命令 FADDR PROM アレイアドレスレジスタを設定します DATA0 アレイワードラインレジスタにアクセスします XAPP058 (v4.0) 2007 年 0 月 日 japan.xilinx.com 5

表 2 : その他の JTAG 命令 ( 続き ) 命令 PROGRAM SERASE 説明 ワードラインをアレイにプログラムします アレイのプログラムされた値をグローバルにリファインします impact を使用した XSVF ファイルの作成 FPGA CPLD PROM プログラムファイルから SVF ファイルを作成する方法について説明します ここでは ザイリンクスの ISE ソフトウェアが使用されていることを前提としています このソフトウェアパッケージには ザイリンクス CPLD および FPGA のインプリメンテーションツール および impact ソフトウェア ( プログラムおよびファイル生成ソフトウェア ) が含まれています impact では グラフィカルユーザーインターフェイスとバッチユーザーインターフェイスの両方を使用できます グラフィカルツールは Project Navigator ~ 起動できます バッチツールは シェルを開きコマンドラインで impact -batch と入力して起動します impact バッチツールを使用した XSVF ファイルの作成 図 2 図 3 図 4 のようにプログラムファイルを生成したら impact バッチツールを使用して XSVF ファイルが生成できるようになります. 新しいシェルのコマンドラインで 次のコマンドを入力して impact バッチツールを起動します jtagprog svf 次のメッセージが表示されます Release <Release Number> - impact <Version Number> Copyright (c) 995-2007 Xilinx, Inc. All rights reserved. 2. デバイスタイプを設定し デザイン名を割り当てます この操作を実行するには impact のプロンプトに次のコマンドを入力します setmode -bs setcable -port xsvf -file "c:/filename.xsvf" adddevice -p # -file "c:/designname.xxx" # では JTAG チェーンのポジションを指定します デバイスチェーンが つ使用される場合は -p になります 追加されるファイルの拡張子は CPLD の場合は.jed FPGA の場合は.bit PROM ファイルの場合は.mcs バイパスされるデバイスの場合は.bsd になります.bsd ファイルは impact で XSVF ファイルを作成する際に JTAG チェーンにザイリンクスデバイス以外のデバイスが含まれている場合に使用されます サポートされる impact バッチコマンドについては オンラインのソフトウェアマニュアルを参照してください よく使用される例は 次の表に記述しています その他 詳細なオプションのリストについては リファレンスマニュアルを参照してください 表 3 : よく使用される impact バッチコマンド コマンド説明と使用方法 erase [-o -override] -p -position <position> [-ver <version>] 指定デバイスを消去するときに必要なバウンダリスキャンシーケンスを記述する XSVF ファイルを生成します -O は デバイスの書き込み保護より優先する消去シーケンスを生成するのに使用します -p はターゲットになる JTAG チェーンのデバイスのポジションを指定し -ver は 削除する Platform Flash PROM (XCFxxP) のデザインリビジョンを指定するために使用します verify -p -position <position> [-ver <version>] 6 japan.xilinx.com XAPP058 (v4.0) 2007 年 0 月 日

表 3 : よく使用される impact バッチコマンド コマンド デバイスの内容をリードバックするためのバウンダリスキャンシーケンスを記述する XSVF ファイルを生成し その内容を指定した JEDEC ファイルの内容と比較します -p は検証される JTAG チェーンでのデバイスのポジションを指定します - ver は 検証するPlatform Flash PROM (XCFxxP) のデザインリビジョンを指定します program [-e -erase] [-v -verify] -p -position <position> [-u -usercode <codestring>][-ver <version>] [-parallel] [-loadfpga] JEDEC/BIT/MCS/EXO ファイルに指定されたプログラミングデータを使用してデバイスをプログラムするためのバウンダリスキャンシーケンスを記述する XSVF ファイルを生成します -p は JTAG チェーンのデバイスポジションを示し -u は指定されたユーザーコードを指定するために使用します -ver ではプログラムされる Platform Flash PROMs [XCFxxP] のバージョンリビジョンを指定します -parallel は SelectMAP モードで FPGA をロードするために設定する OROM パラレルコンフィギュレーションビットを指定し -loadfpga は FPGA がプログラムされた後に自動的に読み込まれるザイリンクス PROM があることを指定します CPLD またはコンフィギュレーション PROM をプログラムするときは 次のコマンドを推奨します program -e -v -p FPGA をプログラムするときは 次のコマンドを推奨します program -p readidcode -p -position <position> 説明と使用方法 quit バウンダリスキャンチェーンの <position> にあるデバイスから予測される 32 ビットの IDCODE を検証する XSVF を生成します impact バッチモードを終了します XAPP058 (v4.0) 2007 年 0 月 日 japan.xilinx.com 7

グラフィカルユーザーインタフェースを使用した SVF ファイルの生成 図 2 図 3 図 4 のようにプログラムファイルを生成したら impact グラフィカルツールを使用して XSVF ファイルが生成できるようになります. ISE Project Navigator の [Generating Programming File] プロセスの下にある [Configure Device (impact)] をダブルクリックするか システムシェルを開いて impact と入力します 図 5 に示す impact のウィザードで [Prepare Boundary-Scan File] をオンにし [XSVF] を選択し [Finish] をクリックします 図 5: impact のウィザード 2. XSVF ファイルに書き出すモードを設定します データを格納する XSVF ファイルの名前を指定し ファイル生成モードの画面が表示されたら [OK] をクリックします 3. JTAG チェーンを設定します まず JTAG チェーンの各デバイスに対するファイルを指定します チェーンにデバイスが複数含まれる場合は 追加するデバイスの隣を右クリックし [Add Xilinx Device] または [Add Non-Xilinx Device] を選択します 8 japan.xilinx.com XAPP058 (v4.0) 2007 年 0 月 日

ターゲットデバイスを選択し ( ハイライトされます ) 右クリックすると そのデバイスで使用可能な操作が表示されますので XSVF ファイルに書き出す操作を選択します ( 図 6 を参照 ) 図 6: デバイスの追加 X058_22_092307 4. [Output] [XSVF File] [Stop writing to the XSVF] をクリックすると XSVF ファイルへの書き出しを終了したり 停止したりできます ( 図 7 を参照 ) 図 7: [Define Device] ダイアログ X058_2_092307 XAPP058 (v4.0) 2007 年 0 月 日 japan.xilinx.com 9

メモ :. 選択したデバイスをプログラムする操作として [Erase before Programming] および [Verify] チェックボックスをオンにして [Operations] [Program] を実行することを推奨します FPGA デバイスの場合は [Verify] チェックボックスはオンにしないことを推奨します 2. 要求された操作の実行中にチェーンのすべてのデバイスを High-Z に設定しておく場合は [Edit] [Preferences] [impact] [Configuration Preference] で [BYPASS] ではなく [HIGHZ] をオンにします EPROM のプログラミング EPROM をプログラムするときは バイナリ XSVF ファイルを Intel Hex または同等の PROM フォーマットファイルに変換する必要があります 組み込み型プロセッサの多くの開発システムソフトウェアでは インクルードされたバイナリファイルを自動的に該当するフォーマットに変換します この機能がないシステムの場合は 30 ページの 付録 D : バイナリから Intel Hex へのトランスレータ の C コードを参照して変換を実行してください ソフトウェアの制約 impact は JEDEC/BIT/MCS/EXO ファイルの生成が可能なデバイスに対してのみ XSVF ファイルを生成できます 使用中の開発ソフトウェアが 使用しようとする特定のデバイスに対して JEDEC/BIT/MCS/EXO ファイルを生成できることを確認してください CoolRunner CPLD に対して SVF を生成するための命令については ザイリンクのサポートウェブサイト (http://japan.xilinx.com/support) を参照してください ハードウェアデザイン 2 ページの図 に示すとおり このリファレンスデザインでは 805 マイクロコントローラ アドレスラッチ および 805 コードと CPLD/FPGA/PROM のプログラミングデータを保持するのに充分な容量の EPROM または RAM のみ必要です ハードウェアデザインの説明 この例の 805 デザインでは 64K のプログラムスペースと 64K のデータスペースが使用できますが これより広いデータスペースを必要とするデバイスもあります 805 ではポート 0 でデータとアドレスを多重化しています ALE 信号により 74X373 が下位アドレスをラッチし 上位アドレスは出力ポート 2 に出力されます 次にポート 0 はフローティング状態になり 選択した EPROM がデータ入力を駆動できるようにします 次に PSEN 信号が Low になり 805 プログラム読み出し動作を起動するか または RD 信号が Low になり CPLD プログラミングデータ読み出し動作を起動します 必要な EPROM メモリの予測 表 4 に プログラミングデータの格納に必要な EPROM 容量の予測値を示します 表 4: XSVF ファイルのサイズ デバイスタイプ ファイルサイズ ( バイト ) XC9536 45572 XC9572 03928 XC9508 75250 XC9544 44222 XC9526 259620 XC95288 403698 XC9536XL 3886 0 japan.xilinx.com XAPP058 (v4.0) 2007 年 0 月 日

表 4: XSVF ファイルのサイズ ( 続き ) デバイスタイプ ファイルサイズ ( バイト ) XC9572XL 5590 XC9544XL 78398 XC95288XL 3204 XCR3064XL 249 XCR328XL 40067 XCR3256XL 90042 XC8V52 3389 XC8V0 675399 XC8V02 34767 XC8V04 268283 XCS20XL 2400 XCS40XL 4486 XC2S00 03969 XC2S50 38352 XCV300 232876 XCV000 84055 XCV00E 4943 XCV300E 24938 XCV600E 526368 XCV000E 8759 XCV2000E 349542 XC2V6000 397958 XC2VP7 565369 XSVF ファイルのサイズはデバイスタイプのみに依存し デザインのインプリメンテーションには依存しません さらに XSVF ファイルの圧縮が必要な場合は Lempel-Ziv のような標準圧縮技術を使用できます 他のアプリケーション向けの変更 このアプリケーションノートに示すデザインはスタンドアロン ISP コントローラ用ですが これらの技術を既にデザイン内に組み込まれているマイクロコントローラに対して適用することもできます このデザインを既存のマイクロコントローラに組み込むときは TAP を駆動する 4 本の I/O ピン および制御プログラムと CPLD/FPGA/PROM ダウンロードデータを保持するための充分な記憶容量を用意するだけで済みます さらに JTAG ポートのタイミングを確保するようための注意が必要です このデザインの TAP タイミングは 805 クロックに依存しています 他の 805 クロック周波数または別のマイクロコントローラに対しては タイミングを再計算して 22 ページの 例外処理 に規定されるタイミングを満たすようにする必要があります XAPP058 (v4.0) 2007 年 0 月 日 japan.xilinx.com

TAP ポートの最大トグル速度は データのシフトだけでも数百万 TCK サイクルを必要とする FPGA および PROM の全体的なプログラミング時間に影響を与えます CPLD の場合は 累積プログラムパルス時間がデータシフト時間よりもプログラム時間により大きな影響を与えます 他のマイクロコントローラを使用するときは 正しい TAP タイミング関係を維持したまま I/O サブルーチンコールを変更する必要が生じます これらのサブルーチンコールは ports.c ファイル内にあります その他のすべての C コードはマイクロコントローラに依存しないので 変更する必要はありません このデザインでは EPROM の代わりに RAM を使用できます RAM を使用した場合には モデムとユーザーが作成したリモートコントローラソフトウェアを使用して リモートから CPLD/FPGA/PROM デバイスをプログラムしてテストできます デバッグに関する提案 このデザインのテストに 次の提案が役立つ場合があります TCK 周波数を下げて プログラミングと消去の待ち時間が充分長いことを確認します ISP モードで機能ピンがスリーステート状態になることを確認します ISPEX コマンドで ISP モードを終了したとき 機能ピンの初期化を確認します プログラミングの対象でないデバイスはバイパスモードにあることを確認します バイパスモードにより TDO が TDI と同じになり TCK クロックの パルス分遅延されます ダウンロードパッケージからプリコンパイルされた playxsvf.exe を使用し Xilinx Parallel Cable III または IV を通して PC 上で XSVF を実行します ターゲットデバイスの IDCODE のみをチェックする簡単な XSVF を生成し ハードウェアおよびソフトウェアの基本的な機能をテストします 消去 ブランクチェック プログラム および検証動作用として個々に XSVF ファイルを生成し実行して 問題領域を特定します impact およびダウンロードケーブルからデバイスをプログラムし 基本的なハードウェア機能を検証します ファームウェアのデザイン C コードのフローチャートを図 8 から図 5 に示します このコードはプログラムデータ EPROM 内の XSVF ファイルから命令と引数を連続的に読み出し 24 ページの 付録 A : XSVF ファイルマージユーティリティ に示す 3 種類の XSVF 命令 (XRUNTEST XSIR XSDR) のいずれかに基づき 3 つの分岐先の つに分岐します C コードが XRUNTEST 命令を読み込むとき 次の 4 バイトのデータも読み込みます この 4 バイトデータは デバイスが次の XSIR 命令または XSDR 命令を実行する前に Run-Test/Idle ステートに留まる時間 (μs) 数を指定します runtesttimes 変数はこれを保持するために使用します C コードが XSIR 命令を読み込むときは Shift-IR ステートに入るまでの間 TMS ポートと TCK ポートに対するスティミュラス信号を提供します 続いて データ長を指定する バイトと実際のデータを読み込み 指定のデータを TDI ポートに出力します 最後に 全データを TDI ポートに出力すると TMS 値は変更され 再度 Run-Test/Idle ステートに入るまで TCK パルスを連続出力します C コードが XSDR 命令を読み込むとき Shift-DR ステート中に出力される値を指定するデータも読み込みます C コードは次に TMS と TCK を適切にトグルして 直接 Shift-DR ステートに遷移します 続いて Shift-DR ステートに留まるため TMS 値を 0 に保持し XSVF ファイルからのデータを TDI ポートに出力し 同時に TDO ポートから受信したデータを格納します 全データを TDI ポートに出力した後 TMS を にセットして Exit--DR ステートに遷移します 続いて TDO 入力値を TDO 期待値と比較します この 2 つの値が一致しない場合は 例外処理プロシージャを実行します (22 ページの図 8 参照 ) TDO 入力値と期待値が一致した場合は Run-Test/Idle ステートに戻り runtesttimes 変数で指定される時間 ( この時間は XRUNTEST 命令により設定されます ) だけ待ちます 2 japan.xilinx.com XAPP058 (v4.0) 2007 年 0 月 日

メモリマップ 805 のメモリマップは 2 つの 64K バイトブロックに分割されています つは 805 プログラム用で もう つはデータ用です 805 プログラムメモリは 805 プログラムブロック内に存在し PSEN 信号によりイネーブルされます ザイリンクスの PLD プログラムメモリは 805 データブロック内に存在し RD 信号によりイネーブルされます 追加のデータスペースが必要な場合は 使用するマイクロプロセッサのアプリケーションノートに記載されている方法の つを使用してください ポートマップ 805 I/O ポートはメモリアドレスと TAP 信号の生成に使用します (2 ページの図 ) 805 のポート は TAP 信号の制御に使用します 表 5 にポートの構成を示します 表 5: 805 ポート のマッピング TAP ピン Port ビット コンフィギュレーションされた A TCK 0 Input TMS Input TDI 2 Output TDO 3 Input XAPP058 (v4.0) 2007 年 0 月 日 japan.xilinx.com 3

START switch Read instruction & numbits from XSVF XRUNTEST case[ ] XSIR XSDR Read delay value from XSVF file Set TMS to, pulse TCK twice Read data value & numbits from XSVF 6 Select-IR-Scan CLOCKRUNTEST value based on clock-rate & delay value in XSVF Set TMS to 0, pulse TCK twice Shift-IR 2 Read data & numbits from XSVF Set TMS to, pulse TCK once switch Set TMS to 0, pulse TCK twice 3 図 8: ISP コントローラコードのフローチャート X058_08_0007 4 japan.xilinx.com XAPP058 (v4.0) 2007 年 0 月 日

3 Shift-DR Set TMS to 0, pulse TCK - output data on TDI Set TMS to, pulse TCK - output data while transitioning to Exit-DR T numbits= F Pulse TCK - output data on TDI Exit-DR Store value on TDO Store value on TDO Decrement numbits Update-DR TDO= TDO Expected T Set TMS to, pulse TCK Set TMS to 0, pulse TCK F Increment FAILTIMES Run-Test/Idle WAIT XRUNTEST TIME 4 SWITCH X058_0_0090 図 9: ISP コントローラコードのフローチャート ( 続き ) メモ :. FPGA では TDO の期待値と実際値が一致しない場合 手順 4 は完全に削除され プログラムはエラーメッセージを出力して終了します XAPP058 (v4.0) 2007 年 0 月 日 japan.xilinx.com 5

4 Exit-DR 5 ISP FAILED T FAILTIMES > MAXREPEAT CLOCKRUNTESTS =CLOCKRUNTESTS X.25 END Exit Program F Set TMS to 0, pulse TCK Set TMS to, pulse TCK Pause-DR Exit2-DR Set TMS to 0, pulse TCK Run-Test/Idle WAIT XRUNTEST TIME Set TMS to 0, pulse TCK Shift-DR Set TMS to, pulse TCK Exit-DR Set TMS to, pulse TCK Update-DR 5 図 0: ISP コントローラコードのフローチャート ( 続き ) X058 0090 T numbits= F GOTO XENDIR STATE = 0 XRUNTEST? > 0 Set TMS to, pulse TCK - output data while transitioning to Exit-IR Set TMS to, pulse TCK Set TMS to 0, pulse TCK Exit-IR Update IR Run-Test/Idle Pulse TCK output data on TDI Decrement numbits Switch WAIT XRUNTEST TIME X058_2_0090 図 : ISP コントローラコードのフローチャート ( 続き ) 6 japan.xilinx.com XAPP058 (v4.0) 2007 年 0 月 日

6 2 XSDRB XSDRC XSDRE XSDRTDOB XSDRTDOC XSDRTDOE Read data value & numbits fom XSVF Read data value & numbits fom XSVF Read data value & numbits fom XSVF Read data value & numbits fom XSVF Read data value & numbits fom XSVF Read data value & numbits fom XSVF 2 7 8 2 9 0 Set TMS to, pulse TCK once Set TMS to, pulse TCK once Set TMS to 0, pulse TCK twice Set TMS to 0, pulse TCK twice 7 9 X058_3_0007 図 2: ISP コントローラコードのフローチャート ( 続き ) XAPP058 (v4.0) 2007 年 0 月 日 japan.xilinx.com 7

7 XSDRC Set TMS to 0 Switch T numbits=0 F Pulse TCK output data on TDI Decrement numbits 8 XSDRE T numbits= F Pulse TCK output data on TDI Set TMS to, Pulse TCK-output data on TDI while transitioning to Exit-DR Decrement numbits EXIT - DR Set TMS to pulse TCK Go to XENDDR state Switch X058_4_0090 図 3: ISP コントローラコードのフローチャート ( 続き ) 8 japan.xilinx.com XAPP058 (v4.0) 2007 年 0 月 日

9 XSDRTDOC/XSDRTDOB Set TMS to 0 T numbits=0 F Pulse TCK output data on TDI Switch T TDO = TDO expected Store value on TDO F Quit with Error Message Decrement numbits 0 XSDRTDOE T numbits= F Pulse TCK output data on TDI Set TMS to, Pulse TCK-output data on TDI while transitioning to Exit-DR Store value on TDO Decrement numbits Store value on TDO TDO= TDO Expected F Quit with Error Message T Set TMS to Pulse TCK Go to XENDDR state UPDATE - DR Switch X058_5_020 図 4: ISP コントローラコードのフローチャート ( 続き ) XAPP058 (v4.0) 2007 年 0 月 日 japan.xilinx.com 9

2 XSTATE XENDIR XENDDR Read State Value Read XENDIR State Read XENDDR State Hold TMS=, Pulse TCK 5 Times 0 State Value? Set TMS=0, Pulse TCK Switch Switch Test-Logic-Reset Run-Test/Idle Switch Switch 図 5: ISP コントローラコードのフローチャート ( 続き ) X058_6_0007 TAP タイミング 図 6 に TAP 信号のタイミング関係を示します 805 上で動作する C コードは TDI 値と TMS 値が少なくとも 2 命令サイクルの間駆動されてから TCK がアサートされることを保証します 同時に TDO をストローブできます TCKMIN TCK TMSS TMSH TMS TDIS TDIH TDI TDOZX TDOV TDOZX TDO TINS TINH Input-I/O-CLK TIOV I/O X058_8_2200 図 6: テストアクセスポートのタイミング 主要なタイミング関係は 次のとおりです TMS および TDI は TCK の立ち上がりエッジでサンプリングされます TCK の立ち下がりエッジ後に 新しい TDO 値が現れます C コードは 次の方法によって適切な TAP タイミングを保証します 20 japan.xilinx.com XAPP058 (v4.0) 2007 年 0 月 日

TCK の立ち下がりエッジで TMS と TDI をアップデートします TCK の立ち下がりエッジに続く十分な遅延後に TDO をサンプリングします XSVF ファイルのある部分で待ち時間を指定します この待ち時間中に デバイスは指定されたロケーションまたはセクタをプログラムまたは消去します 待ち時間タイマはプロセッサのサイクルタイムに依存するソフトウェアループにより実現できます あるいは 805 の内蔵タイマ機能を使用して実現することもできます このデザインでは タイミングはポート C ファイル TAP AC Parameter 内のソフトウェアループを使用して設定しています 図 7 に XC9500/XL/XV デバイスのプログラミングフローを示します 表 6 に 図 6 に示された TAP 波形に対する XC9500 のタイミングパラメータを示します 他のデバイスファミリについては 該当するデバイスファミリのデータシートに記載されている TAP のタイミング特性を参照してください Set ISP Mode ISPEN Erase All Sectors FERASE Program All Addresses FPGM Verify Programming FVFY (optional) Exit ISP Mode and Initialize Device ISPEX X058_7_2200 図 7: XC9500/XL/XV デバイスのプログラミングフロー 表 6: XC9500 テストアクセスポートのタイミングパラメータ (ns) シンボル パラメータ 最小 最大 TCKMIN TCK Minimum Clock Period 00 TMSS TMS Setup Time 0 TMSH TMS Hold Time 0 TDIS TDI Setup Time 5 TDIH TDI Hold Time 25 TDOZX TDO Float-to-Valid Delay 35 TDOXZ TDI Valid-to-Float Delay 35 TDOV TDO Valid Delay 35 TINS I/O Setup Time 5 TINH I/O Hold Time 30 TIOV EXTEST Output Valid Delay 55 XAPP058 (v4.0) 2007 年 0 月 日 japan.xilinx.com 2

XC9500/XL/XV プログラミングアルゴリズム このセクションでは XSVF ファイルを読み込むために 805 C コードにより実行されるプログラミングアルゴリズムについて説明します このコードは 25 ページの 付録 B : C コードのリスト の micro.c ファイルに格納されています この情報は 別のマイクロコントローラへ移行するために C コードを変更しようとするユーザーとっては貴重です XSVF ファイルにはすべての XC9500/XL/XV プログラミング命令とデータが含まれています このために TAP ドライバコードは非常に簡単になっています 805 は CPLD デザインを記述する XSVF 命令を解釈し XC9500/XL/XV デバイスをプログラミング ( およびテスト ) する TAP 信号を出力します デバイスプログラミング用のコマンドシーケンスを図に示します 例外処理 図 8 に IEEE 49. 標準に従って定義された内部デバイスプログラミングのステートマシンの状態図を示します Test-Logic-Reset 0 Run-Test/Idle 0 Select-DR-Scan Select-IR-Scan 0 0 Capture-DR Capture-IR 0 0 Shift-DR 0 Shift-IR 0 Exit-DR Exit-IR Exception Handling Loop 0 0 Pause-DR Exit2-DR 0 0 0 Pause-IR Exit2-IR 0 Update-DR Update-IR 0 0 図 8: TAP ステートマシンフロー X058_9_09207 メモ :. 各遷移の近くに示す値は TCK の立ち上がりエッジで TMS に出力される信号レベルを表します C コードは状態シーケンスにより 49. TAP コントローラを駆動し データと命令をロードして 結果を取り込みます C コードにより実行される重要な機能の つは TAP コントローラ状態遷移シーケンスであり このシーケンスは XC9500/XL/XV プログラムまたは消去動作を繰り返す必要があるときに アドレスの数 % の部分に対して実行されます セクタまたはアドレスを再プログラムまたは再消去する必要がある場合は デバイスステータスビットは XSVF ファイル内での予測値と異なる値を返 22 japan.xilinx.com XAPP058 (v4.0) 2007 年 0 月 日

します EXIT-DR 状態で TDO の不一致が確認された場合 前の ( 失敗した ) データを再試行するために 次の 49. TAP 状態遷移シーケンスを続けます EXIT-DR PAUSE-DR EXIT2-DR SHIFT-DR EXIT-DR UPDATE-DR RUN-TEST/IDLE 続いて アプリケーションは 前に指定された XRUNTEST 時間を 25 % だけ増やし Run-Test/Idle でこの時間だけ待ちます この状態シーケンスの効果は シフトインされたばかりの新しい TDI 値ではなく 前の値を再適用することです この 例外処理ループ は N 回以上は試行されません TDO 値が N 回繰り返しても一致しない場合は その部品は欠陥品として故障が記録されます 再試行動作が成功した場合は アルゴリズムは次の XSDR データをシフトインします impact の svf2xsvf -r (repeat) オプションは N の値を決定します XC9500/XL/XV デバイスの場合の N の推奨値は 6 です XC4000 および Spartan/Spartan-XL プログラミングアルゴリズム XC4000 シリーズのデバイスはバウンダリスキャンピンを介して設定できます 基本的な手順は 次のとおりです INIT を Low に保持したまま FPGA をパワーアップします ( あるいはデバイス動作中 INIT を Low に保持しながら PROGRAM ピンを 300ns 以上 Low にした後 High にする ) INIT を Low に保持すれば FPGA に CONFIG コマンドを発行するのに十分な時間が得られます 抵抗を介して INIT を Low に保持した場合 このピンは設定後に I/O として使用できます TMS 入力に CONFIG コマンドを発行します INIT が High になるのを待ちます バウンダリスキャンテストアクセスポートを SHIFT-DR ステートにします TCK をトグルして TDI ピンにデータをクロック駆動します ユーザーは INIT が High になった後は すべての TCK クロックサイクルがレングスカウント比較に影響を与えるので これらすべてに配慮しなければなりません 詳細については [Ref 2] を参照してください このアプリケーションノートは XC4000E デバイスおよび XC4000X デバイスにも適用されます Virtex および Spartan-II/-3/-3A プログラミングアルゴリズム Virtex デバイスはバウンダリスキャンピンを介して設定できます TAP を介した設定では 特殊 CFG_IN 命令を使用します この命令により TDI のデータ入力を内部コンフィギュレーションバス用のデータパケットに変換できます バウンダリスキャンポートを介して FPGA を設定するには 次の手順が必要です バウンダリスキャン命令レジスタ (IR) に CFG_IN 命令をロードします Shift-DR (SDR) ステートに入ります 標準コンフィギュレーションビットストリームを TDI にシフトします Run-Test-Idle (RTI) に戻ります IR に JSTART 命令をロードします SDR ステートに入ります (Virtex-II デバイスの場合は Run-Test/Idle ステートに留まります ) スタートアップシーケンスの長さだけ TCK をクロック駆動します RTI に戻ります DONE ピンのステータスをチェックします Virtex コンフィギュレーションの詳細については [Ref 3] を参照してください XAPP058 (v4.0) 2007 年 0 月 日 japan.xilinx.com 23

メモ :. Virtex XC4000 および Spartan デバイスの場合 XSVF 変換の際に impact で -fpga オプションを設定します 2. 各 Virtex デバイスのプログラミング動作は DONE ピンステータスのチェックで終了します 複数の Virtex デバイスを設定する際に これらのデバイスの DONE ピンが連結されている場合は すべての Virtex デバイスが設定されるまで DONE ピンは High になりません この場合 途中の Virtex デバイスに対する DONE ピンステータスのチェックは未設定となってしまいます この問題に対処するために XSVF への変換前に SVF から最後の Virtex デバイスを除くすべてのデバイスに対する DONE ピンステータスのチェックを削除してください CoolRunner プログラミングアルゴリズム CoolRunner デバイスはバウンダリスキャンピンを介してプログラムできます 基本的な手順は次のとおりです デバイスを ISP モードにします デバイス全体を消去します すべてのアドレスをプログラムします すべてのアドレスを検証します ISP モードを終了し 通常の機能モードに復帰します XC8V00 PROM プログラミングアルゴリズム XC8V00 デバイスはバウンダリスキャンピンを介してプログラムできます 基本的な手順は次のとおりです デバイスを ISP モードにします デバイス全体を消去します すべてのアドレスをプログラムします グローバル動作を適用して プログラムされた値をリファインします すべてのアドレスを検証します ISP モードを終了し 通常の機能モードに復帰します 結論 ザイリンクスの CPLD および FPGA は 組み込みプロセッサを使用して容易にプログラムできます さらに これらのデバイスは IEEE 49. 標準に準拠しており プログラミングに加えて システムテスト機能およびデバイステスト機能も組み込みプロセッサで制御可能です この機能は フィールドでのデザインアップグレード ユーザー固有機能の作成 CPLD/FPGA プログラムのリモートダウンロードについて新しい可能性を開きます 付録 A : XSVF ファイルマージユーティリティ mergexsvf ファイルマージユーティリティ この実行形式は複数の XSVF ファイルを取り込み それらを つの XSVF ファイルにマージします ファイルがマージされると XCOMPLETE コマンドが中間ファイルイメージから削除され ファイルの間にヘッダが挿入されて コマンド XSTATE XENDIR XENDDR および XRUNTEST のパラメータがリセットされます 使用方法 : mergexsvf [-d] [-v2] -o <output.xsvf> -i <input.xsvf> -i <input2.xsvf> [- i <inputn.xsvf> ] オプション : -d - 既存の出力ファイルを削除します -i <inputn.xsvf> - 記載順にマージされる入力ファイル 24 japan.xilinx.com XAPP058 (v4.0) 2007 年 0 月 日

-o <output.xsvf> - マージされた出力ファイル -v2 - XSTATE XENDIR および XENDDR コマンドを含まない中間ヘッダを持つ出力ファイルを生成します メモ : 入力 XSVF ファイルは impact の svf2xsvf ファイル変換で -v2 オプションを使用して生成してください 例 : mergexsvf d o merged.xsvf i xc9536xl.xsvf i xc8v04.xsvf 付録 B : C コードのリスト 次のファイルには XSVF ファイルの読み込みと該当するテストアクセスポート制御ビットの出力に使用される C ソースコードが収容されています C コードファイル lenval.c - このファイルには lenval データ構造体を使用するためのルーチンが収容されています micro.c - このファイルには EPROM からのファイルの読み込みと JTAG 信号駆動のメインファンクションコールが収容されています ports.c - このファイルには 値を JTAG ポートに出力するルーチン TDO ビットを読み込むルーチン EPROM から バイトのデータを読み込むルーチンが収容されています ヘッダファイル lenval.h - このファイルには lenval データ構造体の定義およびタイプ lenval のオブジェクトを操作するための外部プロシージャの宣言が収容されています lenval 構造体は 任意長のバイナリ値の格納に使用されるバイトオリエントなタイプです ports.h - このファイルには JTAG ポートに対するスティミュラスを提供するための外部宣言が収容されています マイクロコントローラ用にこの C コードをコンパイルするには ports.c ファイル内の次の 4 個の関数を修正するだけですみます setport - マイクロコントローラの特定ポートを指定の値に設定します readtdobit - TDO ポートを読み出します readbyte XSVF ファイルから バイトのデータを読み出します waittime - 指定の時間だけ停止します メモ : デバイスが Run-Test/Idle ステートにあるときに 指定された時間だけシステムを一時停止させるには waittime 関数を呼び出します Virtex-II 以外のすべてのデバイスファミリでは waittime 関数によってシステムが一時停止している間は TCK パルスは不要です ( ただし 発生させることはできます ) Virtex-II デバイスの場合 waittime 関数のパラメータは生成する最小数の TCK パルスとして解釈しなければなりません 一般に Virtex-II デバイスが必要とする TCK パルス数は 25 個未満です 注意 waittime のインプリメンテーションは 最低でも指定したマイクロ秒分停止する必要があります waittime のインプリメンテーションが小さい数値を 0 時間に丸めたり 大きい数値 ( たとえば Platform Flash XCF32P PROM で最大 40,000,000 マイクロ秒 ) をオーバーフローさせないようにしてください 次は Virtex-II 以外のすべてのザイリンクスデバイスに対応する waittime 関数をインプリメントした例です ( この標準的なスリープ関数よりも正確なタイミング関数がある場合には それを使用してプログラミングのパフォーマンスを向上させてください ) void waittime( long microseconds ) { // Round up to the nearest millisecond sleep( ( microseconds + 999L ) / 000L ); } XAPP058 (v4.0) 2007 年 0 月 日 japan.xilinx.com 25

次のコード例は Virtex-II を含むすべてのデバイスファミリに対応する waittime 関数をインプリメントしたものです MHz 以上の TCK 速度で動作可能なシステムでは 要求される待ち時間に相当する TCK パルスを生成するように waittime 関数をインプリメントできます void waittime( long microseconds ) { // tckcyclespermicrosecond is a predetermined constant for your system long tckpulses = microseconds * tckcyclespermicrosecond; for ( long i = 0; i < tckpulses; ++i ) { pulsetck(); } } MHz を大幅に下回る低速度の TCK で動作可能なシステムの場合 waittime 関数は Virtex-II が必要とする低 TCK サイクル (< 25) の要求条件を満足させるようにインプリメントする必要がありますが 他のデバイスが必要とするより長い待機期間を考慮して待ち時間を最適化しなければなりません void waittime( long microseconds ) { if ( microseconds >= 50 ) { // Round up to the nearest millisecond and //use standard sleep function sleep( ( microseconds + 999L ) / 000L ); } else // satisfy Virtex-II TCK clock cycles { for ( long i = 0; i < microseconds; ++i ) { pulsetck(); } } } コードのデバッグを支援するために DEBUG_ MODE と呼ぶコンパイラスイッチが用意されています DEBUG_MODE が定義されている場合 ソフトウェアは XSVF ファイル ( ファイル名を prom.bit とする必要があります ) を読み込み デバッギングメッセージをプリント出力します XSVFSIM と呼ぶコンパイルスイッチを使用すると ターゲットデバイスに物理的に接続することなく TAP 出力をシミュレートできます DEBUG_ MODE を XSVFSIM スイッチと共に使用して シミュレートされた TAP 信号値を表示します 付録 C : 設定のためのターゲットデバイスのダイナミック選択 デフォルトのコンフィギュレーションフローでは impact ソフトウェアで完全な JTAG スキャンチェーンが定義されます JTAG スキャンチェーン内のデバイスにデザインが割り当てられ SVF ファイルの作成前に 設定するデバイスが選択されます 設定のために選択されたデバイスをターゲットデバイスと呼びます impact は ターゲットデバイスごとに個別のコンフィギュレーションコマンドとデータのセットを含む SVF ファイルを生成します ターゲットデバイスは 一度に デバイスずつ順番に設定されます ターゲットデバイスが設定されると 非ターゲットデバイスはバイパスモードになります ターゲットデバイスの SVF コマンドとデータの各セットには バイパスされた非ターゲットデバイスに対応するビットの正確な補数が含まれています このように 特定のスキャンチェーンと 選択された特定のターゲットデバイスに対して SVF が作成されるので 事前にデザインの割り当てとターゲットデバイスの選択を正確に知っておく必要があります デフォルトのコンフィギュレーションフローは 複数の FPGA で同じデザインを使用するシステムや 一連の FPGA で複数のデザインを組み合わせて使用するシステムには適していません 同じデザインで複数の FPGA を設定するシステムでは FPGA ごとに個別のコマンドとデータのセットを含む SVF を作成する必要があります すなわち 設定される FPGA ごとにデザインデータが複製されます 一連 26 japan.xilinx.com XAPP058 (v4.0) 2007 年 0 月 日

の FPGA で複数のデザインを組み合わせて使用するシステムでは 可能なデザイン割り当ての組み合わせごとに SVF ファイルが存在しなければなりません この場合も システム内でデザインデータが複製されます オリジナルの SVF ファイルと 組み込み環境で使用される XSVF ファイルは一対一で対応しているので SVF ファイルが効率的に作成されないと XSVF ファイルの記憶容量にも同様に影響します ダイナミックターゲットによるシステム記憶容量の低減 特定のシステムでより効率的にデータを保存するため XAPP058 ダウンロードパッケージには XSVF プレーヤーのスペシャルバージョンが用意されています この XSVF プレーヤーのスペシャルバージョンでは つのデバイスだけを設定するために作成された XSVF ファイルを使用し また指定された XSVF ファイルをダイナミックに選択可能であり スキャンチェーン内で互換性のある任意のデバイスを設定できます つのデザインに必要な XSVF ファイルは つだけです 複数の FPGA で同じデザインを使用するシステムでは 単一の XSVF ( デザイン ) ファイルを再使用して すべての FPGA を設定できます 一連の FPGA に対して複数のデザインを組み合わせて使用するシステムでは 各デザインに対応する個別の XSVF ファイルをダイナミックに選択して FPGA をターゲットにできます ダイナミックターゲット機能を利用すると 次のようなシステムで必要な記憶容量が削減されます FPGA が同じデザインで設定されているシステム 選択したデザインの複数の組み合わせで 一連の FPGA を設定できるシステム ダイナミックターゲット XSVF プレーヤーの C コードファイル この XSVF プレーヤーのスペシャルバージョンのファイルは ダウンロードパッケージの dynamic_target ディレクトリにあります dynamic_target ディレクトリには micro_dynamic_target.c および micro_dynamic_target.h の 2 つのファイルがあります これらのファイルは ダウンロードパッケージの src ディレクトリにあるベース micro.c および micro.h ソースファイルの修正バージョンです micro_dynamic_target.c ファイルにあるコードは スキャンチェーン内で設定するデバイスのダイナミック選択をサポートするように修正されています micro_dynamic_target.h ファイルには このダイナミックターゲット機能をサポートする修正された手続き型インターフェイスの宣言が含まれています ダイナミックターゲット機能をサポートする XSVF プレーヤーを作成するには src ディレクトリのベース micro.c および micro.h ファイルを dynamic_target ファイルに置き換えます Copy dynamic_target\micro_dynamic_target.h to src\micro.h Copy dynamic_target\micro_dynamic_target.c to src\micro.c ダイナミックターゲット用 XSVF ファイルの作成 実行時にダイナミックに選択されたデバイスを設定する XSVF ファイルには 互換性のある単一のデバイスを設定するコマンドとデータのセットだけが含まれていなければなりません ダイナミックターゲット用の XSVF ファイルを作成するには impact を使用して次の手順を実行します. 単一のデバイスを含むスキャンチェーンを定義します 2. スキャンチェーン内のデバイスにデザインファイルを割り当てます 3. デバイスをオペレーションターゲットとして選択します 4. 割り当てられたデザインの プログラムオペレーションコマンドとデータを含む XSVF ファイルを生成します デザインごとに デバイスの設定に使用する個別の XSVF ファイルを作成しなければなりません これらの XSVF ファイルを個別に使用して システム内で選択されたデバイスを設定します XAPP058 (v4.0) 2007 年 0 月 日 japan.xilinx.com 27

ダイナミックターゲット機能の概要 XSVF ファイル内の基本的なコマンドは JTAG スキャンチェーンを通して命令とデータビットをターゲットデバイスにシフトするように設計されています 単一デバイスのスキャンチェーン用に作成された XSVF ファイルのコマンドによって ターゲットデバイスの JTAG ポートに命令とデータビットが直接シフトされるので 効率的に処理できます 複数デバイスのスキャンチェーン内にある特定のデバイスに対して単一デバイス XSVF ファイルをダイナミックに再選択するには XSVF プレーヤーが スキャンチェーン内の非ターゲットデバイスのシフトレジスタを処理し ターゲットデバイスの命令またはデータビットセットの前後に適切なビットを挿入しなければなりません IEEE 標準 49. では BYPASS 命令がすべて のビットで構成され BYPASS データレジスタが正確に ビット幅になるように規定されています この情報により バイパスされた非ターゲットデバイスの正確なビットパターンを計算できます 命令シフト時には すべてのバイパスされた非ターゲットデバイスの命令レジスタに ビットがシフトされなければなりません データシフト時には すべての非ターゲットデバイスのバイパスレジスタに 余剰データ ( ゼロ ) ビットがシフトされなければなりません スペシャル XSVF プレーヤーによるターゲットデバイスのダイナミック選択 通常の XSVF プレーヤーでは XSVF データの先頭を指すポインタが最初にセットされます 次に 起動関数 (xsvfexecute) が呼び出され XSVF データが実行されます スペシャル XSVF プレーヤーにも同じフローが適用されますが 起動関数に追加パラメータを指定する必要があります スペシャル dynamic_target XSVF プレーヤーを起動するプライマリ関数 (xsvfexecute) は 5 つの追加パラメータによって強化されています これらのパラメータでは XSVF コマンドによって取得されたメインのビットセットの前後に挿入される リーディングおよびトレイリング命令とデータビットの数を指定します 追加パラメータによって Virtex コンフィギュレーションデータが 32 ビットバウンダリに割り当てられます ( ビットストリームに 32 ビットバウンダリ条件を課す Virtex 32 ビットコンフィギュレーションフレームの詳細については [Ref 3] を参照してください ) 強化された xsvfexecute 関数は micro_dynamic_target.h ファイルで次のように宣言されます int xsvfexecute(int ihir, int itir, int ihdr, int itdr, int ihdrfpga); パラメータについては 表 7 で説明します メモ :. 32 ビット配列に関する条件は Virtex Virtex-E および Spartan-II デバイスファミリにのみ適用されます 28 japan.xilinx.com XAPP058 (v4.0) 2007 年 0 月 日

表 7: XSVF プレーヤーのパラメータ パラメータ名前説明 ihir ヘッダ命令レジスタ 命令ビットのターゲットセットの前にシフトする () ビットの数 これらのビットにより ターゲットデバイスの後に非ターゲットデバイスがバイパスモードになります ihir の値は スキャンチェーン内でターゲットデバイスの後にあるデバイスの命令レジスタ長の合計にならなければなりません itir トレイラ命令レジスタ 命令ビットのターゲットセットの後にシフトする () ビットの数 これらのビットにより ターゲットデバイスの前に非ターゲットデバイスがバイパスモードになります itir の値は スキャンチェーン内でターゲットデバイスの前にあるデバイスの命令レジスタ長の合計にならなければなりません ihdr ヘッダデータレジスタ データビットのターゲットセットの前にシフトする (0) ビットの数 これらのビットは ターゲットデバイスの後にある非ターゲットデバイスのバイパスデータレジスタを満たすプレースホルダになります ihdr の値は スキャンチェーン内でターゲットデバイスの後にあるデバイスの合計にならなければなりません itdr トレイラデータレジスタ データビットのターゲットセットの後にシフトする (0) ビットの数 これらのビットは ターゲットデバイス の 前にある非ターゲットデバイスのバイパスデータレジスタを満たすプレースホルダになります itdir の値は スキャンチェーン内でターゲットデバイスの前にあるデバイスの合計にならなければなりません ihdrfpga Virtex FPGA コマンドのヘッダデータレジスタ Virtex FPGA データビットのターゲットセットの前にシフトする (0) ビットの数 これらのビットは Virtex デバイスのコンフィギュレーションビットストリームを 32 ビットバウンダリに配置するのに使用します ihdrfpga 値は 32 から スキャンチェーン内でターゲットデバイスの前にあるデバイスの合計を引いた値にならなければなりません ターゲットデバイスの前にデバイスが存在しない場合 この値はゼロになります デバイスの合計が 32 を超える場合は 32 からターゲットデバイスの前にあるデバイスの合計のモジュロ [32] を引いた値にならなければなりません これらのパラメータは SVF 仕様の HIR TIR HDR および TDR コマンドと等しくなります SVF 仕様の詳細については http://www.asset-intertech.com/support/svf.html を参照してください XAPP058 (v4.0) 2007 年 0 月 日 japan.xilinx.com 29

指定されたパラメータセットによって micro_dynamic_target.c インプリメンテーションは自動的に必要な補数ビットのセットを XSVF コマンドに追加し スキャンチェーン内でバイパスされたデバイスを補償します メモ : すべての xsvfexecute パラメータがゼロの場合 スペシャル XSVF プレーヤーの機能は 完全指定のスキャンチェーン用に作成された XSVF ファイルを使用するベース XSVF プレーヤーと同じになります このため ダイナミックターゲット機能を持つスペシャル XSVF プレーヤーは ノーマル ( 完全指定 XSVF) モードとスペシャル ( ダイナミックターゲット ) モードの両方で使用できます ダイナミックターゲットの例 4 個の Virtex 300E デバイスを 単一の XSVF ソースファイルを使用した同じデザインで設定するには 27 ページの ダイナミックターゲット用 XSVF ファイルの作成 の指示に従ってオリジナルの SVF ファイルを作成しなければなりません XCV300E のデザインが design.bit ファイルにある場合 次の手順に従って XSVF ファイルを作成します. impact で単一の XCV300E デバイスを含むスキャンチェーンを定義します 2. design.bit ファイルを スキャンチェーン内の XCV300E の単一インスタンスに割り当てます 3. XCV300E をオペレーションターゲットとして選択します 4. XCV300E をプログラムするために impact で -fpga オプションを使用して XSVF ファイルを作成します. XSVF プログラムポインタをリセットして XSVF データの先頭を指すようにします 2. デバイス # をプログラムするために パラメータ xsvfexecute(5, 0, 3, 0, 0) を指定して xsvfexecute 関数を呼び出します : 3. XSVF プログラムポインタをリセットして XSVF データの先頭を指すようにします 4. デバイス #2 をプログラムするために パラメータ xsvfexecute(0, 5, 2,, 3) を指定して xsvfexecute 関数を呼び出します : 5. XSVF プログラムポインタをリセットして XSVF データの先頭を指すようにします 6. デバイス #3 をプログラムするために パラメータ xsvfexecute(5, 0,, 2, 30) を指定して xsvfexecute 関数を呼び出します : 7. XSVF プログラムポインタをリセットして XSVF データの先頭を指すようにします 8. デバイス #4 をプログラムするために パラメータ xsvfexecute(0, 5, 0, 3, 29) を指定して xsvfexecute 関数を呼び出します : 4 デバイス Virtex スキャンチェーンと 4 デバイス XC8V00 スキャンチェーンの詳細なサンプルコードが ダウンロードパッケージの dynamic_target ディレクトリにあります このダイナミックターゲット機能を提供するサンプル XSVF プレーヤーの実行ファイルが playxsvf Release_DT ディレクトリにあります この実行ファイルは Xilinx Parallel Cable III または IV がインストールされた Windows 95/98/Me/NT/2000 PC で実行できます 付録 D : バイナリから Intel Hex へのトランスレータ この付録には XSVF ファイルから EPROM プログラマにダウンロードする際に使用する Intel Hex フォーマットに変換する C コードを記載します 多くの組み込み型プロセッサのコード開発システムでは インクルードされたバイナリファイルに対して Intel Hex を出力でき これらのシステムに対しては次のコードは不要です しかし ご使用中の開発システムに Intel Hex 出力機能がない場合は 次の C コードを使用できます 30 japan.xilinx.com XAPP058 (v4.0) 2007 年 0 月 日

概要 このアプリケーションノートで説明した ISP コントローラを使用すると EPROM に格納されている情報により XC9500/XL CPLD のプログラムとテストが可能になります この情報はバイナリの XSVF ファイルに保存されており このファイルにはデバイスプログラミング命令とデバイスコンフィギュレーションデータが収容されています 805 マイクロコントローラは XSVF ファイルを格納している EPROM( 個または複数 ) を読み出し バイナリ情報を XC9500/XL 互換の命令とデータに変換し 4 線式テストアクセスポートを経由して XC9500/XL デバイスにプログラミング情報を出力します XC9500/XL デザインを XSVF フォーマットに変換した後 XSVF 情報は Intel Hex フォーマットに変換されます この Intel 6 Hex フォーマットは EPROM プログラマにダウンロードされます ここで得られた CPLD プログラミング情報を格納する EPROM は ISP コントローラデザイン内で使用できます /* This program is released to the public domain. It prints a file to stdout in Intel HEX 83 format. */ #include <stdio.h> #define RECORD_SIZE0x0/* Size of a record. */ #define BUFFER_SIZE 28 /*** Local Global Variables ***/ static char *line, buffer[buffer_size]; static FILE *infile; /*** Extern Functions Declarations ***/ extern char hex( int c ); extern void puthex( int val, int digits ); /*** Program Main ***/ main( int argc, char *argv[] ) { int c=, address=0; int sum, i; i=0; /*** First argument - Binary input file ***/ if (!(infile = fopen(argv[++i],"rb"))) { fprintf(stderr, Error on open of file %s\n,argv[i]); exit(); } /*** Read the file character by character ***/ while (c!= EOF) { sum = 0; line = buffer; for (i=0; i<record_size && (c=getc(infile))!= EOF; i++) { *line++ = hex(c>>4); *line++ = hex(c); sum += c; /* Checksum each character. */ } if (i) { sum += address >> 8;/* Checksum high address byte.*/ sum += address & 0xff;/* Checksum low address byte.*/ XAPP058 (v4.0) 2007 年 0 月 日 japan.xilinx.com 3

sum += i; /* Checksum record byte count.*/ line = buffer; /* Now output the line! */ putchar(':'); puthex(i,2); /* Byte count. */ puthex(address,4); /* Do address and increment */ address += i; /* by bytes in record. */ puthex(0,2); /* Record type. */ for(i*=2;i;i--) /* Then the actual data. */ putchar(*line++); puthex(0-sum,2); /* Checksum is byte 2's comp.*/ printf("\n"); } } printf(":0000000ff\n");/* End record. */ } /* Return ASCII hex character for binary value. */ char hex( int c ) { if((c &= 0x000f)<0) c += '0'; else c += 'A'-0; return((char) c); } /* Put specified number of digits in ASCII hex. */ void puthex( int val, int digits ) { if (--digits) puthex(val>>4,digits); putchar(hex(val & 0x0f)); } リファレンス. XAPP503 SVF and XSVF File Formats for Xilinx Devices 2. XAPP07 Boundary Scan in XC4000 Devices 3. XAPP39 Configuration and Readback of Virtex FPGAs Using JTAG Boundary-Scan 改訂履歴 次の表に このドキュメントの改訂履歴を示します 日付 バージョン 改訂内容 0/5/0 3.0 改訂版リリース 06/25/04 3. 一部変更 03//05 3.2 Platform Flash PROM 用にアップデート 0/0/07 4.0 テンプレートをアップデート ISE impact 9.2i 用にアップデート その他 一部を修正 32 japan.xilinx.com XAPP058 (v4.0) 2007 年 0 月 日

免責事項 Xilinx is disclosing this Application Note to you AS-IS with no warranty of any kind. This Application Note is one possible implementation of this feature, application, or standard, and is subject to change without further notice from Xilinx. You are responsible for obtaining any rights you may require in connection with your use or implementation of this Application Note. XILINX MAKES NO REPRESENTATIONS OR WARRANTIES, WHETHER EXPRESS OR IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT, OR FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL XILINX BE LIABLE FOR ANY LOSS OF DATA, LOST PROFITS, OR FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, OR INDIRECT DAMAGES ARISING FROM YOUR USE OF THIS APPLICATION NOTE. この日本語訳 ( 参考のみ ) は http://japan.xilinx.com/support/documentation/disclaimer.htm を参照してください XAPP058 (v4.0) 2007 年 0 月 日 japan.xilinx.com 33