Wishbone バスから EFB にアクセスする場合、クロックに対してデータの遅延が小さい場合は wb_ack_o 信号が テクニカルノート TN1205 のタイムチャートとは違うタイミングでアサートされます(図 7-2、図 7-3)。
ただし、Read/Write アクセス自体は正しく行われます。
図 7-2 WISHBONE バスのアクセス波形(TN1205)
図 7-3 WISHBONE バスのシミュレーション波形(入力データ遅延なし)
シミュレーション時の wb_ack_o のタイミングを TN1205 と同じにするためには WISHBONE バスへの入力信号 に、クロックに対して 20ps 以上の遅延をつけてください。
8
Feature Row について
Feature Row は 64bit と 16bit の 2 部構成となっており、各種設定を保存します。未書き込み状態のデバイ スでは All-0 となっております(5bit 部に関してはアクセス不可)。ispVM の Feature Row Editor で jedec フィアルを読み込むことで、設定済内容を確認できます。DIAMOND Programmer では実デバイスと接続後に、
DIAMOND Programmer の Operation “Security Read Feature Row”コマンドにて同内容を確認できます。
図 8-1 Feature Row Editor による表示例
64bit 部 : Custom ID Code[0-31], TraceID[32-39], I2C Slave Address[40-47], Dual Boot Golden Address [48-63]
16bit 部: Secure password[0], DEC ONLY[1], Password Enable FLASH[2], Password Enable ALL[3], 上記 4bit は必ずデフォルトの 0 でご利用下さい( 注
my_ASSP Enable[4], PROGRAMN Preference Disable[5], INIT Preference Enable[6], DONE Preference Enable[7], JTAG Preference Disable[8], S-SPI Preference Disable[9], I2C Preference Disable[10], M-SPI Preference Disable [11], BOOT Sector1[12], BOOT Sector2[13], Reserve[14-15]
5bit 部 : セキュリティ設定部、コマンドによるアクセス不可(jedec では 21 行目に記載)。
CONFIG_SECURE 設定[0], ONE_TIME_PROGRAM 設定[1-4]
◆ Feature Row の Program / Erase コマンド
Feature Row へのアクセスは ispVM によるプログラミング、及び ispVM で生成された SVF を使用する場合、自動 的に行われます。それ以外の手法でアクセスする場合、対象エリア毎に下記2コマンドを使用します。Feature Row 部分ではデバイスの重要な情報がございます。誤って間違ったセッティングを行うと、最悪の場合デバイス にアクセスできなくなりますので、設定内容を十分お確かめください。
・ プログラムコマンド
LSC_PROG_FEATURE (0xE4) + オペランド 0x00, 0x00, 0x00 : 前半 64bit に対して使用
例) 0xE4, 0x00, 0x00, 0x00, + 0x0000000000000000
データは、jedec ファイルの下から 5 行目にある、E の後ろの 64bit です。
通常オール 0 になっています。
例) NOTE FEATURE_ROW*
E0000000000000000000000000000000000000000000000000000000000000000
※ jedece での並び順は LSB-MSB が逆になっております。
LSC_PROG_FEABITS (0xF8) + オペランド 0x00, 0x00, 0x00: 後半 16bit に対して使用
例) 0xF8, 0x00, 0x00, 0x00, + 0x****
データは、jedec ファイルの下から 4 行目にある下記の様な 16bit です。
値は JTAG、I2C、SPI の使用状況で変わります。
例) 0000010010100000*
※ jedece での並び順は LSB-MSB が逆になっております。
上記例では、0xF8, 0x00, 0x00, 0x00, + 0x0520 となります。
・ リードコマンド
ISC_READ_FEATURE (0xE7) + オペランド 0x00, 0x00, 0x00 : 前半 64bit について リードデータは 64bit です
ISC_READ_FEABITS (0xFB) + オペランド 0x00, 0x00, 0x00 : 後半 16bit について リードデータは 16bit です
◆ My_ASSP 機能にて、デバイス ID を書き換えた場合の復旧策
My_ASSP 機能を使用してデバイス ID を書き換えると、ispVM や SVF デバッガを使用したプログラミングフローで 下記エラーとなり、デバイスにアクセスできなくなります。この場合下記フローにてアクセス可能です。
Step1. ispVM のプログラミングフローを実行すると、ispVM は下記エラーを表示して、今書き込もうとしているデバ イスのデバイス ID がどんな値に設定されているか表示します(下記は 0x00000200 に設定済デバイスの例)。
Device1 LCMXO2-1200ZE:
The ID has been changed to 0x00000200.
Please click on the Save button to save the new Device's ID.
Step2. IspVM のジェネレート SVF メニューより、Jedec からデバッグツールで使用する SVF を生成します。
Step3. 生成した SVF をテキストエディタで開き、下記に示す IDCODE チェックステップの値を Step2 で確認でき たデバイス ID に書き換え、保存します。
--- ! Check the IDCODE
ISPEN LOW;
! Shift in IDCODE_PUB(0xE0) opcode SDR 32 TDI (00000007);
SDR 32 TDI (00000000)
TDO (C204D480) <= この部分の値 MASK (FFFFFFFF);
ISPEN HIGH;
---
Step4. Step3 にて編集した SVF を、SVF デバッガツールを使用してデバイスにプログラミングします。
9
その他注意事項
◆ UFM/CFM へ透過モード(0x74)でアクセスする場合の注意点
透過モード(0x74)を使用して CFM/UFM へのインターフェイスをイネーブルすると、ディセーブル(0x26)+バイパス
(0xFF)を使用してインターフェイスをディセーブルにするまでの間、次のようなデバイスの一部機能が一時的にディ セーブルになります。
・パワーコントローラ
・GSR(グローバル・セット・リセット)
・ハードマクロ・ユーザ SPI ポート
それを踏まえた上で使用下さい。GSR については、デザインにて専用の GSR リソースを使用せず汎用配線リソースを 使用する方法もございます。デザインで意図的に GSR を使用していない場合でも、DIAMOND のデフォルト設定で GSR を自動的に使用します。デザインで GSR を使用しない為には、Strategy 設定の Map Design 画面にて、Infer GSR の Value を False に変更します。
図 9-1 GSR を使用しない設定
◆ Wishbone / I2C / SPI の複数 IF から EFB リソースにアクセスする場合
アクセス有効化コマンド(isc_enable/isc_enable_x)と、アクセス無効化コマンド(isc_disable + bypass)は、いずれの IF から 発行しても効果は同じです。発行元の IF のみが有効化されるのではなく、すべての IF が有効化されます。同様に、
アクセス無効化コマンドもいずれの IF から発行してもその効果は同じです。
例えば、Wishbone と I2C を使用するデザインの場合、I2C からアクセス有効化コマンドを発行すると、コマンド有効後 は、Wishbone からも I2C からも CFM/UFM リソースにアクセスすることができます。最後に Wishbone からアクセス無効 化コマンドを発行して終了させることもできます。
これら 3 種の IF には優先順位があります。優先順位は高い方から、SPI、I2C、Wishbone となります。例えば、I2C アク セス中、Wishbone からのコマンドは受け付けません。逆に、I2C アクセス中に SPI からのアクセスが開始されると、I2C アクセスは中断され、SPI アクセスが開始されます。XO2 の EFB では、これらの IF 間の調停機能は実装していません。
調停が必要な場合、お客様回路にて実装していただく必要があります。
◆ プログラミング時の注意事項
XO2 の内部 CFM に回路データを書きこむことをプログラミングと呼びます。プログラミングは JTAG/SPI/I2C から可能 です。ブランクデバイス及び消去済デバイスでは、3 つのポートが全て有効化されており、お客様の回路データが書き 込まれたデバイスでは、指定のポートのみが有効化されます(デフォルト設定の場合 JTAG のみ有効)。
これら 3 種の IF には優先順位があります。優先順位は高い方から、JTAG、SPI、I2C となります。例えば、JTAG アクセ ス中、SPI からのコマンドは受け付けません。逆に、I2C アクセス中に SPI からのアクセスが開始されると、I2C アクセス は中断され、SPI アクセスが開始されます。
ブランクデバイスや消去済デバイスをボード上でプログラミングする際は、特に注意が必要です。例えば、I2C ポート からプログラミングする場合、有効化されている SPI ポートの SN(スレーブチップセレクト)に L レベル信号(アクティブ 状態)が与えられると、SPI ポートが優先権を得ます。その結果、CFM/UFM ポートに対する I2C アドレスに対して、
ACK が返らず I2C ポートは応答しません。
◆ コンフィグレーション時の注意事項
XO2 の内部 CFM から SDM(Self Download Mode)により起動する事、及び内部 SRAM に JTAG/SPI/I2C から回路 データを直接書き込む事をコンフィグレーションと呼びます。これら 4 種の IF には優先順位があります。優先順位は高 い方から、JTAG、SPI、I2C、SDM となります。例えば、SPI ポート有効化されている場合、SDM でコンフィグレーション 中に、SPI ポートの SN(スレーブチップセレクト)に L レベル信号(アクティブ状態)が与えられると、SPI ポートが優先権 を得ます。その結果、SDM によるコンフィグレーションは中断されコンフィグレーションが完了しません。
◆ I2C アドレスの使い分け
プライマリ I2C アドレスは、設計時に IPexpress にて、上位 5bit/8bit をお客様指定します。DIAOND1.4 までは下位 2bit は IPexpress ツール画面上グレーアウトしており、01 と固定値で表示されています。ただし、下位 2bit は 2 種の値を 持っており、"00"のアドレスと、"01"のアドレスで以下アクセス先を切り分けております。DIAMOND2.0 からは 3 種類の 組み合わせが全て IPexpress ツール画面上に表示されます。デバイスのプログラミングは CFM へアクセスします。
上位 5bit/8bit ユーザ指定 + 00 : UFM/CFM/デバイス ID 等へのスレーブアドレス
上位 5bit/8bit ユーザ指定 + 01 : ユーザモードにおけるプライマリ I2C ポートへのスレーブアドレス
下位 01/00 いずれでも、正しいアドレスなので、ACK は返ります。例えば、ユーザ指定の上位 5bit を 10000 と指定し、
UFM へアクセスする際、正しいアドレスは 100_0000 となります。この場合誤って 100_0001 を用いた場合でも ACK は 返りますのでご注意下さい。
なお、ブランクデバイスではアドレス 7bit がすべて固定されており、100_0000 となります。その為、複数のブランクデバ イスを同一の I2C バス上に接続して、マスタ I2C コントローラから UFM/CFM にアクセスすることはできません。あらか じめ I2C アドレスを個別の値にプログラミングしたデバイスであれば、そのような使用方法は可能です。
◆ I2C マスタ時のグリッジ
EFB I2C マスタのシミュレーション及び実機動作にて、スタートコンディションの後の最初の SDA の”L”区間に、約 7.2ns 程度のハザードが一回発生します。これは、XO2 デバイスの I2C-IF 部の構造に起因するもので、回避できませ ん。実際のボードでは、I2C のクロックエッジはレートも遅く、バスのプルアップ等の負荷も与えられる為、このハザード は減衰し悪影響を与えることは無いと考えられます。
図 9-2 I2C マスタ時のグリッジ
◆ コマンド完了までの時間
コマンドの中には、完了までに時間がかかるものがあります。
基本は busy をチェックしていただくか、下記時間ウエイトする等ご考慮下さい。
Flash 1 ページ毎に : 200usec isc_enable に対して : 5usec program_done に対して : 200usec