MachXO2 On-Chip Flash memory 補足説明資料 - TN1204/TN1205/TN1246 補足資料 - 1
目次 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 での設定... 9 4 CFM へのアクセス手順 10 4.1 CFM のプログラム... 10 4.2 CFM データの Read... 14 4.3 コンフィグデータのダウンロード... 16 5 UFM へのアクセス手順 18 5.1 UFM のプログラム... 18 5.2 UFM データの Read... 22 6 各種 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)... 35 7 EFB のシミュレーション 36 7.1 テストベンチ作成時の注意点... 36 7.2 I2C マクロの入出力信号... 37 7.3 Wishbone バスへの入力データ... 38 8 Feature Row について 39 9 その他注意事項 42 10 改訂履歴 46 2
1 このドキュメントの概要 このドキュメントでは MachXO2 のプログラミングとコンフィグレーションについて記載された TN1204 及び内蔵されている Flash memory へのアクセス方法について記載された TN1205/TN1246 の両ドキュメントについて 補足情報を説明します 基本動作や オペランド等の詳細については 下記の TN1204/1205/TN1246 に掲載いたしておりますので 必ずご確認下さい TN1204 : MachXO2 プログラミングとコンフィグレーション使用ガイド TN1205 : MachXO2 ユーザフラッシュメモリとハードマクロ制御機能の使用方法 TN1246 : ( 日本語タイトル ) 3
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 を参照下さい CFM セクター 0 ( コンフィグレーション用フラッシュメモリ ) USERCODE セクター 1 UFM ( ユーザ用フラッシュメモリ ) フィーチャ行 図 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 バス経由で行います EFB 図 2-2 MachXO2 ハードマクロ間の接続 4
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 章以降で説明します 5
3 ツール上の設定の注意事項 On-chip Flash memory にアクセスするには ツール上での設定が必要になります ツール上の設定は 2 種類あり 1 つは Spreadsheet View による SPI/I2C ポートのアクティブ化 もう 1 つは IPexpress によるデザインへの EFB マクロのインスタンス です 必要な設定は アクセス先 (Flash memory 内の使用する領域 ) やアクセス元の種類によって決まります ( 表 3-1) なお EFB を明示的にインスタンスした場合 インスタンスにより有効化されたポート設定はグレーアウトし 自動的に Enable と表示され変更できません アクセス先 CFM UFM アクセス元 表 3-1 On-chip Flash memory アクセスとツールの設定 モード設定 (Spreadsheet View) EFB インスタンス (IPexpress) コメント SPI / I2C 必要不要コンフィグイメージの更新 WB 不要 必要 可能ですが推奨しません SPI / I2C 不要 必要 WB 不要必要 3.1 IPexpress での設定 UFM 領域にアクセスする場合 または Wishbone I/F から On-chip Flash memory にアクセスする場合は デザインに EFB モジュールを組み込む必要があります EFB はモジュール生成プログラム [IPexpress] を使用して生成します IPexpress は Lattice Diamond のツールバーのアイコンをクリックすると起動します 図 3-1 IPexpress の起動 6
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 にはアクセスできません ----------------------------------------------------------------------------------------- 図 3-2 ハードマクロ選択タブ 7
[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] にチェックを入れ その下の欄で初期値を記述したファイルを指定します 8
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) 図 3-4 Spreadsheet View の設定 9
4 CFM へのアクセス手順 4.1 CFM のプログラム CFM にコンフィグデータをプログラムするには 図 4-1 の手順で行います 図 4-1 CFM データプログラム手順 各種 I/F と CFM 間のアクセス有効化 CFM へのアクセスを開始する際に必ず行います アクセスには ロジック部分の動作を強制的に停止させてアクセスを行うダイレクトモードと ロジックは動作させたままアクセスを行うトランスペアレントモードの 2 つがあり それぞれのモード用に有効化が用意されています 表 4-1 I/F の有効化 オペランド Write Data Read Data 備考 isc_enable 0xC6 0x08, 0x00, 0x00 -- -- ダイレクトモード lsc_enable_x 0x74 0x08, 0x00, 0x00 -- -- トランスペアレントモード 10
データの消去 On-Chip flash memory のデータを消去します Flash memory はその構造上 データの上書き が出来ないためプログラム前には必ずデータの消去を行う必要があります 表 4-2 Erase Flash オペランド 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 例 2. command 0x0E + operand 0x0C, 0x00, 0x00 例 3. command 0x0E + operand 0x04, 0x00, 0x00 例 4. command 0x0E + operand 0x08, 0x00, 0x00 例 5. command 0x0E + operand 0x01, 0x00, 0x00 UFM/CFM/Feature Row すべてを消去 UFM と CFG の両セクタ消去 CFG セクタのみ消去 UFM セクタのみ消去 SRAM セクタのみ消去 注 ) 通常 SRAM を選択して意図的に消去する必要はございません SRAM とその他の領域は 同時にイレース指定して消去できません また SRAM をイレース対象とする為には 表 4-1 の isc_enable でダイレクトモード (0xC6) を使用し 付随するオペランドには 0x08, 0x00, 0x00 ではなく 0x00, 0x00, 0x00 を指定する必要があります 11
消去完了の確認 消去入力からデータ消去の完了までは時間がかかります プログラムは消去完了後にしか行えないので プログラム入力前に消去の完了を確認する必要があります データの消去を確認するためには 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 フラグ確認 オペランド 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 アドレスの初期化 オペランド Write Data Read Data 備考 init_address 0x46 0x00, 0x00, 0x00 -- -- --- データのプログラム 1 ページ (16byte) 分のデータのプログラムを行います ページアドレスはプログラム実行時に自動的にインクリメントされます 表 4-5 ページプログラム & アドレスインクリメント オペランド Write Data Read Data 備考 prog_incr_nv 0x70 0x00, 0x00, 0x00 16byte -- ページアドレスは自動的に インクリメントされる 1 回の実行で 1 ページプログラムします 全てのデータをプログラムするには 必要なページ数分を繰り返す必要があります 12
プログラム完了の確認 データの消去と同じく プログラムも入力から完了まで時間がかかります このためデータの消去の場合と同様に 次のページプログラム実行前に [busy フラグ ] をチェックして処理状況を確認する必要があります 使用するも消去の確認と同じです ( 表 4-3) プログラム完了フラグの設定 全てのデータのプログラムが完了したら デバイスにそれを認識させるためのフラグを設定します 表 4-6 コンフィグデータプログラム完フラグ設定 オペランド prog_done 0x5E 0x00, 0x00, 0x00 -- -- Write Data Read Data 備考 各 I/F と CFM 間のアクセス無効化 プログラムが完了したら 各 I/F からの CFM へのアクセスを無効化します 有効化の場合と異なりは 1 つ ( モードに依存しない ) です 表 4-7 アクセス無効化 オペランド Write Data Read Data 備考 isc_disable 0x26 0x00, 0x00 -- -- バイパス 各 I/F と CFM 間のアクセス無効化後 続けて下記バイパスも必要です 表 4-8 バイパス オペランド bypass 0xFF 0xFF, 0xFF, 0xFF -- -- Write Data Read Data 備考 プログラム完了後に引き続きデータの read 等を行う場合は アクセス無効化とバイパスはスキップ可能 13
4.2 CFM データの Read CFM のデータを Read するには 図 4-2 の手順で行います 各種 I/F と CFM 間のアクセス有効化 図 4-2 CFM データ Read 手順 CFM へのアクセスを開始する際に必ず行います アクセスには ロジック部分の動作を強制的に停止させてアクセスを行うダイレクトモードと ロジックは動作させたままアクセスを行うトランスペアレントモードの 2 つがあり それぞれのモード用に有効化が用意されています 表 4-9 I/F の有効化 オペランド Write Data Read Data 備考 isc_enable 0xC6 0x08, 0x00, 0x00 -- -- ダイレクトモード lsc_enable_x 0x74 0x08, 0x00, 0x00 -- -- トランスペアレントモード アドレスの初期化 Read 実行前にページアドレスの初期化を行います 表 4-10 アドレスの初期化 オペランド Write Data Read Data 備考 init_address 0x46 0x00, 0x00, 0x00 -- -- --- 14
データの Read Read はページ単位で行いますが 複数ページをまとめて Read することが出来ます リードデータの指定はオペランドによる詳細設定が必要です 表 4-11 Read & アドレスインクリメント オペランド 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 アクセス無効化 オペランド isc_disable 0x26 0x00, 0x00 -- -- Write Data Read Data 備考 バイパス 各 I/F と CFM 間のアクセス無効化後 続けて下記バイパスも必要です 表 4-13 バイパス オペランド bypass 0xFF 0xFF, 0xFF, 0xFF -- -- Write Data Read Data 備考 15
4.3 コンフィグデータのダウンロード CFM に書き込んだデータの SRAM 領域へのダウンロード ( コンフィグレーション ) は 表 4-15( 後述 ) の refresh を使用し図 4-3 の手順で行います 図 4-3 の手順の代わりに XO2 デバイスの電源を OFF-ON することでも CFM に書き込んだデータを SRAM 領域へダウンロードすることが可能です 図 4-3 データダウンロード手順 16
各種 I/F と CFM 間のアクセス有効化 CFM へのアクセスを開始する際に必ず行います アクセスには ロジック部分の動作を強制的に停止させてアクセスを行うダイレクトモードと ロジックは動作させたままアクセスを行うトランスペアレントモードの 2 つがあり それぞれのモード用に有効化が用意されています 表 4-14 I/F の有効化 オペランド Write Data Read Data 備考 isc_enable 0xC6 0x08, 0x00, 0x00 -- -- ダイレクトモード lsc_enable_x 0x74 0x08, 0x00, 0x00 -- -- トランスペアレントモード ダウンロード CFM からコンフィグ SRAM にデータをダウンロードします 表 4-15 アドレスの初期化 オペランド Write Data Read Data 備考 refresh 0x79 0x00, 0x00 -- -- --- 各 I/F と CFM 間のアクセス無効化 データの Read が完了したら 各 I/F からの CFM へのアクセスを無効化します 有効化の場合と異なりは 1 つ ( モードに依存しない ) です 表 4-16 アクセス無効化 オペランド isc_disable 0x26 0x00, 0x00 -- -- Write Data Read Data 備考 バイパス 各 I/F と CFM 間のアクセス無効化後 続けて下記バイパスも必要です 表 4-17 バイパス オペランド Write Data Read Data 備考 bypass 0xFF 0xFF, 0xFF, 0xFF -- -- 17
5 UFM へのアクセス手順 5.1 UFM のプログラム UFM にデータをプログラムするには 図 5-1 の手順で行います 図 5-1 UFM データプログラムの手順 各種 I/F と UFM 間のアクセス有効化 UFM へのアクセスを開始する際に必ず行います アクセスには ロジック部分の動作を強制的に停止させてアクセスを行うダイレクトモードと ロジックは動作させたままアクセスを行うトランスペアレントモードの 2 つがあり それぞれのモード用に有効化が用意されています 表 5-1 I/F の有効化 オペランド Write Data Read Data 備考 isc_enable 0xC6 0x08, 0x00, 0x00 -- -- ダイレクトモード lsc_enable_x 0x74 0x08, 0x00, 0x00 -- -- トランスペアレントモード 18
データの消去 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 オペランド Write Data Read Data 備考 Erase UFM 0xCB 0x00, 0x00, 0x00 -- -- UFM 領域の全データ消去 表 5-3 Erase Flash オペランド 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 例 2. command 0x0E + operand 0x0C, 0x00, 0x00 例 3. command 0x0E + operand 0x04, 0x00, 0x00 例 4. command 0x0E + operand 0x08, 0x00, 0x00 例 5. command 0x0E + operand 0x01, 0x00, 0x00 UFM/CFM/Feature Row すべてを消去 UFM と CFG の両セクタ消去 CFG セクタのみ消去 UFM セクタのみ消去 SRAM セクタのみ消去 注 ) 通常 SRAM を選択して意図的に消去する必要はございません SRAM とその他の領域は 同時にイレース指定して消去できません また SRAM をイレース対象とする為には 表 5-1 の isc_enable でダイレクトモード (0xC6) を使用し 付随するオペランドには 0x08, 0x00, 0x00 ではなく 0x00, 0x00, 0x00 を指定する必要があります 19
消去完了の確認 消去入力からデータ消去の完了までは時間がかかります プログラムは消去完了後にしか行えないので プログラム入力前に消去の完了を確認する必要があります データの消去を確認するためには 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 フラグ確認 オペランド 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 開始アドレスの指定 プログラム前にページアドレスの指定を行います direct_address 0xB4 0x00, 0x00, 0x00 0x40, + address 3byte( 内 14bit 使用 ) 表 5-5 アドレスの初期化 オペランド Write Data Read Data 備考 -- ページアドレスを指定 データのプログラム 1 ページ (16byte) 分のデータのプログラムを行います ページアドレスはプログラム実行時に自動的にインクリメントされます 表 5-6 ページプログラム & アドレスインクリメント オペランド Write Data Read Data 備考 prog_incr_nv 0xC9 0x00, 0x00, 0x00 16byte -- ページアドレスは自動的に インクリメントされる 1 回の実行で 1 ページプログラムします 全てのデータをプログラムするには 必要なページ数分を繰り返す必要があります 20
プログラム完了の確認 データの消去と同じく プログラムも入力から完了まで時間がかかります このためデータの消去の場合と同様に 次のページプログラム実行前に [busy フラグ ] をチェックして処理状況を確認する必要があります 使用するも消去の確認と同じです ( 表 4-3) プログラム完了フラグの設定 全てのデータのプログラムが完了したら デバイスにそれを認識させるためのフラグを設定します 表 5-7 コンフィグデータプログラム完フラグ設定 オペランド prog_done 0x5E 0x00, 0x00, 0x00 -- -- Write Data Read Data 備考 各 I/F と UFM 間のアクセス無効化 プログラムが完了したら 各 I/F からの UFM へのアクセスを無効化します 有効化の場合と異なりは 1 つ ( モードに依存しない ) です 表 5-8 アクセス無効化 オペランド isc_disable 0x26 0x00, 0x00 -- -- Write Data Read Data 備考 バイパス 各 I/F と UFM 間のアクセス無効化後 続けて下記バイパスも必要です 表 5-9 バイパス オペランド bypass 0xFF 0xFF, 0xFF, 0xFF -- -- Write Data Read Data 備考 プログラム完了後に引き続きデータの read 等を行う場合は アクセス無効化とバイパスはスキップ可能 21
5.2 UFM データの Read CFM のデータを Read するには 図 5-2 の手順で行います 図 5-2 UFM データ Read 手順 22
各種 I/F と UFM 間のアクセス有効化 UFM へのアクセスを開始する際に必ず行います アクセスには ロジック部分の動作を強制的に停止させてアクセスを行うダイレクトモードと ロジックは動作させたままアクセスを行うトランスペアレントモードの 2 つがあり それぞれのモード用に有効化が用意されています 表 5-10 I/F の有効化 オペランド Write Data Read Data 備考 isc_enable 0xC6 0x08, 0x00, 0x00 -- -- ダイレクトモード lsc_enable_x 0x74 0x08, 0x00, 0x00 -- -- トランスペアレントモード リード開始アドレスの指定 Read 実行前にページアドレスの指定を行います 表 5-11 アドレスの初期化 オペランド direct_address 0xB4 0x00, 0x00, 0x00 0x40, + address 3byte( 内 14bit 使用 ) Write Data Read Data 備考 -- ページアドレスを指定 23
データの Read Read はページ単位で行いますが 複数ページをまとめて Read することが出来ます リードデータの指定はオペランドによる詳細設定が必要です 表 5-12 Read & アドレスインクリメント オペランド 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 アクセス無効化 オペランド Write Data Read Data 備考 isc_disable 0x26 0x00, 0x00 -- -- バイパス 各 I/F と UFM 間のアクセス無効化後 続けて下記バイパスも必要です 表 5-14 バイパス オペランド Write Data Read Data 備考 bypass 0xFF 0xFF, 0xFF, 0xFF -- -- 24
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 アサートに相当 ------------------------------------------------------------------------------------------- 25
6.1.2 各種アクセス波形サンプル CFM/UFM との I/F の有効化 wb_clk_i wb_cyc_i wb_stb_i wb_we_i wb_adr_i[7:0] 70 N/A 71 N/A 71 N/A 71 N/A 71 N/A 70 N/A wb_dat_i[7:0] 80 N/A 74 N/A O8 N/A OO N/A OO N/A OO N/A wb_dat_o N/A wb_ack_o 図 6-2 UFM との I/F 有効化 CFM の Erase wb_clk_i wb_cyc_i wb_stb_i wb_we_i wb_adr_i[7:0] 70 N/A 71 N/A 71 N/A 71 N/A 71 N/A 70 N/A wb_dat_i[7:0] wb_dat_o wb_ack_o 80 N/A 0E N/A OC N/A OO N/A OO N/A OO N/A N/A 図 6-3 CFM の Erase UFM の Erase wb_clk_i wb_cyc_i wb_stb_i wb_we_i wb_adr_i[7:0] 70 N/A 71 N/A 71 N/A 71 N/A 71 N/A 70 N/A wb_dat_i[7:0] 80 N/A CB N/A OO N/A OO N/A OO N/A OO N/A wb_dat_o N/A wb_ack_o 図 6-4 UFM の Erase 26
Erase/ プログラム完了の確認 wb_clk_i wb_cyc_i wb_stb_i wb_we_i wb_adr_i[7:0] 70 N/A 71 N/A 71 N/A 71 N/A 71 N/A 73 N/A 70 N/A wb_dat_i[7:0] wb_dat_o 80 N/A F0 N/A OO N/A OO N/A OO N/A OO N/A wb_ack_o 図 6-5 check_busy による確認 MSB が busy フラグ ページアドレスの初期化 (CFM アクセス時 ) wb_clk_i wb_cyc_i wb_stb_i wb_we_i wb_adr_i[7:0] 70 N/A 71 N/A 71 N/A 71 N/A 71 N/A 70 N/A wb_dat_i[7:0] wb_dat_o wb_ack_o 80 N/A 46 N/A OO N/A OO N/A OO N/A 図 6-6 ページアドレスの初期化 N/A OO N/A ページアドレス指定 (UFM アクセス時 ) wb_clk_i wb_cyc_i wb_stb_i wb_we_i wb_adr_i[7:0] 70 N/A 71 N/A 71 N/A 71 N/A 71 N/A 71 N/A 71 N/A 71 N/A 71 N/A 70 N/A wb_dat_i[7:0] wb_dat_o 80 N/A B4 N/A OO N/A OO N/A OO N/A 04 N/A N/A N/A N/A OO N/A N/A wb_ack_o 図 6-7 ページアドレス指定 ページアドレス 27
ページプログラム + アドレスインクリメント (CFM) wb_clk_i wb_cyc_i wb_stb_i wb_we_i wb_adr_i[7:0] 70 N/A 71 N/A 71 N/A 71 N/A 71 N/A 71 N/A 71 N/A 71 N/A 71 N/A 70 N/A wb_dat_i[7:0] 80 N/A 7O N/A OO N/A OO N/A OO N/A N/A N/A N/A N/A OO N/A wb_dat_o N/A wb_ack_o 図 6-8 CFM のプログラム 16byte データ ページプログラム + アドレスインクリメント (UFM) wb_clk_i wb_cyc_i wb_stb_i wb_we_i wb_adr_i[7:0] 70 N/A 71 N/A 71 N/A 71 N/A 71 N/A 71 N/A 71 N/A 71 N/A 71 N/A 70 N/A wb_dat_i[7:0] 80 N/A C9 N/A OO N/A OO N/A OO N/A N/A N/A N/A N/A OO N/A wb_dat_o N/A wb_ack_o 図 6-9 UFM のプログラム 16byte データ 28
プログラム完了フラグの設定 wb_clk_i wb_cyc_i wb_stb_i wb_we_i wb_adr_i[7:0] 70 N/A 71 N/A 71 N/A 71 N/A 71 N/A 70 N/A wb_dat_i[7:0] wb_dat_o wb_ack_o 80 N/A 5E N/A OO N/A OO N/A OO N/A 図 6-10 プログラム完了フラグの設定 N/A OO N/A CFM/UFM との I/F の無効化 wb_clk_i wb_cyc_i wb_stb_i wb_we_i wb_adr_i[7:0] 70 N/A 71 N/A 71 N/A 71 N/A 71 N/A 70 N/A wb_dat_i[7:0] 80 N/A 26 N/A OO N/A OO N/A OO N/A OO N/A wb_dat_o N/A wb_ack_o 図 6-11 CFM/UFM との I/F の無効化 29
データの Read(CFM) 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 70 N/A 71 N/A 71 N/A 71 N/A 71 N/A 73 N/A 73 N/A 73 N/A 73 N/A 73 N/A 80 N/A 73 N/A 1O N/A MM N/A NN N/A N/A N/A 1 1 1 2 2 Dummy データ 16byte の Read 73 N/A 73 73 N/A 73 N/A 73 N/A 70 N/A N/A N/A OO N/A 2 2 3 3 3 1 ダミーデータ 16byte 2 指定した先頭ページのデータ 3 先頭ページ + MMNN -1 ページのデータ 図 6-12 CFM のデータ Read 30
データの Read(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 70 N/A 71 N/A 71 N/A 71 N/A 71 N/A 73 N/A 73 N/A 73 N/A 73 N/A 73 N/A 80 N/A CA N/A 1O N/A MM N/A NN N/A N/A N/A 1 1 1 2 2 Dummy データ 16byte の Read 73 N/A 73 73 N/A 73 N/A 73 N/A 70 N/A N/A N/A OO N/A 2 2 3 3 3 1 ダミーデータ 16byte 2 指定した先頭ページのデータ 3 先頭ページ + MMNN -1 ページのデータ 図 6-13 UFM からのデータ Read 31
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 の有効化 SDA START Condition 0xC6(Comand) 0x08 (Operand) Slave Address A A A A 0x00 (Operand) 0x00 (Operand) A STOP Condition SCL 図 6-14 I/F の有効化 A ACK ページアドレス指定 (UFM アクセス時 ) 0000_0000 00aa_aaaa aaaa_aaaa Erase/ プログラム完了確認 図 6-15 ページアドレス指定 SCK START Condition 0xF0(Comand) 0x00 (Operand) 0x00 (Operand) 0x00 (Operand) SDA Slave Address A A A A A Repeated START Condition Slave Address A A STOPCondition busy flag 図 6-16 check_busy による確認 32
データの Read(CFM) START Condition 0x73(Comand) 0x10 (Operand) 0xMM (Operand) 0xNN (Operand) SCK SDA Slave Address A A A MM A NN A Repeated START Condition Slave Address A Dummy 0 A Dummy 1 Dummy14 A Dummy 15 A CFM rea data0 A STOPCondition A ACK A A CFM read last data A 図 6-17 CFM からのデータ Read 33
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 の有効化 0xC6(Comand) 0x08 (Operand)0x00 (Operand)0x00 (Operand) CCLK SI SN 図 6-18 CFM/UFM との I/F の有効化 Erase/ プログラム完了確認 0xF0(Comand) 0x00 (Operand) 0x00 (Operand) 0x00 (Operand) CCLK SI N/A SN SO Hi-Z 図 6-19 check_busy による確認 Busy flag 34
6.3.3 データの Read(CFM) CCLK SI SN SO 0x73(Comand) 0x10 (Operand) 0xMM (Operand) 0xNN (Operand) MM NN N/A Hi-Z Dummy 0 N/A N/A Dummy 1 Dummy 2 Dummy14 Dummy 15 CFM read データ 0 CFM read データ 1 CFM read last データ N/A 図 6-20 CFM からのデータの Read 35
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 ); end component; 36
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-1 I2C マクロ入出力ポートの接続と記述例 37
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 以上の遅延をつけてください 図 7-4 WISHBONE バスのシミュレーション波形 ( 入力データ遅延あり ) 38
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] 注 ) XO2 デバイスはこの 4bit 部の機能は使用できません この部分が 0 以外に設定されると 書き込みが完了している回路の動作は継続しますが 以降 ispvm によるアクセスで下記エラーとなり デバイスの書き換えができなくなります "A Flash Protect key is required. Please select a different operation in the Advanced Security Programming Mode." Execution time: **:** milliseconds 39
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 です 40
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 デバッガツールを使用してデバイスにプログラミングします 41
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 を使用しない設定 42
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 によるコンフィグレーションは中断されコンフィグレーションが完了しません 43
I2C アドレスの使い分け プライマリ I2C アドレスは 設計時に IPexpress にて 上位 5bit/8bit をお客様指定します DIAOND1.4 までは下位 2bit は IPexpress ツール画面上グレーアウトしており 01 と固定値で表示されています ただし 下位 2bit は 2 種の値を持っており "00" のアドレスと "01" のアドレスで以下アクセス先を切り分けております DIAMOND2.0 からは 3 種類の組み合わせが全て IPexpress ツール画面上に表示されます デバイスのプログラミングは CFM へアクセスします 上位 5bit/8bit ユーザ指定 + 00 上位 5bit/8bit ユーザ指定 + 01 : UFM/CFM/ デバイス ID 等へのスレーブアドレス : ユーザモードにおけるプライマリ 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 ページ毎に isc_enable に対して program_done に対して : 200usec : 5usec : 200usec 44
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 側の動作には影響ございません 45
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 更新 46