インテル® FPGA IPの汎用シリアル・フラッシュ・インターフェイスのユーザーガイド

ID 683419
日付 4/10/2023
Public
ドキュメント目次

1.8.5. フラッシュからメモリーを読み取る

次のレジスターは、読み取りメモリーを実行するために使用されます。

  • 動作プロトコル設定レジスター
  • コントロール・レジスター
  • リード・ステータスレジスター

読み取りメモリーの実行(拡張モード)

proc read {} {
グローバルmpoperationing_protocols_settingcontrol_register read_instr
master_write_32 $ mp $operating_protocols_setting 0x00000000
master_write_32 $ mp $ control_register 0x00000001
master_write_32 $ mp $ read_instr 0x00000003
master_read_32/60/0100000/0x1
}

拡張モードのメモリーの読み取りを実行するには、次の手順に従います。

  1. グローバル変数を定義します。
  2. 動作プロトコル設定レジスターに書き込んで、読み出しメモリー動作の転送モードを設定します。この例では、読み取りの転送モードは(1-1-1)です。
    1. 命令転送モードを設定する [1:0]0、読み取りアドレス転送モード [13:12]0、および読み出し転送モード [17:16]0
  3. 制御レジスターに書き込み、メモリー読み取り操作のバイトアドレッシング・モードを選択します。
    1. この例では、3バイトのアドレッシング・モードを使用しています。セットビット 80
  4. 読み取り命令レジスターに書き込んで、読み取りメモリーの動作をカスタマイズします。
    1. 読み取り操作コードを設定する [7:0]03 03hは読み取り用のオペコードです。
    2. ダミーサイクルを設定する [12:8]0 読み取り操作にはダミーサイクルが含まれていないためです。
  5. レジスターを設定した後、アドレスのメモリー内容の読み取りを実行できます。
    1. この例では、1ワードのデータがアドレスから読み取られます 0x01000000

デュアル出力高速読み取りの実行(デュアルSPIモード)

proc dual_output_fast_read {} {
グローバルmpoperationing_protocols_settingcontrol_register read_instr
master_write_32 $ mp $operating_protocols_setting 0x00011001
master_write_32 $ mp $ control_register 0x00000101
master_write_32 $ mp $ read_instr 0x00000A3B
master_read_32  C27  0x00000100 0x1
}

デュアル出力高速読み取りモードを実行するには、次の手順に従います。

  1. グローバル変数を定義します。
  2. 動作プロトコル設定レジスターに書き込んで、読み出しメモリー動作の転送モードを設定します。この例では、読み取りの転送モードは(2-2-2)です。
    1. 命令転送モードを設定する [1:0]1、読み取りアドレス転送モード [13:12]1、および読み出し転送モード [17:16]1
  3. 制御レジスターに書き込み、メモリー読み取り操作のバイトアドレッシング・モードを選択します。
    1. この例では、4バイトのアドレッシング・モードを使用しています。セットビット 81
  4. 読み取り命令レジスターに書き込んで、読み取りメモリーの動作をカスタマイズします。
    1. 読み取り操作コードを設定する [7:0]3B 3Bhは、デュアル出力高速読み取りのオペコードです。
    2. ダミーサイクルを設定する [12:8]A デュアル出力の高速読み取り操作には10個のダミーサイクルが含まれているためです。
  5. レジスターを設定した後、アドレスでデュアル出力高速読み取りメモリーコンテンツを実行できます。
    1. この例では、メモリーの内容はアドレスから読み取られます 0x00000100