MachXO2
On-Chip Flash memory
補足説明資料
1
このドキュメントの概要 ··· 3
2
On-chip Flash memory アクセスの概要
··· 4
2.1 On-Chip Flash memory の構成 ... 4
2.2 On-chip Flash memory へのアクセス経路 ... 4
3
ツール上の設定の注意事項 ··· 6
3.1 IPexpress での設定 ... 6 3.2 Spreadsheet View での設定 ... 94
CFM へのアクセス手順 ··· 10
4.1 CFM のプログラム ... 10 4.2 CFM データの Read ... 14 4.3 コンフィグデータのダウンロード ... 165
UFM へのアクセス手順
··· 18
5.1 UFM のプログラム ... 18 5.2 UFM データの Read ... 226
各種 I/F からのアクセス波形 ··· 25
6.1 Wishbone バスからのアクセス波形 ... 25 6.1.1 Wishbone バスから CFM/UFM へのアクセスルール ... 25 6.1.2 各種アクセス波形サンプル ... 26 6.2 I2C からのアクセス波形 ... 32 6.2.1 I2C から CFM/UFM へのアクセスルール ... 32 6.2.2 I2C からのアクセス波形サンプル ... 32 6.3 SPI からのアクセス波形 ... 34 6.3.1 SPI から CFM/UFM へのアクセスルール ... 34 6.3.2 SPI からのアクセス波形サンプル... 34 6.3.3 データの Read(CFM) ... 357
EFB のシミュレーション ··· 36
7.1 テストベンチ作成時の注意点 ... 36 7.2 I2C マクロの入出力信号... 37 7.3 Wishbone バスへの入力データ... 388
Feature Row について ··· 39
9
その他注意事項
··· 42
1 このドキュメントの概要
このドキュメントでは、MachXO2 のプログラミングとコンフィグレーションについて記載された TN1204、及び内 蔵されている Flash memory へのアクセス方法について記載された TN1205/TN1246 の両ドキュメントについ て 、 補 足 情 報 を 説 明 し ま す 。 基 本 動 作 や コ マ ン ド ・ オ ペ ラ ン ド 等 の 詳 細 に つ い て は 、 下 記 の TN1204/1205/TN1246 に掲載いたしておりますので、必ずご確認下さい。 TN1204 : MachXO2 プログラミングとコンフィグレーション使用ガイド TN1205 : MachXO2 ユーザフラッシュメモリとハードマクロ制御機能の使用方法 TN1246 : (日本語タイトル)2 On-chip Flash memory アクセスの概要
2.1 On-Chip Flash memory の構成
On-chip Flash memoryは、大きく3つの領域に分かれています。
1 つ目はコンフィグレーション用のデータを格納する領域(Configuration Flash Memory 以下 CFM)、2 つ目は ユーザが任意のデータを Program/Read するために使用できる領域(User Flash Memory 以下 UFM)、3 つ目 は特定用途(I2C アドレスや Trace ID、セキュリティ等)のために使用できる領域です(Feature Row 9 章)。各デ バイスの CFM/UFM ページサイズについては、TN1204/1205 を参照下さい。
図 2-1 On-chip Flash メモリの構成
2.2 On-chip Flash memory へのアクセス経路
MachXO2 には、Embedded Functional Block(以下 EFB)と呼ばれるハードマクロにて、On-chip Flash memory を含む複数のハードマクロが搭載されており、Wishbone バスで接続されています(図 2-2)。 したがって On-chip Flash memory へのアクセスも Wishbone バス経由で行います。
CFM セクター0 (コンフィグレーション用フラッシュメモリ) UFM (ユーザ用フラッシュメモリ) フィーチャ行 USERCODE セクター1 EFB
Wishbone バスには複数の I/F(ペリフェラル)が接続されていますが、On-Chip Flash memory にアクセスできる のは以下の 3 つのみです。Secondary I2C からは、On-Chip Flash memory にアクセスできません。
・Primary I2C ・Slave-SPI
・Wishbone I/F(ユーザーロジックと Wishbone バス間の I/F) 各 I/F からのアクセス方法については、4 章以降で説明します。
3 ツール上の設定の注意事項
On-chip Flash memory にアクセスするには、ツール上での設定が必要になります。
ツール上の設定は2種類あり、1つは「Spreadsheet View による SPI/I2C ポートのアクティブ化」、もう1つは 「IPexpress によるデザインへの EFB マクロのインスタンス」です。必要な設定は、アクセス先(Flash memory 内の 使用する領域)やアクセス元の種類によって決まります(表 3-1)。なお、EFB を明示的にインスタンスした場合、 インスタンスにより有効化されたポート設定はグレーアウトし、自動的に Enable と表示され変更できません。
表 3-1 On-chip Flash memory アクセスとツールの設定
アクセス先 アクセス元 モード設定 (Spreadsheet View) EFB インスタンス (IPexpress) コメント CFM SPI / I2C 必要 不要 コンフィグイメージの更新 WB 不要 必要 可能ですが推奨しません
UFM SPI / I2C 不要 必要
WB 不要 必要
3.1 IPexpress での設定
UFM 領域にアクセスする場合、または Wishbone I/F から On-chip Flash memory にアクセスする場合は、デ ザインに EFB モジュールを組み込む必要があります。
EFB はモジュール生成プログラム[IPexpress]を使用して生成します。IPexpress は、Lattice Diamond のツー ルバーの アイコンをクリックすると起動します。
IPexpress の左側のパネルから[EFB]を選択すると、右側のパネルへの入力がアクティブになります。[File Name]欄にファイル(=モジュール)名を入力し、[Module Output]欄で出力する HDL ソースのタイプ(VHDL or Verilog HDL)を選択します。この2つを入力するとパネル右下の[Customize]ボタンがアクティブになるのでク リックすると、EFB の設定ウインドウが起動します。
起動した直後は[EFB Enables]タブだけがアクティブになっています。まずこのタブで使用する I/F の選択を 行います。I/F 名とチェックボックスが表示されているので、使用する I/F のチェックボックスにチェックを入れま す(図 3-2)。
UFM にアクセスする場合は、必ず[User Flash Memory]にチェックを入れてください。
--- ・1つ以上の I/F にチェックが入っていると、モジュールにその I/F と Wishbone I/F が追加されます。 ・I2C から On-chip Flash memory にアクセスする場合、かならず[Primary]を選択してください。
[Secondary]からは On-chip Flash memory にはアクセスできません。
---
[User Flash Memory]にチェックが入っていると、[UFM]タブがアクティブになります。このタブでは使用する ページ数と UFM の初期値を設定できます。 --- ・デバイスが変わると使用できるページ数や最小ページアドレスも変わります。必ず Lattice Diamond で使用 するデバイスを選択した状態で設定を行ってください。また、使用するデバイスを変える場合は、必ず EFB を再生成してください。 --- 図 3-3 UFM の設定
ページ数は[Enter Number of Pages]欄に入力します。デフォルトは1ページです。使用するページ数を入力すると、 [Initialization Data Starts at Page]欄にアクセス可能な先頭ページ番号が表示されます。UFM へはページ番号を指 定してアクセスするので、この先頭ページ番号は記録しておいてください。
ページ数の次は UFM の初期値を設定します。デフォルトでは[User Flash memory is Initialized With all 0s] にチェックが入っており、初期値は全て 0 になります。0 以外の初期値を設定したい場合は、Upload User Flash Memory Initialization Data File]にチェックを入れ、その下の欄で初期値を記述したファイルを指定しま す。
3.2 Spreadsheet View での設定
使用するのが CFM のみで、かつアクセス元が I2C か SPI の場合(Wishbone I/F を使用しない場合)は、デザ インに EFB を組み込むのではなくツール上で I2C または SPI をイネーブルにする設定を行います。
設定は Spreadsheet View で行います。Spreadsheet View は Lattice Diamond のツールバーから アイコ ンをクリックすると起動します。Spreadsheet View は複数のタブから構成されています。ポートのイネーブル設 定は[Global Preference]タブにあります。 [SLAVE_SPI_PORT]が SPI ポートのイネーブル設定、[I2C_PORT]が I2C ポートのイネーブル設定です。CFM へのアクセスに使用するポートを[ENABLE]に設定してください(図 3-4)。
4 CFM へのアクセス手順
4.1 CFM のプログラム CFM にコンフィグデータをプログラムするには、図 4-1 の手順で行います。 図 4-1 CFM データプログラム手順 各種 I/F と CFM 間のアクセス有効化 CFM へのアクセスを開始する際に必ず行います。アクセスには、ロジック部分の動作を強制的に停止させ てアクセスを行うダイレクトモードと、ロジックは動作させたままアクセスを行うトランスペアレントモードの 2 つ があり、それぞれのモード用に有効化コマンドが用意されています。 表 4-1 I/F の有効化コマンド コマンド名 コマンド (1byte) オペランド (3byte)データの消去
On-Chip flash memory のデータを消去します。Flash memory はその構造上、「データの上書き」が出来な いためプログラム前には必ずデータの消去を行う必要があります。 表 4-2 Erase Flash コマンド コマンド名 コマンド (1byte) オペランド (3byte)
Write Data Read Data 備考
erase_flash 0x0E 下記参照 -- -- 消去対象をオペランドで選択 ※ オペランド : 0000 ucfs 0000 00000 0000 0000 (バイナリ表記 3byte) u : UFM セクタを消去対象 (0 : 消去しない、 1 : 消去する) c : CFM セクタを消去対象 (0 : 消去しない、 1 : 消去する) f : Feature セクタを消去対象 (0 : 消去しない、 1 : 消去する) s : SRAM セクタを消去対象 (0 : 消去しない、 1 : 消去する) 注) 消去対象はオペランド 1byte 目の下位 4bit で指定します。下記に例を示します。デバイスをすべて消去する場 合、下記例 1 を使用してください。
例 1. command 0x0E + operand 0x0E, 0x00, 0x00 UFM/CFM/Feature Row すべてを消去 例 2. command 0x0E + operand 0x0C, 0x00, 0x00 UFM と CFG の両 セ ク タ消去 例 3. command 0x0E + operand 0x04, 0x00, 0x00 CFG セ ク タのみ消去
例 4. command 0x0E + operand 0x08, 0x00, 0x00 UFM セ ク タのみ消去 例 5. command 0x0E + operand 0x01, 0x00, 0x00 SRAM セ ク タのみ消去
注) 通常 SRAM を選択して意図的に消去する必要はございません。SRAM とその他の領域は、同時にイレース指定 して消去できません。また SRAM をイレース対象とする為には、表 4-1 の isc_enable コマンドでダイレクトモード(0xC6) を使用し、付随するオペランドには 0x08, 0x00, 0x00 ではなく、0x00, 0x00, 0x00 を指定する必要があります。
消去完了の確認
消去コマンド入力からデータ消去の完了までは時間がかかります。プログラムは消去完了後にしか行えな いので、プログラムコマンド入力前に消去の完了を確認する必要があります。データの消去を確認するため には、On-chip Flash memory 内の[busy フラグ]を read して値をチェックします。[busy フラグ]=0 が消去完了 を表し、[busy フラグ]=1 は、まだ消去中であることを表します。
[busy フラグ]を read するコマンドは2つあります。1つは[busy フラグ]のみを read する[check_busy]コマンド、 もう1つは[busy フラグ]と一緒に内部の各種ステータスのフラグを read する[read_status]コマンドです。
表 4-3 busy フラグ確認コマンド
コマンド名 コマンド (1byte)
オペランド (3byte)
Write Data Read Data 備考
check_busy 0xF0 0x00, 0x00, 0x00 -- 8bit MSB が busy フラグ read_status 0x3C 0x00, 0x00, 0x00 -- 32bit 上位データから出力される。 Read data[31:0]のビット[12] が busy フラグ。 なお、データの消去は最大でも5秒で完了するため、消去コマンド入力から5秒後以降であれば、確認コマ ンドをスキップして次のコマンドを実行しても構いません。 アドレスの初期化 プログラム前にページアドレスの初期化を行います。 表 4-4 アドレスの初期化コマンド コマンド名 コマンド (1byte) オペランド (3byte)
Write Data Read Data 備考
init_address 0x46 0x00, 0x00, 0x00 -- -- --- データのプログラム 1 ページ(16byte)分のデータのプログラムを行います。ページアドレスはプログラム実行時に自動的にインク リメントされます。 表 4-5 ページプログラム & アドレスインクリメントコマンド コマンド名 コマンド (1byte) オペランド (3byte)
Write Data Read Data 備考
prog_incr_nv 0x70 0x00, 0x00, 0x00 16byte -- ページアドレスは自動的に インクリメントされる
1回のコマンド実行で1ページプログラムします。全てのデータをプログラムするには、必要なページ数分コ マンドを繰り返す必要があります。
プログラム完了の確認 データの消去と同じく、プログラムもコマンド入力から完了まで時間がかかります。このためデータの消去の 場合と同様に、次のページプログラム実行前に[busy フラグ]をチェックして処理状況を確認する必要があり ます。使用するコマンドも消去の確認と同じです(表 4-3)。 プログラム完了フラグの設定 全てのデータのプログラムが完了したら、デバイスにそれを認識させるためのフラグを設定します。 表 4-6 コンフィグデータプログラム完フラグ設定コマンド コマンド名 コマンド (1byte) オペランド (3byte)
Write Data Read Data 備考
prog_done 0x5E 0x00, 0x00, 0x00 -- -- 各 I/F と CFM 間のアクセス無効化 プログラムが完了したら、各 I/F からの CFM へのアクセスを無効化します。有効化の場合と異なりコマンドは 1つ(モードに依存しない)です。 表 4-7 アクセス無効化コマンド コマンド名 コマンド (1byte) オペランド (3byte)
Write Data Read Data 備考
isc_disable 0x26 0x00, 0x00 -- -- バイパス 各 I/F と CFM 間のアクセス無効化後、続けて下記バイパスコマンドも必要です。 表 4-8 バイパスコマンド コマンド名 コマンド (1byte) オペランド (3byte)
Write Data Read Data 備考
bypass 0xFF 0xFF, 0xFF, 0xFF -- --
4.2 CFM データの Read CFM のデータを Read するには、図 4-2 の手順で行います。 図 4-2 CFM データ Read 手順 各種 I/F と CFM 間のアクセス有効化 CFM へのアクセスを開始する際に必ず行います。アクセスには、ロジック部分の動作を強制的に停止させ てアクセスを行うダイレクトモードと、ロジックは動作させたままアクセスを行うトランスペアレントモードの2つ があり、それぞれのモード用に有効化コマンドが用意されています。 表 4-9 I/F の有効化コマンド コマンド名 コマンド (1byte) オペランド (3byte)
Write Data Read Data 備考
isc_enable 0xC6 0x08, 0x00, 0x00 -- -- ダイレクトモード lsc_enable_x 0x74 0x08, 0x00, 0x00 -- -- トランスペアレントモード アドレスの初期化 Read コマンド実行前にページアドレスの初期化を行います。 表 4-10 アドレスの初期化コマンド コマンド名 コマンド (1byte) オペランド (3byte)
Write Data Read Data 備考
データの Read Read はページ単位で行いますが、複数ページをまとめて Read することが出来ます。リードデータの指定は オペランドによる詳細設定が必要です。 表 4-11 Read & アドレスインクリメントコマンド コマンド名 コマンド (1byte) オペランド (3byte)
Write Data Read Data 備考
read_incr_nv 0x73 下記詳細 --- 下記詳細 ダミーデータ設定とリード ページ数の関係に注意 ※ オペランド : 0001 0000 00pp pppp pppp pppp (バイナリ表記 3byte) WISHBONE/SPI 時 : 0000 0000 00pp pppp pppp pppp (バイナリ表記 3byte) WISHBONE/SPI/I2C 時 pp…pp : リードするページ数を指定。1 ページの場合、読み出すページ数(つまり1)。1 以上 の場合、読み出すページ数+1 I2C ではオペランドの 1 バイト目に注意。WISHBONE 側の最大読み出し速度は 36MHz です。 各 I/F と CFM 間のアクセス無効化 データの Read が完了したら、各 I/F からの CFM へのアクセスを無効化します。有効化の場合と異なりコマ ンドは1つ(モードに依存しない)です。 表 4-12 アクセス無効化コマンド コマンド名 コマンド (1byte) オペランド (3byte)
Write Data Read Data 備考
isc_disable 0x26 0x00, 0x00 -- -- バイパス 各 I/F と CFM 間のアクセス無効化後、続けて下記バイパスコマンドも必要です。 表 4-13 バイパスコマンド コマンド名 コマンド (1byte) オペランド (3byte)
Write Data Read Data 備考
4.3 コンフィグデータのダウンロード
CFM に書き込んだデータの SRAM 領域へのダウンロード(コンフィグレーション)は、表 4-15(後述)の refresh コマンドを使用し図 4-3 の手順で行います。図 4-3 の手順の代わりに、XO2 デバイスの電源を OFF-ON する ことでも、CFM に書き込んだデータを SRAM 領域へダウンロードすることが可能です。
各種 I/F と CFM 間のアクセス有効化 CFM へのアクセスを開始する際に必ず行います。アクセスには、ロジック部分の動作を強制的に停止させ てアクセスを行うダイレクトモードと、ロジックは動作させたままアクセスを行うトランスペアレントモードの 2 つ があり、それぞれのモード用に有効化コマンドが用意されています。 表 4-14 I/F の有効化コマンド コマンド名 コマンド (1byte) オペランド (3byte)
Write Data Read Data 備考
isc_enable 0xC6 0x08, 0x00, 0x00 -- -- ダイレクトモード lsc_enable_x 0x74 0x08, 0x00, 0x00 -- -- トランスペアレントモード ダウンロード CFM からコンフィグ SRAM にデータをダウンロードします。 表 4-15 アドレスの初期化コマンド コマンド名 コマンド (1byte) オペランド (3byte)
Write Data Read Data 備考
refresh 0x79 0x00, 0x00 -- -- --- 各 I/F と CFM 間のアクセス無効化 データの Read が完了したら、各 I/F からの CFM へのアクセスを無効化します。有効化の場合と異なりコマ ンドは1つ(モードに依存しない)です。 表 4-16 アクセス無効化コマンド コマンド名 コマンド (1byte) オペランド (3byte)
Write Data Read Data 備考
isc_disable 0x26 0x00, 0x00 -- -- バイパス 各 I/F と CFM 間のアクセス無効化後、続けて下記バイパスコマンドも必要です。 表 4-17 バイパスコマンド コマンド名 コマンド (1byte) オペランド (3byte)
5 UFM へのアクセス手順
5.1 UFM のプログラム UFM にデータをプログラムするには、図 5-1 の手順で行います。 図 5-1 UFM データプログラムの手順 各種 I/F と UFM 間のアクセス有効化 UFM へのアクセスを開始する際に必ず行います。アクセスには、ロジック部分の動作を強制的に停止させ てアクセスを行うダイレクトモードと、ロジックは動作させたままアクセスを行うトランスペアレントモードの2つ があり、それぞれのモード用に有効化コマンドが用意されています。 表 5-1 I/F の有効化コマンド コマンド名 コマンド (1byte) オペランド (3byte)データの消去
On-Chip flash memory の UFM 領域のデータ全てを消去します。Flash memory はその構造上、「データの 上書き」が出来ないため、プログラム前には必ずデータの消去を行う必要があります。UFM を消去する場 合、UFM 消去専用のコマンド(0xCB)を使用する方法と、Erase Flash コマンド(0x0E)を使用しオペランドで UFM を選択(0x08, 0x00, 0x00)する方法があります。
---
・ページ単位の消去はできません、UFM の全てのページのデータが消去されます。特定のページのみ消去 したい場合や、特定のページデータのみ書き換えたい場合、UFM にプログラムされている必要なデータを、 内蔵 SRAM メモリ(Embedded Block RAM)等に一時退避し、UFM 全消去後書き戻す工夫が必要です。 --- 表 5-2 Erase UFM コマンド コマンド名 コマンド (1byte) オペランド (3byte)
Write Data Read Data 備考
Erase UFM 0xCB 0x00, 0x00, 0x00 -- -- UFM 領域の全データ消去
表 5-3 Erase Flash コマンド
コマンド名 コマンド (1byte)
オペランド (3byte)
Write Data Read Data 備考
erase_flash 0x0E 下記参照 -- -- 消去対象をオペランドで選択 ※ オペランド : 0000 ucfs 0000 00000 0000 0000 (バイナリ表記 3byte) u : UFM セクタを消去対象 (0 : 消去しない、 1 : 消去する) c : CFM セクタを消去対象 (0 : 消去しない、 1 : 消去する) f : Feature セクタを消去対象 (0 : 消去しない、 1 : 消去する) s : SRAM セクタを消去対象 (0 : 消去しない、 1 : 消去する) 注)
消去対象はオペランド 1byte 目の下位 4bit で指定します。下記に例を示します。UFM のみを消去する場合、 下記例 4 を使用してください。
例 1. command 0x0E + operand 0x0E, 0x00, 0x00 UFM/CFM/Feature Row すべてを消去 例 2. command 0x0E + operand 0x0C, 0x00, 0x00 UFM と CFG の両 セ ク タ消去 例 3. command 0x0E + operand 0x04, 0x00, 0x00 CFG セ ク タのみ消去
例 4. command 0x0E + operand 0x08, 0x00, 0x00 UFM セ ク タのみ消去 例 5. command 0x0E + operand 0x01, 0x00, 0x00 SRAM セ ク タのみ消去
消去完了の確認
消去コマンド入力からデータ消去の完了までは時間がかかります。プログラムは消去完了後にしか行えな いので、プログラムコマンド入力前に消去の完了を確認する必要があります。データの消去を確認するため には、On-chip Flash memory 内の[busy フラグ]を read して値をチェックします。[busy フラグ]=0 が消去完了 を表し、[busy フラグ]=1 は、まだ消去中であることを表します。
[busy フラグ]を read するコマンドは2つあります。1つは[busy フラグ]のみを read する[check_busy]コマンド、 もう1つは[busy フラグ]と一緒に内部の各種ステータスのフラグを read する[read_status]コマンドです。
表 5-4 busy フラグ確認コマンド
コマンド名 コマンド (1byte)
オペランド (3byte)
Write Data Read Data 備考
check_busy 0xF0 0x00, 0x00, 0x00 -- 8bit MSB が busy フラグ read_status 0x3C 0x00, 0x00, 0x00 -- 32bit 上位データから出力される。 Read data[31:0]のビット[12] が busy フラグ。 なお、データの消去は最大でも5秒で完了するため、消去コマンド入力から5秒後以降であれば、確認コマ ンドをスキップして次のコマンドを実行しても構いません。 Program 開始アドレスの指定 プログラム前にページアドレスの指定を行います。 表 5-5 アドレスの初期化コマンド コマンド名 コマンド (1byte) オペランド (3byte)
Write Data Read Data 備考
direct_address 0xB4 0x00, 0x00, 0x00 0x40, + address 3byte(内 14bit 使用) -- ページアドレスを指定 データのプログラム 1 ページ(16byte)分のデータのプログラムを行います。ページアドレスはプログラム実行時に自動的にインク リメントされます。 表 5-6 ページプログラム & アドレスインクリメントコマンド コマンド名 コマンド (1byte) オペランド (3byte)
Write Data Read Data 備考
prog_incr_nv 0xC9 0x00, 0x00, 0x00 16byte -- ページアドレスは自動的に インクリメントされる
プログラム完了の確認 データの消去と同じく、プログラムもコマンド入力から完了まで時間がかかります。このためデータの消去の 場合と同様に、次のページプログラム実行前に[busy フラグ]をチェックして処理状況を確認する必要があり ます。使用するコマンドも消去の確認と同じです(表 4-3)。 プログラム完了フラグの設定 全てのデータのプログラムが完了したら、デバイスにそれを認識させるためのフラグを設定します。 表 5-7 コンフィグデータプログラム完フラグ設定コマンド コマンド名 コマンド (1byte) オペランド (3byte)
Write Data Read Data 備考
prog_done 0x5E 0x00, 0x00, 0x00 -- -- 各 I/F と UFM 間のアクセス無効化 プログラムが完了したら、各 I/F からの UFM へのアクセスを無効化します。有効化の場合と異なりコマンド は1つ(モードに依存しない)です。 表 5-8 アクセス無効化コマンド コマンド名 コマンド (1byte) オペランド (3byte)
Write Data Read Data 備考
isc_disable 0x26 0x00, 0x00 -- -- バイパス 各 I/F と UFM 間のアクセス無効化後、続けて下記バイパスコマンドも必要です。 表 5-9 バイパスコマンド コマンド名 コマンド (1byte) オペランド (3byte)
Write Data Read Data 備考
bypass 0xFF 0xFF, 0xFF, 0xFF -- --
5.2 UFM データの Read
CFM のデータを Read するには、図 5-2 の手順で行います。
各種 I/F と UFM 間のアクセス有効化 UFM へのアクセスを開始する際に必ず行います。アクセスには、ロジック部分の動作を強制的に停止させ てアクセスを行うダイレクトモードと、ロジックは動作させたままアクセスを行うトランスペアレントモードの2つ があり、それぞれのモード用に有効化コマンドが用意されています。 表 5-10 I/F の有効化コマンド コマンド名 コマンド (1byte) オペランド (3byte)
Write Data Read Data 備考
isc_enable 0xC6 0x08, 0x00, 0x00 -- -- ダイレクトモード lsc_enable_x 0x74 0x08, 0x00, 0x00 -- -- トランスペアレントモード リード開始アドレスの指定 Read コマンド実行前にページアドレスの指定を行います。 表 5-11 アドレスの初期化コマンド コマンド名 コマンド (1byte) オペランド (3byte)
Write Data Read Data 備考
direct_address 0xB4 0x00, 0x00, 0x00 0x40, + address 3byte(内 14bit 使用)
データの Read Read はページ単位で行いますが、複数ページをまとめて Read することが出来ます。リードデータの指定は オペランドによる詳細設定が必要です。 表 5-12 Read & アドレスインクリメントコマンド コマンド名 コマンド (1byte) オペランド (3byte)
Write Data Read Data 備考
read_incr_nv 0xCA 下記詳細 --- 下記詳細 ダミーデータ設定とリード ページ数の関係に注意 ※ オペランド : 0001 0000 00pp pppp pppp pppp (バイナリ表記 3byte) WISHBONE/SPI 時 : 0000 0000 00pp pppp pppp pppp (バイナリ表記 3byte) WISHBONE/SPI/I2C 時 pp…pp : リードするページ数を指定。1 ページの場合、読み出すページ数(つまり1)。1 以上 の場合、読み出すページ数+1 I2C ではオペランドの 1 バイト目に注意。WISHBONE 側の最大読み出し速度は 36MHz です。 各 I/F と UFM 間のアクセス無効化
データの Read が完了したら、各 I/F からの UFM へのアクセスを無効化します。有効化の場合と異なりコマ ンドは1つ(モードに依存しない)です。 表 5-13 アクセス無効化コマンド コマンド名 コマンド (1byte) オペランド (3byte)
Write Data Read Data 備考
isc_disable 0x26 0x00, 0x00 -- -- バイパス 各 I/F と UFM 間のアクセス無効化後、続けて下記バイパスコマンドも必要です。 表 5-14 バイパスコマンド コマンド名 コマンド (1byte) オペランド (3byte)
Write Data Read Data 備考
6 各種 I/F からのアクセス波形
6.1 Wishbone バスからのアクセス波形
6.1.1 Wishbone バスから CFM/UFM へのアクセスルール
Wishbone から UFM/CFM へのアクセスを行う場合、まずアドレス 0x70 に値 0x80 を write して、wishbone バス から flash メモリコントローラへのアクセスを Enable にします(フレーム・オープン)。その後、アドレス 0x71 に UFM/CFM へのコマンドを順次 write します。最後にアドレス 0x70 に値 0x00 を write して、wishbone バスから flash メモリコントローラへのアクセスを disable にします(フレーム・クローズ)。 これらのコマンドは、SPI の CS アサート/ディアサート、I2C のスタートコンディション/ストップコンディションに相 当します。 図 6-1 Wishbone バスから UFM へのアクセスルール --- ・アドレス 0x70 へのデータ 0x80 の write は I2C の[START]コンディションまたは SPI の CS アサートに相当。 ・アドレス 0x70 へのデータ 0x00 の write は I2C の[STOP] コンディションまたは SPI の CS アサートに相当。 ---
6.1.2 各種アクセス波形サンプル CFM/UFM との I/F の有効化 図 6-2 UFM との I/F 有効化 CFM の Erase 図 6-3 CFM の Erase UFM の Erase wb_clk_i wb_cyc_i wb_stb_i wb_we_i wb_adr_i[7:0] wb_dat_i[7:0] wb_dat_o wb_ack_o N/A N/A N/A N/A
70 N/A N/A 71 N/A 71
OO N/A
71 70 N/A
OO
80 N/A N/A O8 N/A N/A OO
71 74 wb_clk_i wb_cyc_i wb_stb_i wb_we_i wb_adr_i[7:0] wb_dat_i[7:0] wb_dat_o wb_ack_o N/A 70 N/A 80 0E OC OO OO OO N/A 71 71 70 N/A 71 71 N/A N/A N/A N/A N/A N/A N/A N/A N/A wb_clk_i wb_cyc_i wb_stb_i wb_we_i wb_adr_i[7:0] wb_dat_i[7:0] wb_dat_o N/A
N/A OO N/A OO N/A OO N/A OO N/A 71 N/A 71 N/A 71 N/A 71 N/A 70 N/A CB
70 N/A 80 N/A
Erase/プログラム完了の確認 ※ MSB が busy フラグ 図 6-5 check_busy コマンドによる確認 ページアドレスの初期化(CFM アクセス時) 図 6-6 ページアドレスの初期化 ページアドレス指定(UFM アクセス時) ※ ページアドレス(3byte) 図 6-7 ページアドレス指定 wb_clk_i wb_cyc_i wb_stb_i wb_we_i wb_adr_i[7:0] wb_dat_i[7:0] wb_dat_o wb_ack_o N/A N/A N/A N/A N/A N/A 70 71 71 71 80 F0 OO OO N/A OO N/A N/A
71 N/A N/A 70 N/A
N/A 73 ※ OO wb_clk_i wb_cyc_i wb_stb_i wb_we_i wb_adr_i[7:0] wb_dat_i[7:0] wb_dat_o wb_ack_o N/A OO N/A N/A
80 N/A 46 N/A OO N/A OO N/A OO
70 N/A 71 N/A 71 N/A 71 N/A 71 N/A 70 N/A
wb_clk_i wb_cyc_i wb_stb_i wb_we_i wb_adr_i[7:0] wb_dat_i[7:0] wb_dat_o wb_ack_o 71 N/A 71 71 N/A
04 N/A ※ N/A ※ N/A ※ N/A 71 N/A 71 N/A
N/A
70 N/A
80 N/A B4 N/A OO N/A OO N/A OO N/A OO N/A
71 N/A N/A 71 N/A 71 N/A
ページプログラム+ アドレスインクリメント(CFM) ※ 16byte データ 図 6-8 CFM のプログラム ページプログラム + アドレスインクリメント(UFM) ※ 16byte データ 図 6-9 UFM のプログラム wb_clk_i wb_cyc_i wb_stb_i wb_we_i wb_adr_i[7:0] wb_dat_i[7:0] wb_dat_o wb_ack_o N/A N/A OON/A
N/A ※ N/A ※ N/A ※
70 N/A
80 N/A 7O N/A OO
N/A 71 N/A 71
N/A OO N/A OO N/A ※
70 N/A 71 N/A 71 N/A 71 N/A 71 N/A 71 N/A 71 N/A
wb_clk_i wb_cyc_i wb_stb_i wb_we_i wb_adr_i[7:0] wb_dat_i[7:0] wb_dat_o wb_ack_o N/A OON/A N/A
N/A ※ N/A ※ N/A ※ N/A ※
80 N/A C9 N/A OO N/A OO N/A OO
71 N/A 71 N/A 71 N/A 70 N/A
プログラム完了フラグの設定 図 6-10 プログラム完了フラグの設定 CFM/UFM との I/F の無効化 図 6-11 CFM/UFM との I/F の無効化 wb_clk_i wb_cyc_i wb_stb_i wb_we_i wb_adr_i[7:0] wb_dat_i[7:0] wb_dat_o wb_ack_o N/A OO N/A N/A
80 N/A 5E N/A OO N/A OO N/A OO
70 N/A 71 N/A 71 N/A 71 N/A 71 N/A 70 N/A
wb_clk_i wb_cyc_i wb_stb_i wb_we_i wb_adr_i[7:0] wb_dat_i[7:0] wb_dat_o wb_ack_o
N/A OO N/A OO N/A 26 N/A OO
70 N/A 71 N/A 71 N/A 71
80 N/A
N/A 71 N/A 70 N/A OO N/A N/A
データの Read(CFM) w b _c lk _i w b _c yc _i w b _s tb _i w b _w e _i w b _a d r_i [7 :0 ] w b _d at _i[ 7 :0 ] w b _d at _o w b _a c k_ o N/A N/A OO N/ A ※ 2 ※ 2 ※ 3 ※ 3 ※ 3 ※ 2 73 N/ A 73 73 N/ A 73 N/ A 73 N/ A 70 N/ A ※ 1 ※ 2 N/A ※ 1 ※ 1 N/ A 80 N/ A 73 N/ A 1O N/ A MM N/ A NN N/ A N/A 73 N/ A 73 N/ A 73 73 N/ A 73 N/ A N/ A 71 N/ A 71 N/ A 70 N/ A 71 N/ A 71 Dumm yデータ 16 b yte の R e ad ※ 1 ダミー データ 16 by te ※ 2 指定し た先頭 ページ のデ ータ ※ 3 先頭ペ ージ + M M N N - 1 ペ ージの データ
データの Read(UFM) w b _c lk _i w b _c yc _i w b _s tb _i w b _w e _i w b _a d r_i [7 :0 ] w b _d at _i[ 7 :0 ] w b _d at _o w b _a c k_ o N/ A 70 ※ 3 N/ A OO N/ A N/A ※ 3 N/ A 73 N/ A 73 ※ 2 ※ 2 ※ 3 N/A 73 N/ A 73 73 ※ 1 ※ 2 ※ 2 MM N/ A NN N/ A N/A N/A ※ 1 ※ 1 73 N/ A 73 80 N/ A CA N/ A 1O N/ A N/ A 73 N/ A 73 N/ A N/ A 71 N/ A 71 N/ A 73 70 N/ A 71 N/ A 71 Dumm yデータ 16 b yte の R e ad ※ 1 ダミー データ 16 by te ※ 2 指定し た先頭 ページ のデ ータ ※ 3 先頭ペ ージ + M M N N - 1 ペ ージの
6.2 I2C からのアクセス波形
6.2.1 I2C から CFM/UFM へのアクセスルール
外部の I2C マスタから XO2 の CFM/UFM にアクセスする際、Read データがないアクセスでは1度のアクセス でコマンドや入力データを連続して入力します。しかし、Read データがあるアクセス(read_status, check_busy, read_incr_nv )では、I2C としてのアクセスは2回必要になります。1度目のアクセスで、データを Read するため のコマンド等を write し、2回目のアクセスで該当するデータを read します(図 6-16、図 6-17 参照)。なお、こ のアクセス間の区切りには[Repeated START condition]を使用します。
6.2.2 I2C からのアクセス波形サンプル CFM/UFM との I/F の有効化 図 6-14 I/F の有効化 ページアドレス指定(UFM アクセス時) 図 6-15 ページアドレス指定 Erase/プログラム完了確認 SDA SCL ACK A A Slave Address A A A A 0xC6(Comand) 0x08 (Operand) START Condition STOP Condition 0x00 (Operand) 0x00 (Operand) SCK
SDA Slave Address A A A A A
0xF0(Comand) 0x00 (Operand) 0x00 (Operand) 0x00 (Operand)
START Condition
Repeated START
データの Read(CFM) S C K S D A A C K S la ve A d d re ss A A A A C F M r e ad la st d at a A A D u m m y 0 A D u m m y 1 D u m m y1 4 A D u m m y 1 5 A C F M r e a d at a0 A A MM A NN S la ve A d d re ss A 0x73 (Coman d) 0x10 (Oper an d) 0xMM (Oper an d) 0xNN (Oper an d) START Condit ion STOP Cond it ion Rep ea ted START Cond it ion
6.3 SPI からのアクセス波形
6.3.1 SPI から CFM/UFM へのアクセスルール
MachXO2 は SPI のチップセレクト信号を2つ持っています。1つは SPI を介して内部の Wishbone バスにアク セスする際に使用するチップセレクト、もう1つは CFM/UFM へアクセスする際に使用するチップセレクトです。 CFM/UFM へのアクセスに使用するチップセレクトは[pinout list]の[Dual Function]欄に[SN]と記載されている ピンに割り当てられます。かならずこのチップセレクトを使用してください。 6.3.2 SPI からのアクセス波形サンプル CFM/UFM との I/F の有効化 図 6-18 CFM/UFM との I/F の有効化 Erase/プログラム完了確認 ※ Busy flag 図 6-19 check_busy コマンドによる確認 CCLK SI SN
0xC6(Comand)
0x08 (Operand)0x00 (Operand)0x00 (Operand)
CCLK SI SN
SO Hi-Z ※
N/A 0xF0(Comand) 0x00 (Operand) 0x00 (Operand) 0x00 (Operand)
6.3.3 データの Read(CFM) C C L K SI SN SO N/A N/A N/A D u m m y 0 H i-Z C F M r e ad la st データ C F M r e ad データ 0 C F M r e ad データ 1 NN D u m m y 1 D u m m y 2 D u m m y1 4 D u m m y 1 5 MM N/A 0x73 (Coman d) 0x10 (Oper an d) 0xMM (Oper an d) 0xNN (Oper an d)
7 EFB のシミュレーション
7.1 テストベンチ作成時の注意点 EFB のシミュレーションには、最上位階層のテストベンチに以下の2つのモジュールのインスタンスが必要で す。また、これらのモジュールのインスタンス名は以下のものでないと、エラーになります。 表 7-1 GSR/PUR のインスタンス名 モジュール名 インスタンス名 備考GSR GSR_INST Global Set/Reset 出力モジュール PUR PUR_INST Power Up Set/Reset 出力モジュール
エラメッセージの例
# ELAB2: Fatal Error: ELAB2_0036 Unresolved hierarchical reference to "GSR_INST.GSRNET" from module "testbench.u1_efb_i2c_ms.EFBInst_0" (module not found).
# ELAB2: Last instance before error: /u1_efb_i2c_ms/EFBInst_0 # KERNEL: Error: E8005 : Kernel process initialization failed. # Error: Fatal error occurred during simulation initialization. 記述例 library ieee, std; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith; use ieee.std_logic_textio.all; use std.textio.all; library ovi_machxo2; use ovi_machxo2.all; entity testbench is end testbench; architecture BL of testbench is component GSR port( GSR : in std_logic ); end component; component PUR port( PUR : in std_logic
・ Begin GSR_INST : GSR port map( GSR => wb_xrst_i ); PUR_INST : PUR port map( PUR => c_vcc ); ・ ・ ・ end BL; 7.2 I2C マクロの入出力信号
I2C マクロからの出力は、I2C の仕様どおり’0’または’Z’です。I2C マクロから’1’や’H’は出力されません。 従って外部で’H’レベルへのプルアップ処理が必要になります。
7.3 Wishbone バスへの入力データ
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 に変更します。◆ 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
◆ Wishbone バス未使用時のポート処理
EFB マクロをインスタンスするが Wishbone バスは使用しない場合、未使用の Wishbone バスは下記処理をいたします。 I2C や SPI の各ポートを使用する場合、I2C や SPI のポートは必要に応じて使用します。
wb_clk_i => '0', -- 固定値入力 wb_rst_i => '0', -- 固定値入力 wb_cyc_i => '0', -- 固定値入力 wb_stb_i => '0', -- 固定値入力 wb_we_i => '0', -- 固定値入力 wb_adr_i => "00000000", -- 固定値入力 wb_dat_i => "00000000", -- 固定値入力 wb_dat_o => open, -- 未使用(未接続) wb_ack_o => open, -- 未使用(未接続) i2c1_scl => -- 必要に応じて使用 i2c1_sda => -- 必要に応じて使用 i2c1_irqo => -- 必要に応じて使用 spi_miso => -- 必要に応じて使用 spi_mosi => -- 必要に応じて使用 spi_clk => -- 必要に応じて使用 spi_scsn => -- 必要に応じて使用 wbc_ufm_irq => -- 必要に応じて使用 なを、wb_clk_i 及び wb_rst_i は、WB IF 側のアクセス回路にのみ影響するクロック及びリセット信号です。 これらの信号がアサートされていても、ディアサートされていても、I2C IF や SPI IF 側の動作には影響ご ざいません。
10 改訂履歴
表 10-1 改訂履歴
バージョン リリース 改訂内容
Ver1.0 Jun. 2011 ・初版リリース
Ver1.1 Aug. 2011 ・4 章および 5 章の CFM/UFM インターフェイス有効化コマンドの説明を 修正。これに伴い、表 4-9、表 4-14、表 5-1、表 5-10 も修正。 Ver1.2.2 Feb. 2012 ・TN1204 v1.3/TN1205 v2.9 の内容を反映。5 章 追記(リードコマンド詳
細、消去コマンド詳細、バイパスコマンド)。8 章 「Feature Row につい て」、9 章 「その他注意事項」追記。
Ver1.2.3 Sep. 2012 9 章 Wishbone バス未使用時の処理を追記。refresh/isc_disable コマンド のオペランドを TN1246 での 2byte に統一。TN1246 について記載。 Ver1.2.4 Oct. 2012 9 章 その他注意事項についてアップデート。 Ver1.2.5 Dec. 2012 4 章 表 4-11, 5 章 表 5-12 オペランドの内訳を TN1246 の内容で更新。 5 章 表 5-5, 5-11 オペランドの内訳を TN1246 の内容で更新。 6 章 図 6-15 波形誤記修正。 Ver1.2.6 Aug. 2013 9 章 プログラミング時の注意事項、コンフィグレーション時の注意事項を 追記 Ver1.2.7 Sep. 2013 8 章 図 8-1 更新