STM32G4 - FMC
フレキシブル･メモリ･コントローラ

1.0版

STM32フレキシブルメモリコントローラのプレゼンテーションにようこそ。ここでは、NOR Flash、SRAM、PSRAM、NAND Flashメモリなどの外部メモリに接続するために使用される、このインタフェースのすべての機能について説明します。

1

概要• FMCは以下の外部メモリをサポート

2• NOR Flash/PSRAMコントローラ• NANDメモリコントローラ
FMC
NOR/PSRAM
メモリ
コントローラ

割込み

AHB

設定
レジスタ

NOR
信号

共有信号
NAND
メモリ
コントローラNAND
信号

アプリケーション側の利点• RAMの拡張• Flashメモリの拡張• パラレル･インタフェース（インテル8080/モトローラ6800）

STM32G4製品に組み込まれたFMCコントローラは、2個のメモリコントローラで外部メモリをサポートしています。NOR
Flash/PSRAMメモリコントローラとNAND Flashメモリコントロー
ラです。これによって、CPUはNORおよびNAND Flashメモリ、PSRAM、SRAMを含む外部メモリと通信できます。このインタフェースは、外部メモリやその他のパラレルインタフェースと簡単に接続できます。FMCコントローラのメリットには、RAMとFlashメモリ空間の拡張だけでなく、インテル8080およびモトローラ6800モードをサポートするほとんどのLCDコントローラとシームレスにインタフェース接続できる機能もあります。このLCDパラレルインタフェース機能によって、組込みコントローラや専用の高速化機能を持つ外部コントローラを使用した高性能ソリューションを含むLCDモジュールを使用したコスト効率のよいグラフィックアプリケーションを構築しやすくなります。

2

主な機能

3

• 完全に独立したバンク• 個別の外部メモリをサポートする2個のバンク• 各メモリバンクに対する独立したチップセレクト• メモリバンクごとに独立した設定• 柔軟な設定• 最大HCLK/2のFMC外部アクセス周波数• 幅広いデバイスをサポートするプログラム可能なタイミング• 8ビットまたは16ビットのデータ･バス• 外部非同期ウェイト制御• 拡張モード（読出しタイミングと書き込みタイミングが異なるプロトコル）• 同期デバイスへのバースト・モード・アクセスをサポート（NOR FlashおよびPSRAM）

FMCコントローラは、独立した2つのバンクを提供し、独立した外部メモリをサポートします。
各バンクには、独立したチップセレクトがあり、独立した設定が可能です。
各バンクには、プログラム可能なタイミング、設定可能な8ビットまたは16ビットのデータバスが備わっており、NOR FlashやPSRAMなど同期メモリに対する非同期モードやバーストモードでのメモリアクセスが可能です。
同期メモリには、最大でHCLKを2分周した周波数でアクセスできます。

3

サポート･デバイス

4

幅広いインタフェースおよびメモリと互換• メモリマップド･デバイス••••

スタティック・ランダム・アクセス・メモリ（SRAM）
読出し専用メモリ（ROM）
NOR/OneNANDTM Flashメモリ
PSRAM• NAND Flashメモリ• ECCハードウェアを搭載し、最大8KBのデータを読み書き可能• 3つの割込み可能なソース（レベル、立上がりおよび立下りエッジ）• パラレル LCDモジュール• インテル8080およびモトローラ6800

FMCコントローラは、幅広いデバイスおよびメモリをサポートしています。
以下の静的メモリマップデバイスとのインタフェース:• スタティック・ランダム・アクセス・メモリ（SRAM）• 読出し専用メモリ（ROM）• NOR/OneNANDTM Flashメモリ• PSRAM.
FMCはNAND Flashメモリとのインタフェースも備えており、最大8キロバイトの読取りまたは書込みデータのエラーコード訂正（ECC）をサポートします。NAND Flashレディー/ビジー信号で立上がりエッジ、立下がりエッジ、またはハイレベルが検出されたときに割り込みを生成するように、3つの割込みソースの設定ができます。
さらに、パラレルインタフェースのLCDモジュールを使用する際のFMCインタフェースは、インテル8080およびモトローラ6800モードをサポートしており、さまざまなLCDインタフェースに適合できる柔軟性があります。
4バンクメモリ･マッピング

5• 外部メモリは4つの固定サイズのバンクに分かれる• バンク1（4x64メガバイト）NOR Flash、OneNANDTM、SRAM、PSRAM向け• バンク3（256メガバイト）NAND Flash向け• バンク2と4は予約済み

0x9FFF_FFFF
0x9000_0000
0x8FFF_FFFF
0x8000_0000
0x7FFF_FFFF
0x7000_0000
0x6FFF_FFFF
0x6000_0000

バンク4
予約済み
バンク3
256メガバイト

NAND Flash

バンク2
予約済み
バンク1
4x64メガバイト

NOR/PSRAM/SRAM/OneNAND

外部メモリ領域は、それぞれ256メガバイトの固定サイズバンクに分割されます。
2つの外部メモリバンクはFMC専用です。
バンク1はNOR/PSRAMコントローラに接続され、バンク3はNANDコントローラに接続されています。
バンク2と4は予約済みです。

5

NOR/PSRAMのピンアウト
NOR Flash
I/O多重化無し

NOR Flash
I/Oの多重化

FMC_CLK
FMC_ A[25:0]
FMC_ D[15:0]
FMC_ NEx
FMC_ NOE
FMC_ NWE
FMC_ NL（アドレス有効）
FMC_ NWAIT

FMC_ CLK
FMC_ A[25:16]
FMC_ AD[15:0]
FMC_ NEx
FMC_ NOE
FMC_ NWE
FMC_ NL（アドレス有効）
FMC_ NWAIT

PSRAM
I/O多重化無し

PSRAM
I/O多重化

FMC_ CLK
FMC_ A[25:0]
FMC_ D[15:0]
FMC_ NEx
FMC_ NOE
FMC_NWE
FMC_ NL（アドレス有効）
FMC_ NWAIT
FMC_ NBL1
FMC_ NBL0

FMC_ CLK
FMC_ A[25:16]
FMC_ AD[15:0]
FMC_ NEx
FMC_ NOE
FMC_ NWE
FMC_ NL（アドレス有効）
FMC_ NWAIT
FMC_ NBL1
FMC_ NBL0

6

NOR Flash
データ
アドレス
ラッチ

アドレス

フレキシブルメモリコントローラは、多重化無しおよび多重化されたPSRAMおよびNORインタフェースをサポートします。
非多重化インタフェースは、アドレスとデータのシグナルが別に持っています。
マルチプレクサインタフェースは、16ビットデータと同じピン上で16アドレスLSBを駆動します。したがって、データの転送中にアドレスの下部を維持するために、外部アドレスのラッチが必要です。このラッチは、一部のNORデバイスおよびPSRAMデバイスに組み込まれています。
ラッチイネーブル信号は、FMC_NL出力ピンを通してFMCによって提供されます。このシグナルは、一部のNOR Flashデバイス
上でアドレス有効、NADVという信号名です。
FMC_NExは、4つのチップセレクト信号のうちの1つで、サブバンクごとに1つです。
PSRAMインタフェースに関しては、FMCはバイトレーン
FMC_NBL[1:0]を通じて正しいデータにアクセスします。
6

NOR/PSRAMのアドレス･マッピング

7• バンク1は、4つの外部NOR/PSRAMメモリ（4チップセレクト）と接続するため、それぞれ64メガバイトの4バンクに分割され、サポートされる• NOR Flash: 8/16ビット同期/非同期、多重化または非多重化• SRAM/ROM: 8/16ビット• PSRAM: 8/16ビット同期/非同期

0x9FFF_FFFF
0x9000_0000
0x8FFF_FFFF
0x8000_0000
0x7FFF_FFFF
0x7000_0000
0x6FFF_FFFF
0x6000_0000

バンク4
予約済み
バンク3
256メガバイト
バンク2
予約済み
バンク1
4x64メガバイト

0x6FFF_FFFF
0x6C00_0000
0x6BFF_FFFF
0x6800_0000
0x67FF_FFFF
0x6400_0000
0x63FF_FFFF
0x6000_0000

サブバンク4 –チップセレクト4
64メガバイトサブバンク3 –チップセレクト3
64メガバイトサブバンク2 –チップセレクト2
64メガバイトサブバンク1 –チップセレクト1
64メガバイトバンク1は、最大4つのNOR FlashメモリまたはPSRAMデバイスに対応するために使用されます。
このバンクは、4つの専用チップセレクトを持つ64メガバイトの4NORまたはPSRAMサブバンクに分割され、次のインタフェー
スを使用します。
• 8ビットまたは16ビットの多重化モードまたは非多重モードでの同期または非同期NOR Flash• 8ビットまたは16ビットの非同期SRAMおよびROM• 8ビットまたは16ビットの同期または非同期のPSRAMメモリ

7

NOR/PSRAMのインタフェース信号

8• FMCは、以下のメモリを駆動するのに適した信号を生成• 非同期SRAMおよびROM• 8ビット

FMC• 16ビット

FMC_NE[4:1]• PSRAM（CellularRAMおよびCosmoRAM）

FMC_NL（またはNADV）

NOR/PSRAM
メモリコントローラ• 非同期モード• バーストモード

FMC_D[31:0]

設定
レジスタ

FMC_NOE• 非同期モード• バーストモード• マルチプレクスまたは非マルチプレクス

FMC_CLKFMC_A[25:0]• マルチプレクスまたは非マルチプレクス• NOR FlashFMC_NBL[2:0]

FMC_NWE

NAND
メモリ
コントローラFMC_NWAIT

FMCは各バンクに独自のチップセレクト信号を出力し、外部デバイスへ一度に1回だけアクセスします。外部メモリは、NOR
PSRAMコントローラまたはNANDコントローラに接続され、アドレス、データ、制御信号を共有します。

8

NOR/PSRAMのタイミング設定

9

柔軟性の高いタイミング設定• FMC NOR/PSRAMコントローラは、バンクに接続されたメモリのタイミングを設定するために使用される• アドレス・セットアップ・フェーズ時間• アドレス・ホールド・フェーズ時間• データ・セットアップ・フェーズ時間• バス・ターンアラウンド・フェーズ時間• クロック分周比• データ遅延（同期バーストNOR Flashの場合）• アクセス･モード

NOR PSRAMコントローラは、サポートされるメモリに対して次のようにさまざまなタイミング・パラメータの設定できます。
• アドレス・セットアップ・フェーズ：最初のアクセス・フェーズの時間• アドレス・ホールド・フェーズ：アクセス・サイクルの中間フェー
ズの時間• データ・セットアップ・フェーズ：2番目のアクセスフェーズの時間• バス・ターンアラウンド・フェーズ：バス・ターンアラウンド・フェーズ時間• クロック分周比：1つのメモリ・クロックサイクル（CLK）内のAHB
クロックサイクル（HCLK）数• データ遅延：最初のデータ転送の前にメモリに発行されるクロックサイクル数• アクセスモード

9

NANDのアドレス･マッピング

10• バンク3は、2つのメモリ･スペースを介してNAND Flashメモリをサポートするために使用される• 共通メモリ領域• 属性メモリ空間• 各メモリ領域は3つのサブセクションに分かれる• データ・セクション（64キロバイト）: データの読取りまたは書込みに使用• コマンドセクション（64キロバイト）: NAND Flashメモリにコマンドを送信するために使用• アドレスセクション（128キロバイト）: NAND Flashメモリ･アドレスを指定するために使用0x8803_FFFF
0x8FFF_FFFF

0x8FFF_FFFF

0x8C00_0000
0x8BFF_FFFF

バンク3
256メガバイト

0x8000_0000

0x8800_0000
0x87FF_FFFF
0x8400_0000
0x83FF_FFFF
0x8000_0000

予約済み
属性メモリ空間64メガバイト

0x8800_0000

0x8003_FFFF

アドレスセクション
128キロバイト

0x8000_0000

コマンドセクション
64キロバイト
データセクション
64キロバイト

予約済み
共通メモリ領域
64メガバイトアドレスセクション
128キロバイト
コマンドセクション
64キロバイト
データセクション
64キロバイトバンク3は、NAND Flashメモリとのインタフェースに使用されます。これは、共通メモリ空間と属性メモリ空間の2つのメモリ空間に分かれています。両方のメモリ空間は似ています。共通メ
モリ領域は、NAND Flashデバイスに最後のアドレスバイトを書き込む場合を除き、すべてのNAND Flashの読取りおよび書込みアクセス用で利用されます。これにより、タイミングが異なる最後のアドレスバイトを書き込んで、特定のNAND Flashメモリに必要なプリウェイト機能を実装できます。
各メモリ領域は、次の3つのセクションに分割されます。
• データセクション（64キロバイト）: NAND Flashメモリからデータを読み書きするために使用します。
• コマンドセクション（64キロバイト）: NAND Flashメモリにコマンドを送信するために使用します。
• アドレスセクション（128キロバイト）: NAND Flashメモリアドレ
スを指定するために使用します。

10

NANDのインタフェース信号

11• FMCはNANDメモリを駆動するために適切な信号を生成• NAND Flash• 8ビット

FMC• 16ビット

NOR/PSRAM
メモリ
コントローラFMC_A[25:0]

設定レジスタ

FMC_D[15:0]
FMC_NOE
FMC_NWE

NAND
メモリ
コントローラFMC_NWAIT

FMC_NCE
FMC_INTFMCはNAND Flashメモリを駆動するために適切な信号を生成します。アドレス、データ、およびコントロール信号はNORおよびPSRAMコントローラと共有されます。
NAND Flashメモリデバイスのコマンド・ラッチ・イネーブル（またはCLE）およびアドレス・ラッチ・イネーブル（またはALE）信号は、それぞれアドレスライン16とアドレスライン17に接続されたFMCコントローラからのアドレス信号によって駆動されます。
ALEはアドレスセクションへの書込み時にアクティブであり、コマンドセクションへの書込み時にCLEがアクティブです。

11

NANDの設定

12• FMC NANDメモリコントローラは、以下の機能をサポート• 読取りおよび書込み操作ECCハードウェア･アクセラレーション（256バイトから8192バイト）• NANDバンクからの3つの割込みソース• 立上がりエッジ• 立下がりエッジ• 外部メモリのレベルReady/nBusy出力ピン• ウェイト機能の管理• コントローラは、NAND Flashメモリの準備が完了するまで待機（Ready/nBusyシグナル･ハイ）、新しいアクセスを開始• FMC NANDバンクのMPUメモリ属性は「デバイス」として設定する必要あり

FMC NANDメモリコントローラには、次の機能がサポートされています。
エラーコード訂正:ECCアルゴリズムは、NAND Flashメモリから読み取りまたは書き込み256~8192バイトごとに1ビットエラー訂
正および2ビットエラー検出を実行できます。これは、ハミング符号化アルゴリズムに基づいています。
3つの割込みソースを有効にして、NAND FlashメモリからのReady/Busy信号出力の立ち上がりエッジ、立ち下がりエッジ、またはレベルを検出できます。
ウェイト機能の管理:コントローラは、NAND Flashメモリの準備が整うまで待機し、新しいアクセスを開始します。
FMC NANDバンクのMPUメモリ属性は、デバイスとして設定する必要があります。

12NANDのタイミング設定

13• 各メモリ･スペースに対して、一連のパラメータを設定可能• セットアップ時間:コマンド･アサーションの前にアドレスを設定する時間• ウェイト時間:コマンドをアサートする時間• ホールド時間:コマンドのアサーション解除後にアドレスを保持する時間• データバスHiZ時間:アドレスからデータバス･ドライブまでの時間が有効

共通メモリと属性の各メモリスペースは、NAND Flashのコマンド、アドレス書き込み、およびデータの読み取り/書き込みアクセスに対して異なるタイミングで設定できます。
Ready/Busy管理の場合に、タイミングが以前のアクセスのタイミングと異なる必要がある場合、属性メモリ領域は、最後のアドレス書き込みアクセスに使用されます。
それ以外の場合は、共通スペースのみ必要です。
NAND Flash・アクセスの異なるフェーズのHCLKサイクル数を定義するには、次の4つのパラメーターが使用されます。
• セットアップ時間• ウェイト時間• ホールド時間• データバスHiZ時間

13

割込み
割込みイベント

14

説明

立上がりエッジ

立上がりエッジがFMC_INTピンで検出された

立下がりエッジ

立下がりエッジがFMC_INTピンで検出された

ハイレベル

ハイレベルがFMC_INTピンで検出された

NANDコントローラは3つの割り込みソースを提供しています:NAND FlashメモリからReady/Busy信号に接続されている場合、FMC_INTピンの立上がりエッジ、立下がりエッジ、およびハイレベル検出、になります。

14

低電力モード
モード

15

説明

RUN

有効

SLEEP

有効• ペリフェラル割込みによって、デバイスはSLEEPモードを終了

低電力RUN

有効低電力SLEEP

有効• ペリフェラル割込みによって、デバイスは低電力SLEEPモードを終了

STOP0/STOP1

停止• ペリフェラルレジスタの内容は保持

STANDBY

パワーダウン• ペリフェラルは、既存のドメインおよびシステムのSTANDBYモード終了後に再初期化する必要がある

SHUTDOWN

パワーダウン• ペリフェラルは、既存のドメインおよびシステムのSHUTDOWNモード終了後に再初期化する必要がある

FMCは、RUN、SLEEP、低電力RUN、低電力SLEEPモードでアクティブです。
FMC割込みによって、デバイスはSLEEPモードを終了します。
STOP0モードおよびSTOP1モードでは、FMCがフリーズされ、レジスタの内容が保持されます。
STANDBYまたはSHUTDOWNモードでは、FMCは電源をオフにして、その後再初期化する必要があります。

15

アプリケーション例

16• 接続性とユーザ･インタフェースを含むウェアラブル･アプリケーション
BTモジュール

UART
FMC/SPI

Flash
加速度計

Quad-SPIもしくはNOR Flash

SPI

ボタン

I/O

USBコネクタUSB

I2C

STM32G4

I2S

ディスプレイ
タッチパネル
オーディオ
コーデック• 外部メモリは、オーディオとグラフィカル（アイコン、フォントなど）のデータ等
ユーザ･インタフェースに必要な格納できる

ウェアラブルアプリケーションでは、高品質のユーザインタ
フェースと共に低電力管理が必要です。これは、STM32G4
FMCを使用することでLCDモジュールとのインタフェースに柔軟性と、広くプログラマブルなパラメータのおかげでディスプレイを接続することを実現することができます。さらに、FMCまたはQuad-SPIインタフェースを使用して、背景画像、高解像度アイコン、複数の言語をサポートするフォントなど、必要なすべてのグラフィカルコンテンツを含む外部Flashメモリにアクセスすることができます。着信音用の追加のオーディオデータも、外部Flashメモリによって提供される大きなスペースから恩恵を受けることができます。

16