machxo2 on-chip flash memory - テクスター カンパ … on-chip flash memory アクセス...
TRANSCRIPT
MachXO2 On-chip Flash memory アクセス
ユーザーガイド
Sep. 2013 Ver 1.2.7
ドキュメント番号 JUG10_001
1
MachXO2 On-Chip Flash memory
補足説明資料
- TN1204/TN1205/TN1246 補足資料 -
MachXO2 On-chip Flash memory アクセス
ユーザーガイド
Sep. 2013 Ver 1.2.7
ドキュメント番号 JUG10_001
2
目次
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
MachXO2 On-chip Flash memory アクセス
ユーザーガイド
Sep. 2013 Ver 1.2.7
ドキュメント番号 JUG10_001
3
1 このドキュメントの概要
このドキュメントでは、MachXO2 のプログラミングとコンフィグレーションについて記載された TN1204、及び内
蔵されている Flash memory へのアクセス方法について記載された TN1205/TN1246 の両ドキュメントについ
て、補足情報を説明します。基本動作やコマンド・オペランド等の詳細については、下記の
TN1204/1205/TN1246に掲載いたしておりますので、必ずご確認下さい。
TN1204 : MachXO2 プログラミングとコンフィグレーション使用ガイド
TN1205 : MachXO2ユーザフラッシュメモリとハードマクロ制御機能の使用方法
TN1246 : (日本語タイトル)
MachXO2 On-chip Flash memory アクセス
ユーザーガイド
Sep. 2013 Ver 1.2.7
ドキュメント番号 JUG10_001
4
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バス経由で行います。
図 2-2 MachXO2 ハードマクロ間の接続
CFMセクター0 (コンフィグレーション用フラッシュメモリ)
UFM(ユーザ用フラッシュメモリ)
フィーチャ行
USERCODE
セクター1
EFB
MachXO2 On-chip Flash memory アクセス
ユーザーガイド
Sep. 2013 Ver 1.2.7
ドキュメント番号 JUG10_001
5
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章以降で説明します。
MachXO2 On-chip Flash memory アクセス
ユーザーガイド
Sep. 2013 Ver 1.2.7
ドキュメント番号 JUG10_001
6
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 のツー
ルバーの アイコンをクリックすると起動します。
図 3-1 IPexpressの起動
MachXO2 On-chip Flash memory アクセス
ユーザーガイド
Sep. 2013 Ver 1.2.7
ドキュメント番号 JUG10_001
7
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 ハードマクロ選択タブ
MachXO2 On-chip Flash memory アクセス
ユーザーガイド
Sep. 2013 Ver 1.2.7
ドキュメント番号 JUG10_001
8
[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]にチェックを入れ、その下の欄で初期値を記述したファイルを指定しま
す。
MachXO2 On-chip Flash memory アクセス
ユーザーガイド
Sep. 2013 Ver 1.2.7
ドキュメント番号 JUG10_001
9
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の設定
MachXO2 On-chip Flash memory アクセス
ユーザーガイド
Sep. 2013 Ver 1.2.7
ドキュメント番号 JUG10_001
10
4 CFMへのアクセス手順 4.1 CFMのプログラム
CFMにコンフィグデータをプログラムするには、図 4-1の手順で行います。
図 4-1 CFMデータプログラム手順
各種 I/F と CFM間のアクセス有効化
CFM へのアクセスを開始する際に必ず行います。アクセスには、ロジック部分の動作を強制的に停止させ
てアクセスを行うダイレクトモードと、ロジックは動作させたままアクセスを行うトランスペアレントモードの 2 つ
があり、それぞれのモード用に有効化コマンドが用意されています。
表 4-1 I/Fの有効化コマンド
コマンド名 コマンド
(1byte)
オペランド
(3byte)
Write Data
Read Data 備考
isc_enable 0xC6 0x08, 0x00, 0x00 -- -- ダイレクトモード
lsc_enable_x 0x74 0x08, 0x00, 0x00 -- -- トランスペアレントモード
MachXO2 On-chip Flash memory アクセス
ユーザーガイド
Sep. 2013 Ver 1.2.7
ドキュメント番号 JUG10_001
11
データの消去
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 を指定する必要があります。
MachXO2 On-chip Flash memory アクセス
ユーザーガイド
Sep. 2013 Ver 1.2.7
ドキュメント番号 JUG10_001
12
消去完了の確認
消去コマンド入力からデータ消去の完了までは時間がかかります。プログラムは消去完了後にしか行えな
いので、プログラムコマンド入力前に消去の完了を確認する必要があります。データの消去を確認するため
には、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ページプログラムします。全てのデータをプログラムするには、必要なページ数分コ
マンドを繰り返す必要があります。
MachXO2 On-chip Flash memory アクセス
ユーザーガイド
Sep. 2013 Ver 1.2.7
ドキュメント番号 JUG10_001
13
プログラム完了の確認
データの消去と同じく、プログラムもコマンド入力から完了まで時間がかかります。このためデータの消去の
場合と同様に、次のページプログラム実行前に[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 -- --
プログラム完了後に引き続きデータの read等を行う場合は、アクセス無効化とバイパスはスキップ可能。
MachXO2 On-chip Flash memory アクセス
ユーザーガイド
Sep. 2013 Ver 1.2.7
ドキュメント番号 JUG10_001
14
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 備考
init_address 0x46 0x00, 0x00, 0x00 -- -- ---
MachXO2 On-chip Flash memory アクセス
ユーザーガイド
Sep. 2013 Ver 1.2.7
ドキュメント番号 JUG10_001
15
データの 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 備考
bypass 0xFF 0xFF, 0xFF, 0xFF -- --
MachXO2 On-chip Flash memory アクセス
ユーザーガイド
Sep. 2013 Ver 1.2.7
ドキュメント番号 JUG10_001
16
4.3 コンフィグデータのダウンロード
CFM に書き込んだデータの SRAM 領域へのダウンロード(コンフィグレーション)は、表 4-15(後述)の refresh
コマンドを使用し図 4-3の手順で行います。図 4-3の手順の代わりに、XO2デバイスの電源をOFF-ONする
ことでも、CFMに書き込んだデータを SRAM領域へダウンロードすることが可能です。
図 4-3 データダウンロード手順
MachXO2 On-chip Flash memory アクセス
ユーザーガイド
Sep. 2013 Ver 1.2.7
ドキュメント番号 JUG10_001
17
各種 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)
Write Data
Read Data 備考
bypass 0xFF 0xFF, 0xFF, 0xFF -- --
MachXO2 On-chip Flash memory アクセス
ユーザーガイド
Sep. 2013 Ver 1.2.7
ドキュメント番号 JUG10_001
18
5 UFM へのアクセス手順 5.1 UFMのプログラム
UFMにデータをプログラムするには、図 5-1の手順で行います。
図 5-1 UFMデータプログラムの手順
各種 I/F と UFM間のアクセス有効化
UFM へのアクセスを開始する際に必ず行います。アクセスには、ロジック部分の動作を強制的に停止させ
てアクセスを行うダイレクトモードと、ロジックは動作させたままアクセスを行うトランスペアレントモードの2つ
があり、それぞれのモード用に有効化コマンドが用意されています。
表 5-1 I/Fの有効化コマンド
コマンド名 コマンド
(1byte)
オペランド
(3byte)
Write Data
Read Data 備考
isc_enable 0xC6 0x08, 0x00, 0x00 -- -- ダイレクトモード
lsc_enable_x 0x74 0x08, 0x00, 0x00 -- -- トランスペアレントモード
MachXO2 On-chip Flash memory アクセス
ユーザーガイド
Sep. 2013 Ver 1.2.7
ドキュメント番号 JUG10_001
19
データの消去
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 セ ク タのみ消去
注) 通常 SRAMを選択して意図的に消去する必要はございません。SRAMとその他の領域は、同時にイレース指定
して消去できません。また SRAM をイレース対象とする為には、表 5-1 の isc_enable コマンドでダイレクトモード(0xC6)
を使用し、付随するオペランドには 0x08, 0x00, 0x00 ではなく、0x00, 0x00, 0x00 を指定する必要があります。
MachXO2 On-chip Flash memory アクセス
ユーザーガイド
Sep. 2013 Ver 1.2.7
ドキュメント番号 JUG10_001
20
消去完了の確認
消去コマンド入力からデータ消去の完了までは時間がかかります。プログラムは消去完了後にしか行えな
いので、プログラムコマンド入力前に消去の完了を確認する必要があります。データの消去を確認するため
には、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 -- ページアドレスは自動的に
インクリメントされる
1回のコマンド実行で1ページプログラムします。全てのデータをプログラムするには、必要なページ数分コ
マンドを繰り返す必要があります。
MachXO2 On-chip Flash memory アクセス
ユーザーガイド
Sep. 2013 Ver 1.2.7
ドキュメント番号 JUG10_001
21
プログラム完了の確認
データの消去と同じく、プログラムもコマンド入力から完了まで時間がかかります。このためデータの消去の
場合と同様に、次のページプログラム実行前に[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 -- --
プログラム完了後に引き続きデータの read 等を行う場合は、アクセス無効化とバイパスはスキップ可能。
MachXO2 On-chip Flash memory アクセス
ユーザーガイド
Sep. 2013 Ver 1.2.7
ドキュメント番号 JUG10_001
22
5.2 UFMデータの Read
CFMのデータを Read するには、図 5-2の手順で行います。
図 5-2 UFMデータ Read手順
MachXO2 On-chip Flash memory アクセス
ユーザーガイド
Sep. 2013 Ver 1.2.7
ドキュメント番号 JUG10_001
23
各種 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 使用)
-- ページアドレスを指定
MachXO2 On-chip Flash memory アクセス
ユーザーガイド
Sep. 2013 Ver 1.2.7
ドキュメント番号 JUG10_001
24
データの 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 備考
bypass 0xFF 0xFF, 0xFF, 0xFF -- --
MachXO2 On-chip Flash memory アクセス
ユーザーガイド
Sep. 2013 Ver 1.2.7
ドキュメント番号 JUG10_001
25
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アサートに相当。
-------------------------------------------------------------------------------------------
MachXO2 On-chip Flash memory アクセス
ユーザーガイド
Sep. 2013 Ver 1.2.7
ドキュメント番号 JUG10_001
26
6.1.2 各種アクセス波形サンプル
CFM/UFM との I/F の有効化
図 6-2 UFM との I/F有効化
CFM の Erase
図 6-3 CFMの Erase
UFMの Erase
図 6-4 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 71 71N/A N/A N/A
OO N/A
71 70 N/A
OO80 O8 OON/A N/A N/A N/A
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 7170 71 71N/A
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
wb_ack_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
MachXO2 On-chip Flash memory アクセス
ユーザーガイド
Sep. 2013 Ver 1.2.7
ドキュメント番号 JUG10_001
27
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 OOOO N/A
N/A
N/A
71 70 N/AN/A 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/AN/A 71 N/A 71 N/A70 N/A
MachXO2 On-chip Flash memory アクセス
ユーザーガイド
Sep. 2013 Ver 1.2.7
ドキュメント番号 JUG10_001
28
ページプログラム+ アドレスインクリメント(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 OO N/AN/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/AN/A 71
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
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/A70 N/A 71 N/A 71 N/A 71 N/A 71 N/A 71 N/A
MachXO2 On-chip Flash memory アクセス
ユーザーガイド
Sep. 2013 Ver 1.2.7
ドキュメント番号 JUG10_001
29
プログラム完了フラグの設定
図 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/A26 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
MachXO2 On-chip Flash memory アクセス
ユーザーガイド
Sep. 2013 Ver 1.2.7
ドキュメント番号 JUG10_001
30
データの Read(CFM)
図 6-12 CFMのデータ Read
wb_c
lk_i
wb_c
yc_i
wb_stb
_i
wb_w
e_i
wb_ad
r_i[7:0
]
wb_d
at_i[7:0
]
wb_d
at_o
wb_ac
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
Du
mm
yデータ
16
byte
のR
ead
※1 ダミーデータ
16byte
※2 指定した先頭ページのデータ
※3 先頭ページ
+
MM
NN
-
1 ペ
ージのデータ
MachXO2 On-chip Flash memory アクセス
ユーザーガイド
Sep. 2013 Ver 1.2.7
ドキュメント番号 JUG10_001
31
データの Read(UFM)
図 6-13 UFMからのデータ Read
wb_c
lk_i
wb_c
yc_i
wb_stb
_i
wb_w
e_i
wb_ad
r_i[7:0
]
wb_d
at_i[7:0
]
wb_d
at_o
wb_ac
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
N/A
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
Du
mm
yデータ
16
byte
のR
ead
※1 ダミーデータ
16byte
※2 指定した先頭ページのデータ
※3 先頭ページ
+
MM
NN
-
1 ペ
ージのデータ
MachXO2 On-chip Flash memory アクセス
ユーザーガイド
Sep. 2013 Ver 1.2.7
ドキュメント番号 JUG10_001
32
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/プログラム完了確認
図 6-16 check_busy コマンドによる確認
SDA
SCL
ACK
A
A
Slave Address A A A A
0xC6(Comand) 0x08 (Operand)START Condition
STOPCondition
0x00 (Operand) 0x00 (Operand)
SCK
SDA A
Slave Address A A※
A A ASlave Address A
0xF0(Comand) 0x00 (Operand) 0x00 (Operand) 0x00 (Operand)START Condition
STOPConditionRepeated START Condition
※busy flag
0000_0000 00aa_aaaa aaaa_aaaa
MachXO2 On-chip Flash memory アクセス
ユーザーガイド
Sep. 2013 Ver 1.2.7
ドキュメント番号 JUG10_001
33
データの Read(CFM)
図 6-17 CFMからのデータ Read
SC
K
SD
A
AC
K
Slave
Addre
ssA
A
AA
CFM
read
last data
A
A
Dum
my 0
AD
um
my 1
Dum
my1
4A
Dum
my 1
5A
CFM
rea d
ata0A
AA
MM
AN
NSlave
Addre
ssA
0x7
3(C
om
and
)0
x10
(Op
eran
d)
0xM
M (O
pe
rand
)0
xNN
(Op
eran
d)
STAR
T C
on
ditio
n
STOP
Co
nd
ition
Re
pe
ated
STAR
T C
on
ditio
n
MachXO2 On-chip Flash memory アクセス
ユーザーガイド
Sep. 2013 Ver 1.2.7
ドキュメント番号 JUG10_001
34
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)
MachXO2 On-chip Flash memory アクセス
ユーザーガイド
Sep. 2013 Ver 1.2.7
ドキュメント番号 JUG10_001
35
6.3.3 データの Read(CFM)
図 6-20 CFMからのデータの Read
CC
LK
SI
SN
SO
N/A
N/A
N/A
Dum
my 0
Hi-
Z
CFM
read
lastデータ
CFM
readデータ
0C
FM
readデータ
1
NN
Dum
my 1
Dum
my 2
Dum
my1
4D
um
my 1
5
MM
N/A
0x7
3(C
om
and
)0
x10
(Op
eran
d)
0xM
M (O
pe
rand
)0
xNN
(Op
eran
d)
MachXO2 On-chip Flash memory アクセス
ユーザーガイド
Sep. 2013 Ver 1.2.7
ドキュメント番号 JUG10_001
36
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;
・
・
MachXO2 On-chip Flash memory アクセス
ユーザーガイド
Sep. 2013 Ver 1.2.7
ドキュメント番号 JUG10_001
37
・
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 マクロ入出力ポートの接続と記述例
MachXO2 On-chip Flash memory アクセス
ユーザーガイド
Sep. 2013 Ver 1.2.7
ドキュメント番号 JUG10_001
38
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バスのシミュレーション波形(入力データ遅延あり)
MachXO2 On-chip Flash memory アクセス
ユーザーガイド
Sep. 2013 Ver 1.2.7
ドキュメント番号 JUG10_001
39
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
MachXO2 On-chip Flash memory アクセス
ユーザーガイド
Sep. 2013 Ver 1.2.7
ドキュメント番号 JUG10_001
40
◆ 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です
MachXO2 On-chip Flash memory アクセス
ユーザーガイド
Sep. 2013 Ver 1.2.7
ドキュメント番号 JUG10_001
41
◆ 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デバッガツールを使用してデバイスにプログラミングします。
MachXO2 On-chip Flash memory アクセス
ユーザーガイド
Sep. 2013 Ver 1.2.7
ドキュメント番号 JUG10_001
42
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 を使用しない設定
MachXO2 On-chip Flash memory アクセス
ユーザーガイド
Sep. 2013 Ver 1.2.7
ドキュメント番号 JUG10_001
43
◆ 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によるコンフィグレーションは中断されコンフィグレーションが完了しません。
MachXO2 On-chip Flash memory アクセス
ユーザーガイド
Sep. 2013 Ver 1.2.7
ドキュメント番号 JUG10_001
44
◆ 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
MachXO2 On-chip Flash memory アクセス
ユーザーガイド
Sep. 2013 Ver 1.2.7
ドキュメント番号 JUG10_001
45
◆ 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 側の動作には影響ご
ざいません。
MachXO2 On-chip Flash memory アクセス
ユーザーガイド
Sep. 2013 Ver 1.2.7
ドキュメント番号 JUG10_001
46
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更新