Table 6-58 and Table 6-59 present timing requirements and switching characteristics for GPMC and NOR Flash
- Synchronous Mode.
Table 6-58 GPMC and NOR Flash Timing Requirements — Synchronous Mode see Figure 6-39,
Figure 6-40, and
Figure 6-43
| NO. |
PARAMETER |
DESCRIPTION |
MODE(4) |
MIN |
MAX |
MIN |
MAX |
UNIT |
| 32-bit data bus (up to 100MHz)(1) |
16-bit data bus (up to 133MHz)(1) |
| F12 |
tsu(dV-clkH) |
Setup time, GPMC0_AD[n:0](1) valid before GPMC0_CLK high |
div_by_1_mode |
1.81 |
|
1.12 |
|
ns |
| not_div_by_1_mode |
1.06 |
|
3.5 |
|
ns |
| F13 |
th(clkH-dV) |
Hold time, GPMC0_AD[n:0](1) valid after GPMC0_CLK high |
div_by_1_mode |
2.29 |
|
2.29 |
|
ns |
| not_div_by_1_mode |
2.29 |
|
2.29 |
|
ns |
| F21 |
tsu(waitV-clkH) |
Setup time, GPMC0_WAIT[j](2)(3) valid before GPMC0_CLK high |
div_by_1_mode |
1.81 |
|
1.12 |
|
ns |
| not_div_by_1_mode |
1.06 |
|
3.5 |
|
ns |
| F22 |
th(clkH-waitV) |
Hold time, GPMC0_WAIT[j](2)(3) valid after GPMC0_CLK high |
div_by_1_mode |
2.29 |
|
2.29 |
|
ns |
| not_div_by_1_mode |
2.29 |
|
2.29 |
|
ns |
(1) Synchronous Mode supports a
32-bit data bus (GPMC0_AD[31:0]) with GPMC0_CLK up to 100MHz and a 16-bit data
bus (GPMC0_AD[15:0]) with GPMC0_CLK up to 133MHz. Select the clock source of
GPMC0_FCLK which feeds GPMC0_CLK by writing to the CTRLMMR_GPMC0_CLKSEL
register:
- 133MHz: CLK_SEL = 0h -
MAIN_PLL0_HSDIV3_CLKOUT (default)
- 100MHz: CLK_SEL = 1h -
MAIN_PLL2_HSDIV3_CLKOUT
(2) In
GPMC_WAIT[j], j is equal to 0 or 1.
(3) 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.
(4) For
div_by_1_mode:
- GPMC_CONFIG1_i Register:
GPMCFCLKDIVIDER = 0h:
- GPMC0_CLK
frequency = GPMC0_FCLK frequency
For not_div_by_1_mode:
- GPMC_CONFIG1_i Register:
GPMCFCLKDIVIDER = 1h to 3h:
- GPMC0_CLK
frequency = GPMC0_FCLK frequency / (2 to 4)
Table 6-59 GPMC and NOR Flash Switching Characteristics – Synchronous Mode see Figure 6-39,
Figure 6-40, Figure 6-41, Figure 6-42, and Figure 6-43
| NO. |
PARAMETER |
DESCRIPTION |
MIN |
MAX |
UNIT |
| F0 |
tc(clk) |
Cycle time, GPMC0_CLK(16) |
7.52(1) |
|
ns |
| F1 |
tw(clkH) |
Typical pulse duration,
GPMC0_CLK high |
0.475P(14) - 0.3 |
|
ns |
| F1 |
tw(clkL) |
Typical pulse duration,
GPMC0_CLK low |
0.475P(14) - 0.3 |
|
ns |
| F2 |
td(clkH-csn[i]V) |
Delay time, GPMC0_CLK rising
edge to GPMC0_CSn[i](13) transition |
F(6) - 2.2 |
F(6) + 1.31 |
ns |
| F3 |
td(clkH-csn[i]IV) |
Delay time, GPMC0_CLK rising
edge to GPMC0_CSn[i](13) invalid |
D(5) - 2.2 |
D(5) + 1.31 |
ns |
| F4 |
td(aV-clk) |
Delay time, GPMC0_A[27:1]
valid to GPMC0_CLK first edge |
B(3) - 2.3 |
B(3) + 4.5 |
ns |
| F5 |
td(clkH-aIV) |
Delay time, GPMC0_CLK rising
edge to GPMC0_A[27:1] invalid |
-2.3 |
4.5 |
ns |
| F6 |
td(be[x]nV-clk) |
Delay time, GPMC0_BE0n_CLE,
GPMC0_BE1n, GPMC0_BE2n, GPMC0_BE3n valid to GPMC0_CLK first
edge |
B(3) - 2.3 |
B(3) + 1.9 |
ns |
| F7 |
td(clkH-be[x]nIV) |
Delay time, GPMC0_CLK rising
edge to GPMC0_BE0n_CLE, GPMC0_BE1n, GPMC0_BE2n, GPMC0_BE3n
invalid |
D(5) - 2.3 |
D(5) + 1.9 |
ns |
| F8 |
td(clkH-advn) |
Delay time, GPMC0_CLK rising
edge to GPMC0_ADVn_ALE transition |
G(7) - 2.3 |
G(7) + 4.5 |
ns |
| F9 |
td(clkH-advnIV) |
Delay time, GPMC0_CLK rising
edge to GPMC0_ADVn_ALE invalid |
D(5) - 2.3 |
D(5) + 4.5 |
ns |
| F10 |
td(clkH-oen) |
Delay time, GPMC0_CLK rising
edge to GPMC0_OEn_REn transition |
H(8) - 2.3 |
H(8) + 3.5 |
ns |
| F11 |
td(clkH-oenIV) |
Delay time, GPMC0_CLK rising
edge to GPMC0_OEn_REn invalid |
D(5) - 2.3 |
D(5) + 3.5 |
ns |
| F14 |
td(clkH-wen) |
Delay time, GPMC0_CLK rising
edge to GPMC0_WEn transition |
I(9) - 2.3 |
I(9) + 4.5 |
ns |
| F15 |
td(clkH-do) |
Delay time, GPMC0_CLK rising
edge to GPMC0_AD[n:0](1) transition(10) |
-2.3 |
2.7 |
ns |
| F15 |
td(clkL-do) |
Delay time, GPMC0_CLK
falling edge to GPMC0_AD[n:0](1) transition(11) |
-2.3 |
2.7 |
ns |
| F15 |
td(clkL-do) |
Delay time, GPMC0_CLK
falling edge to GPMC0_AD[n:0](1) transition(12) |
-2.3 |
2.7 |
ns |
| F17 |
td(clkH-be[x]n) |
Delay time, GPMC0_CLK rising
edge to GPMC0_BE0n_CLE, GPMC0_BE1n, GPMC0_BE2n, GPMC0_BE3n
transition(10) |
-2.3 |
1.9 |
ns |
| F17 |
td(clkL-be[x]n) |
Delay time, GPMC0_CLK
falling edge to GPMC0_BE0n_CLE, GPMC0_BE1n, GPMC0_BE2n, GPMC0_BE3n
transition(11) |
-2.3 |
1.9 |
ns |
| F17 |
td(clkL-be[x]n) |
Delay time, GPMC0_CLK
falling edge to GPMC0_BE0n_CLE, GPMC0_BE1n, GPMC0_BE2n, GPMC0_BE3n
transition(12) |
-2.3 |
1.9 |
ns |
| F18 |
tw(csnV) |
Pulse duration,
GPMC0_CSn[i](13) low |
A(2) |
|
ns |
| F19 |
tw(be[x]nV) |
Pulse duration,
GPMC0_BE0n_CLE, GPMC0_BE1n, GPMC0_BE2n, GPMC0_BE3n low |
C(4) |
|
ns |
| F20 |
tw(advnV) |
Pulse duration,
GPMC0_ADVn_ALE low |
K(15) |
|
ns |
(1) Synchronous Mode supports a
32-bit data bus (GPMC0_AD[31:0]) with GPMC0_CLK up to 100MHz and a 16-bit data
bus (GPMC0_AD[15:0]) with GPMC0_CLK up to 133MHz. Select the clock source of
GPMC0_FCLK which feeds GPMC0_CLK by writing to the CTRLMMR_GPMC0_CLKSEL
register:
- 133MHz: CLK_SEL = 0h -
MAIN_PLL0_HSDIV3_CLKOUT (default)
- 100MHz: CLK_SEL = 1h -
MAIN_PLL2_HSDIV3_CLKOUT
(2) For
single read: A = (CSRdOffTime - CSOnTime) × (TimeParaGranularity + 1) ×
GPMC0_FCLK
(14)
For burst read: A = (CSRdOffTime - CSOnTime + (n
- 1) × PageBurstAccessTime) × (TimeParaGranularity + 1) × GPMC0_FCLK
(14)
For burst write: A = (CSWrOffTime - CSOnTime + (n
- 1) × PageBurstAccessTime) × (TimeParaGranularity + 1) × GPMC0_FCLK
(14)
With n being the page burst access number.
(3) Address bus / Byte Enables become valid at start of cycle, GPMC0_CLK activation
time may be delayed after start of cycle
B = ClkActivationTime ×
GPMC0_FCLK
(14)
(4) For
single read: C = RdCycleTime × (TimeParaGranularity + 1) × GPMC0_FCLK
(14)
For burst read: C = (RdCycleTime + (n - 1) ×
PageBurstAccessTime) × (TimeParaGranularity + 1) × GPMC0_FCLK
(14)
For burst write: C = (WrCycleTime + (n - 1) ×
PageBurstAccessTime) × (TimeParaGranularity + 1) × GPMC0_FCLK
(14)
With n being the page burst access number.
(5) For
single read: D = (RdCycleTime - RdAccessTime) × (TimeParaGranularity + 1) ×
GPMC0_FCLK
(14)
For single write: D = (WrCycleTime -
WrAccessTime) × (TimeParaGranularity + 1) × GPMC0_FCLK
(14)
For burst read: D = (RdCycleTime - RdAccessTime +
(n - 1) × PageBurstAccessTime) × (TimeParaGranularity + 1) × GPMC0_FCLK
(14)
For burst write: D = (WrCycleTime - WrAccessTime
+ (n - 1) × PageBurstAccessTime) × (TimeParaGranularity + 1) × GPMC0_FCLK
(14)
With n being the page burst access number.
(6) For
CSn falling edge (CS activated):
- Case GPMCFCLKDIVIDER = 0:
- F = 0.5 ×
CSExtraDelay × GPMC0_FCLK(14)
- Case GPMCFCLKDIVIDER = 1:
- F = 0.5 ×
CSExtraDelay × GPMC0_FCLK(14) if (ClkActivationTime and CSOnTime are odd) or
(ClkActivationTime and CSOnTime are even)
- F = (1 + 0.5 ×
CSExtraDelay) × GPMC0_FCLK(14) otherwise
- Case GPMCFCLKDIVIDER = 2:
- F = 0.5 ×
CSExtraDelay × GPMC0_FCLK(14) if ((CSOnTime - ClkActivationTime) is a multiple of 3)
- F = (1 + 0.5 ×
CSExtraDelay) × GPMC0_FCLK(14) if ((CSOnTime - ClkActivationTime - 1) is a multiple of
3)
- F = (2 + 0.5 ×
CSExtraDelay) × GPMC0_FCLK(14) 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 × GPMC0_FCLK(14)
- Case GPMCFCLKDIVIDER = 1:
- F = 0.5 ×
CSExtraDelay × GPMC0_FCLK(14) if (ClkActivationTime and CSRdOffTime are odd) or
(ClkActivationTime and CSRdOffTime are even)
- F = (1 + 0.5 ×
CSExtraDelay) × GPMC0_FCLK(14) otherwise
- Case GPMCFCLKDIVIDER = 2:
- F = 0.5 ×
CSExtraDelay × GPMC0_FCLK(14) if ((CSRdOffTime - ClkActivationTime) is a multiple of
3)
- F = (1 + 0.5 ×
CSExtraDelay) × GPMC0_FCLK(14) if ((CSRdOffTime - ClkActivationTime - 1) is a multiple of
3)
- F = (2 + 0.5 ×
CSExtraDelay) × GPMC0_FCLK(14) 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 × GPMC0_FCLK(14)
- Case GPMCFCLKDIVIDER = 1:
- F = 0.5 ×
CSExtraDelay × GPMC0_FCLK(14) if (ClkActivationTime and CSWrOffTime are odd) or
(ClkActivationTime and CSWrOffTime are even)
- F = (1 + 0.5 ×
CSExtraDelay) × GPMC0_FCLK(14) otherwise
- Case GPMCFCLKDIVIDER = 2:
- F = 0.5 ×
CSExtraDelay × GPMC0_FCLK(14) if ((CSWrOffTime - ClkActivationTime) is a multiple of
3)
- F = (1 + 0.5 ×
CSExtraDelay) × GPMC0_FCLK(14) if ((CSWrOffTime - ClkActivationTime - 1) is a multiple of
3)
- F = (2 + 0.5 ×
CSExtraDelay) × GPMC0_FCLK(14) if ((CSWrOffTime - ClkActivationTime - 2) is a multiple of
3)
(7) For
ADV falling edge (ADV activated):
- Case GPMCFCLKDIVIDER = 0:
- G = 0.5 ×
ADVExtraDelay × GPMC0_FCLK(14)
- Case GPMCFCLKDIVIDER = 1:
- G = 0.5 ×
ADVExtraDelay × GPMC0_FCLK(14) if (ClkActivationTime and ADVOnTime are odd) or
(ClkActivationTime and ADVOnTime are even)
- G = (1 + 0.5 ×
ADVExtraDelay) × GPMC0_FCLK(14) otherwise
- Case GPMCFCLKDIVIDER = 2:
- G = 0.5 ×
ADVExtraDelay × GPMC0_FCLK(14) if ((ADVOnTime - ClkActivationTime) is a multiple of 3)
- G = (1 + 0.5 ×
ADVExtraDelay) × GPMC0_FCLK(14) if ((ADVOnTime - ClkActivationTime - 1) is a multiple of
3)
- G = (2 + 0.5 ×
ADVExtraDelay) × GPMC0_FCLK(14) 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 × GPMC0_FCLK(14)
- Case GPMCFCLKDIVIDER = 1:
- G = 0.5 ×
ADVExtraDelay × GPMC0_FCLK(14) if (ClkActivationTime and ADVRdOffTime are odd) or
(ClkActivationTime and ADVRdOffTime are even)
- G = (1 + 0.5 ×
ADVExtraDelay) × GPMC0_FCLK(14) otherwise
- Case GPMCFCLKDIVIDER = 2:
- G = 0.5 ×
ADVExtraDelay × GPMC0_FCLK(14) if ((ADVRdOffTime - ClkActivationTime) is a multiple of
3)
- G = (1 + 0.5 ×
ADVExtraDelay) × GPMC0_FCLK(14) if ((ADVRdOffTime - ClkActivationTime - 1) is a multiple of
3)
- G = (2 + 0.5 ×
ADVExtraDelay) × GPMC0_FCLK(14) 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 × GPMC0_FCLK(14)
- Case GPMCFCLKDIVIDER = 1:
- G = 0.5 ×
ADVExtraDelay × GPMC0_FCLK(14) if (ClkActivationTime and ADVWrOffTime are odd) or
(ClkActivationTime and ADVWrOffTime are even)
- G = (1 + 0.5 ×
ADVExtraDelay) × GPMC0_FCLK(14) otherwise
- Case GPMCFCLKDIVIDER = 2:
- G = 0.5 ×
ADVExtraDelay × GPMC0_FCLK(14) if ((ADVWrOffTime - ClkActivationTime) is a multiple of
3)
- G = (1 + 0.5 ×
ADVExtraDelay) × GPMC0_FCLK(14) if ((ADVWrOffTime - ClkActivationTime - 1) is a multiple of
3)
- G = (2 + 0.5 ×
ADVExtraDelay) × GPMC0_FCLK(14) if ((ADVWrOffTime - ClkActivationTime - 2) is a multiple of
3)
(8) For
OE falling edge (OE activated) and IO DIR rising edge (Data Bus input
direction):
- Case GPMCFCLKDIVIDER = 0:
- H = 0.5 ×
OEExtraDelay × GPMC0_FCLK(14)
- Case GPMCFCLKDIVIDER = 1:
- H = 0.5 ×
OEExtraDelay × GPMC0_FCLK(14) if (ClkActivationTime and OEOnTime are odd) or
(ClkActivationTime and OEOnTime are even)
- H = (1 + 0.5 ×
OEExtraDelay) × GPMC0_FCLK(14) otherwise
- Case GPMCFCLKDIVIDER = 2:
- H = 0.5 ×
OEExtraDelay × GPMC0_FCLK(14) if ((OEOnTime - ClkActivationTime) is a multiple of 3)
- H = (1 + 0.5 ×
OEExtraDelay) × GPMC0_FCLK(14) if ((OEOnTime - ClkActivationTime - 1) is a multiple of
3)
- H = (2 + 0.5 ×
OEExtraDelay) × GPMC0_FCLK(14) if ((OEOnTime - ClkActivationTime - 2) is a multiple of
3)
For OE rising edge (OE deactivated):
- Case GPMCFCLKDIVIDER = 0:
- H = 0.5 ×
OEExtraDelay × GPMC0_FCLK(14)
- Case GPMCFCLKDIVIDER = 1:
- H = 0.5 ×
OEExtraDelay × GPMC0_FCLK(14) if (ClkActivationTime and OEOffTime are odd) or
(ClkActivationTime and OEOffTime are even)
- H = (1 + 0.5 ×
OEExtraDelay) × GPMC0_FCLK(14) otherwise
- Case GPMCFCLKDIVIDER = 2:
- H = 0.5 ×
OEExtraDelay × GPMC0_FCLK(14) if ((OEOffTime - ClkActivationTime) is a multiple of 3)
- H = (1 + 0.5 ×
OEExtraDelay) × GPMC0_FCLK(14) if ((OEOffTime - ClkActivationTime - 1) is a multiple of
3)
- H = (2 + 0.5 ×
OEExtraDelay) × GPMC0_FCLK(14) if ((OEOffTime - ClkActivationTime - 2) is a multiple of
3)
(9) For
WE falling edge (WE activated):
- Case GPMCFCLKDIVIDER = 0:
- I = 0.5 ×
WEExtraDelay × GPMC0_FCLK(14)
- Case GPMCFCLKDIVIDER = 1:
- I = 0.5 ×
WEExtraDelay × GPMC0_FCLK(14) if (ClkActivationTime and WEOnTime are odd) or
(ClkActivationTime and WEOnTime are even)
- I = (1 + 0.5 ×
WEExtraDelay) × GPMC0_FCLK(14) otherwise
- Case GPMCFCLKDIVIDER = 2:
- I = 0.5 ×
WEExtraDelay × GPMC0_FCLK(14) if ((WEOnTime - ClkActivationTime) is a multiple of 3)
- I = (1 + 0.5 ×
WEExtraDelay) × GPMC0_FCLK(14) if ((WEOnTime - ClkActivationTime - 1) is a multiple of
3)
- I = (2 + 0.5 ×
WEExtraDelay) × GPMC0_FCLK(14) if ((WEOnTime - ClkActivationTime - 2) is a multiple of
3)
For WE rising edge (WE deactivated):
- Case GPMCFCLKDIVIDER = 0:
- I = 0.5 ×
WEExtraDelay × GPMC0_FCLK (14)
- Case GPMCFCLKDIVIDER = 1:
- I = 0.5 ×
WEExtraDelay × GPMC0_FCLK(14) if (ClkActivationTime and WEOffTime are odd) or
(ClkActivationTime and WEOffTime are even)
- I = (1 + 0.5 ×
WEExtraDelay) × GPMC0_FCLK(14) otherwise
- Case GPMCFCLKDIVIDER = 2:
- I = 0.5 ×
WEExtraDelay × GPMC0_FCLK(14) if ((WEOffTime - ClkActivationTime) is a multiple of 3)
- I = (1 + 0.5 ×
WEExtraDelay) × GPMC0_FCLK(14) if ((WEOffTime - ClkActivationTime - 1) is a multiple of
3)
- I = (2 + 0.5 ×
WEExtraDelay) × GPMC0_FCLK(14) if ((WEOffTime - ClkActivationTime - 2) is a multiple of
3)
(10) Case GPMC0_CLK in div_by_1_mode
(17), first transfer only: Data and byte enables transition on rise edge of
GPMC0_CLK
- Non-multiplexed mode:
data transition at start of cycle
- Multiplexed mode: data
transition at WRDATAONADMUXBUS × (TimeParaGranularity + 1) ×
GPMC0_FCLK(14)
(11) Case GPMC0_CLK in
div_by_1_mode
(17), all data and byte enables after initial transfer: Data and byte enables
transition on fall edge of GPMC0_CLK (Half cycle of GPMC0_CLK)
(12) Case GPMC0_CLK in not_div_by_1_mode
(17) (GPMC0_CLK divided down from GPMC0_FCLK): All data and byte enables
transition on fall edge of GPMC0_CLK (Half cycle of GPMC0_CLK).
ClkActivationTime, GPMCFCLKDIVIDER, RDACCESSTIME/WRACCESSTIME, and
PAGEBURSTACCESSTIME configuration must be configured to enforce data and byte
enables transition on falling edge of GPMC0_CLK (to be latched on rise edge of
GPMC0_CLK)
(13) In
GPMC0_CSn[i], i is equal to 0, 1, 2 or 3.
(14) P
= GPMC0_CLK period in ns
(15) For read: K = (ADVRdOffTime - ADVOnTime) × (TimeParaGranularity + 1) ×
GPMC0_FCLK
(14)
For write: K = (ADVWrOffTime - ADVOnTime) ×
(TimeParaGranularity + 1) × GPMC0_FCLK
(14)
(16) Related to the GPMC0_CLK output clock maximum and minimum frequencies
programmable in the GPMC module by setting the GPMC0_CONFIG1_i configuration
register bit field GPMCFCLKDIVIDER.
(17) For div_by_1_mode:
- GPMC_CONFIG1_i Register: GPMCFCLKDIVIDER = 0h:
- GPMC0_CLK frequency = GPMC0_FCLK frequency
For not_div_by_1_mode:
- GPMC_CONFIG1_i Register: GPMCFCLKDIVIDER = 1h to 3h:
- GPMC0_CLK frequency = GPMC0_FCLK frequency / (2 to 4)