You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
MachXO2 On-chip Flash memory アクセス<br />
ユーザーガイド<br />
February. 2012 Ver 1.2.2<br />
MachXO2<br />
On-Chip Flash memory<br />
補足説明資料<br />
- TN1204/TN1205 補足資料 -<br />
1<br />
ドキュメント番号 JUG10_001
MachXO2 On-chip Flash memory アクセス<br />
ユーザーガイド<br />
February. 2012 Ver 1.2.2<br />
目次<br />
1 このドキュメントの概要 ····················································· 3<br />
2 On-chip Flash memory アクセスの概要 ································· 4<br />
2.1 On-Chip Flash memory の構成 .............................................................. 4<br />
2.2 On-chip Flash memory へのアクセス経路 ................................................ 4<br />
3 ツール上の設定の注意事項 ············································· 6<br />
3.1 IPexpress での設定 .............................................................................. 6<br />
3.2 Spreadsheet View での設定 ................................................................... 9<br />
4 CFM へのアクセス手順 ·················································· 10<br />
4.1 CFM のプログラム .............................................................................. 10<br />
4.2 CFM データの Read ............................................................................ 14<br />
4.3 コンフィグデータのダウンロード ............................................................ 16<br />
5 UFM へのアクセス手順 ·················································· 18<br />
5.1 UFM のプログラム .............................................................................. 18<br />
5.2 UFM データの Read ............................................................................ 22<br />
6 各種 I/F からのアクセス波形 ············································ 25<br />
6.1 Wishbone バスからのアクセス波形 ........................................................ 25<br />
6.1.1 Wishbone バスから CFM/UFM へのアクセスルール .................................... 25<br />
6.1.2 各種アクセス波形サンプル ......................................................................... 26<br />
6.2 I2C からのアクセス波形 ...................................................................... 32<br />
6.2.1 I2C から CFM/UFM へのアクセスルール .................................................... 32<br />
6.2.2 I2C からのアクセス波形サンプル ................................................................ 32<br />
6.3 SPI からのアクセス波形 ....................................................................... 34<br />
6.3.1 SPI から CFM/UFM へのアクセスルール .................................................... 34<br />
6.3.2 SPI からのアクセス波形サンプル................................................................. 34<br />
6.3.3 データの Read(CFM) ................................................................................. 35<br />
7 EFB のシミュレーション ··················································· 36<br />
7.1 テストベンチ作成時の注意点 ............................................................... 36<br />
7.2 I2C マクロの入出力信号...................................................................... 37<br />
7.3 WISHBONE バスへの入力データ ......................................................... 38<br />
8 Feature Row について ···················································· 39<br />
9 その他注意事項 ··························································· 42<br />
10 改訂履歴 ····························································· 44<br />
2<br />
ドキュメント番号 JUG10_001
MachXO2 On-chip Flash memory アクセス<br />
ユーザーガイド<br />
February. 2012 Ver 1.2.2<br />
1 このドキュメントの概要<br />
このドキュメントでは、MachXO2 のプログラミングとコンフィグレーションについて記載された TN1204、及び内<br />
蔵されている Flash memory へのアクセス方法について記載された TN1205 の両ドキュメントについて、補足情<br />
報を説明します。基本動作やコマンド・オペランド等の詳細については、TN1204/1205 に掲載いたしておりま<br />
すので、必ずご確認下さい。<br />
3<br />
ドキュメント番号 JUG10_001
MachXO2 On-chip Flash memory アクセス<br />
ユーザーガイド<br />
February. 2012 Ver 1.2.2<br />
2 On-chip Flash memory アクセスの概要<br />
2.1 On-Chip Flash memory の構成<br />
On-chip Flash memoryは、大きく3つの領域に分かれています。<br />
1 つ目はコンフィグレーション用のデータを格納する領域(Configuration Flash Memory 以下 CFM)、2 つ目は<br />
ユーザが任意のデータを Program/Read するために使用できる領域(User Flash Memory 以下 UFM)、3 つ目<br />
は特定用途(I2C アドレスや Trace ID、セキュリティ等)のために使用できる領域です(Feature Row 9 章)。各デ<br />
バイスの CFM/UFM ページサイズについては、TN1204/1205 を参照下さい。<br />
CFM<br />
セクター0 (コンフィグレーション用フラッシュメモリ)<br />
セクター1<br />
UFM<br />
(ユーザ用フラッシュメモリ)<br />
図 2-1 On-chip Flash メモリの構成<br />
2.2 On-chip Flash memory へのアクセス経路<br />
MachXO2 には、Embedded Functional Block(以下 EFB)と呼ばれるハードマクロにて、On-chip Flash memory<br />
を含む複数のハードマクロが搭載されており、Wishbone バスで接続されています(図 2-2)。 したがって<br />
On-chip Flash memory へのアクセスも Wishbone バス経由で行います。<br />
図 2-2 MachXO2 ハードマクロ間の接続<br />
4<br />
フィーチャ行<br />
USERCODE<br />
EFB<br />
ドキュメント番号 JUG10_001
MachXO2 On-chip Flash memory アクセス<br />
ユーザーガイド<br />
February. 2012 Ver 1.2.2<br />
Wishbone バスには複数の I/F(ペリフェラル)が接続されていますが、On-Chip Flash memory にアクセスできる<br />
のは以下の 3 つのみです。Secondary I2C からは、On-Chip Flash memory にアクセスできません。<br />
・Primary I2C<br />
・Slave-SPI<br />
・Wishbone I/F(ユーザーロジックと Wishbone バス間の I/F)<br />
各 I/F からのアクセス方法については、4 章以降で説明します。<br />
5<br />
ドキュメント番号 JUG10_001
MachXO2 On-chip Flash memory アクセス<br />
ユーザーガイド<br />
February. 2012 Ver 1.2.2<br />
3 ツール上の設定の注意事項<br />
On-chip Flash memory にアクセスするには、ツール上での設定が必要になります。<br />
ツール上の設定は2種類あり、1つは「Spreadsheet View による SPI/I2C ポートのアクティブ化」、もう1つは<br />
「IPexpress によるデザインへの EFB マクロのインスタンス」です。必要な設定は、アクセス先(Flash memory 内の<br />
使用する領域)やアクセス元の種類によって決まります(表 3-1)。なお、EFB を明示的にインスタンスした場合、<br />
インスタンスにより有効化されたポート設定はグレーアウトし、自動的に Enable と表示され変更できません。<br />
アクセス先 アクセス元<br />
CFM<br />
UFM<br />
表 3-1 On-chip Flash memory アクセスとツールの設定<br />
モード設定<br />
(Spreadsheet View)<br />
EFB インスタンス<br />
(IPexpress)<br />
6<br />
コメント<br />
SPI / I2C 必要 不要 コンフィグイメージの更新<br />
WB 不要 必要 可能ですが推奨しません<br />
SPI / I2C 不要 必要<br />
WB 不要 必要<br />
3.1 IPexpress での設定<br />
UFM 領域にアクセスする場合、または Wishbone I/F から On-chip Flash memory にアクセスする場合は、デ<br />
ザインに EFB モジュールを組み込む必要があります。<br />
EFB はモジュール生成プログラム[IPexpress]を使用して生成します。IPexpress は、Lattice Diamond のツー<br />
ルバーの アイコンをクリックすると起動します。<br />
図 3-1 IPexpress の起動<br />
ドキュメント番号 JUG10_001
MachXO2 On-chip Flash memory アクセス<br />
ユーザーガイド<br />
February. 2012 Ver 1.2.2<br />
IPexpress の左側のパネルから[EFB]を選択すると、右側のパネルへの入力がアクティブになります。[File<br />
Name]欄にファイル(=モジュール)名を入力し、[Module Output]欄で出力する HDL ソースのタイプ(VHDL or<br />
Verilog HDL)を選択します。この2つを入力するとパネル右下の[Customize]ボタンがアクティブになるのでク<br />
リックすると、EFB の設定ウインドウが起動します。<br />
起動した直後は[EFB Enables]タブだけがアクティブになっています。まずこのタブで使用する I/F の選択を<br />
行います。I/F 名とチェックボックスが表示されているので、使用する I/F のチェックボックスにチェックを入れま<br />
す(図 3-2)。<br />
UFM にアクセスする場合は、必ず[User Flash Memory]にチェックを入れてください。<br />
-----------------------------------------------------------------------------------------<br />
・1つ以上の I/F にチェックが入っていると、モジュールにその I/F と Wishbone I/F が追加されます。<br />
・I2C から On-chip Flash memory にアクセスする場合、かならず[Primary]を選択してください。<br />
[Secondary]からは On-chip Flash memory にはアクセスできません。<br />
-----------------------------------------------------------------------------------------<br />
図 3-2 ハードマクロ選択タブ<br />
7<br />
ドキュメント番号 JUG10_001
MachXO2 On-chip Flash memory アクセス<br />
ユーザーガイド<br />
February. 2012 Ver 1.2.2<br />
[User Flash Memory]にチェックが入っていると、[UFM]タブがアクティブになります。このタブでは使用する<br />
ページ数と UFM の初期値を設定できます。<br />
-----------------------------------------------------------------------------------------<br />
・デバイスが変わると使用できるページ数や最小ページアドレスも変わります。必ず Lattice Diamond で使用<br />
するデバイスを選択した状態で設定を行ってください。また、使用するデバイスを変える場合は、必ず EFB<br />
を再生成してください。<br />
-----------------------------------------------------------------------------------------<br />
図 3-3 UFM の設定<br />
ページ数は[Enter Number of Pages]欄に入力します。デフォルトは1ページです。使用するページ数を入力すると、<br />
[Initialization Data Starts at Page]欄にアクセス可能な先頭ページ番号が表示されます。UFM へはページ番号を指<br />
定してアクセスするので、この先頭ページ番号は記録しておいてください。<br />
ページ数の次は UFM の初期値を設定します。デフォルトでは[User Flash memory is Initialized With all 0s]<br />
にチェックが入っており、初期値は全て 0 になります。0 以外の初期値を設定したい場合は、Upload User<br />
Flash Memory Initialization Data File]にチェックを入れ、その下の欄で初期値を記述したファイルを指定しま<br />
す。<br />
8<br />
ドキュメント番号 JUG10_001
MachXO2 On-chip Flash memory アクセス<br />
ユーザーガイド<br />
February. 2012 Ver 1.2.2<br />
3.2 Spreadsheet View での設定<br />
使用するのが CFM のみで、かつアクセス元が I2C か SPI の場合(Wishbone I/F を使用しない場合)は、デザ<br />
インに EFB を組み込むのではなくツール上で I2C または SPI をイネーブルにする設定を行います。<br />
設定は Spreadsheet View で行います。Spreadsheet View は Lattice Diamond のツールバーから アイコ<br />
ンをクリックすると起動します。Spreadsheet View は複数のタブから構成されています。ポートのイネーブル設<br />
定は[Global Preference]タブにあります。 [SLAVE_SPI_PORT]が SPI ポートのイネーブル設定、[I2C_PORT]が<br />
I2C ポートのイネーブル設定です。CFM へのアクセスに使用するポートを[ENABLE]に設定してください(図<br />
3-4)。<br />
図 3-4 Spreadsheet View の設定<br />
9<br />
ドキュメント番号 JUG10_001
MachXO2 On-chip Flash memory アクセス<br />
ユーザーガイド<br />
February. 2012 Ver 1.2.2<br />
4 CFM へのアクセス手順<br />
4.1 CFM のプログラム<br />
CFM にコンフィグデータをプログラムするには、図 4-1 の手順で行います。<br />
各種 I/F と CFM 間のアクセス有効化<br />
図 4-1 CFM データプログラム手順<br />
CFM へのアクセスを開始する際に必ず行います。アクセスには、ロジック部分の動作を強制的に停止させ<br />
てアクセスを行うダイレクトモードと、ロジックは動作させたままアクセスを行うトランスペアレントモードの 2 つ<br />
があり、それぞれのモード用に有効化コマンドが用意されています。<br />
コマンド名 コマンド<br />
(1byte)<br />
表 4-1 I/F の有効化コマンド<br />
オペランド<br />
(3byte)<br />
Write Data Read Data 備考<br />
isc_enable 0xC6 0x08, 0x00, 0x00 -- -- ダイレクトモード<br />
lsc_enable_x 0x74 0x08, 0x00, 0x00 -- -- トランスペアレントモード<br />
10<br />
ドキュメント番号 JUG10_001
MachXO2 On-chip Flash memory アクセス<br />
ユーザーガイド<br />
February. 2012 Ver 1.2.2<br />
データの消去<br />
On-Chip flash memory のデータを消去します。Flash memory はその構造上、「データの上書き」が出来な<br />
いためプログラム前には必ずデータの消去を行う必要があります。<br />
コマンド名 コマンド<br />
(1byte)<br />
表 4-2 Erase Flash コマンド<br />
オペランド<br />
(3byte)<br />
Write Data Read Data 備考<br />
erase_flash 0x0E 下記参照 -- -- 消去対象をオペランドで選択<br />
※ オペランド : 0000 ucfs 0000 00000 0000 0000 (バイナリ表記 3byte)<br />
u : UFM セクタを消去対象 (0 : 消去しない、 1 : 消去する)<br />
c : CFM セクタを消去対象 (0 : 消去しない、 1 : 消去する)<br />
f : Feature セクタを消去対象 (0 : 消去しない、 1 : 消去する)<br />
s : SRAM セクタを消去対象 (0 : 消去しない、 1 : 消去する) 注)<br />
消去対象はオペランド 1byte 目の下位 4bit で指定します。下記に例を示します。デバイスをすべて消去する場<br />
合、下記例 1 を使用してください。<br />
例 1. command 0x0E + operand 0x0E, 0x00, 0x00 UFM/CFM/Feature Row すべてを消去<br />
例 2. command 0x0E + operand 0x0C, 0x00, 0x00 UFM と CFG の両 セ ク タ消去<br />
例 3. command 0x0E + operand 0x04, 0x00, 0x00 CFG セ ク タのみ消去<br />
例 4. command 0x0E + operand 0x08, 0x00, 0x00 UFM セ ク タのみ消去<br />
例 5. command 0x0E + operand 0x01, 0x00, 0x00 SRAM セ ク タのみ消去<br />
注) 通常 SRAM を選択して意図的に消去する必要はございません。SRAM とその他の領域は、同時にイレース指定<br />
して消去できません。また SRAM をイレース対象とする為には、表 4-1 の isc_enable コマンドでダイレクトモード(0xC6)<br />
を使用し、付随するオペランドには 0x08, 0x00, 0x00 ではなく、0x00, 0x00, 0x00 を指定する必要があります。<br />
11<br />
ドキュメント番号 JUG10_001
MachXO2 On-chip Flash memory アクセス<br />
ユーザーガイド<br />
February. 2012 Ver 1.2.2<br />
消去完了の確認<br />
消去コマンド入力からデータ消去の完了までは時間がかかります。プログラムは消去完了後にしか行えな<br />
いので、プログラムコマンド入力前に消去の完了を確認する必要があります。データの消去を確認するため<br />
には、On-chip Flash memory 内の[busy フラグ]を read して値をチェックします。[busy フラグ]=0 が消去完了<br />
を表し、[busy フラグ]=1 は、まだ消去中であることを表します。<br />
[busy フラグ]を read するコマンドは2つあります。1つは[busy フラグ]のみを read する[check_busy]コマンド、<br />
もう1つは[busy フラグ]と一緒に内部の各種ステータスのフラグを read する[read_status]コマンドです。<br />
コマンド名 コマンド<br />
(1byte)<br />
表 4-3 busy フラグ確認コマンド<br />
オペランド<br />
(3byte)<br />
Write Data Read Data 備考<br />
check_busy 0xF0 0x00, 0x00, 0x00 -- 8bit MSB が busy フラグ<br />
read_status 0x3C 0x00, 0x00, 0x00 -- 32bit 上位データから出力される。<br />
Read data[31:0]のビット[12]<br />
が busy フラグ。<br />
なお、データの消去は最大でも5秒で完了するため、消去コマンド入力から5秒後以降であれば、確認コマ<br />
ンドをスキップして次のコマンドを実行しても構いません。<br />
アドレスの初期化<br />
プログラム前にページアドレスの初期化を行います。<br />
コマンド名 コマンド<br />
(1byte)<br />
表 4-4 アドレスの初期化コマンド<br />
オペランド<br />
(3byte)<br />
Write Data Read Data 備考<br />
init_address 0x46 0x00, 0x00, 0x00 -- -- ---<br />
データのプログラム<br />
1 ページ(16byte)分のデータのプログラムを行います。ページアドレスはプログラム実行時に自動的にインク<br />
リメントされます。<br />
コマンド名 コマンド<br />
(1byte)<br />
表 4-5 ページプログラム & アドレスインクリメントコマンド<br />
オペランド<br />
(3byte)<br />
12<br />
Write Data<br />
Read Data 備考<br />
prog_incr_nv 0x70 0x00, 0x00, 0x00 16byte -- ページアドレスは自動的に<br />
インクリメントされる<br />
1回のコマンド実行で1ページプログラムします。全てのデータをプログラムするには、必要なページ数分コ<br />
マンドを繰り返す必要があります。<br />
ドキュメント番号 JUG10_001
MachXO2 On-chip Flash memory アクセス<br />
ユーザーガイド<br />
February. 2012 Ver 1.2.2<br />
プログラム完了の確認<br />
データの消去と同じく、プログラムもコマンド入力から完了まで時間がかかります。このためデータの消去の<br />
場合と同様に、次のページプログラム実行前に[busy フラグ]をチェックして処理状況を確認する必要があり<br />
ます。使用するコマンドも消去の確認と同じです(表 4-3)。<br />
プログラム完了フラグの設定<br />
全てのデータのプログラムが完了したら、デバイスにそれを認識させるためのフラグを設定します。<br />
コマンド名 コマンド<br />
(1byte)<br />
表 4-6 コンフィグデータプログラム完フラグ設定コマンド<br />
オペランド<br />
(3byte)<br />
13<br />
Write Data<br />
prog_done 0x5E 0x00, 0x00, 0x00 -- --<br />
各 I/F と CFM 間のアクセス無効化<br />
Read Data 備考<br />
プログラムが完了したら、各 I/F からの CFM へのアクセスを無効化します。有効化の場合と異なりコマンドは<br />
1つ(モードに依存しない)です。<br />
バイパス<br />
コマンド名 コマンド<br />
(1byte)<br />
表 4-7 アクセス無効化コマンド<br />
オペランド<br />
(3byte)<br />
Write Data Read Data 備考<br />
isc_disable 0x26 0x00, 0x00, 0x00 -- --<br />
各 I/F と CFM 間のアクセス無効化後、続けて下記バイパスコマンドも必要です。<br />
コマンド名 コマンド<br />
(1byte)<br />
表 4-8 バイパスコマンド<br />
オペランド<br />
(3byte)<br />
Write Data<br />
bypass 0xFF 0xFF, 0xFF, 0xFF -- --<br />
Read Data 備考<br />
プログラム完了後に引き続きデータの read 等を行う場合は、アクセス無効化とバイパスはスキップ可能。<br />
ドキュメント番号 JUG10_001
MachXO2 On-chip Flash memory アクセス<br />
ユーザーガイド<br />
February. 2012 Ver 1.2.2<br />
4.2 CFM データの Read<br />
CFM のデータを Read するには、図 4-2 の手順で行います。<br />
各種 I/F と CFM 間のアクセス有効化<br />
図 4-2 CFM データ Read 手順<br />
CFM へのアクセスを開始する際に必ず行います。アクセスには、ロジック部分の動作を強制的に停止させ<br />
てアクセスを行うダイレクトモードと、ロジックは動作させたままアクセスを行うトランスペアレントモードの2つ<br />
があり、それぞれのモード用に有効化コマンドが用意されています。<br />
コマンド名 コマンド<br />
(1byte)<br />
表 4-9 I/F の有効化コマンド<br />
オペランド<br />
(3byte)<br />
14<br />
Write Data<br />
Read Data 備考<br />
isc_enable 0xC6 0x08, 0x00, 0x00 -- -- ダイレクトモード<br />
lsc_enable_x 0x74 0x08, 0x00, 0x00 -- -- トランスペアレントモード<br />
アドレスの初期化<br />
Read コマンド実行前にページアドレスの初期化を行います。<br />
コマンド名 コマンド<br />
(1byte)<br />
表 4-10 アドレスの初期化コマンド<br />
オペランド<br />
(3byte)<br />
Write Data<br />
Read Data 備考<br />
init_address 0x46 0x00, 0x00, 0x00 -- -- ---<br />
ドキュメント番号 JUG10_001
MachXO2 On-chip Flash memory アクセス<br />
ユーザーガイド<br />
February. 2012 Ver 1.2.2<br />
データの Read<br />
Read はページ単位で行いますが、複数ページをまとめて Read することが出来ます。リードデータの指定は<br />
オペランドによる詳細設定が必要です。<br />
コマンド名 コマンド<br />
(1byte)<br />
表 4-11 Read & アドレスインクリメントコマンド<br />
オペランド<br />
(3byte)<br />
read_incr_nv 0x73 下記詳細<br />
15<br />
Write Data<br />
※ オペランド : 000i dddd 00pp pppp pppp pppp (バイナリ表記 3byte)<br />
Read Data 備考<br />
--- 下記詳細 ダミーデータ設定とリード<br />
ページ数の関係に注意<br />
i : 4 バイトのダミーデータ挿入有り/バイト数指定<br />
(0 : 4 バイトダミー挿入有、 1 : ダミーバイト数の指定に dddd フィールドを使用)<br />
dddd : 上記 i=1 の時ダミーバイト数を指定<br />
(0000 : 1 ページリード時ダミーバイト無/1 ページ以上のリード時ダミー16 バイト有<br />
0001 : 1 ダミーバイト有り、0002 : 2 ダミーバイト有り、、、1111 : 15 ダミーバイト有)<br />
pp…pp : リードするページ数を指定。リードデータにダミーデータを含む設定の場合、ダミー<br />
ページを含んだページ数設定(リードしたいページ数+1)が必要<br />
初期の R1 レビジョンのデバイスは、i=1 且つ dddd=0000 の 1 モードのみサポートします。<br />
各 I/F と CFM 間のアクセス無効化<br />
データの Read が完了したら、各 I/F からの CFM へのアクセスを無効化します。有効化の場合と異なりコマ<br />
ンドは1つ(モードに依存しない)です。<br />
バイパス<br />
コマンド名 コマンド<br />
(1byte)<br />
表 4-12 アクセス無効化コマンド<br />
オペランド<br />
(3byte)<br />
Write Data Read Data 備考<br />
isc_disable 0x26 0x00, 0x00, 0x00 -- --<br />
各 I/F と CFM 間のアクセス無効化後、続けて下記バイパスコマンドも必要です。<br />
コマンド名 コマンド<br />
(1byte)<br />
表 4-13 バイパスコマンド<br />
オペランド Write Data<br />
(3byte)<br />
bypass 0xFF 0xFF, 0xFF, 0xFF -- --<br />
Read Data 備考<br />
ドキュメント番号 JUG10_001
MachXO2 On-chip Flash memory アクセス<br />
ユーザーガイド<br />
February. 2012 Ver 1.2.2<br />
4.3 コンフィグデータのダウンロード<br />
CFM に書き込んだデータの SRAM 領域へのダウンロード(コンフィグレーション)は、表 4-15(後述)の refresh<br />
コマンドを使用し図 4-3 の手順で行います。図 4-3 の手順の代わりに、XO2 デバイスの電源を OFF-ON する<br />
ことでも、CFM に書き込んだデータを SRAM 領域へダウンロードすることが可能です。<br />
図 4-3 データダウンロード手順<br />
16<br />
ドキュメント番号 JUG10_001
MachXO2 On-chip Flash memory アクセス<br />
ユーザーガイド<br />
February. 2012 Ver 1.2.2<br />
各種 I/F と CFM 間のアクセス有効化<br />
CFM へのアクセスを開始する際に必ず行います。アクセスには、ロジック部分の動作を強制的に停止させ<br />
てアクセスを行うダイレクトモードと、ロジックは動作させたままアクセスを行うトランスペアレントモードの 2 つ<br />
があり、それぞれのモード用に有効化コマンドが用意されています。<br />
コマンド名 コマンド<br />
(1byte)<br />
表 4-14 I/F の有効化コマンド<br />
オペランド<br />
(3byte)<br />
Write Data Read Data 備考<br />
isc_enable 0xC6 0x08, 0x00, 0x00 -- -- ダイレクトモード<br />
lsc_enable_x 0x74 0x08, 0x00, 0x00 -- -- トランスペアレントモード<br />
ダウンロード<br />
CFM からコンフィグ SRAM にデータをダウンロードします。<br />
コマンド名 コマンド<br />
(1byte)<br />
表 4-15 アドレスの初期化コマンド<br />
オペランド<br />
(3byte)<br />
Write Data Read Data 備考<br />
refresh 0x79 0x00, 0x00, 0x00 -- -- ---<br />
各 I/F と CFM 間のアクセス無効化<br />
データの Read が完了したら、各 I/F からの CFM へのアクセスを無効化します。有効化の場合と異なりコマ<br />
ンドは1つ(モードに依存しない)です。<br />
バイパス<br />
コマンド名 コマンド<br />
(1byte)<br />
表 4-16 アクセス無効化コマンド<br />
オペランド<br />
(3byte)<br />
17<br />
Write Data<br />
isc_disable 0x26 0x00, 0x00, 0x00 -- --<br />
各 I/F と CFM 間のアクセス無効化後、続けて下記バイパスコマンドも必要です。<br />
コマンド名 コマンド<br />
(1byte)<br />
表 4-17 バイパスコマンド<br />
オペランド Write Data<br />
(3byte)<br />
bypass 0xFF 0xFF, 0xFF, 0xFF -- --<br />
Read Data 備考<br />
Read Data 備考<br />
ドキュメント番号 JUG10_001
MachXO2 On-chip Flash memory アクセス<br />
ユーザーガイド<br />
February. 2012 Ver 1.2.2<br />
5 UFM へのアクセス手順<br />
5.1 UFM のプログラム<br />
UFM にデータをプログラムするには、図 5-1 の手順で行います。<br />
各種 I/F と UFM 間のアクセス有効化<br />
図 5-1 UFM データプログラムの手順<br />
UFM へのアクセスを開始する際に必ず行います。アクセスには、ロジック部分の動作を強制的に停止させ<br />
てアクセスを行うダイレクトモードと、ロジックは動作させたままアクセスを行うトランスペアレントモードの2つ<br />
があり、それぞれのモード用に有効化コマンドが用意されています。<br />
コマンド名 コマンド<br />
(1byte)<br />
表 5-1 I/F の有効化コマンド<br />
オペランド<br />
(3byte)<br />
18<br />
Write Data<br />
Read Data 備考<br />
isc_enable 0xC6 0x08, 0x00, 0x00 -- -- ダイレクトモード<br />
lsc_enable_x 0x74 0x08, 0x00, 0x00 -- -- トランスペアレントモード<br />
ドキュメント番号 JUG10_001
MachXO2 On-chip Flash memory アクセス<br />
ユーザーガイド<br />
February. 2012 Ver 1.2.2<br />
データの消去<br />
On-Chip flash memory の UFM 領域のデータ全てを消去します。Flash memory はその構造上、「データの<br />
上書き」が出来ないため、プログラム前には必ずデータの消去を行う必要があります。UFM を消去する場<br />
合、UFM 消去専用のコマンド(0xCB)を使用する方法と、Erase Flash コマンド(0x0E)を使用しオペランドで<br />
UFM を選択(0x08, 0x00, 0x00)する方法があります。<br />
-------------------------------------------------------------------------------------------<br />
・ページ単位の消去はできません、UFM の全てのページのデータが消去されます。特定のページのみ消去<br />
したい場合や、特定のページデータのみ書き換えたい場合、UFM にプログラムされている必要なデータを、<br />
内蔵 SRAM メモリ(Embedded Block RAM)等に一時退避し、UFM 全消去後書き戻す工夫が必要です。<br />
-----------------------------------------------------------------------------------------------<br />
コマンド名 コマンド<br />
(1byte)<br />
表 5-2 Erase UFM コマンド<br />
オペランド<br />
(3byte)<br />
19<br />
Write Data<br />
Read Data 備考<br />
Erase UFM 0xCB 0x00, 0x00, 0x00 -- -- UFM 領域の全データ消去<br />
コマンド名 コマンド<br />
(1byte)<br />
表 5-3 Erase Flash コマンド<br />
オペランド<br />
(3byte)<br />
Write Data Read Data 備考<br />
erase_flash 0x0E 下記参照 -- -- 消去対象をオペランドで選択<br />
※ オペランド : 0000 ucfs 0000 00000 0000 0000 (バイナリ表記 3byte)<br />
u : UFM セクタを消去対象 (0 : 消去しない、 1 : 消去する)<br />
c : CFM セクタを消去対象 (0 : 消去しない、 1 : 消去する)<br />
f : Feature セクタを消去対象 (0 : 消去しない、 1 : 消去する)<br />
s : SRAM セクタを消去対象 (0 : 消去しない、 1 : 消去する) 注)<br />
消去対象はオペランド 1byte 目の下位 4bit で指定します。下記に例を示します。UFM のみを消去する場合、<br />
下記例 4 を使用してください。<br />
例 1. command 0x0E + operand 0x0E, 0x00, 0x00 UFM/CFM/Feature Row すべてを消去<br />
例 2. command 0x0E + operand 0x0C, 0x00, 0x00 UFM と CFG の両 セ ク タ消去<br />
例 3. command 0x0E + operand 0x04, 0x00, 0x00 CFG セ ク タのみ消去<br />
例 4. command 0x0E + operand 0x08, 0x00, 0x00 UFM セ ク タのみ消去<br />
例 5. command 0x0E + operand 0x01, 0x00, 0x00 SRAM セ ク タのみ消去<br />
注) 通常 SRAM を選択して意図的に消去する必要はございません。SRAM とその他の領域は、同時にイレース指定<br />
して消去できません。また SRAM をイレース対象とする為には、表 5-1 の isc_enable コマンドでダイレクトモード(0xC6)<br />
を使用し、付随するオペランドには 0x08, 0x00, 0x00 ではなく、0x00, 0x00, 0x00 を指定する必要があります。<br />
ドキュメント番号 JUG10_001
MachXO2 On-chip Flash memory アクセス<br />
ユーザーガイド<br />
February. 2012 Ver 1.2.2<br />
消去完了の確認<br />
消去コマンド入力からデータ消去の完了までは時間がかかります。プログラムは消去完了後にしか行えな<br />
いので、プログラムコマンド入力前に消去の完了を確認する必要があります。データの消去を確認するため<br />
には、On-chip Flash memory 内の[busy フラグ]を read して値をチェックします。[busy フラグ]=0 が消去完了<br />
を表し、[busy フラグ]=1 は、まだ消去中であることを表します。<br />
[busy フラグ]を read するコマンドは2つあります。1つは[busy フラグ]のみを read する[check_busy]コマンド、<br />
もう1つは[busy フラグ]と一緒に内部の各種ステータスのフラグを read する[read_status]コマンドです。<br />
コマンド名 コマンド<br />
(1byte)<br />
表 5-4 busy フラグ確認コマンド<br />
オペランド<br />
(3byte)<br />
Write Data Read Data 備考<br />
check_busy 0xF0 0x00, 0x00, 0x00 -- 8bit MSB が busy フラグ<br />
read_status 0x3C 0x00, 0x00, 0x00 -- 32bit 上位データから出力される。<br />
Read data[31:0]のビット[12]<br />
が busy フラグ。<br />
なお、データの消去は最大でも5秒で完了するため、消去コマンド入力から5秒後以降であれば、確認コマ<br />
ンドをスキップして次のコマンドを実行しても構いません。<br />
Program 開始アドレスの指定<br />
プログラム前にページアドレスの指定を行います。<br />
コマンド名 コマンド<br />
(1byte)<br />
direct_address 0xB4 0x00, 0x00, 0x00 0x40, +<br />
address<br />
3byte<br />
データのプログラム<br />
表 5-5 アドレスの初期化コマンド<br />
オペランド<br />
(3byte)<br />
Write Data Read Data 備考<br />
20<br />
-- ページアドレスを指定<br />
1 ページ(16byte)分のデータのプログラムを行います。ページアドレスはプログラム実行時に自動的にインク<br />
リメントされます。<br />
表 5-6 ページプログラム & アドレスインクリメントコマンド<br />
コマンド名 コマンド オペランド Write Data Read Data 備考<br />
(1byte) (3byte)<br />
prog_incr_nv 0xC9 0x00, 0x00, 0x00 16byte -- ページアドレスは自動的に<br />
インクリメントされる<br />
1回のコマンド実行で1ページプログラムします。全てのデータをプログラムするには、必要なページ数分コ<br />
マンドを繰り返す必要があります。<br />
ドキュメント番号 JUG10_001
MachXO2 On-chip Flash memory アクセス<br />
ユーザーガイド<br />
February. 2012 Ver 1.2.2<br />
プログラム完了の確認<br />
データの消去と同じく、プログラムもコマンド入力から完了まで時間がかかります。このためデータの消去の<br />
場合と同様に、次のページプログラム実行前に[busy フラグ]をチェックして処理状況を確認する必要があり<br />
ます。使用するコマンドも消去の確認と同じです(表 4-3)。<br />
プログラム完了フラグの設定<br />
全てのデータのプログラムが完了したら、デバイスにそれを認識させるためのフラグを設定します。<br />
コマンド名 コマンド<br />
(1byte)<br />
表 5-7 コンフィグデータプログラム完フラグ設定コマンド<br />
オペランド<br />
(3byte)<br />
21<br />
Write Data<br />
prog_done 0x5E 0x00, 0x00, 0x00 -- --<br />
各 I/F と UFM 間のアクセス無効化<br />
Read Data 備考<br />
プログラムが完了したら、各 I/F からの UFM へのアクセスを無効化します。有効化の場合と異なりコマンド<br />
は1つ(モードに依存しない)です。<br />
バイパス<br />
コマンド名 コマンド<br />
(1byte)<br />
表 5-8 アクセス無効化コマンド<br />
オペランド<br />
(3byte)<br />
Write Data<br />
isc_disable 0x26 0x00, 0x00, 0x00 -- --<br />
各 I/F と UFM 間のアクセス無効化後、続けて下記バイパスコマンドも必要です。<br />
コマンド名 コマンド<br />
(1byte)<br />
表 5-9 バイパスコマンド<br />
オペランド<br />
(3byte)<br />
Write Data<br />
bypass 0xFF 0xFF, 0xFF, 0xFF -- --<br />
Read Data 備考<br />
Read Data 備考<br />
プログラム完了後に引き続きデータの read 等を行う場合は、アクセス無効化とバイパスはスキップ可能。<br />
ドキュメント番号 JUG10_001
MachXO2 On-chip Flash memory アクセス<br />
ユーザーガイド<br />
February. 2012 Ver 1.2.2<br />
5.2 UFM データの Read<br />
CFM のデータを Read するには、図 5-2 の手順で行います。<br />
図 5-2 UFM データ Read 手順<br />
22<br />
ドキュメント番号 JUG10_001
MachXO2 On-chip Flash memory アクセス<br />
ユーザーガイド<br />
February. 2012 Ver 1.2.2<br />
各種 I/F と UFM 間のアクセス有効化<br />
UFM へのアクセスを開始する際に必ず行います。アクセスには、ロジック部分の動作を強制的に停止させ<br />
てアクセスを行うダイレクトモードと、ロジックは動作させたままアクセスを行うトランスペアレントモードの2つ<br />
があり、それぞれのモード用に有効化コマンドが用意されています。<br />
コマンド名 コマンド<br />
(1byte)<br />
表 5-10 I/F の有効化コマンド<br />
オペランド<br />
(3byte)<br />
23<br />
Write Data<br />
Read Data 備考<br />
isc_enable 0xC6 0x08, 0x00, 0x00 -- -- ダイレクトモード<br />
lsc_enable_x 0x74 0x08, 0x00, 0x00 -- -- トランスペアレントモード<br />
リード開始アドレスの指定<br />
Read コマンド実行前にページアドレスの指定を行います。<br />
コマンド名 コマンド<br />
(1byte)<br />
表 5-11 アドレスの初期化コマンド<br />
オペランド<br />
(3byte)<br />
Write Data<br />
direct_address 0xB4 0x00, 0x00, 0x00 0x40, +<br />
address<br />
3byte<br />
Read Data 備考<br />
-- ページアドレスを指定<br />
ドキュメント番号 JUG10_001
MachXO2 On-chip Flash memory アクセス<br />
ユーザーガイド<br />
February. 2012 Ver 1.2.2<br />
データの Read<br />
Read はページ単位で行いますが、複数ページをまとめて Read することが出来ます。リードデータの指定は<br />
オペランドによる詳細設定が必要です。<br />
コマンド名 コマンド<br />
(1byte)<br />
表 5-12 Read & アドレスインクリメントコマンド<br />
オペランド<br />
(3byte)<br />
read_incr_nv 0xCA 下記詳細<br />
24<br />
Write Data<br />
※ オペランド : 000i dddd 00pp pppp pppp pppp (バイナリ表記 3byte)<br />
Read Data 備考<br />
--- 下記詳細 ダミーデータ設定とリード<br />
ページ数の関係に注意<br />
i : 4 バイトのダミーデータ挿入有り/バイト数指定<br />
(0 : 4 バイトダミー挿入有、 1 : ダミーバイト数の指定に dddd フィールドを使用)<br />
dddd : 上記 i=1 の時ダミーバイト数を指定<br />
(0000 : 1 ページリード時ダミーバイト無/1 ページ以上のリード時ダミー16 バイト有<br />
0001 : 1 ダミーバイト有り、0002 : 2 ダミーバイト有り、、、1111 : 15 ダミーバイト有)<br />
pp…pp : リードするページ数を指定。リードデータにダミーデータを含む設定の場合、ダミー<br />
ページを含んだページ数設定(リードしたいページ数+1)が必要<br />
初期の R1 レビジョンのデバイスは、i=1 且つ dddd=0000 の 1 モードのみサポートします。<br />
各 I/F と UFM 間のアクセス無効化<br />
データの Read が完了したら、各 I/F からの UFM へのアクセスを無効化します。有効化の場合と異なりコマ<br />
ンドは1つ(モードに依存しない)です。<br />
バイパス<br />
コマンド名 コマンド<br />
(1byte)<br />
表 5-13 アクセス無効化コマンド<br />
オペランド<br />
(3byte)<br />
Write Data Read Data 備考<br />
isc_disable 0x26 0x00, 0x00, 0x00 -- --<br />
各 I/F と UFM 間のアクセス無効化後、続けて下記バイパスコマンドも必要です。<br />
コマンド名 コマンド<br />
(1byte)<br />
表 5-14 バイパスコマンド<br />
オペランド<br />
(3byte)<br />
Write Data<br />
bypass 0xFF 0xFF, 0xFF, 0xFF -- --<br />
Read Data 備考<br />
ドキュメント番号 JUG10_001
MachXO2 On-chip Flash memory アクセス<br />
ユーザーガイド<br />
February. 2012 Ver 1.2.2<br />
6 各種 I/F からのアクセス波形<br />
6.1 Wishbone バスからのアクセス波形<br />
6.1.1 Wishbone バスから CFM/UFM へのアクセスルール<br />
Wishbone から UFM/CFM へのアクセスを行う場合、まずアドレス 0x70 に値 0x80 を write して、wishbone バス<br />
から flash メモリコントローラへのアクセスを Enable にします(フレーム・オープン)。その後、アドレス 0x71 に<br />
UFM/CFM へのコマンドを順次 write します。最後にアドレス 0x70 に値 0x00 を write して、wishbone バスから<br />
flash メモリコントローラへのアクセスを disable にします(フレーム・クローズ)。<br />
これらのコマンドは、SPI の CS アサート/ディアサート、I2C のスタートコンディション/ストップコンディションに相<br />
当します。<br />
図 6-1 Wishbone バスから UFM へのアクセスルール<br />
-------------------------------------------------------------------------------------------<br />
・アドレス 0x70 へのデータ 0x80 の write は I2C の[START]コンディションまたは SPI の CS アサートに相当。<br />
・アドレス 0x70 へのデータ 0x00 の write は I2C の[STOP] コンディションまたは SPI の CS アサートに相当。<br />
-------------------------------------------------------------------------------------------<br />
25<br />
ドキュメント番号 JUG10_001
MachXO2 On-chip Flash memory アクセス<br />
ユーザーガイド<br />
February. 2012 Ver 1.2.2<br />
6.1.2 各種アクセス波形サンプル<br />
CFM/UFM との I/F の有効化<br />
wb_clk_i<br />
wb_cyc_i<br />
wb_stb_i<br />
wb_we_i<br />
wb_adr_i[7:0]<br />
wb_dat_i[7:0]<br />
wb_dat_o<br />
wb_ack_o<br />
CFM の Erase<br />
wb_clk_i<br />
wb_cyc_i<br />
wb_stb_i<br />
wb_we_i<br />
wb_adr_i[7:0]<br />
wb_dat_i[7:0]<br />
wb_dat_o<br />
wb_ack_o<br />
UFM の Erase<br />
wb_clk_i<br />
wb_cyc_i<br />
wb_stb_i<br />
wb_we_i<br />
wb_adr_i[7:0]<br />
wb_dat_i[7:0]<br />
wb_dat_o<br />
wb_ack_o<br />
70 N/A 71 N/A 71 N/A 71<br />
80 N/A 74 N/A O8 N/A OO N/A OO<br />
図 6-2 UFM との I/F 有効化<br />
70 N/A 71 N/A 71<br />
図 6-3 CFM の Erase<br />
図 6-4 UFM の Erase<br />
26<br />
N/A<br />
N/A<br />
N/A<br />
N/A 71 N/A 70 N/A<br />
71 N/A 71<br />
N/A<br />
OO N/A<br />
70 N/A<br />
80 N/A 0E N/A OC N/A OO N/A OO N/A OO N/A<br />
70 N/A<br />
80 N/A<br />
N/A<br />
N/A<br />
71 N/A 71 N/A 71 N/A 71 N/A 70 N/A<br />
CB<br />
N/A OO N/A OO N/A OO N/A OO N/A<br />
ドキュメント番号 JUG10_001
MachXO2 On-chip Flash memory アクセス<br />
ユーザーガイド<br />
February. 2012 Ver 1.2.2<br />
Erase/プログラム完了の確認<br />
wb_clk_i<br />
wb_cyc_i<br />
wb_stb_i<br />
wb_we_i<br />
wb_adr_i[7:0]<br />
wb_dat_i[7:0]<br />
wb_dat_o<br />
wb_ack_o<br />
ページアドレスの初期化(CFM アクセス時)<br />
ページアドレス指定(UFM アクセス時)<br />
wb_clk_i<br />
wb_cyc_i<br />
wb_stb_i<br />
wb_we_i<br />
wb_adr_i[7:0]<br />
wb_dat_i[7:0]<br />
wb_dat_o<br />
wb_ack_o<br />
wb_clk_i<br />
wb_cyc_i<br />
wb_stb_i<br />
wb_we_i<br />
wb_adr_i[7:0]<br />
wb_dat_i[7:0]<br />
wb_dat_o<br />
wb_ack_o<br />
70 N/A<br />
70 N/A 71 N/A 71 N/A 71<br />
80 N/A F0 N/A OO N/A OO N/A OO<br />
N/A<br />
OO<br />
図 6-5 check_busy コマンドによる確認<br />
図 6-6 ページアドレスの初期化<br />
図 6-7 ページアドレス指定<br />
27<br />
N/A<br />
N/A<br />
80 N/A 46 N/A OO N/A OO N/A OO<br />
71 N/A 73 N/A 70 N/A<br />
※<br />
N/A<br />
※ MSB が busy フラグ<br />
70 N/A 71 N/A 71 N/A 71 N/A 71 N/A 70 N/A<br />
N/A OO N/A<br />
71 N/A 71 N/A 71 N/A 71 N/A 71 N/A 71 N/A 71 N/A 71 N/A<br />
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<br />
N/A<br />
70 N/A<br />
※ ページアドレス(3byte)<br />
ドキュメント番号 JUG10_001
MachXO2 On-chip Flash memory アクセス<br />
ユーザーガイド<br />
February. 2012 Ver 1.2.2<br />
ページプログラム+ アドレスインクリメント(CFM)<br />
wb_clk_i<br />
wb_cyc_i<br />
wb_stb_i<br />
wb_we_i<br />
wb_adr_i[7:0]<br />
wb_dat_i[7:0]<br />
wb_dat_o<br />
wb_ack_o<br />
ページプログラム + アドレスインクリメント(UFM)<br />
wb_clk_i<br />
wb_cyc_i<br />
wb_stb_i<br />
wb_we_i<br />
wb_adr_i[7:0]<br />
wb_dat_i[7:0]<br />
wb_dat_o<br />
wb_ack_o<br />
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<br />
80 N/A 7O N/A OO<br />
N/A OO N/A OO N/A ※<br />
N/A<br />
図 6-8 CFM のプログラム<br />
70 N/A 71 N/A 71 N/A 71 N/A 71 N/A 71 N/A<br />
80 N/A C9 N/A OO N/A OO N/A OO<br />
N/A<br />
図 6-9 UFM のプログラム<br />
28<br />
N/A ※ N/A ※ N/A ※<br />
70 N/A<br />
N/A OO N/A<br />
※ 16byte データ<br />
71 N/A 71 N/A 71 N/A 70 N/A<br />
N/A ※ N/A ※ N/A ※ N/A ※<br />
N/A OO N/A<br />
※ 16byte データ<br />
ドキュメント番号 JUG10_001
MachXO2 On-chip Flash memory アクセス<br />
ユーザーガイド<br />
February. 2012 Ver 1.2.2<br />
プログラム完了フラグの設定<br />
wb_clk_i<br />
wb_cyc_i<br />
wb_stb_i<br />
wb_we_i<br />
wb_adr_i[7:0]<br />
wb_dat_i[7:0]<br />
wb_dat_o<br />
wb_ack_o<br />
CFM/UFM との I/F の無効化<br />
wb_clk_i<br />
wb_cyc_i<br />
wb_stb_i<br />
wb_we_i<br />
wb_adr_i[7:0]<br />
wb_dat_i[7:0]<br />
wb_dat_o<br />
wb_ack_o<br />
70 N/A 71 N/A 71 N/A 71 N/A 71 N/A 70 N/A<br />
80 N/A 5E N/A OO N/A OO N/A OO<br />
図 6-10 プログラム完了フラグの設定<br />
図 6-11 CFM/UFM との I/F の無効化<br />
29<br />
N/A<br />
70 N/A 71 N/A 71 N/A 71<br />
80 N/A<br />
26 N/A OO<br />
N/A OO N/A OO N/A<br />
N/A<br />
N/A OO N/A<br />
N/A 71 N/A 70 N/A<br />
OO N/A<br />
ドキュメント番号 JUG10_001
MachXO2 On-chip Flash memory アクセス<br />
ユーザーガイド<br />
February. 2012 Ver 1.2.2<br />
データの Read(CFM)<br />
※1 ダミーデータ 16byte<br />
※2 指定した先頭ページのデータ<br />
※3 先頭ページ + MMNN -1 ページのデータ<br />
※2 ※2 ※3 ※3 ※3<br />
N/A N/A OO N/A<br />
73 N/A 73 73 N/A 73 N/A 73 N/A 70 N/A<br />
図 6-12 CFM のデータ Read<br />
30<br />
Dummyデータ16byteのRead<br />
wb_ack_o<br />
wb_dat_o<br />
N/A ※1 ※1<br />
※1 ※2<br />
※2<br />
wb_dat_i[7:0]<br />
80 N/A 73 N/A 1O N/A MM N/A NN N/A N/A<br />
wb_adr_i[7:0]<br />
70 N/A 71 N/A 71<br />
N/A 71 N/A 71 N/A<br />
73 N/A 73 N/A<br />
73 N/A 73 N/A 73<br />
N/A<br />
wb_we_i<br />
wb_stb_i<br />
wb_cyc_i<br />
wb_clk_i<br />
ドキュメント番号 JUG10_001
MachXO2 On-chip Flash memory アクセス<br />
ユーザーガイド<br />
February. 2012 Ver 1.2.2<br />
データの Read(UFM)<br />
※1 ダミーデータ 16byte<br />
※2 指定した先頭ページのデータ<br />
※3 先頭ページ + MMNN -1 ページのデータ<br />
※2 ※2 ※3<br />
※3<br />
※3<br />
N/A<br />
N/A<br />
OO N/A<br />
73 N/A 73 73<br />
N/A 73 N/A 73<br />
N/A 70<br />
N/A<br />
図 6-13 UFM からのデータ Read<br />
31<br />
Dummyデータ16byteのRead<br />
wb_ack_o<br />
wb_dat_o<br />
N/A ※1 ※1<br />
※1 ※2 ※2<br />
wb_dat_i[7:0]<br />
80 N/A CA N/A 1O N/A<br />
MM N/A NN N/A N/A<br />
wb_adr_i[7:0]<br />
70 N/A 71 N/A 71<br />
N/A 71 N/A 71 N/A 73<br />
N/A 73 N/A 73 N/A<br />
73 N/A 73 N/A<br />
wb_we_i<br />
wb_stb_i<br />
wb_cyc_i<br />
wb_clk_i<br />
ドキュメント番号 JUG10_001
MachXO2 On-chip Flash memory アクセス<br />
ユーザーガイド<br />
February. 2012 Ver 1.2.2<br />
6.2 I2C からのアクセス波形<br />
6.2.1 I2C から CFM/UFM へのアクセスルール<br />
外部の I2C マスタから XO2 の CFM/UFM にアクセスする際、Read データがないアクセスでは1度のアクセス<br />
でコマンドや入力データを連続して入力します。しかし、Read データがあるアクセス(read_status, check_busy,<br />
read_incr_nv )では、I2C としてのアクセスは2回必要になります。1度目のアクセスで、データを Read するため<br />
のコマンド等を write し、2回目のアクセスで該当するデータを read します(図 6-16、図 6-17 参照)。なお、こ<br />
のアクセス間の区切りには[Repeated START condition]を使用します。<br />
6.2.2 I2C からのアクセス波形サンプル<br />
CFM/UFM との I/F の有効化<br />
SDA<br />
SCL<br />
ページアドレス指定(UFM アクセス時)<br />
Erase/プログラム完了確認<br />
SCK<br />
SDA<br />
SCL<br />
START<br />
Condition<br />
START<br />
Condition<br />
START<br />
Condition<br />
0xC6(Comand) 0x08 (Operand)<br />
Slave Address A A A A<br />
図 6-14 I/F の有効化<br />
Slave Address A A A A<br />
0x40<br />
0xB4(Comand) 0x00 (Operand)<br />
0xMM 0xNN<br />
A MM A NN A<br />
図 6-15 ページアドレス指定<br />
図 6-16 check_busy コマンドによる確認<br />
32<br />
0x00 (Operand) 0x00 (Operand)<br />
A<br />
A<br />
ACK<br />
ACK<br />
0x00 (Operand) 0x00 (Operand)<br />
STOP<br />
Condition<br />
SDA Slave Address A<br />
A A A<br />
A<br />
Repeated START<br />
Condition<br />
0xF0(Comand) 0x00 (Operand) 0x00 (Operand) 0x00 (Operand)<br />
Slave Address A ※<br />
A<br />
STOPCondition<br />
A<br />
※busy flag<br />
ドキュメント番号 JUG10_001<br />
A<br />
STOP<br />
Condition
MachXO2 On-chip Flash memory アクセス<br />
ユーザーガイド<br />
February. 2012 Ver 1.2.2<br />
データの Read(CFM)<br />
A A CFM read last data A<br />
A<br />
ACK<br />
STOPCondition<br />
Slave Address A<br />
Dummy 0 A Dummy 1 Dummy14 A Dummy 15 A CFM rea data0 A<br />
図 6-17 CFM からのデータ Read<br />
33<br />
Repeated START<br />
Condition<br />
SDA<br />
Slave Address A<br />
A A MM A NN<br />
A<br />
SCK<br />
START<br />
Condition<br />
0x73(Comand) 0x10 (Operand) 0xMM (Operand) 0xNN (Operand)<br />
ドキュメント番号 JUG10_001
MachXO2 On-chip Flash memory アクセス<br />
ユーザーガイド<br />
February. 2012 Ver 1.2.2<br />
6.3 SPI からのアクセス波形<br />
6.3.1 SPI から CFM/UFM へのアクセスルール<br />
MachXO2 は SPI のチップセレクト信号を2つ持っています。1つは SPI を介して内部の Wishbone バスにアク<br />
セスする際に使用するチップセレクト、もう1つは CFM/UFM へアクセスする際に使用するチップセレクトです。<br />
CFM/UFM へのアクセスに使用するチップセレクトは[pinout list]の[Dual Function]欄に[SN]と記載されている<br />
ピンに割り当てられます。かならずこのチップセレクトを使用してください。<br />
6.3.2 SPI からのアクセス波形サンプル<br />
CFM/UFM との I/F の有効化<br />
Erase/プログラム完了確認<br />
CCLK<br />
SI<br />
SN<br />
CCLK<br />
SI<br />
SN<br />
0xC6(Comand) 0x08 (Operand)0x00 (Operand)0x00 (Operand)<br />
図 6-18 CFM/UFM との I/F の有効化<br />
0xF0(Comand) 0x00 (Operand) 0x00 (Operand) 0x00 (Operand)<br />
SO Hi-Z ※<br />
図 6-19 check_busy コマンドによる確認<br />
34<br />
N/A<br />
※ Busy flag<br />
ドキュメント番号 JUG10_001
MachXO2 On-chip Flash memory アクセス<br />
ユーザーガイド<br />
February. 2012 Ver 1.2.2<br />
6.3.3 データの Read(CFM)<br />
CFM read lastデータ<br />
N/A<br />
Dummy 1 Dummy 2 Dummy14 Dummy 15<br />
CFM readデータ0 CFM readデータ1<br />
N/A N/A<br />
図 6-20 CFM からのデータの Read<br />
35<br />
SO<br />
Hi-Z<br />
Dummy 0<br />
SN<br />
SI<br />
MM NN<br />
N/A<br />
CCLK<br />
0x73(Comand) 0x10 (Operand) 0xMM (Operand) 0xNN (Operand)<br />
ドキュメント番号 JUG10_001
MachXO2 On-chip Flash memory アクセス<br />
ユーザーガイド<br />
February. 2012 Ver 1.2.2<br />
7 EFB のシミュレーション<br />
7.1 テストベンチ作成時の注意点<br />
EFB のシミュレーションには、最上位階層のテストベンチに以下の2つのモジュールのインスタンスが必要で<br />
す。また、これらのモジュールのインスタンス名は以下のものでないと、エラーになります。<br />
表 7-1 GSR/PUR のインスタンス名<br />
モジュール名 インスタンス名 備考<br />
GSR GSR_INST Global Set/Reset 出力モジュール<br />
PUR PUR_INST Power Up Set/Reset 出力モジュール<br />
エラメッセージの例<br />
# ELAB2: Fatal Error: ELAB2_0036 Unresolved hierarchical reference to "GSR_INST.GSRNET" from<br />
module "testbench.u1_efb_i2c_ms.EFBInst_0" (module not found).<br />
# ELAB2: Last instance before error: /u1_efb_i2c_ms/EFBInst_0<br />
# KERNEL: Error: E8005 : Kernel process initialization failed.<br />
# Error: Fatal error occurred during simulation initialization.<br />
記述例<br />
library ieee, std;<br />
use ieee.std_logic_1164.all;<br />
use ieee.std_logic_unsigned.all;<br />
use ieee.std_logic_arith;<br />
use ieee.std_logic_textio.all;<br />
use std.textio.all;<br />
library ovi_machxo2;<br />
use ovi_machxo2.all;<br />
entity testbench is<br />
end testbench;<br />
architecture BL of testbench is<br />
component GSR<br />
port(<br />
GSR : in std_logic<br />
);<br />
end component;<br />
component PUR<br />
port(<br />
PUR : in std_logic<br />
);<br />
end component;<br />
・<br />
・<br />
36<br />
ドキュメント番号 JUG10_001
MachXO2 On-chip Flash memory アクセス<br />
ユーザーガイド<br />
February. 2012 Ver 1.2.2<br />
・<br />
Begin<br />
GSR_INST : GSR<br />
port map(<br />
GSR => wb_xrst_i<br />
);<br />
PUR_INST : PUR<br />
port map(<br />
PUR => c_vcc<br />
);<br />
・<br />
・<br />
・<br />
end BL;<br />
7.2 I2C マクロの入出力信号<br />
I2C マクロからの出力は、I2C の仕様どおり’0’または’Z’です。I2C マクロから’1’や’H’は出力されません。<br />
従って外部で’H’レベルへのプルアップ処理が必要になります。<br />
図 7-1 I2C マクロ入出力ポートの接続と記述例<br />
37<br />
ドキュメント番号 JUG10_001
MachXO2 On-chip Flash memory アクセス<br />
ユーザーガイド<br />
February. 2012 Ver 1.2.2<br />
7.3 WISHBONE バスへの入力データ<br />
WISHBONE バスから EFB にアクセスする場合、クロックに対してデータの遅延が小さい場合は wb_ack_o 信号<br />
がテクニカルノート TN1205 のタイムチャートとは違うタイミングでアサートされます(図 7-2、図 7-3)。<br />
ただし、Read/Write アクセス自体は正しく行われます。<br />
図 7-2 WISHBONE バスのアクセス波形(TN1205)<br />
図 7-3 WISHBONE バスのシミュレーション波形(入力データ遅延なし)<br />
シミュレーション時の wb_ack_o のタイミングを TN1205 と同じにするためには WISHBONE バスへの入力信号<br />
に、クロックに対して 20ps 以上の遅延をつけてください。<br />
図 7-4 WISHBONE バスのシミュレーション波形(入力データ遅延あり)<br />
38<br />
ドキュメント番号 JUG10_001
MachXO2 On-chip Flash memory アクセス<br />
ユーザーガイド<br />
February. 2012 Ver 1.2.2<br />
8 Feature Row について<br />
Feature Row は 64bit と 16bit の 2 部構成となっており、各種設定を保存します。未書き込み状態のデバイ<br />
スでは All-0 となっております(5bit 部に関してはアクセス不可)。ispVM の Feature Row Editor にて jedec<br />
フィアルを読み込むことで、設定済内容を確認できます。<br />
図 8-1 Feature Row Editor による表示<br />
64bit 部 : Custom ID Code[0-31], TraceID[32-39], I2C Slave Address[40-47],<br />
Dual Boot Golden Address [48-63]<br />
16bit 部: Secure password[0], DEC ONLY[1], Password Enable FLASH[2], Password Enable ALL[3],<br />
( 注<br />
上記 4bit は必ずデフォルトの 0 でご利用下さい<br />
my_ASSP Enable[4], PROGRAMN Preference Disable[5], INIT Preference Enable[6],<br />
DONE Preference Enable[7], JTAG Preference Disable[8], S-SPI Preference Disable[9],<br />
I2C Preference Disable[10], M-SPI Preference Disable [11], BOOT Sector1[12],<br />
BOOT Sector2[13], Reserve[14-15]<br />
5bit 部 : セキュリティ設定部、コマンドによるアクセス不可(jedec では 21 行目に記載)。<br />
CONFIG_SECURE 設定[0], ONE_TIME_PROGRAM 設定[1-4]<br />
注) XO2 デバイスはこの 4bit 部の機能は使用できません。この部分が 0 以外に設定されると、書き込みが完<br />
了している回路の動作は継続しますが、以降 ispVM によるアクセスで下記エラーとなり、デバイスの書き換<br />
えができなくなります。<br />
"A Flash Protect key is required. Please select a different operation<br />
in the Advanced Security Programming Mode."<br />
Execution time: **:** milliseconds<br />
39<br />
ドキュメント番号 JUG10_001
MachXO2 On-chip Flash memory アクセス<br />
ユーザーガイド<br />
February. 2012 Ver 1.2.2<br />
◆ Feature Row の Program / Erase コマンド<br />
Feature Row へのアクセスは ispVM によるプログラミング、及び ispVM で生成された SVF を使用する場合、自動<br />
的に行われます。それ以外の手法でアクセスする場合、対象エリア毎に下記2コマンドを使用します<br />
・ プログラムコマンド<br />
LSC_PROG_FEATURE (0xE4) + オペランド 0x00, 0x00, 0x00 : 前半 64bit に対して使用<br />
例) 0xE4, 0x00, 0x00, 0x00, + 0x0000000000000000<br />
データは、jedec ファイルの下から 5 行目にある、E の後ろの 64bit です。<br />
通常オール 0 になっています。<br />
例) NOTE FEATURE_ROW*<br />
E0000000000000000000000000000000000000000000000000000000000000000<br />
※ jedece での並び順は LSB-MSB が逆になっております。<br />
LSC_PROG_FEABITS (0xF8) + オペランド 0x00, 0x00, 0x00: 後半 16bit に対して使用<br />
例) 0xF8, 0x00, 0x00, 0x00, + 0x****<br />
データは、jedec ファイルの下から 4 行目にある下記の様な 16bit です。<br />
値は JTAG、I2C、SPI の使用状況で変わります。<br />
例) 0000010010100000*<br />
※ jedece での並び順は LSB-MSB が逆になっております。<br />
上記例では、0xF8, 0x00, 0x00, 0x00, + 0x0520 となります。<br />
・ リードコマンド<br />
ISC_READ_FEATURE (0xE7) + オペランド 0x00, 0x00, 0x00 : 前半 64bit について<br />
リードデータは 64bit です<br />
ISC_READ_FEABITS (0xFB) + オペランド 0x00, 0x00, 0x00 : 後半 16bit について<br />
リードデータは 16bit です<br />
40<br />
ドキュメント番号 JUG10_001
MachXO2 On-chip Flash memory アクセス<br />
ユーザーガイド<br />
February. 2012 Ver 1.2.2<br />
◆ My_ASSP 機能にて、デバイス ID を書き換えた場合の復旧策<br />
My_ASSP 機能を使用してデバイス ID を書き換えると、ispVM や SVF デバッガを使用したプログラミングフローで<br />
下記エラーとなり、デバイスにアクセスできなくなります。この場合下記フローにてアクセス可能です。<br />
Step1. ispVM のプログラミングフローを実行すると、ispVM は下記エラーを表示して、今書き込もうとしているデバ<br />
イスのデバイス ID がどんな値に設定されているか表示します(下記は 0x00000200 に設定済デバイスの例)。<br />
Device1 LCMXO2-1200ZE:<br />
The ID has been changed to 0x00000200.<br />
Please click on the Save button to save the new Device's ID.<br />
Step2. IspVM のジェネレート SVF メニューより、Jedec からデバッグツールで使用する SVF を生成します。<br />
Step3. 生成した SVF をテキストエディタで開き、下記に示す IDCODE チェックステップの値を Step2 で確認でき<br />
たデバイス ID に書き換え、保存します。<br />
---------------------------------------------<br />
! Check the IDCODE<br />
ISPEN LOW;<br />
! Shift in IDCODE_PUB(0xE0) opcode<br />
SDR 32 TDI (00000007);<br />
SDR 32 TDI (00000000)<br />
TDO (C204D480)
MachXO2 On-chip Flash memory アクセス<br />
ユーザーガイド<br />
February. 2012 Ver 1.2.2<br />
9 その他注意事項<br />
◆ グローバルセットリセット(以下 GSR)を使用する場合<br />
GSR を使用したデザインの場合(DIAMOND デフォルト設定)、I2C、SPI, WB からで CFM/UFM にアクセス中、(IF を<br />
イネーブルしてから、ディセーブル+バイパス までの間)、ユーザ回路でその GSR を使用しているリセットは効きませ<br />
ん。それを踏まえた上で使用するか、もしくは GSR を使用しないで下さい。デザインで意図的に GSR を使用していな<br />
い場合でも、DIAMOND のデフォルト設定で GSR を自動的に使用します。デザインで GSR を使用しない為には、<br />
Strategy 設定の Map Design 画面にて、Infer GSR の Value を False に変更します。<br />
図 9-1 GSR を使用しない設定<br />
◆ Wishbone / I2C / SPI の複数 IF から EFB リソースにアクセスする場合<br />
アクセス有効化コマンド(isc_enable/isc_enable_x)と、アクセス無効化コマンド(isc_disable + bypass)は、いずれの IF から<br />
発行しても効果は同じです。発行元の IF のみが有効化されるのではなく、すべての IF が有効化されます。同様に、<br />
アクセス無効化コマンドもいずれの IF から発行してもその効果は同じです。<br />
例えば、Wishbone と I2C を使用するデザインの場合、I2C からアクセス有効化コマンドを発行すると、コマンド有効後<br />
は、Wishbone からも I2C からも CFM/UFM リソースにアクセスすることができます。最後に Wishbone からアクセス無効<br />
化コマンドを発行して終了させることもできます。<br />
また、3 種の IF には優先順位があります。優先順位は高い方から、SPI、I2C、Wishbone となります。例えば、I2C アク<br />
セス中、Wishbone からのコマンドは受け付けません。逆に、I2C アクセス中に SPI からのアクセスが開始されると、I2C<br />
アクセスは中断され、SPI アクセスが開始されます。XO2 の EFB では、これらの IF 間の調停機能は実装していません。<br />
調停が必要な場合、お客様回路にて実装していただく必要があります。<br />
42<br />
ドキュメント番号 JUG10_001
MachXO2 On-chip Flash memory アクセス<br />
ユーザーガイド<br />
February. 2012 Ver 1.2.2<br />
◆ I2C アドレスの使い分け<br />
プライマリ I2C アドレスは、設計時に IPexpress にて、上位 5it をお客様指定します。下位 2bit は IPexpress ツール画<br />
面上グレーアウトしており、01 と固定値で表示されています。ただし、下位 2bit は 2 種の値を持っており、"00"のアドレ<br />
スと、"01"のアドレスで以下アクセス先を切り分けております。<br />
上位 5bit ユーザ指定 + 00 : UFM/CFM/デバイス ID 等が対象<br />
上位 5bit ユーザ指定 + 01 : WB 側が対象<br />
下位 01/00 いずれでも、正しいアドレスなので、ACK は返ります。例えば、ユーザ指定の上位 5bit を 10000 と指定し、<br />
UFM へアクセスする際、正しいアドレスは 100_0000 となります。なお、ブランクデバイスではアドレス 7bit がすべて固<br />
定されており、100_0000 となります。<br />
◆ I2C マスタ時のグリッジ<br />
EFB I2C マスタのシミュレーション及び実機動作にて、スタートコンディションの後の最初の SDA の”L”区間に、約<br />
7.2ns 程度のハザードが一回発生します。これは、XO2 デバイスの I2C-IF 部の構造に起因するもので、回避できませ<br />
ん。実際のボードでは、I2C のクロックエッジはレートも遅く、バスのプルアップ等の負荷も与えられる為、このハザード<br />
は減衰し悪影響を与えることは無いと考えられます。<br />
◆ コマンド完了までの時間<br />
図 9-2 I2C マスタ時のグリッジ<br />
コマンドの中には、完了までに時間がかかるものがあります。<br />
基本は busy をチェックしていただくか、下記時間ウエイトする等ご考慮下さい。<br />
Flash 1 ページ毎に : 200usec<br />
isc_enable に対して : 5usec<br />
program_done に対して : 200usec<br />
43<br />
ドキュメント番号 JUG10_001
MachXO2 On-chip Flash memory アクセス<br />
ユーザーガイド<br />
February. 2012 Ver 1.2.2<br />
10 改訂履歴<br />
表 10-1 改訂履歴<br />
バージョン リリース 改訂内容<br />
Ver1.0 June. 2011 ・初版リリース<br />
Ver1.1 August. 2011 ・4 章および 5 章の CFM/UFM インターフェイス有効化コマンドの説明を<br />
修正。これに伴い、表 4-9、表 4-14、表 5-1、表 5-10 も修正。<br />
Ver1.2.2 February. 2012 ・TN1204 v1.3/TN1205 v2.9 の内容を反映。5 章 追記(リードコマンド詳<br />
細、消去コマンド詳細、バイパスコマンド)。8 章 「Feature Row につい<br />
て」、9 章 「その他注意事項」追記。<br />
44<br />
ドキュメント番号 JUG10_001