Table 6-65 and Table 6-66 present timing requirements and switching characteristics for GPMC and NOR Flash
- Synchronous Mode.
Table 6-65 GPMC and NOR Flash Timing Requirements — Synchronous Mode see Figure 6-46, Figure 6-47, and Figure 6-50
| NO. |
PARAMETER |
DESCRIPTION |
MIN |
MAX |
UNIT |
| F12 |
tsu(dV-clkH) |
Setup time, GPMC_AD[15:0] valid before
GPMC_CLK high |
0.92 |
|
ns |
| F13 |
th(clkH-dV) |
Hold time, GPMC_AD[15:0] valid after
GPMC_CLK high |
2.09 |
|
ns |
| F21 |
tsu(waitV-clkH) |
Setup time, GPMC_WAIT[j](1)(2) valid before GPMC_CLK high |
0.92 |
|
ns |
| F22 |
th(clkH-waitV) |
Hold time, GPMC_WAIT[j](1)(2) valid after GPMC_CLK high |
2.09 |
|
ns |
(1) In
GPMC_WAIT[j], j is equal to 0 or 1.
(2) Wait
monitoring support is limited to a WaitMonitoringTime value > 0. For a full
description of wait monitoring feature, see General-Purpose Memory Controller
(GPMC) section in the device TRM.
Table 6-66 GPMC and NOR Flash Switching Characteristics – Synchronous Mode see Figure 6-46,
Figure 6-47, Figure 6-48, Figure 6-49, and Figure 6-50
| NO. |
PARAMETER |
DESCRIPTION |
MIN |
MAX |
UNIT |
| F0 |
tc(clk) |
Cycle time, GPMC_CLK(16) |
7.52 |
|
ns |
| F1 |
tw(clkH) |
Typical pulse duration,
GPMC_CLK high |
0.475P(13) - 0.3 |
|
ns |
| F1 |
tw(clkL) |
Typical pulse duration,
GPMC_CLK low |
0.475P(13) - 0.3 |
|
ns |
| F2 |
td(clkH-csnV) |
Delay time, GPMC_CLK rising
edge to GPMC_CSn[i] transition(12) |
F(5) - 2.2 |
F(5) + 3.75 |
ns |
| F3 |
td(clkH-CSn[i]V) |
Delay time, GPMC_CLK rising
edge to GPMC_CSn[i]
invalid(12) |
D(4) - 2.2 |
D(4) + 4.5 |
ns |
| F4 |
td(aV-clk) |
Delay time, GPMC_A[27:1]
valid to GPMC_CLK first edge |
B(2) - 2.3 |
B(2) + 4.5 |
ns |
| F5 |
td(clkH-aIV) |
Delay time, GPMC_CLK rising
edge to GPMC_A[27:1] invalid |
-2.3 |
4.5 |
ns |
| F6 |
td(be[x]nV-clk) |
Delay time, GPMC_BE0n_CLE,
GPMC_BE1n valid to GPMC_CLK first edge |
B(2) - 2.3 |
B(2) + 1.9 |
ns |
| F7 |
td(clkH-be[x]nIV) |
Delay time, GPMC_CLK rising
edge to GPMC_BE0n_CLE, GPMC_BE1n invalid |
D(4) - 2.3 |
D(4) + 1.9 |
ns |
| F8 |
td(clkH-advn) |
Delay time, GPMC_CLK rising
edge to GPMC_ADVn_ALE transition |
G(6) - 2.3 |
G(6) + 4.5 |
ns |
| F9 |
td(clkH-advnIV) |
Delay time, GPMC_CLK rising
edge to GPMC_ADVn_ALE invalid |
D(4) - 2.3 |
D(4) + 4.5 |
ns |
| F10 |
td(clkH-oen) |
Delay time, GPMC_CLK rising
edge to GPMC_OEn_REn transition |
H(7) - 2.3 |
H(7) + 3.5 |
ns |
| F11 |
td(clkH-oenIV) |
Delay time, GPMC_CLK rising
edge to GPMC_OEn_REn invalid |
D(4) - 2.3 |
D(4) + 3.5 |
ns |
| F14 |
td(clkH-wen) |
Delay time, GPMC_CLK rising
edge
to
GPMC_WEn transition |
I(8) - 2.3 |
I(8) + 4.5 |
ns |
| F15 |
td(clkH-do) |
Delay time, GPMC_CLK rising
edge to GPMC_AD[15:0] transition(9) |
- 2.3 |
+ 2.7 |
ns |
| F15 |
td(clkL-do) |
Delay time, GPMC_CLK falling
edge to GPMC_AD[15:0] data bus transition(10) |
- 2.3 |
+ 2.7 |
ns |
| F15 |
td(clkL-do). |
Delay time, GPMC_CLK falling
edge to GPMC_AD[15:0] data bus transition(11) |
- 2.3 |
+ 2.7 |
ns |
| F17 |
td(clkH-be[x]n) |
Delay time, GPMC_CLK rising
edge to GPMC_BE0n_CLE, GPMC_BE1n transition(9) |
- 2.3 |
+ 1.9 |
ns |
| F17 |
td(clkL-be[x]n) |
Delay time, GPMC_CLK falling
edge to GPMC_BE0n_CLE, GPMC_BE1n transition(10) |
- 2.3 |
+ 1.9 |
ns |
| F17 |
td(clkL-be[x]n). |
Delay time, GPMC_CLK falling
edge to GPMC_BE0n_CLE, GPMC_BE1n transition(11) |
- 2.3 |
+ 1.9 |
ns |
| F18 |
tw(csnV) |
Pulse duration,
GPMC_CSn[i](12) low |
A(1) |
|
ns |
| F19 |
tw(be[x]nV) |
Pulse duration,
GPMC_BE0n_CLE, GPMC_BE1n low |
C(3) |
|
ns |
| F20 |
tw(advnV) |
Pulse duration,
GPMC_ADVn_ALE low |
K(14) |
|
ns |
(1) For
single read: A = (CSRdOffTime - CSOnTime) × (TimeParaGranularity + 1) ×
GPMC_FCLK
(15)
For single write: A = (CSWrOffTime - CSOnTime) ×
(TimeParaGranularity + 1) × GPMC_FCLK
(15)
For burst read: A = (CSRdOffTime - CSOnTime + (n
- 1) × PageBurstAccessTime) × (TimeParaGranularity + 1) × GPMC_FCLK
(15)
For burst write: A = (CSWrOffTime - CSOnTime + (n
- 1) × PageBurstAccessTime) × (TimeParaGranularity + 1) × GPMC_FCLK
(15)
With n being the page burst access number.
(2) Address bus / Byte Enables become valid at start of cycle, GPMC_CLK activation
time may be delayed after start of cycle
B = ClkActivationTime ×
GPMC_FCLK
(15)
(3) For
single read: C = RdCycleTime × (TimeParaGranularity + 1) × GPMC_FCLK
(15)
For single write: C = WrCycleTime ×
(TimeParaGranularity + 1) × GPMC_FCLK
(15)
For burst read: C = (RdCycleTime + (n - 1) ×
PageBurstAccessTime) × (TimeParaGranularity + 1) × GPMC_FCLK
(15)
For burst write: C = (WrCycleTime + (n - 1) ×
PageBurstAccessTime) × (TimeParaGranularity + 1) × GPMC_FCLK
(15)
With n being the page burst access number.
(4) For
single read: D = (RdCycleTime - RdAccessTime) × (TimeParaGranularity + 1) ×
GPMC_FCLK
(15)
For single write: D = (WrCycleTime -
WrAccessTime) × (TimeParaGranularity + 1) × GPMC_FCLK
(15)
For burst read: D = (RdCycleTime - RdAccessTime +
(n - 1) × PageBurstAccessTime) × (TimeParaGranularity + 1) × GPMC_FCLK
(15)
For burst write: D = (WrCycleTime - WrAccessTime
+ (n - 1) × PageBurstAccessTime) × (TimeParaGranularity + 1) × GPMC_FCLK
(15)
With n being the page burst access number.
(5) For
CSn falling edge (CS activated):
- Case GPMCFCLKDIVIDER = 0:
- F = 0.5 ×
CSExtraDelay × GPMC_FCLK(15)
- Case GPMCFCLKDIVIDER = 1:
- F = 0.5 ×
CSExtraDelay × GPMC_FCLK(15) if (ClkActivationTime and CSOnTime are odd) or
(ClkActivationTime and CSOnTime are even)
- F = (1 + 0.5 ×
CSExtraDelay) × GPMC_FCLK(15) otherwise
- Case GPMCFCLKDIVIDER = 2:
- F = 0.5 ×
CSExtraDelay × GPMC_FCLK(15) if ((CSOnTime - ClkActivationTime) is a multiple of 3)
- F = (1 + 0.5 ×
CSExtraDelay) × GPMC_FCLK(15) if ((CSOnTime - ClkActivationTime - 1) is a multiple of
3)
- F = (2 + 0.5 ×
CSExtraDelay) × GPMC_FCLK(15) if ((CSOnTime - ClkActivationTime - 2) is a multiple of
3)
For CSn rising edge (CS deactivated) in
Reading mode:
- Case GPMCFCLKDIVIDER = 0:
- F = 0.5 ×
CSExtraDelay × GPMC_FCLK(15)
- Case GPMCFCLKDIVIDER = 1:
- F = 0.5 ×
CSExtraDelay × GPMC_FCLK(15) if (ClkActivationTime and CSRdOffTime are odd) or
(ClkActivationTime and CSRdOffTime are even)
- F = (1 + 0.5 ×
CSExtraDelay) × GPMC_FCLK(15) otherwise
- Case GPMCFCLKDIVIDER = 2:
- F = 0.5 ×
CSExtraDelay × GPMC_FCLK(15) if ((CSRdOffTime - ClkActivationTime) is a multiple of
3)
- F = (1 + 0.5 ×
CSExtraDelay) × GPMC_FCLK(15) if ((CSRdOffTime - ClkActivationTime - 1) is a multiple of
3)
- F = (2 + 0.5 ×
CSExtraDelay) × GPMC_FCLK(15) if ((CSRdOffTime - ClkActivationTime - 2) is a multiple of
3)
For CSn rising edge (CS deactivated) in
Writing mode:
- Case GPMCFCLKDIVIDER = 0:
- F = 0.5 ×
CSExtraDelay × GPMC_FCLK(15)
- Case GPMCFCLKDIVIDER = 1:
- F = 0.5 ×
CSExtraDelay × GPMC_FCLK(15) if (ClkActivationTime and CSWrOffTime are odd) or
(ClkActivationTime and CSWrOffTime are even)
- F = (1 + 0.5 ×
CSExtraDelay) × GPMC_FCLK(15) otherwise
- Case GPMCFCLKDIVIDER = 2:
- F = 0.5 ×
CSExtraDelay × GPMC_FCLK(15) if ((CSWrOffTime - ClkActivationTime) is a multiple of
3)
- F = (1 + 0.5 ×
CSExtraDelay) × GPMC_FCLK(15) if ((CSWrOffTime - ClkActivationTime - 1) is a multiple of
3)
- F = (2 + 0.5 ×
CSExtraDelay) × GPMC_FCLK(15) if ((CSWrOffTime - ClkActivationTime - 2) is a multiple of
3)
(6) For
ADV falling edge (ADV activated):
- Case GPMCFCLKDIVIDER = 0:
- G = 0.5 ×
ADVExtraDelay × GPMC_FCLK(15)
- Case GPMCFCLKDIVIDER = 1:
- G = 0.5 ×
ADVExtraDelay × GPMC_FCLK(15) if (ClkActivationTime and ADVOnTime are odd) or
(ClkActivationTime and ADVOnTime are even)
- G = (1 + 0.5 ×
ADVExtraDelay) × GPMC_FCLK(15) otherwise
- Case GPMCFCLKDIVIDER = 2:
- G = 0.5 ×
ADVExtraDelay × GPMC_FCLK(15) if ((ADVOnTime - ClkActivationTime) is a multiple of 3)
- G = (1 + 0.5 ×
ADVExtraDelay) × GPMC_FCLK(15) if ((ADVOnTime - ClkActivationTime - 1) is a multiple of
3)
- G = (2 + 0.5 ×
ADVExtraDelay) × GPMC_FCLK(15) if ((ADVOnTime - ClkActivationTime - 2) is a multiple of
3)
For ADV rising edge (ADV deactivated) in Reading
mode:
- Case GPMCFCLKDIVIDER = 0:
- G = 0.5 ×
ADVExtraDelay × GPMC_FCLK(15)
- Case GPMCFCLKDIVIDER = 1:
- G = 0.5 ×
ADVExtraDelay × GPMC_FCLK(15) if (ClkActivationTime and ADVRdOffTime are odd) or
(ClkActivationTime and ADVRdOffTime are even)
- G = (1 + 0.5 ×
ADVExtraDelay) × GPMC_FCLK(15) otherwise
- Case GPMCFCLKDIVIDER = 2:
- G = 0.5 ×
ADVExtraDelay × GPMC_FCLK(15) if ((ADVRdOffTime - ClkActivationTime) is a multiple of
3)
- G = (1 + 0.5 ×
ADVExtraDelay) × GPMC_FCLK(15) if ((ADVRdOffTime - ClkActivationTime - 1) is a multiple of
3)
- G = (2 + 0.5 ×
ADVExtraDelay) × GPMC_FCLK(15) if ((ADVRdOffTime - ClkActivationTime - 2) is a multiple of
3)
For ADV rising edge (ADV deactivated) in Writing
mode:
- Case GPMCFCLKDIVIDER = 0:
- G = 0.5 ×
ADVExtraDelay × GPMC_FCLK(15)
- Case GPMCFCLKDIVIDER = 1:
- G = 0.5 ×
ADVExtraDelay × GPMC_FCLK(15) if (ClkActivationTime and ADVWrOffTime are odd) or
(ClkActivationTime and ADVWrOffTime are even)
- G = (1 + 0.5 ×
ADVExtraDelay) × GPMC_FCLK(15) otherwise
- Case GPMCFCLKDIVIDER = 2:
- G = 0.5 ×
ADVExtraDelay × GPMC_FCLK(15) if ((ADVWrOffTime - ClkActivationTime) is a multiple of
3)
- G = (1 + 0.5 ×
ADVExtraDelay) × GPMC_FCLK(15) if ((ADVWrOffTime - ClkActivationTime - 1) is a multiple of
3)
- G = (2 + 0.5 ×
ADVExtraDelay) × GPMC_FCLK(15) if ((ADVWrOffTime - ClkActivationTime - 2) is a multiple of
3)
(7) For
OE falling edge (OE activated) and IO DIR rising edge (Data Bus input
direction):
- Case GPMCFCLKDIVIDER = 0:
- H = 0.5 ×
OEExtraDelay × GPMC_FCLK(15)
- Case GPMCFCLKDIVIDER = 1:
- H = 0.5 ×
OEExtraDelay × GPMC_FCLK(15) if (ClkActivationTime and OEOnTime are odd) or
(ClkActivationTime and OEOnTime are even)
- H = (1 + 0.5 ×
OEExtraDelay) × GPMC_FCLK(15) otherwise
- Case GPMCFCLKDIVIDER = 2:
- H = 0.5 ×
OEExtraDelay × GPMC_FCLK(15) if ((OEOnTime - ClkActivationTime) is a multiple of 3)
- H = (1 + 0.5 ×
OEExtraDelay) × GPMC_FCLK(15) if ((OEOnTime - ClkActivationTime - 1) is a multiple of
3)
- H = (2 + 0.5 ×
OEExtraDelay) × GPMC_FCLK(15) if ((OEOnTime - ClkActivationTime - 2) is a multiple of
3)
For OE rising edge (OE deactivated):
- Case GPMCFCLKDIVIDER = 0:
- H = 0.5 ×
OEExtraDelay × GPMC_FCLK(15)
- Case GPMCFCLKDIVIDER = 1:
- H = 0.5 ×
OEExtraDelay × GPMC_FCLK(15) if (ClkActivationTime and OEOffTime are odd) or
(ClkActivationTime and OEOffTime are even)
- H = (1 + 0.5 ×
OEExtraDelay) × GPMC_FCLK(15) otherwise
- Case GPMCFCLKDIVIDER = 2:
- H = 0.5 ×
OEExtraDelay × GPMC_FCLK(15) if ((OEOffTime - ClkActivationTime) is a multiple of 3)
- H = (1 + 0.5 ×
OEExtraDelay) × GPMC_FCLK(15) if ((OEOffTime - ClkActivationTime - 1) is a multiple of
3)
- H = (2 + 0.5 ×
OEExtraDelay) × GPMC_FCLK(15) if ((OEOffTime - ClkActivationTime - 2) is a multiple of
3)
(8) For
WE falling edge (WE activated):
- Case GPMCFCLKDIVIDER = 0:
- I = 0.5 ×
WEExtraDelay × GPMC_FCLK(15)
- Case GPMCFCLKDIVIDER = 1:
- I = 0.5 ×
WEExtraDelay × GPMC_FCLK(15) if (ClkActivationTime and WEOnTime are odd) or
(ClkActivationTime and WEOnTime are even)
- I = (1 + 0.5 ×
WEExtraDelay) × GPMC_FCLK(15) otherwise
- Case GPMCFCLKDIVIDER = 2:
- I = 0.5 ×
WEExtraDelay × GPMC_FCLK(15) if ((WEOnTime - ClkActivationTime) is a multiple of 3)
- I = (1 + 0.5 ×
WEExtraDelay) × GPMC_FCLK(15) if ((WEOnTime - ClkActivationTime - 1) is a multiple of
3)
- I = (2 + 0.5 ×
WEExtraDelay) × GPMC_FCLK(15) if ((WEOnTime - ClkActivationTime - 2) is a multiple of
3)
For WE rising edge (WE deactivated):
- Case GPMCFCLKDIVIDER = 0:
- I = 0.5 ×
WEExtraDelay × GPMC_FCLK (13)
- Case GPMCFCLKDIVIDER = 1:
- I = 0.5 ×
WEExtraDelay × GPMC_FCLK(15) if (ClkActivationTime and WEOffTime are odd) or
(ClkActivationTime and WEOffTime are even)
- I = (1 + 0.5 ×
WEExtraDelay) × GPMC_FCLK(15) otherwise
- Case GPMCFCLKDIVIDER = 2:
- I = 0.5 ×
WEExtraDelay × GPMC_FCLK(15) if ((WEOffTime - ClkActivationTime) is a multiple of 3)
- I = (1 + 0.5 ×
WEExtraDelay) × GPMC_FCLK(15) if ((WEOffTime - ClkActivationTime - 1) is a multiple of
3)
- I = (2 + 0.5 ×
WEExtraDelay) × GPMC_FCLK(15) if ((WEOffTime - ClkActivationTime - 2) is a multiple of
3)
(9) Case CLK DIV 1 mode, first transfer only: Data and byte enables transition on
rise edge of GPMC_CLK
- Non-multiplexed mode:
data transition at start of cycle
- Multiplexed mode: data
transition at WRDATAONADMUXBUS × (TimeParaGranularity + 1) ×
GPMC_FCLK(15)
(10) Case CLK DIV 1 mode, all data and
byte enables after initial transfer: Data and byte enables transition on fall
edge of GPMC_CLK (Half cycle of GPMC_CLK)
(11) Case modes other than CLK DIV 1 mode (GPMC_CLK divided down from GPMC_FCLK):
All data and byte enables transition on fall edge of GPMC_CLK (Half cycle of
GPMC_CLK). ClkActivationTime, GPMCFCLKDIVIDER, RDACCESSTIME/WRACCESSTIME, and
PAGEBURSTACCESSTIME configuration must be configured to enforce data and byte
enables transition on falling edge of GPMC_CLK (to be latched on rise edge of
GPMC_CLK)
(12) In
GPMC_CSn[i], i is equal to 0, 1, 2 or 3.
(13) P
= GPMC_CLK period in ns
(14) For read: K = (ADVRdOffTime - ADVOnTime) × (TimeParaGranularity + 1) ×
GPMC_FCLK
(15)
For write: K = (ADVWrOffTime - ADVOnTime) ×
(TimeParaGranularity + 1) × GPMC_FCLK
(15)
(15) GPMC_FCLK is general-purpose memory controller internal
functional clock period in ns.
(16) Related to the GPMC_CLK output clock maximum and minimum frequencies
programmable in the GPMC module by setting the GPMC_CONFIG1_i configuration
register bit field GPMCFCLKDIVIDER.