dm00025692

RM0082
Reference manual
SPEAr300
Introduction
This reference manual provides complete hardware information for application developers of
the SPEAr300 embedded MPU.
The SPEAr300 is a member of the SPEAr3xx family (includes SPEAr300, SPEAr310 and
SPEAr320).
SPEAr3xx devices all feature ARM926EJ-S core running up to 333 MHz, an external DDR2
Memory Interface, a common set of powerful on-chip peripherals. Each member of the
SPEAr3xx family has a specific set of IPs implemented in its Reconfigurable Array
Subsystem (RAS). In the SPEAr300, the following IPs are implemented in the RAS.
●
FSMC NAND/NOR Flash interface
●
SDIO controller
●
Color LCD controller (CLCD)
●
Telecom IP with TDM interface, camera interface, I2S, 18 GPIOs (G8 and G10), DAC,
SPI_I2C chip selects.
●
Keyboard controller
For the pin out, ordering information, mechanical, electrical and timing characteristics,
please refer to the SPEAr300 Datasheet.
For information on the ARM926EJ-S core, please refer to the ARM926EJ-S Technical
Reference Manual.
April 2011
Doc ID 018672 Rev 1
1/844
www.st.com
Contents
RM0082
Contents
1
Acronyms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
2
Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
2.1
Terms & conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
2.2
Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
2.2.1
Numbering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
2.2.2
Bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
2.2.3
Typographical . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
3
Reference documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4
Product overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.1
Device overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.1.1
4.2
Architecture properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
4.3
System architecture overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.3.1
5
2/844
Main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Core architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.4
CPU subsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.5
Multilayer bus matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.6
Dynamic memory controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.7
Basic subsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.8
High speed connectivity subsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.9
Low speed connectivity subsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.10
Application subsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.11
Reconfigurable logic array subsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.12
Clock and reset system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Pin description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
5.1
Required external components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
5.2
Dedicated pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
5.3
Shared I/O pins (PL_GPIOs) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
5.3.1
PL_GPIO pin description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
5.3.2
Alternate functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Doc ID 018672 Rev 1
RM0082
Contents
5.4
5.3.3
Boot pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
5.3.4
GPIOs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
5.3.5
Multiplexing scheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
PL_GPIO pin sharing for debug modes . . . . . . . . . . . . . . . . . . . . . . . . . . 79
6
Memory map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
7
CPU subsystem_ARM926EJ-S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
8
7.1
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
7.2
Functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
7.3
Main function description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
7.3.1
Memory management unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
7.3.2
Caches and write buffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
7.3.3
Bus interface unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
CPU subsystem_Vectored interrupt controller (VIC) . . . . . . . . . . . . . . 89
8.1
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
8.2
Block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
8.3
Main functions description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
8.3.1
Interrupt request logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
8.3.2
Non-vectored FIQ interrupt logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
8.3.3
Non-vectored IRQ interrupt logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
8.3.4
Vectored interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
8.3.5
Interrupt priority logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
8.3.6
Software interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
8.3.7
AHB slave interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
8.4
Interrupt connection table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
8.5
How to reduce interrupt latency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
8.6
Programming model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
8.6.1
Register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
8.6.2
Register description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
8.6.3
VICIRQSTATUS register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
8.6.4
VICFIQSTATUS register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
8.6.5
VICRAWINTR register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
8.6.6
VICINTSELECT register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
8.6.7
VICINTENABLE register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Doc ID 018672 Rev 1
3/844
Contents
9
RM0082
8.6.9
VICSOFTINT register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
8.6.10
VICSOFTINTCLEAR register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
8.6.11
VICPROTECTION register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
8.6.12
VICVECTADDR register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
8.6.13
VICDEFVECTADDR register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
8.6.14
VICVECTADDR register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
8.6.15
VICVECTCNTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
8.6.16
Peripheral identification registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
8.6.17
VICPERIPHID0 register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
8.6.18
VICPERIPHID1 register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
8.6.19
VICPERIPHID2 register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
8.6.20
VICPERIPHID3 register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
8.6.21
Identification registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
8.6.22
VICPCELLID0 register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
8.6.23
VICPCELLID1 register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
8.6.24
VICPCELLID2 register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
8.6.25
VICPCELLID3 register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
ICM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
DDR memory controller (MPMC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
10.1
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
10.2
Signal description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
10.3
Features overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
10.4
Main block description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
10.5
4/844
VICINTENCLEAR register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Bus interconnection matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
9.1
10
8.6.8
10.4.1
AHB-Memory controller interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
10.4.2
Arbiter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
10.4.3
Write data queue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
10.4.4
DRAM command processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
10.4.5
Latency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
Multi-port arbiter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
10.5.1
Arbitration overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
10.5.2
Understanding round-robin operation . . . . . . . . . . . . . . . . . . . . . . . . . 121
10.5.3
Understanding port priority . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
10.5.4
Understanding relative priority . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
Doc ID 018672 Rev 1
RM0082
Contents
10.5.5
Understanding port ordering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
10.5.6
Weighted round-robin arbitration summary . . . . . . . . . . . . . . . . . . . . . 125
10.5.7
Priority relaxing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
10.5.8
Port pairing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
10.5.9
Error conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
10.5.10 Command queue with placement logic . . . . . . . . . . . . . . . . . . . . . . . . 131
10.6
10.7
10.8
10.9
Core command queue with placement logic . . . . . . . . . . . . . . . . . . . . . 132
10.6.1
Rules of the placement algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
10.6.2
Command execution order after placement . . . . . . . . . . . . . . . . . . . . . 134
Low power operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
10.7.1
Low power modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
10.7.2
Low power mode control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
Additional features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
10.8.1
Out-of-range address checking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
10.8.2
Mobile devices DQS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
10.8.3
Half datapath option . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
10.8.4
User-defined registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
Address mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
10.9.1
DDR SDRAM address mapping options . . . . . . . . . . . . . . . . . . . . . . . 142
10.9.2
Maximum address space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
10.9.3
Memory mapping to address space . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
10.10 DCC tuning timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
10.11 External pin connection Of DDR interface in SPEAr300 . . . . . . . . . . . . 145
10.12 Initialization protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
10.13 Register interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
10.13.1 Register overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
10.13.2 MPMC base address In SPEAr300 . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
10.13.3 Register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
10.13.4 Register description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
10.13.5 MEM0_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
10.13.6 MEM1_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
10.13.7 MEM2_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
10.13.8 MEM3_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
10.13.9 MEM4_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
10.13.10 MEM5_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
10.13.11 MEM6_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Doc ID 018672 Rev 1
5/844
Contents
RM0082
10.13.12 MEM7_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
10.13.13 MEM8_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
10.13.14 MEM9_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
10.13.15 MEM10_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
10.13.16 MEM11_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
10.13.17 MEM12_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
10.13.18 MEM13_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
10.13.19 MEM14_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
10.13.20 MEM15_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
10.13.21 MEM16_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
10.13.22 MEM17_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
10.13.23 MEM18_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
10.13.24 MEM19_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
10.13.25 MEM20_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
10.13.26 MEM21_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
10.13.27 MEM22_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
10.13.28 MEM23_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
10.13.29 MEM24_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
10.13.30 MEM25_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
10.13.31 MEM26_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
10.13.32 MEM27_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
10.13.33 MEM28_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
10.13.34 MEM29_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
10.13.35 MEM30_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
10.13.36 MEM31_CTL/MEM32_CTL/MEM33_CTL register . . . . . . . . . . . . . . . 171
10.13.37 MEM34_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
10.13.38 MEM35_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
10.13.39 MEM36_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
10.13.40 MEM37_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
10.13.41 MEM38_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
10.13.42 MEM39_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
10.13.43 MEM40_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
10.13.44 MEM41_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
10.13.45 MEM42_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
10.13.46 MEM43_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
10.13.47 MEM44_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
10.13.48 MEM45_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
6/844
Doc ID 018672 Rev 1
RM0082
Contents
10.13.49 MEM46_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
10.13.50 MEM47_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
10.13.51 MEM48_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
10.13.52 MEM49_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
10.13.53 MEM50_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
10.13.54 MEM51_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
10.13.55 MEM52_CTL/MEM53_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . 178
10.13.56 MEM54_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
10.13.57 MEM55_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
10.13.58 MEM56_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
10.13.59 MEM57_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
10.13.60 MEM58_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
10.13.61 MEM59_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
10.13.62 MEM60_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
10.13.63 MEM61_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
10.13.64 MEM62_CTL/MEM63_CTL/MEM64_CTL register . . . . . . . . . . . . . . . 180
10.13.65 MEM65_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
10.13.66 MEM66_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
10.13.67 MEM67_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
10.13.68 MEM68_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
10.13.69 MEM[69-97]_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
10.13.70 MEM[98-99]_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
10.13.71 MEM100_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
10.13.72 MEM101_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
10.13.73 MEM102_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
10.13.74 MEM103_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
10.13.75 MEM104_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
10.13.76 MEM105_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
10.13.77 MEM106_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
10.13.78 MEM107_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
10.13.79 MEM108_CTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
10.14 Summary of memory controller parameters . . . . . . . . . . . . . . . . . . . . . . 185
11
Clock & reset system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
11.1
Clock generation scheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
11.1.1
11.2
Jitter at PLL output clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
Clock distribution scheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
Doc ID 018672 Rev 1
7/844
Contents
RM0082
11.3
11.2.1
Processor clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
11.2.2
DDR controller clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
11.2.3
Bus clocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
11.2.4
Configurable logic clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
11.2.5
Clock synthesizer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
11.2.6
Crystal connection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
RTC oscillator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
11.3.1
12
Crystal connection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
Miscellaneous registers (Misc) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
12.1
Signal description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
12.2
Overview features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
12.3
Register address map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
12.4
Miscellaneous register local space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
12.4.1
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
12.4.2
Miscellaneous register local space address map . . . . . . . . . . . . . . . . 210
12.4.3
SoC_CFG_CTR register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
12.4.4
DIAG_CFG_CTR register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
12.4.5
PLL 1/2_CTR registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
12.4.6
PLL1/2_FRQ registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
12.4.7
PLL1/2_MOD registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
12.4.8
PLL_CLK_CFG register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
12.4.9
CORE_CLK_CFG register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
12.4.10 PRPH_CLK_CFG register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
12.4.11 PERIP1_CLK_ENB register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
12.4.12 RAS_CLK_ENB register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
12.4.13 PRSC1/2/3_CLK_CFG register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
12.4.14 AMEM_CFG_CTRL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
12.4.15 Auxiliary clock synthesizer registers . . . . . . . . . . . . . . . . . . . . . . . . . . 233
12.4.16 Soft reset control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
12.4.17 PERIP1_SOF_RST register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
12.4.18 RAS_SOF_RST register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
12.4.19 SoC configuration basic parameters . . . . . . . . . . . . . . . . . . . . . . . . . . 238
12.4.20 ICM1-8_ARB_CFG register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
12.4.21 DMA_CHN_CFG register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
12.4.22 USB2_PHY_CFG register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
12.4.23 MAC_CFG_CTR register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
8/844
Doc ID 018672 Rev 1
RM0082
Contents
12.4.24 Special configuration parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
12.4.25 Powerdown_CFG_CTR register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
12.4.26 COMPSSTL_1V8_CFG/DDR_2V5_COMPENSATION register . . . . . 244
12.4.27 COMPCOR_3V3_CFG register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
12.4.28 DDR_PAD register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
12.4.29 Memory BIST execution control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
12.4.30 BIST1_CFG_CTR register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
12.4.31 BIST2_CFG_CTR register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
12.4.32 BIST3_CFG_CTR register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
12.4.33 BIST4_CFG_CTR register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
12.4.34 BIST1_STS_RES register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
12.4.35 BIST2_STS_RES register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
12.4.36 BIST3_STS_RES register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
12.4.37 BIST4_STS_RES register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
12.4.38 BIST5_RSLT_REG register (Reserved) . . . . . . . . . . . . . . . . . . . . . . . 258
12.4.39 Diagnostic functionality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
12.4.40 SYSERR_CFG_CTR register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
12.4.41 USB_TUN_PRM register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
12.4.42 PLGPIOn_PAD_PRG Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
12.5
13
Miscellaneous register global space . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
12.5.1
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
12.5.2
Miscellaneous register global space address map . . . . . . . . . . . . . . . 268
12.5.3
RAS1/2_GPP_INP register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
12.5.4
RAS1/2_GPP_OUT register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
LS_Synchronous serial peripheral (SSP) . . . . . . . . . . . . . . . . . . . . . . 270
13.1
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
13.2
Block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
13.3
Signal interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
13.4
Main functions description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
13.4.1
APB slave interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
13.4.2
Register block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
13.4.3
Clock prescaler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
13.4.4
Transmit FIFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
13.4.5
Receive FIFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
13.4.6
Transmit and receive logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
13.4.7
Interrupt generation logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
Doc ID 018672 Rev 1
9/844
Contents
RM0082
13.5
13.6
13.4.8
DMA interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
13.4.9
Synchronizing registers and logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
SSP operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
13.5.1
Configuring the SSP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
13.5.2
Enable SSP operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
13.5.3
Programming the SSPCR0 control register . . . . . . . . . . . . . . . . . . . . . 275
13.5.4
Programming the SSPCR1 control register . . . . . . . . . . . . . . . . . . . . . 275
13.5.5
Frame format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
Programming model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
13.6.1
External pin connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
13.6.2
Register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
13.6.3
Register description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
13.6.4
SSPCR0 register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
13.6.5
SSPCR1 register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
13.6.6
SSPDR register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
13.6.7
SSPSR register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
13.6.8
SSPCPSR register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
13.6.9
SSPIMSC register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
13.6.10 SSPRIS register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
13.6.11 SSPMIS Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
13.6.12 SSPICR register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
13.6.13 SSPDMACR register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
13.6.14 PHERIPHID0 register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
13.6.15 PHERIPHID1 register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
13.6.16 PHERIPHID2 register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
13.6.17 PHERIPHID3 register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
13.6.18 PCELLID0 register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
13.6.19 PCELLID1 register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
13.6.20 PCELLID2 register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
13.6.21 PCELLID3 register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
13.7
10/844
Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
13.7.1
SSPRXINTR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
13.7.2
SSPTXINTR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
13.7.3
SSPRORINTR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
13.7.4
SSPRTINTR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
13.7.5
SSPINTR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
Doc ID 018672 Rev 1
RM0082
14
Contents
BS_System controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
14.1
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
14.2
Block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
14.3
Main function description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
14.4
15
14.3.1
System mode control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
14.3.2
System control state machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
14.3.3
Interrupt response mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
14.3.4
Reset control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
14.3.5
Core clock control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
14.3.6
Watchdog module clock enable generation . . . . . . . . . . . . . . . . . . . . . 291
Programming model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
14.4.1
Register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
14.4.2
Register description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
14.4.3
SCCTRL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
14.4.4
SCSYSSTAT register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
14.4.5
SCIMCTRL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
14.4.6
SCIMSTAT register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
14.4.7
SCXTALCTRL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
14.4.8
SCPLLCTRL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
BS_Serial memory interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
15.1
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
15.2
Block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
15.3
Main functions description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
15.4
15.5
15.6
15.3.1
Clock prescaler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
15.3.2
Data processing and control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
Operation modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
15.4.1
Hardware mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
15.4.2
Software mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
Data transfers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
15.5.1
Read request . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
15.5.2
Write request . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
15.5.3
Write burst mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
15.5.4
Read while write mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
15.5.5
Erase and write status register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
Timings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
Doc ID 018672 Rev 1
11/844
Contents
RM0082
15.6.1
16
17
12/844
Latencies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
15.7
How to boot from external memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
15.8
Programming model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
15.8.1
External pin connection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
15.8.2
Register description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
15.8.3
SMI_CR1 register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
15.8.4
SMI_CR2 register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
15.8.5
SMI_SR register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
15.8.6
SMI_TR register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
15.8.7
SMI_RR register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
BS_Watchdog timer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
16.1
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
16.2
Block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
16.3
Main functions description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
16.3.1
AMBA APB interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
16.3.2
Free running counter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
16.4
Clock signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
16.5
Programming model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
16.5.1
Register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
16.5.2
Register description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
16.5.3
WdogLoad register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
16.5.4
WdogValue register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
16.5.5
WdogControl register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
16.5.6
WdogIntClr register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
16.5.7
WdogRIS register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
16.5.8
WdogMIS register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
16.5.9
WdogLock register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
BS_General purpose timers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
17.1
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
17.2
Programming model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
17.2.1
External pin connection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
17.2.2
Register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
17.2.3
Register description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
17.2.4
Timer_control register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
Doc ID 018672 Rev 1
RM0082
18
Contents
17.2.5
TIMER_STATUS_INT_ACK register . . . . . . . . . . . . . . . . . . . . . . . . . . 322
17.2.6
TIMER_COMPARE register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
17.2.7
TIMER_COUNT register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
17.2.8
TIMER_REDG_CAPT register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
17.2.9
TIMER_FEDG_CAPT register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
BS_General purpose input/output (GPIO) . . . . . . . . . . . . . . . . . . . . . 325
18.1
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
18.2
Functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
18.3
18.4
18.5
18.2.1
Block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
18.2.2
Signal interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
Main functions description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
18.3.1
APB slave interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
18.3.2
Interrupt detection logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
18.3.3
Mode control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
How to . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
18.4.1
Read from and write to input/output lines . . . . . . . . . . . . . . . . . . . . . . 327
18.4.2
Control interrupt generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
Programming model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
18.5.1
Register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
18.5.2
Register description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
18.5.3
GPIODIR register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
18.5.4
GPIODATA register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
18.5.5
GPIOIS register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
18.5.6
GPIOIBE register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
18.5.7
GPIOIEV register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
18.5.8
GPIOIE register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
18.5.9
GPIORIS register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
18.5.10 GPIOMIS register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
18.5.11 GPIOIC register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
19
BS_DMA controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
19.1
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
19.2
Block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
19.3
Signal interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
19.4
Main functions description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
Doc ID 018672 Rev 1
13/844
Contents
RM0082
19.5
19.4.1
AHB slave interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
19.4.2
AHB master interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
19.4.3
DMA interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
Scatter/gather . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
19.5.1
19.6
Interrupt requests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
19.6.1
19.7
How to program the DMAC for scatter/gather DMA . . . . . . . . . . . . . . . 337
How to operate single combined DMACINTR interrupt request signal 338
Programming model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
19.7.1
Register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
19.7.2
Register description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
19.7.3
DMACIntStatus register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
19.7.4
DMACIntTCStatus register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
19.7.5
DMACIntTCClear register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
19.7.6
DMACIntErrorStatus register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
19.7.7
DMACIntErrClr register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
19.7.8
DMACRawIntTCStatus register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
19.7.9
DMACRawIntErrorStatus register . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
19.7.10 DMACEnbldChns register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
19.7.11 DMACSoftBReq register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
19.7.12 DMACSoftSReq register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
19.7.13 DMACSoftLBReq register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
19.7.14 DMACSoftLSReq register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
19.7.15 DMAC configuration register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
19.7.16 DMACSync register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
19.7.17 DMACCnSrcAddr register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
19.7.18 DMACCnDestAddr register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
19.7.19 DMACCnLLI register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
19.7.20 DMACCn control register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
19.7.21 DMAC Configuration register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
19.7.22 DMACPeriphID register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
19.7.23 DMACPCellID register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
20
14/844
BS_Real time clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
20.1
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
20.2
Programming model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
20.2.1
Register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
20.2.2
Register description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
Doc ID 018672 Rev 1
RM0082
21
Contents
20.2.3
CONTROL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
20.2.4
STATUS register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
20.2.5
TIME register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
20.2.6
DATE register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
20.2.7
ALARM TIME registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
20.2.8
ALARM DATE registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
20.2.9
REGxMC register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
AS_Cryptographic co-processor (C3) . . . . . . . . . . . . . . . . . . . . . . . . . 357
21.1
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
21.2
Functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
21.2.1
Device summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
21.3
Block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
21.4
Main functions description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
21.4.1
HIF (High speed bus interface) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
21.4.2
SIF (Slave bus interface) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
21.4.3
IDS (Instruction dispatchers sub-system) . . . . . . . . . . . . . . . . . . . . . . 360
21.4.4
Channel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
21.4.5
CCM (Coupling/Chaining module) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
21.5
Processing overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
21.6
Programming model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
21.6.1
Register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
21.6.2
System registers (C3_SYS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
21.6.3
Register configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
21.6.4
Register description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
21.6.5
Master interface register (C3_HIF) . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
21.6.6
Register configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
21.6.7
Register Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370
21.6.8
Memory page (HIF_MP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370
21.6.9
Memory size register (HIF_MSIZE) . . . . . . . . . . . . . . . . . . . . . . . . . . . 370
21.6.10 Memory base address register (HIF_MBAR) . . . . . . . . . . . . . . . . . . . . 371
21.6.11 Memory control register (HIF_MCAR) . . . . . . . . . . . . . . . . . . . . . . . . . 371
21.6.12 Memory page base address register (HIF_MPBAR) . . . . . . . . . . . . . . 373
21.6.13 Memory access address register (HIF_MAAR) . . . . . . . . . . . . . . . . . . 374
21.6.14 Memory access data register (HIF_MADR) . . . . . . . . . . . . . . . . . . . . . 375
21.6.15 Byte bucket base address register (HIF_NBAR) . . . . . . . . . . . . . . . . . 375
Doc ID 018672 Rev 1
15/844
Contents
RM0082
21.6.16 Byte bucket control register (HIF_NCR) . . . . . . . . . . . . . . . . . . . . . . . 376
21.6.17 Instruction dispatcher registers (C3_IDn) . . . . . . . . . . . . . . . . . . . . . . 377
21.6.18 Channel registers (C3_CHn) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
21.6.19 Channel ID register (CH_ID) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
21.7
Channel ID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
21.8
DES channel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
21.8.1
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
21.8.2
Instruction set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
21.8.3
DES instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
21.8.4
DES START instruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
21.8.5
ECB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384
21.8.6
CBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384
21.8.7
DES APPEND instruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
21.8.8
ECB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
21.8.9
CBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
21.8.10 Register set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
21.8.11 DES register description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
21.8.12 Data input/output registers (DES_DATAINOUT) . . . . . . . . . . . . . . . . . 386
21.8.13 Feedback registers (DES_FEEDBACK) . . . . . . . . . . . . . . . . . . . . . . . 387
21.8.14 Control and status register (DES_CONTROL_STATUS) . . . . . . . . . . . 387
21.8.15 TKey registers (DES_KEY) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388
21.8.16 Channel ID (DES_ID) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388
21.9
AES channel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388
21.9.1
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388
21.9.2
Instruction set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388
21.9.3
AES instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388
21.9.4
AES START instruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
21.9.5
ECB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
21.9.6
CBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
21.9.7
CTR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
21.9.8
AES APPEND instruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
21.9.9
ECB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
21.9.10 CBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
21.9.11 CTR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
21.10 Register set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
21.10.1 Register configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
21.10.2 Data input/output registers (AES_DATAIN_OUT) . . . . . . . . . . . . . . . . 392
16/844
Doc ID 018672 Rev 1
RM0082
Contents
21.10.3 Feedback registers (AES_FEEDBACK) . . . . . . . . . . . . . . . . . . . . . . . . 392
21.10.4 Counter registers (AES_COUNTER) . . . . . . . . . . . . . . . . . . . . . . . . . . 393
21.10.5 Control and status register (AES_CONTROL_STATUS) . . . . . . . . . . . 393
21.10.6 Key registers (AES_KEY) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
21.10.7 Channel ID (AES_ID) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
21.11 Unified hash with HMAC channel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
21.11.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
21.11.2 Instruction set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
21.11.3 HASH instruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
21.11.4 HASH [MD5/SHA1] instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
21.11.5 INIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
21.11.6 APPEND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
21.11.7 END . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
21.11.8 HASH CONTEXT instruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
21.11.9 SAVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
21.11.10 RESTORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
21.11.11 HMAC instruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
21.11.12 HMAC [MD5/SHA1] instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
21.11.13 INIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
21.11.14 APPEND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
21.11.15 END . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
21.11.16 HMAC CONTEXT instruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
21.11.17 SAVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
21.11.18 RESTORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
21.11.19 Register configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
21.11.20 Register description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
21.11.21 Control and status register (UHH_CU_CONTROL_STATUS) . . . . . . . 402
21.11.22 Data input register (UHH_DATA_IN) . . . . . . . . . . . . . . . . . . . . . . . . . . 405
21.11.23 Control and status register (UHH_CB_CONTROL_STATUS) . . . . . . . 405
21.11.24 Channel ID (UHH_CH_ID) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
22
HS_USB2.0 host . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
22.1
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
22.2
Block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
22.3
Main functions description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
22.3.1
AHB bus interface unit (BIU) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
22.3.2
EHCI host controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
Doc ID 018672 Rev 1
17/844
Contents
RM0082
22.3.3
22.4
22.5
22.6
OHCI host controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
EHCI host controller blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
22.4.1
List processor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
22.4.2
Operational registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
22.4.3
Start-Of-Frame (SOF) generator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
22.4.4
Packet buffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
22.4.5
Root hub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
OHCI host controller blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
22.5.1
HCI master block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
22.5.2
HCI slave block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
22.5.3
List processor block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416
22.5.4
RootHub and HSIE blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416
22.5.5
Digital PLL block (DPLL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416
22.5.6
HSIE functionality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416
22.5.7
RootHub port configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
Programming model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
22.6.1
External pin connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
22.6.2
UHC interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
22.6.3
Register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418
22.6.4
Register descriptions of EHCI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421
22.6.5
HCCAPBASE register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421
22.6.6
HCSPARAMS register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421
22.6.7
HCCPARAMS register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
22.6.8
USBCMD register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424
22.6.9
USBSTS register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428
22.6.10 USBINTR register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430
22.6.11 FRINDEX register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431
22.6.12 CTRLDSSEGMENT register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432
22.6.13 PERIODICLISTBASE register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432
22.6.14 SYNCLISTADDR register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433
22.6.15 CONFIGFLAG register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433
22.6.16 PORTSC registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434
22.6.17 INSNREG00 register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439
22.6.18 INSNREG01 register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439
22.6.19 INSNREG02 register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440
22.6.20 INSNREG03 register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440
22.6.21 INSNREG05 register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440
18/844
Doc ID 018672 Rev 1
RM0082
Contents
22.6.22 Register description of OHCI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440
22.6.23 Operation registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440
22.6.24 The control and status partition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441
22.6.25 HcRevision register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441
22.6.26 HcControl register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441
22.6.27 HcCommandStatus register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443
22.6.28 HcInterruptStatus register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445
22.6.29 HcInterruptEnable register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
22.6.30 HcInterruptDisable register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
22.6.31 Memory pointer partition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448
22.6.32 HcHCCA register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448
22.6.33 HcPeriodCurrentED register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449
22.6.34 HcControlHeadED register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449
22.6.35 HcControlCurrentED register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449
22.6.36 HcBulkHeadED register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450
22.6.37 HcBulkCurrentED register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450
22.6.38 HcDoneHead register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451
22.6.39 Frame counter partition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451
22.6.40 HcFmInterval register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451
22.6.41 HcFmRemaining register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452
22.6.42 HcFmNumber register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453
22.6.43 HcPeriodicStart register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453
22.6.44 HcLSThreshold register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453
22.6.45 Root hub partition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454
22.6.46 HcRhDescriptorA register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454
22.6.47 HcRhDescriptorB register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456
22.6.48 HcRhStatus register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
22.6.49 HcRhPortStatus[1:NDP] register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458
23
HS_USB 2.0 device . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463
23.1
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463
23.2
Block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464
23.3
Main functions description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465
23.3.1
UTLI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465
23.3.2
Interrupt manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465
23.3.3
SOF tracker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466
23.3.4
Receive FIFO controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466
Doc ID 018672 Rev 1
19/844
Contents
RM0082
23.3.5
Endpoint FIFO controller (Transmit FIFO controller) . . . . . . . . . . . . . . 467
23.3.6
Control and status registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468
23.3.7
AHB slave-only interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468
23.3.8
DMA (AHB master interface) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468
23.3.9
DMA transfer engine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468
23.3.10 DMA controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469
23.3.11 AHB interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469
23.3.12 CSRs slave access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469
23.4
23.5
23.6
Theory of operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470
23.4.1
DMA mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470
23.4.2
In operation (Data transfer To USB host) . . . . . . . . . . . . . . . . . . . . . . . 471
23.4.3
Out operation (Data transfer from USB host) . . . . . . . . . . . . . . . . . . . . 473
23.4.4
Slave-only mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474
Data memory structure in DMA mode . . . . . . . . . . . . . . . . . . . . . . . . . . 478
23.5.1
SETUP data memory structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478
23.5.2
OUT data memory structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479
23.5.3
IN data memory structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481
Operation modes In DMA mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484
23.6.1
Packet-per-buffer mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484
23.6.2
Buffer fill mode (OUT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484
23.6.3
Buffer fill mode (IN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484
23.6.4
Threshold enable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484
23.6.5
Burst split enable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485
23.7
USB plug detect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485
23.8
Programming model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486
23.8.1
External pin connection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486
23.8.2
Register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486
23.8.3
Register description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490
23.8.4
Device configuration register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490
23.8.5
Device control register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492
23.8.6
Device status register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494
23.8.7
Device interrupt register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495
23.8.8
Device interrupt mask register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497
23.8.9
Endpoint interrupt register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497
23.8.10 Endpoint interrupt mask register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497
23.8.11 Endpoint control register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498
20/844
Doc ID 018672 Rev 1
RM0082
Contents
23.8.12 Endpoint status register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499
23.8.13 Endpoint buffer size and received packet frame number register . . . . 501
23.8.14 Endpoint maximum packet size and buffer size register . . . . . . . . . . . 502
23.8.15 Endpoint setup buffer pointer register . . . . . . . . . . . . . . . . . . . . . . . . . 503
23.8.16 Endpoint data description pointer register . . . . . . . . . . . . . . . . . . . . . . 503
23.8.17 UDC20 endpoint register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503
24
HS_Media independent interface (MII) . . . . . . . . . . . . . . . . . . . . . . . . 505
24.1
24.2
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505
24.1.1
MAC core main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505
24.1.2
MAC-AHB main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505
Functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505
24.2.1
24.3
24.4
Block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505
Main functions description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506
24.3.1
AHB slave interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506
24.3.2
AHB master interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506
24.3.3
DMA controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507
24.3.4
Transmit and receive FIFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507
24.3.5
MAC management counters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507
24.3.6
Power management module (PMT) . . . . . . . . . . . . . . . . . . . . . . . . . . . 508
DMA descriptors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508
24.4.1
Transmit descriptors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509
24.4.2
Receive descriptors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513
24.5
How to initialize DMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515
24.6
Interrupt management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516
24.7
Programming model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517
24.7.1
Register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517
24.7.2
Register description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521
24.7.3
Bus mode register (Register0, DMA) . . . . . . . . . . . . . . . . . . . . . . . . . . 521
24.7.4
Transmit poll demand register (Register1, DMA) . . . . . . . . . . . . . . . . . 523
24.7.5
Receive poll demand register (Register2, DMA) . . . . . . . . . . . . . . . . . 523
24.7.6
Receive descriptor list address register (Register3, DMA) . . . . . . . . . 523
24.7.7
Transmit descriptor list address register (Register4, DMA) . . . . . . . . . 524
24.7.8
Status register (Register 5, DMA) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524
24.7.9
Operation mode register (Register 6, DMA) . . . . . . . . . . . . . . . . . . . . 529
24.7.10 Interrupt enable register (Register7, DMA) . . . . . . . . . . . . . . . . . . . . . 532
Doc ID 018672 Rev 1
21/844
Contents
RM0082
24.7.11 Missed frame and buffer overflow counter register (Register8, DMA) . 533
24.7.12 Current host transmit descriptor register (Register18, DMA) . . . . . . . . 533
24.7.13 Current host receive descriptor register (Register19, DMA) . . . . . . . . 534
24.7.14 Current host transmit buffer address register (Register20, DMA) . . . . 534
24.7.15 Current host receive buffer address register (Register21, DMA) . . . . . 534
24.7.16 MAC configuration register (Register0, MAC) . . . . . . . . . . . . . . . . . . . 534
24.7.17 MAC frame filter register (Register1, MAC) . . . . . . . . . . . . . . . . . . . . . 537
24.7.18 Hash table high register (Register2, MAC) . . . . . . . . . . . . . . . . . . . . . 539
24.7.19 Hash table low register (Register3, MAC) . . . . . . . . . . . . . . . . . . . . . . 539
24.7.20 MII address register (Register4, MAC) . . . . . . . . . . . . . . . . . . . . . . . . 540
24.7.21 MII data register (Register5, MAC) . . . . . . . . . . . . . . . . . . . . . . . . . . . 541
24.7.22 Flow control register (Register6, MAC) . . . . . . . . . . . . . . . . . . . . . . . . 541
24.7.23 VLAN tag register (Register7, MAC) . . . . . . . . . . . . . . . . . . . . . . . . . . 543
24.7.24 Wake-up frame filter register (Register10, MAC) . . . . . . . . . . . . . . . . . 543
24.7.25 PMT control and status register (Register11, MAC) . . . . . . . . . . . . . . 544
24.7.26 Interrupt status register (Register 14, MAC) . . . . . . . . . . . . . . . . . . . . 545
24.7.27 Interrupt mask register (Register 15, MAC) . . . . . . . . . . . . . . . . . . . . . 546
24.7.28 MAC address0 high register (Register16, MAC) . . . . . . . . . . . . . . . . . 546
24.7.29 MAC address0 low register (Register17, MAC) . . . . . . . . . . . . . . . . . . 546
24.7.30 MAC address1 high register (Register18, MAC) . . . . . . . . . . . . . . . . . 547
24.7.31 MAC address1 low register (Register19, MAC) . . . . . . . . . . . . . . . . . . 548
24.8
24.9
25
22/844
MMC registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548
24.8.1
MMC control register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548
24.8.2
MMC receive interrupt register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549
24.8.3
MMC transmit interrupt register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550
24.8.4
MMC receive interrupt mask register . . . . . . . . . . . . . . . . . . . . . . . . . . 552
Clocks with MII . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553
LS_JPEG codec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555
25.1
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555
25.2
Signal interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555
25.3
Functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556
25.3.1
Block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556
25.3.2
Main functions description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557
25.3.3
Codec core . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557
25.3.4
Codec controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557
25.3.5
DMAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557
Doc ID 018672 Rev 1
RM0082
Contents
25.4
25.3.6
FIFO buffers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558
25.3.7
Internal memories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558
Programming model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558
25.4.1
Register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558
25.4.2
Register description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560
25.4.3
JPGCreg0 register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560
25.4.4
JPGCReg1 register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560
25.4.5
JPGCreg2 register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561
25.4.6
JPGCreg3 register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562
25.4.7
JPGCreg4-7 register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562
25.4.8
JPGC control status register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563
25.4.9
JPGC bytes from Fifo to core register . . . . . . . . . . . . . . . . . . . . . . . . . 564
25.4.10 JPGC bytes from core to Fifo register . . . . . . . . . . . . . . . . . . . . . . . . . 565
25.4.11 JPGC bust count beforeInit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565
25.4.12 DMAC registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565
25.4.13 JPGCFifoIn register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565
25.4.14 JPGCFifoOut register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566
25.4.15 JPGCqmem memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566
25.4.16 JPGChuffmin memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567
25.4.17 JPGC huffbase memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567
25.4.18 JPGChuffsymb memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567
25.4.19 JPGCDHTmem memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568
25.4.20 JPGChuffenc memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568
26
LS_Fast IrDA controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571
26.1
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571
26.2
Block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571
26.3
Main functions description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572
26.3.1
Synchronization unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572
26.3.2
Demodulation unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573
26.3.3
Wrapper unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573
26.3.4
Modulation unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574
26.3.5
Baud rate generation unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574
26.3.6
FIFO unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575
26.4
Interrupt sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577
26.5
Programming model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578
Doc ID 018672 Rev 1
23/844
Contents
RM0082
26.5.1
External pin connection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578
26.5.2
Register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578
26.5.3
Register description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579
26.5.4
IrDA_CON register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579
26.5.5
IrDA_CONF register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579
26.5.6
IrDA_PARA register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580
26.5.7
IrDA_DV register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581
26.5.8
IrDA_STAT register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582
26.5.9
IrDA_TFS register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582
26.5.10 IrDA_RFS register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583
26.5.11 IrDA_TXB register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583
26.5.12 IrDA_RXB register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584
26.5.13 IrDA_IMSC register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584
26.5.14 IrDA_RIS register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584
26.5.15 IrDA_MIS register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585
26.5.16 IrDA_ICR register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586
26.5.17 IrDA_ISR register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587
26.5.18 IrDA_DMA register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587
27
LS_Universal asynchronous receiver/transmitter (UART) . . . . . . . . 589
27.1
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589
27.2
Functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590
27.3
27.2.1
Block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590
27.2.2
Main functions description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590
Programming model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594
27.3.1
27.4
Register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594
Register description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595
27.4.1
UARTDR register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595
27.4.2
UARTRSR/UARTECR register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596
27.4.3
UARTFR register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597
27.4.4
UARTIBRD register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 598
27.4.5
UARTFBRD register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 598
27.4.6
UARTLCR_H register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599
27.4.7
UARTCR register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601
27.4.8
UARTIFLS register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602
27.4.9
UARTIMSC register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603
27.4.10 UARTRIS register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604
24/844
Doc ID 018672 Rev 1
RM0082
Contents
27.4.11 UARTMIS Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604
27.4.12 UARTICR register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605
27.4.13 UARTDMACR register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606
27.5
28
UART modem operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606
LS_I2C controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 607
28.1
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 607
28.2
Block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 607
28.3
Main functions description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 608
28.4
28.3.1
APB interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 608
28.3.2
I2C protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 608
28.3.3
DMA controller interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611
Operation modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612
28.4.1
Slave mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612
28.4.2
Master mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614
28.4.3
Multi-master mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615
28.5
Interrupt sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617
28.6
Programming model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619
28.6.1
External pin connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619
28.6.2
Register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619
28.6.3
IC_CON register(0x000) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621
28.6.4
IC_TAR register(0x004) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623
28.6.5
IC_SAR register(0x008) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624
28.6.6
IC_HS_MADDR register(0x00C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625
28.6.7
IC_DATA_CMD register(0x010) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625
28.6.8
IC_SS_SCL_HCNT register (0x014) . . . . . . . . . . . . . . . . . . . . . . . . . . 626
28.6.9
IC_SS_SCL_LCNT register(0x018) . . . . . . . . . . . . . . . . . . . . . . . . . . . 627
28.6.10 IC_FS_SCL_HCNT register(0x01C) . . . . . . . . . . . . . . . . . . . . . . . . . . 628
28.6.11 IC_FS_SCL_LCNT register(0x020) . . . . . . . . . . . . . . . . . . . . . . . . . . . 629
28.6.12 IC_HS_SCL_HCNT register(0x024) . . . . . . . . . . . . . . . . . . . . . . . . . . 629
28.6.13 IC_HS_SCL_LCNT register(0x028) . . . . . . . . . . . . . . . . . . . . . . . . . . . 630
28.6.14 IC_INTR_STAT register(0x02C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631
28.6.15 IC_INTR_MASK register(0x030) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632
28.6.16 IC_RAW_INTR_STAT register(0x034) . . . . . . . . . . . . . . . . . . . . . . . . . 633
28.6.17 IC_RX_TL register(0x038) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633
28.6.18 IC_TX_TL register(0x03C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634
Doc ID 018672 Rev 1
25/844
Contents
RM0082
28.6.19 IC_CLR_INTR register(0x040) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634
28.6.20 Interrupt clearing registers(0x044 - 0x068) . . . . . . . . . . . . . . . . . . . . . 635
28.6.21 IC_ENABLE register(0x06C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635
28.6.22 IC_STATUS register(0x070) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636
28.6.23 IC_TXFLR and IC_RXFLR registers (0x074 - 0x078) . . . . . . . . . . . . . 637
28.6.24 IC_TX_ABRT_SOURCE register (0x080) . . . . . . . . . . . . . . . . . . . . . . 637
28.6.25 IC_DMA_CR register (0x088) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639
28.6.26 IC_DMA_TDLR register (0x08C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 640
28.6.27 IC_DMA_RDLR register (0x090) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 640
28.6.28 IC_COMP_PARAM1 register (0x0F4) . . . . . . . . . . . . . . . . . . . . . . . . . 641
29
LS_Analog to digital convertor (ADC) . . . . . . . . . . . . . . . . . . . . . . . . . 643
29.1
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643
29.2
Functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643
29.3
Operating sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644
29.4
29.3.1
Normal mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644
29.3.2
Enhanced mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644
Programming model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645
29.4.1
29.5
30
Register description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 646
29.5.1
ADC_STATUS_REG register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 646
29.5.2
AVERAGE_REG register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648
29.5.3
SCAN RATE register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 649
29.5.4
ADC_CLK_REG register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 649
29.5.5
CHx CTRL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 650
29.5.6
CHx DATA register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 650
RS_Reconfigurable array subsystem (RAS) registers . . . . . . . . . . . . 652
30.1
26/844
External pin connection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645
RAS configurations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652
30.1.1
NAND mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652
30.1.2
NOR mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
30.1.3
Photoframe mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
30.1.4
LEND_IP_PHONE (LOW END IP PHONE mode) . . . . . . . . . . . . . . . . 653
30.1.5
HEND_IP_PHONE MODE (HIGH END IP PHONE) . . . . . . . . . . . . . . 654
30.1.6
LEND_WIFI_PHONE MODE (LOW END WI-FI PHONE) . . . . . . . . . . 654
30.1.7
HEND_WIFI_PHONE MODE (HIGH END WI-FI PHONE) . . . . . . . . . 654
30.1.8
ATA_PABX_wI2S (ATA PABX without I2S) . . . . . . . . . . . . . . . . . . . . . . 654
Doc ID 018672 Rev 1
RM0082
Contents
30.1.9
ATA_PABX_I2S MODE (ATA PABX with I2S) . . . . . . . . . . . . . . . . . . . . 655
30.1.10 CAMl_LCDw MODE (8 bit CAMERA without LCD) . . . . . . . . . . . . . . . 655
30.1.11 CAMu_LCD MODE (14 bit CAMERA with LCD) . . . . . . . . . . . . . . . . . 655
30.1.12 CAMu_wLCD MODE (14 bit CAMERA without LCD) . . . . . . . . . . . . . 656
30.1.13 CAMl_LCD MODE (8 bit CAMERA with LCD) . . . . . . . . . . . . . . . . . . . 656
31
30.2
Maximum number of GPIOs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656
30.3
Address map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656
30.4
RAS configuration registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657
30.4.1
RAS Register 1 (0x99000000) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 658
30.4.2
RAS Register 2 (0x99000004) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659
30.5
RAS Interrupt assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 660
30.6
RAS DMA configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 661
RS_Flexible static memory controller (FSMC) . . . . . . . . . . . . . . . . . . 662
31.1
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662
31.2
Functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663
31.2.1
31.3
31.4
Block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663
Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663
31.3.1
AHB interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663
31.3.2
NAND flash controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663
31.3.3
Asynchronous SRAM and NOR parallel Flash controller . . . . . . . . . . 664
Programming model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664
31.4.1
External signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664
31.4.2
Address map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665
31.4.3
Register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665
31.4.4
Register description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667
31.4.5
GenMemCtrl(i) registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667
31.4.6
GenMemCtrl_tim(i) registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669
31.4.7
GenMemCtrl_PC(i) registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 670
31.4.8
GenMemCtrl_Comm(i)/GenMemCtrl_Attrib(i) registers . . . . . . . . . . . . 671
31.4.9
GenMemCtrl_ECCr(i) registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 671
31.4.10 GenMemCtrl peripheral identification registers (GenMemCtrlPeripID0-3) .
672
31.4.11 GenMemCtrl cell Identification registers (GenMemCtrlPCellID0-3) . . . 672
31.4.12 Calculating the FSMC timing parameters . . . . . . . . . . . . . . . . . . . . . . 673
Doc ID 018672 Rev 1
27/844
Contents
32
RM0082
RS_SDIO controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 678
32.1
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 678
32.2
Main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 678
32.3
Signal interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 679
32.4
Pin signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 680
32.5
Functional overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683
32.5.1
32.6
Programmer's model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695
32.6.1
32.7
Sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684
Register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695
Register description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697
32.7.1
SDMASysAddr register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697
32.7.2
BLKSize register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697
32.7.3
BLKCount register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 698
32.7.4
CMDARG register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699
32.7.5
TRMode register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699
32.7.6
CMD register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 701
32.7.7
RESP(i) registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 702
32.7.8
Buf data port register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 703
32.7.9
PRSTATE register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 703
32.7.10 HOSTCTRL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 707
32.7.11 PWRCTL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 708
32.7.12 BLKGAPCTRL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 708
32.7.13 WKUPCTRL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 710
32.7.14 CLKCTRL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 711
32.7.15 TMOUTCTRL register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713
32.7.16 SWRES register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714
32.7.17 NIRQSTAT register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715
32.7.18 ERRIRQSTAT register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 718
32.7.19 NIRQSTATEN register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 720
32.7.20 ERRIRQSTATEN register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 721
32.7.21 NIRQSIGEN register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 722
32.7.22 ERRIRQSIGEN register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 722
32.7.23 ACMD12ERSTS register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 723
32.7.24 CAP1 register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725
32.7.25 CAP2 register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 727
32.7.26 MAXCURR1 register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 727
28/844
Doc ID 018672 Rev 1
RM0082
Contents
32.7.27 MAXCURR2 register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 728
32.7.28 ACMD12FEERSTS register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 728
32.7.29 FEERRINTSTS register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 729
32.7.30 ADMAERRSTS register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 730
32.7.31 ADMAADDR1 register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 731
32.7.32 ADMAADDR2 register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 731
32.7.33 SPIIRQSUPP register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 732
32.7.34 SLTIRQSTS register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 733
32.7.35 HCTRLVER register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 733
33
RS_Color liquid crystal display controller (CLCD) . . . . . . . . . . . . . . 735
33.1
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 735
33.1.1
Number of colors supported . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 736
33.2
Block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 737
33.3
Signal interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 738
33.4
LCD panel signal multiplexing details . . . . . . . . . . . . . . . . . . . . . . . . . . . 738
33.5
Main functions description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 740
33.5.1
AHB slave interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 740
33.5.2
AHB master interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 740
33.5.3
Dual DMA FIFOs and associated control logic . . . . . . . . . . . . . . . . . . 741
33.5.4
Pixel serializer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 741
33.5.5
RAM palette . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 744
33.5.6
Gray scaler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745
33.5.7
Upper and lower panel formatters . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745
33.5.8
Panel clock generator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746
33.5.9
Timing controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746
33.5.10 Interrupt generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746
33.5.11 Bus architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747
33.5.12 LCD powering up and down sequences . . . . . . . . . . . . . . . . . . . . . . . 747
33.6
Programming model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 748
33.6.1
External pin connection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 748
33.6.2
Register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 748
33.6.3
Register description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 749
33.6.4
LCD timing 0 register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 749
33.6.5
LCD timing 1 register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 751
33.6.6
LCD timing 2 register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 752
Doc ID 018672 Rev 1
29/844
Contents
RM0082
33.6.7
LCD timing 3 register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754
33.6.8
LCDUPBASE and LCPLPBASE registers . . . . . . . . . . . . . . . . . . . . . . 754
33.6.9
LCDIMSC register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755
33.6.10 LCD control register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756
33.6.11 LCDRIS register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 757
33.6.12 LCDMIS register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 758
33.6.13 LCDICR register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 758
33.6.14 LCDUPCURR and LCDLPCURR registers . . . . . . . . . . . . . . . . . . . . . 759
33.6.15 LCDPalette register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 759
33.6.16 PHERIPHID0-3 registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 760
33.6.17 PCELLIDID0-3 registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 761
33.7
33.8
34
Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 762
33.7.1
CLCDMBEINTR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 762
33.7.2
LCDVCOMPINTR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 762
33.7.3
CLCDLNBUINTR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 762
33.7.4
CLCDFUFINTR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 763
33.7.5
LCD powering up and powering down sequence support . . . . . . . . . . 763
CLCD clock scheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 764
RS_Telecom IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 765
34.1
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 765
34.2
Main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 765
34.3
Pin list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 765
34.4
Functional overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 766
34.4.1
Regs and regs_rw blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767
34.4.2
TDM clock block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767
34.4.3
TDM synchro block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 768
34.4.4
TDM block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 769
34.4.5
Action memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 770
34.4.6
Switching memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 770
34.4.7
Buffer memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 772
34.4.8
I2S block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 777
34.4.9
DAC block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 779
34.4.10 Camera interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 780
34.4.11 SPI-I2C block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 781
34.4.12 General purpose GPIOs G8 and G10 . . . . . . . . . . . . . . . . . . . . . . . . . 782
30/844
Doc ID 018672 Rev 1
RM0082
Contents
34.4.13 IT bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 782
34.5
34.6
Programmer’s model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 782
34.5.1
Address map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 783
34.5.2
Register set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 783
Description of registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 784
34.6.1
Boot register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 784
34.6.2
TDM_conf register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 784
34.6.3
GPIO8_DIR register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 787
34.6.4
GPIO10_DIR register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 788
34.6.5
GPIO8_out register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 788
34.6.6
GPIO10_out register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 788
34.6.7
GPIO8_in . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 789
34.6.8
GPIO10_in register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 789
34.6.9
IT-GEN register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 790
34.6.10 GPIOt register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 791
34.6.11 GPIOtt register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 792
34.6.12 PERS_time register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 792
34.6.13 PERS_data register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 792
34.6.14 TDM_timeslot_NBR register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 792
34.6.15 TDM_frame_NBR register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 793
34.6.16 TDM_SYNC_GEN register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 793
34.6.17 SPI_I2C_usage register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 798
34.6.18 SPI_I2C_active . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 798
34.6.19 I2S_CONF register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 798
34.6.20 I2S_CONF2 register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 801
34.6.21 I2S_CLK_CONF register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 802
34.6.22 Interrupt mask register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 804
34.6.23 Interrupt status register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 805
34.7
Action memory content description . . . . . . . . . . . . . . . . . . . . . . . . . . . . 806
34.7.1
35
Int block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 808
RS_Keyboard controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 810
35.1
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 810
35.2
Functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 810
35.2.1
General purpose input output interface . . . . . . . . . . . . . . . . . . . . . . . . 810
35.2.2
Keyboard interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 811
Doc ID 018672 Rev 1
31/844
Contents
RM0082
35.3
36
35.3.1
External signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 811
35.3.2
Register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 812
35.3.3
Registers description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 812
RS_General Purpose Input Output (GPIO) . . . . . . . . . . . . . . . . . . . . . 815
36.1
37
Programming model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 811
Application Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 815
Power and clock management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 816
37.1
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 816
37.1.1
37.2
38
System control state machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 817
37.2.1
SLEEP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 818
37.2.2
DOZE (reset state) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 819
37.2.3
SLOW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 819
37.2.4
NORMAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 819
37.3
Dynamic frequency scaling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 820
37.4
Dynamic clock switching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 820
37.5
Combining frequency scaling and clock switching techniques . . . . . . . . 821
37.6
Statiscally frequency selection and clock switching OFF . . . . . . . . . . . . 821
37.7
PLLs usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 821
37.8
Power consumption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 822
37.8.1
Modules power consumption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 824
37.8.2
IPs power . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 825
BootROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 826
38.1
Boot Stages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 826
38.2
Booting Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 827
38.3
Hardware overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 828
38.4
32/844
Power management techniques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 816
38.3.1
eROM (Embedded ROM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 828
38.3.2
Shadow memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 828
38.3.3
System controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 828
Software overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 829
38.4.1
ARM processor modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 829
38.4.2
SoC peripheral interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 829
38.4.3
Memory Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 829
Doc ID 018672 Rev 1
RM0082
Contents
38.5
39
38.4.4
X-Loader and U-boot Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 829
38.4.5
X-Loader and U-boot authentication . . . . . . . . . . . . . . . . . . . . . . . . . . 829
Boot flows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 830
38.5.1
Serial NOR Flash boot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 831
38.5.2
NAND Flash boot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 832
38.5.3
USB boot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 834
38.5.4
Serial (UART) Boot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 839
38.5.5
Ethernet boot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 841
Document revision history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 843
Doc ID 018672 Rev 1
33/844
List of Tables
RM0082
List of Tables
Table 1.
Table 2.
Table 3.
Table 4.
Table 5.
Table 6.
Table 7.
Table 8.
Table 9.
Table 10.
Table 11.
Table 12.
Table 13.
Table 14.
Table 15.
Table 16.
Table 17.
Table 18.
Table 19.
Table 20.
Table 21.
Table 22.
Table 23.
Table 24.
Table 25.
Table 26.
Table 27.
Table 28.
Table 29.
Table 30.
Table 31.
Table 32.
Table 33.
Table 34.
Table 35.
Table 36.
Table 37.
Table 38.
Table 39.
Table 40.
Table 41.
Table 42.
Table 43.
Table 44.
Table 45.
Table 46.
Table 47.
Table 48.
34/844
Acronyms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Typographical conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Master clock, RTC, Reset and 3.3 V comparator pin descriptions . . . . . . . . . . . . . . . . . . . 64
Power supply pin description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Debug pin descriptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Serial memory interface (SMI) pin description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
USB pin descriptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
ADC pin description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
DDR pin description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
PL_GPIO pin description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Booting pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Available peripherals in each configuration mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
PL_GPIO multiplexing scheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Table shading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Ball sharing during debug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Main memory map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Multi layer CPU subsystem. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Low speed subsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Basic subsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
High speed subsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Application subsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Reconfigurable array subsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Interrupt sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Interrupt latency for different types of interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
VIC interrupt control registers summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
VIC vector address registers summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
VIC interrupt vector control registers summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
VIC identification registers summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
VICIRQSTATUS register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
VICFIQSTATUS register bit assignments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
VICRAWINTR register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
VICINTSELECT register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
VICINTENABLE register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
VICINTENCLEAR register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
VICSOFTINT register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
VICSOFTINTCLEAR register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
VICPROTECTION register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
VICVECTADDR register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
VICVECTCNTL registers bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Peripheral identification registers bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
VICPERIPHID0 register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
VICPERIPHID1 register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
VICPERIPHID2 register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
VICPERIPHID3 register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
VICPCELLID0 register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
VICPCELLID1 register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
VICPCELLID2 register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
VICPCELLID3 register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
Doc ID 018672 Rev 1
RM0082
Table 49.
Table 50.
Table 51.
Table 52.
Table 53.
Table 54.
Table 55.
Table 56.
Table 57.
Table 58.
Table 59.
Table 60.
Table 61.
Table 62.
Table 63.
Table 64.
Table 65.
Table 66.
Table 67.
Table 68.
Table 69.
Table 70.
Table 71.
Table 72.
Table 73.
Table 74.
Table 75.
Table 76.
Table 77.
Table 78.
Table 79.
Table 80.
Table 81.
Table 82.
Table 83.
Table 84.
Table 85.
Table 86.
Table 87.
Table 88.
Table 89.
Table 90.
Table 91.
Table 92.
Table 93.
Table 94.
Table 95.
Table 96.
Table 97.
Table 98.
Table 99.
Table 100.
List of Tables
SoC interconnection matrix scheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
SoC interconnection matrix. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
ICM master layers (Initiator) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
ICM slaves (Targets) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
External memory Interface signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
Internal signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
Configured AHB settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
READ/WRITE data alignment - Little Endian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
READ/WRITE data alignment - Big Endian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
AHB-Memory controller translation example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Round-Robin operation example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
Relative priority example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Port ordering example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
System D specifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
System D operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
System E specifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
System E operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
System F specifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
System F operation with priority relaxing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
System G specifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
System G operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
Low power mode parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
Low power mode controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
Memory interface buses with Half Datapath option . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Delay parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
MT47H128M8-3 (DDR2@333 MHz cl5) initialization table. . . . . . . . . . . . . . . . . . . . . . . . 146
MT46H6M16LF-6(Low Power DDR @166 MHz cl3) initialization table . . . . . . . . . . . . . . 147
Parameter size to mapping conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
Registers overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
MEM0_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
MEM1_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
MEM2_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
MEM3_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
MEM4_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
MEM5_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
MEM6_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
MEM7_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
MEM8_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
MEM9_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
MEM10_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
MEM11_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
MEM12_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
MEM13_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
MEM14_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
MEM15_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
MEM16_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
MEM17_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
MEM18_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
MEM19_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
MEM20_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
MEM21_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
MEM22_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Doc ID 018672 Rev 1
35/844
List of Tables
Table 101.
Table 102.
Table 103.
Table 104.
Table 105.
Table 106.
Table 107.
Table 108.
Table 109.
Table 110.
Table 111.
Table 112.
Table 113.
Table 114.
Table 115.
Table 116.
Table 117.
Table 118.
Table 119.
Table 120.
Table 121.
Table 122.
Table 123.
Table 124.
Table 125.
Table 126.
Table 127.
Table 128.
Table 129.
Table 130.
Table 131.
Table 132.
Table 133.
Table 134.
Table 135.
Table 136.
Table 137.
Table 138.
Table 139.
Table 140.
Table 141.
Table 142.
Table 143.
Table 144.
Table 145.
Table 146.
Table 147.
Table 148.
Table 149.
Table 150.
Table 151.
Table 152.
36/844
RM0082
MEM23_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
MEM24_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
MEM25_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
MEM26_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
MEM27_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
MEM28_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
MEM29_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
MEM30_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
MEM31_CTL/MEM32_CTL/MEM33_CTL register bit assignments . . . . . . . . . . . . . . . . . 171
MEM34_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
MEM35_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
MEM36_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
MEM37_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
MEM38_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
MEM39_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
MEM40_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
MEM41_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
MEM42_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
MEM43_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
MEM44_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
MEM45_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
MEM46_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
MEM47_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
MEM48_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
MEM49_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
MEM50_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
MEM51_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
MEM52_CTL/MEM53_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
MEM54_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
MEM55_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
MEM56_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
MEM57_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
MEM58_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
MEM59_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
MEM60_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
MEM61_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
MEM62_CTL/MEM63_CTL/MEM64_CTL register bit assignments . . . . . . . . . . . . . . . . . 180
MEM65_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
MEM66_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
MEM67_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
MEM68_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
MEM[69-97]_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
MEM[98-99]_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
MEM100_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
MEM101_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
MEM102_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
MEM103_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
MEM104_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
MEM105_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
MEM106_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
MEM107_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
MEM108_CTL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
Doc ID 018672 Rev 1
RM0082
Table 153.
Table 154.
Table 155.
Table 156.
Table 157.
Table 158.
Table 159.
Table 160.
Table 161.
Table 162.
Table 163.
Table 164.
Table 165.
Table 166.
Table 167.
Table 168.
Table 169.
Table 170.
Table 171.
Table 172.
Table 173.
Table 174.
Table 175.
Table 176.
Table 177.
Table 178.
Table 179.
Table 180.
Table 181.
Table 182.
Table 183.
Table 184.
Table 185.
Table 186.
Table 187.
Table 188.
Table 189.
Table 190.
Table 191.
Table 192.
Table 193.
Table 194.
Table 195.
Table 196.
Table 197.
Table 198.
Table 199.
Table 200.
Table 201.
Table 202.
Table 203.
Table 204.
List of Tables
Memory controller parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
Jitter at PLL output clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
APB interface signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
Miscellaneous register main memory map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
Miscellaneous local space registers overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
SoC_CFG_CTR register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
DIAG_CFG_CTR register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
PLL 1/2_CTR register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
PLL1/2_FRQ register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
PLL1/2_MOD register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
PLL_CLK_CFG register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
CORE_CLK_CFG register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
PRPH_CLK_CFG register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
PERIP1_CLK_ENB register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
RAS_CLK_ENB register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
PRSC1/2/3_CLK_CFG register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
AMEM_CFG_CTRL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
Clock Synthesizer input frequency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
Auxiliary clock synthesizer register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
PERIP1_SOF_RST register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
RAS_SOF_RST register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
Interconnection matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
ICM 1-9_ARB_CFG register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
DMA_CHN_CFG register bit assignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
USB2_PHY_CFG register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
MAC_CFG_CTR register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
Powerdown_CFG_CTR register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
COMPSSTL_1V8_CFG/DDR_2V5_COMPENSATION register bit assignments. . . . . . . 244
COMPCOR_3V3_CFG register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
DDR_PAD register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
BIST1_CFG_CTR register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
BIST2_CFG_CTR register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
BIST3_CFG_CTR register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
BIST4_CFG_CTR register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
BIST1_STS_RES register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
BIST2_STS_RES register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
BIST3_STS_RES register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
BIST4_STS_RES register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
BIST5_RSLT_REG register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
SYSERR_CFG_CTR register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
USB_TUN_PRM register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
Drive selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
Pull Up and Pull Down Selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
Slew selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
PLGPIO0_PAD_PRG register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
PLGPIO1_PAD_PRG register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
PLGPIO2_PAD_PRG register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
PLGPIO3_PAD_PRG register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
PLGPIO4_PAD_PRG register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
Miscellaneous global space registers overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
RAS_GPP1_IN register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
RAS_GPP2_IN register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
Doc ID 018672 Rev 1
37/844
List of Tables
Table 205.
Table 206.
Table 207.
Table 208.
Table 209.
Table 210.
Table 211.
Table 212.
Table 213.
Table 214.
Table 215.
Table 216.
Table 217.
Table 218.
Table 219.
Table 220.
Table 221.
Table 222.
Table 223.
Table 224.
Table 225.
Table 226.
Table 227.
Table 228.
Table 229.
Table 230.
Table 231.
Table 232.
Table 233.
Table 234.
Table 235.
Table 236.
Table 237.
Table 238.
Table 239.
Table 240.
Table 241.
Table 242.
Table 243.
Table 244.
Table 245.
Table 246.
Table 247.
Table 248.
Table 249.
Table 250.
Table 251.
Table 252.
Table 253.
Table 254.
Table 255.
Table 256.
38/844
RM0082
RAS_GPP_EXT_IN register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
RAS_GPP1_OUT register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
RAS_GPP2_OUT register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
RAS_GPP_EXT_OUT register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
SSP signal interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
External CS selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
External pin connection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
SSP registers summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
SSPCR0 register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
SSPCR1 register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
SSPDR register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
SSPSR register bit assignments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
SSPCPSR register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
SSPIMSC register bit assignments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
SSPRIS register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
SSPMIS register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
SSPICR register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
SSPDMACR register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
PHERIPHID0 register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
PHERIPHID1 register bit assignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
PHERIPHID2 register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
PHERIPHID3 register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
PCELLID0 register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
PCELLID1 register bit assignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
PCELLID2 register bit assignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
PCELLID3 register bit assignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
System controller control and status registers summary . . . . . . . . . . . . . . . . . . . . . . . . . 292
System controller identification registers summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
SCCTRL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
SCIMCTRL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
SCIMSTAT register bit assignments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
SCXTALCTRL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
SCPLLCTRL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
SMI supported instruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
External pin connection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
SMI registers summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
SMI_CR1 register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
SMI_CR2 register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
SMI_SR register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
SMI_TR register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
SMI_RR register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
Watchdog module counter decremented . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
Watchdog control and status registers summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
Watchdog identification registers summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
WdogControl register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
WdogRIS register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
WdogMIS register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
WdogLock register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
External pin connection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
GPT interface signal description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
Couple of GPTs registers summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
Timer_Control register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
Doc ID 018672 Rev 1
RM0082
Table 257.
Table 258.
Table 259.
Table 260.
Table 261.
Table 262.
Table 263.
Table 264.
Table 265.
Table 266.
Table 267.
Table 268.
Table 269.
Table 270.
Table 271.
Table 272.
Table 273.
Table 274.
Table 275.
Table 276.
Table 277.
Table 278.
Table 279.
Table 280.
Table 281.
Table 282.
Table 283.
Table 284.
Table 285.
Table 286.
Table 287.
Table 288.
Table 289.
Table 290.
Table 291.
Table 292.
Table 293.
Table 294.
Table 295.
Table 296.
Table 297.
Table 298.
Table 299.
Table 300.
Table 301.
Table 302.
Table 303.
Table 304.
Table 305.
Table 306.
Table 307.
Table 308.
List of Tables
PRESCALER configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
TIMER_STATUS_INT_ACK register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
TIMER_COMPARE register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
TIMER_COUNT register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
TIMER_REDG_CAPT register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
TIMER_FEDG_CAPT register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
GPIO signal interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
GPIO data direction register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
GPIO data register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
GPIO interrupt control registers summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
GPIO identification registers summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
GPIODIR register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
GPIODATA register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
GPIOIS register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
GPIOIBE register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
GPIOIEV register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
GPIOIE register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
GPIORIS register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
GPIOMIS register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
GPIOIC register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
DMAC signal interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
DMAC global registers summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
DMAC channel registers summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
DMAC peripheral registers summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
DMAC cell identification registers summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
DMACIntStatus register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
DMACIntTCStatus register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
DMACIntTCClear register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
DMA ClntErrorStatus register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
DMACIntErrClr register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
DMACRawIntTCStatus register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
DMACRawIntErrorStatus register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
DMACEnbldChns register bit assignments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
DMACSoftBReq register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
DMACSoftSReq register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
DMACSoftLBReq register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
DMACSoftLSReq register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
DMACConfiguration register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
DMACSync register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
DMACCnSrcAddr register bit assignments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
DMACCnDestAddr register bit assignments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
DMACCnLLI register bit assignments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
DMACCnControl register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
DMAC Configuration register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
RTC functional registers summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
CONTROL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
STATUS register bit assignments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
TIME register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
DATE register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
ALARM TIME register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
ALARM DATE register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
REG1MC registers bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
Doc ID 018672 Rev 1
39/844
List of Tables
Table 309.
Table 310.
Table 311.
Table 312.
Table 313.
Table 314.
Table 315.
Table 316.
Table 317.
Table 318.
Table 319.
Table 320.
Table 321.
Table 322.
Table 323.
Table 324.
Table 325.
Table 326.
Table 327.
Table 328.
Table 329.
Table 330.
Table 331.
Table 332.
Table 333.
Table 334.
Table 335.
Table 336.
Table 337.
Table 338.
Table 339.
Table 340.
Table 341.
Table 342.
Table 343.
Table 344.
Table 345.
Table 346.
Table 347.
Table 348.
Table 349.
Table 350.
Table 351.
Table 352.
Table 353.
Table 354.
Table 355.
Table 356.
Table 357.
Table 358.
Table 359.
Table 360.
40/844
RM0082
REG2MC register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
C3 device summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
C3 components system register summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
C3 components system registers map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
AHB mapped registers for Master Interface (HIF) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
AHB mapped registers for an Instruction Dispatcher (ID). . . . . . . . . . . . . . . . . . . . . . . . . 377
AHB mapped registers for Channel (CH) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
Channel ID Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
DES ECB start instruction bit encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384
DES ECB bit ‘a’ encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384
DES ECB bit ‘b’ encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384
DES CBC START Instruction Bit Encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384
DES ECB APPEND Instruction bit encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
DES CBC Append Instruction Bit Encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
DES registers map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
AES ECB START instruction bit encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
AES ECB Bit ‘a’ encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
AES CBC START instruction bit encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
AES CTR START instruction bit encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
AES ECB APPEND instruction bit encoding. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
AES CBC APPEND instruction bit encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
AES CTR APPEND instruction bit encoding. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
AES registers map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
HASH INIT Instruction bit encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
HASH INIT Bit ‘aa’ encoding. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
HASH APPEND Instruction bit encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
HASH END Instruction bit encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
HASH CONTEXT SAVE Instruction bit encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
HASH CONTEXT RESTORE Instruction bit encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
HMAC INIT Instruction bit encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
HMAC APPEND Instruction bit encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
HMAC END Instruction bit encoding. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
HMAC CONTEXT SAVE Instruction bit encoding. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
HMAC CONTEXT RESTORE instruction bit encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
UHH channel registers map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
External pin connections. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
UHC registers’ base address . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418
EHCI host controller capability registers summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
EHCI host controller operational registers summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
EHCI host controller auxiliary power well registers summary . . . . . . . . . . . . . . . . . . . . . . 419
EHCI host controller specific registers summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420
Host controller operational registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420
HCCAPBASE register bit assignments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421
HCSPARAMS register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421
HCCPARAMS register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
USBCMD register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425
USBSTS register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428
USBINTR register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430
FRINDEX register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431
USBCMD register encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432
PERIODICLISTBASE register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433
ASYNCLISTADDR register bit assignments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433
Doc ID 018672 Rev 1
RM0082
Table 361.
Table 362.
Table 363.
Table 364.
Table 365.
Table 366.
Table 367.
Table 368.
Table 369.
Table 370.
Table 371.
Table 372.
Table 373.
Table 374.
Table 375.
Table 376.
Table 377.
Table 378.
Table 379.
Table 380.
Table 381.
Table 382.
Table 383.
Table 384.
Table 385.
Table 386.
Table 387.
Table 388.
Table 389.
Table 390.
Table 391.
Table 392.
Table 393.
Table 394.
Table 395.
Table 396.
Table 397.
Table 398.
Table 399.
Table 400.
Table 401.
Table 402.
Table 403.
Table 404.
Table 405.
Table 406.
Table 407.
Table 408.
Table 409.
Table 410.
Table 411.
Table 412.
List of Tables
CONFIGFLAG register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434
PORTSC register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434
INSNREG01 register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440
INSNREG03 register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440
INSNREG05 register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440
HcRevision register bit assignments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441
HcControl register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441
HcCommandStatus register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444
HcInterruptStatus register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446
HcInterruptEnable register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
HcInterruptDisable register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448
HcHCCA register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449
HcPeriodCurrentED register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449
HcControlHeadED register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449
HcControlCurrentED register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450
HcBulkHeadED register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450
HcBulkCurrentED register bit assignments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451
HcDoneHead register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451
HcFmInterval register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452
HcFmRemaining register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452
HcFmNumber register bit assignments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453
HcPeriodicStart register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453
HcLSThreshold register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454
HcRhDescriptorA register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455
HcRhDescriptorB register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
HcRhStatus register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
HcRhPortStatus register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459
Endpoints assignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463
SETUP data memory: status quadlet bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . 478
Out data memory: buffer status quadlet bit assignments (for Non-Isochronous OUT) . . . 480
Out data memory: buffer status quadlet bit assignments (for Isochronous OUT). . . . . . . 481
. . . . . . In data memory: buffer status quadlet bit assignments (for Non-Isochronous IN)482
In data memory:buffer status quadlet bit assignments (for Isochronous) . . . . . . . . . . . . . 483
Plug status register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486
Plug pending register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486
In endpoint-specific CSRs summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487
Out endpoint-specific CSRs summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488
Global CSRs summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488
UDCl CSRs summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489
Device configuration register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490
Device control register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492
Device status register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494
Device interrupt register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496
Device interrupt mask register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497
Endpoint interrupt register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497
Endpoint interrupt mask register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497
Endpoint control register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498
Endpoint status register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500
Endpoint buffer size/received packet frame number register bit assignments . . . . . . . . . 501
Endpoint maximum packet size/buffer size register bit assignments . . . . . . . . . . . . . . . . 503
Endpoint SETUP buffer pointer register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . 503
Endpoint data description pointer register bit assignments . . . . . . . . . . . . . . . . . . . . . . . 503
Doc ID 018672 Rev 1
41/844
List of Tables
Table 413.
Table 414.
Table 415.
Table 416.
Table 417.
Table 418.
Table 419.
Table 420.
Table 421.
Table 422.
Table 423.
Table 424.
Table 425.
Table 426.
Table 427.
Table 428.
Table 429.
Table 430.
Table 431.
Table 432.
Table 433.
Table 434.
Table 435.
Table 436.
Table 437.
Table 438.
Table 439.
Table 440.
Table 441.
Table 442.
Table 443.
Table 444.
Table 445.
Table 446.
Table 447.
Table 448.
Table 449.
Table 450.
Table 451.
Table 452.
Table 453.
Table 454.
Table 455.
Table 456.
Table 457.
Table 458.
Table 459.
Table 460.
Table 461.
Table 462.
Table 463.
Table 464.
42/844
RM0082
Endpoint register bit assignments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503
Transmit descriptor 0 (TDES0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510
Transmit descriptor 1 (TEDS1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512
Transmit descriptor 2 (TDES2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512
Transmit descriptor 3 (TDES3) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512
Receive descriptor 0 (RDES0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513
Receive descriptor 1 (RDES1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514
Receive descriptor 2 (RDES2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515
Receive descriptor 3 (RDES3) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515
MAC-UNIV DMA registers summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517
MAC-UNIV MAC global registers summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517
MMC (MAC management counters) registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518
Bus mode register bit assignments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522
Transmit poll demand register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523
Receive poll demand register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523
Receive descriptor list address register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . 524
Transmit descriptor list address register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . 524
Status register bit assignments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525
EB field bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526
TS filed bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526
RS field bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527
NIS field bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527
AIS field bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527
Operation mode register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530
TTC field bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530
RFD field bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531
RFA field bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531
RTC field bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532
Interrupt enable register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532
Missed frame and buffer overflow counter register bit assignments. . . . . . . . . . . . . . . . . 533
MAC configuration register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535
IFG field bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536
BL field bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537
MAC frame filter register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538
PCF field bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539
MII address register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540
CR field bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541
MII data register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541
Flow control register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542
PLT field bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542
VLAN tag register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543
4 bit command registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544
PMT CSR bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545
Interrupt status register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545
Interrupt mask register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546
MAC address0 high register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546
MAC Address0 low register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547
MAC Address1 high register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547
MAC address byte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547
MAC Address1 low register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548
MMC control register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548
MMC receive interrupt register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549
Doc ID 018672 Rev 1
RM0082
Table 465.
Table 466.
Table 467.
Table 468.
Table 469.
Table 470.
Table 471.
Table 472.
Table 473.
Table 474.
Table 475.
Table 476.
Table 477.
Table 478.
Table 479.
Table 480.
Table 481.
Table 482.
Table 483.
Table 484.
Table 485.
Table 486.
Table 487.
Table 488.
Table 489.
Table 490.
Table 491.
Table 492.
Table 493.
Table 494.
Table 496.
Table 497.
Table 498.
Table 499.
Table 500.
Table 501.
Table 502.
Table 503.
Table 504.
Table 505.
Table 506.
Table 507.
Table 508.
Table 509.
Table 510.
Table 511.
Table 512.
Table 513.
Table 514.
Table 515.
Table 516.
Table 517.
List of Tables
MMC transmit interrupt register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550
MMC receive interrupt mask register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . 552
GPIO signal interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555
JPGC memory map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558
JPGC codec core registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559
JPGC codec controller registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559
JPGC FIFO registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559
JPGC internal memories. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560
JPGCreg0 register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560
JPGCreg1 register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561
JPGCreg2 register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562
JPGCReg3 register bit assignments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562
JPGCreg4-7 register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563
JPGC control status register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564
JPGC bytes from Fifo to core register bit assignments. . . . . . . . . . . . . . . . . . . . . . . . . . . 564
JPGC bytes from core to Fifo register bit assignments. . . . . . . . . . . . . . . . . . . . . . . . . . . 565
JPGCbust Count before Init register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565
JPGC Fifo in register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566
JPGC Fifo out register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566
JPGCqmem memory map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566
JPGCHuffMin memory map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567
JPGC huffbase memory map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567
JPGC huffsymb memory map. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567
JPGCDHTmem memory map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568
JPGCHuffEnc memory map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569
Location of AC huffman codes in JPGCHuffEnc memory . . . . . . . . . . . . . . . . . . . . . . . . 569
Location of DC huffman codes in JPGCHuffEnc memory . . . . . . . . . . . . . . . . . . . . . . . . 570
Settings of K,L and (N+1) parameters for SIR,MIR and FIR in baud rate generation unit 575
Request signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575
FIrDA controller interrupt summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577
FIrDA controller control and status registers summary. . . . . . . . . . . . . . . . . . . . . . . . . . . 578
FIrDA controller data registers summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578
FIrDA controller interrupt and DMA registers summary . . . . . . . . . . . . . . . . . . . . . . . . . . 578
IrDA_CON register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579
IrDA_CONF register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579
IrDA_PARA register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581
IrDA_DV register bit assignments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582
IrDA_STAT register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582
IrDA_TFS register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583
IrDA_RFS register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583
IrDA_TXB register bit assignments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584
IrDA_RXB register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584
IrDA_IMSC register bit assignments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584
IrDA_RIS register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585
IrDA_MIS register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586
IrDA_ICR register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586
IrDA_ISR register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587
IrDA_DMA register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587
UART interrupt summary together with combined outputs . . . . . . . . . . . . . . . . . . . . . . . . 592
UART base address . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594
UART data registers summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594
UART error status/clear registers summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594
Doc ID 018672 Rev 1
43/844
List of Tables
Table 518.
Table 519.
Table 520.
Table 521.
Table 522.
Table 523.
Table 524.
Table 525.
Table 526.
Table 527.
Table 528.
Table 529.
Table 530.
Table 531.
Table 532.
Table 533.
Table 534.
Table 535.
Table 536.
Table 537.
Table 538.
Table 539.
Table 540.
Table 541.
Table 542.
Table 543.
Table 544.
Table 545.
Table 546.
Table 547.
Table 548.
Table 549.
Table 550.
Table 551.
Table 552.
Table 553.
Table 554.
Table 555.
Table 556.
Table 557.
Table 558.
Table 559.
Table 560.
Table 561.
Table 562.
Table 563.
Table 564.
Table 565.
Table 566.
Table 567.
Table 568.
Table 569.
44/844
RM0082
UART control and status register summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594
UART interrupts and DMA registers summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595
UART identification register summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595
UART data register summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596
UARTRSR register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596
UARTECR register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596
UARTFR register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597
UARTIBRD register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 598
UARTFBRD register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 598
Typical baud rate and divisors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599
UARTLCR_H register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599
Truth table for SPS, EPS and PEN bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 600
UARTCR register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601
UARTIFLS register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602
UARTIMSC register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603
UARTRIS register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604
UARTMIS register bit assignments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604
UARTICR register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605
UARTDMACR register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606
Meaning of UART modem input/output in DTE and DCE modes . . . . . . . . . . . . . . . . . . . 606
First byte assignment in addressing slave protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609
I2C controller interrupt sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617
External pin connections. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619
I2C registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619
IC_CON register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622
IC_TAR register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624
IC_SAR register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625
IC_HS_MADDR register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625
IC_DATA_CMD register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625
IC_SS_SCL_HCNT register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 626
IC_SS_SCL_HCNT sample calculations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627
IC_SS_SCL_LCNT register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627
IC_SS_SCL_LCNT sample calculations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627
IC_FS_SCL_HCNT register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628
IC_FS_SCL_HCNT sample calculations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628
IC_FS_SCL_LCNT register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629
IC_FS_SCL_LCNT sample calculations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629
IC_HS_SCL_HCNT register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630
IC_HS_SCL_HCNT sample calculations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630
IC_HS_SCL_LCNT register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631
IC_HS_SCL_LCNT sample calculations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631
IC_INTR_STAT register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631
IC_INTR_MASK register bit assignments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632
IC_RAW_INTR_STAT register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633
IC_RX_TL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634
IC_TX_TL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634
IC_CLR_INTR register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635
Interrupt clearing registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635
IC_ENABLE register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636
IC_STATUS register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636
IC_TXFLR and IC_RXFLR register bit assignments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637
IC_TX_ABRT_SOURCE register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 638
Doc ID 018672 Rev 1
RM0082
Table 570.
Table 571.
Table 572.
Table 573.
Table 574.
Table 575.
Table 576.
Table 577.
Table 578.
Table 579.
Table 580.
Table 581.
Table 582.
Table 583.
Table 584.
Table 585.
Table 586.
Table 587.
Table 588.
Table 589.
Table 590.
Table 591.
Table 592.
Table 593.
Table 594.
Table 595.
Table 596.
Table 597.
Table 598.
Table 599.
Table 600.
Table 601.
Table 602.
Table 603.
Table 604.
Table 605.
Table 606.
Table 607.
Table 608.
Table 609.
Table 610.
Table 611.
Table 612.
Table 613.
Table 614.
Table 615.
Table 616.
Table 617.
Table 618.
Table 619.
Table 620.
Table 621.
List of Tables
IC_DMA_CR register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 640
IC_DMA_TDLR register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 640
IC_DMA_RDLR register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 640
IC_COMP_PARAM register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 641
External pin connection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645
ADC registers summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645
ADC_STATUS_REG register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 646
Conversion data bits position in AVERAGE_REG (High Resolution = 0). . . . . . . . . . . . . 648
Conversion data bits position in AVERAGE_REG (High Resolution = 1). . . . . . . . . . . . . 648
SCAN RATE register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 649
ADC_CLK_REG register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 649
CHx CTRL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 650
CHx DATA register (normal mode) bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 651
CHx DATA register (HIGH RESOLUTION mode bit assignments . . . . . . . . . . . . . . . . . . 651
RAS address space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657
FSMC address space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657
APB address space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657
RAS memory map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657
RAS Register 1 description. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 658
RAS Register 2 description. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659
RAS Interrupt assignment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 660
RAS DMA configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 661
Parallel NOR flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664
NAND Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665
FSMC Address Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665
FSMC control and timing registers summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666
FSMC identification registers summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667
GenMemCtrl(i) register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667
GenMemCtrl_tim(i) register bit assignments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669
GenMemCtrl_PC(i) register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 670
GenMemCtrl_Comm(i)/GenMemCtrl_Attrib(i) register bit assignments . . . . . . . . . . . . . . 671
GenMemCtrlECCr(i) register bit assignments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 671
GenMemCtrlPeriphID0 register bit assignments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 672
GenMemCtrlPeriphID1 register bit assignments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 672
GenMemCtrlPeriphID2 register bit assignments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 672
GenMemCtrlPeriphID3 register bit assignments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 672
GenMemCtrlPeriphID3 register bit assignments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673
GenMemCtrlPeriphID1 register bit assignments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673
GenMemCtrlPCelllD2 register bit assignments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673
GenMemCtrlPCelllD3 register bit assignments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673
Signal interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 679
AHB master/Target interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 680
SD2.0/SDIO2.0/MMC4.2 card interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 680
System Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682
RAM Interface signals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682
SDIO registers map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695
Register field types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 696
SDMASysAddr register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697
BLKSize register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697
BLKCount register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699
ARG register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699
TRMODE register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699
Doc ID 018672 Rev 1
45/844
List of Tables
Table 622.
Table 623.
Table 624.
Table 625.
Table 626.
Table 627.
Table 628.
Table 629.
Table 630.
Table 631.
Table 632.
Table 633.
Table 634.
Table 635.
Table 636.
Table 637.
Table 638.
Table 639.
Table 640.
Table 641.
Table 642.
Table 643.
Table 644.
Table 645.
Table 646.
Table 647.
Table 648.
Table 649.
Table 650.
Table 651.
Table 652.
Table 653.
Table 654.
Table 655.
Table 656.
Table 657.
Table 658.
Table 659.
Table 660.
Table 661.
Table 662.
Table 663.
Table 664.
Table 665.
Table 666.
Table 667.
Table 668.
Table 669.
Table 670.
Table 671.
Table 672.
Table 673.
46/844
RM0082
Determination of transfer type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 700
CMD register bit assignments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 701
Relation between parameters and the name of response type . . . . . . . . . . . . . . . . . . . . 702
RESP register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 702
Response bit definition for each response type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 703
BufDataPort register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 703
PRSTATE register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 703
HOSTCTRL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 707
PWRCTRL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 708
BLKGAPCTRL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 708
WKUPCTRL register bit assignments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 710
CLKCTRL register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 712
TMOUTCTRL register bit assignments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713
SWRES register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714
NIRQSTAT register bit assignments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715
Relation between transfer complete and data time out error . . . . . . . . . . . . . . . . . . . . . . 717
Relation between command complete and time out error . . . . . . . . . . . . . . . . . . . . . . . . 718
ERRIRQSTAT register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 718
Relation between command CRC error end time out error. . . . . . . . . . . . . . . . . . . . . . . . 720
NIRQSTATEN register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 721
ERRIRQSTATEN register bit assignments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 721
NIRQSIGEN register bit assignments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 722
ERRIRQSIGEN register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 723
ACMD12ERSTS register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 723
Relation between auto CMD12 CRC error and auto CMD12 timeout error . . . . . . . . . . . 724
CAP1 register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725
CAP2 register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 727
MAXCURR1 register bit assignments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 727
MAXCURR2 register bit assignments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 728
Maximum current value definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 728
ACMD12FEERSTS register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 728
FEERRINTSTS register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 729
ADMAERRSTS register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 730
ADMAERRSTS bits[1:0] definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 731
ADMAADDR register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 732
32 bit address ADMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 732
64 bit Address ADMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 732
SPIIRQSUPP register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 733
SLTIRQSTS register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 733
HCTRLVER register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 733
CLCD signal interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 738
LCD STN panel signal multiplexing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739
LCD TFT panel signal multiplexing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739
LBLP, DMA FIFO output bit 31 to bit 16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 742
LBLP, DMA FIFO output bit15 to bit 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 742
BBBP, DMA FIFO output bit 31 to bit 16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 742
BBBP, DMA FIFO output bit15 to bit 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 742
LBBP, DMA FIFO output bit 31 to bit 16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 743
LBBP, DMA FIFO output bit15 to bit 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 743
RGB Mode data format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 743
Palette data storage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745
CLCD configuration registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 748
Doc ID 018672 Rev 1
RM0082
Table 674.
Table 675.
Table 676.
Table 677.
Table 678.
Table 679.
Table 680.
Table 681.
Table 682.
Table 683.
Table 684.
Table 685.
Table 686.
Table 687.
Table 688.
Table 689.
Table 690.
Table 691.
Table 692.
Table 693.
Table 694.
Table 696.
Table 698.
Table 699.
Table 700.
Table 701.
Table 702.
Table 703.
Table 704.
Table 705.
Table 706.
Table 707.
Table 708.
Table 709.
Table 710.
Table 711.
Table 712.
Table 713.
Table 714.
Table 715.
Table 716.
Table 717.
Table 718.
Table 719.
Table 720.
Table 721.
Table 722.
Table 723.
Table 724.
Table 725.
Table 726.
Table 727.
List of Tables
Color palette register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 749
Identification register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 749
LCDTiming0 register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 750
LCDTiming1 register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 751
LCDTiming2 register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 752
LCDTiming3 register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754
LCDUPBASE register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755
LCDLPBASE register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755
LCDIMSC register bit assignments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755
LCDControl register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756
LCDRIS register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 758
LCDMIS register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 758
LCDICR register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 759
LCDUPCURR register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 759
LCDLPCURR register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 759
LCDPalette register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 759
PHERIPHID0 register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 760
PHERIPHID1 register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 760
PHERIPHID2 register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 761
PHERIPHID3 register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 761
PCCELLIDIDO register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 761
PCELLIDID2 register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 761
Telecom block pin signals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 765
I2S interface pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 777
Camera interface signal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 781
Telecom address map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 783
Telecom registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 783
Boot register (Offset 0x00) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 784
TDM_conf register (Offset 0x04) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 785
GPIO8_DIR register (Offset 0x08) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 787
GPIO10_DIR register (Offset 0x0C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 788
GPIO8_out register (Offset 0x10) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 788
GPIO10_out register (Offset 0x14) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 789
GPIO8_in (Offset 0x18) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 789
GPIO10_in register (Offset 0x1C). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 790
IT_GEN register (Offset 0x24) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 790
GPIOt register (Offset 0x28) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 792
GPIOtt register (Offset 0x2C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 792
PERS_time register (Offset 0x30) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 792
PERS_data register (Offset 0x34) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 792
TDM_timeselot_NBR register (Offset 0x38) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 793
TDM_Frame_NBR register (Offset 0x3C). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 793
TDM_SYNC_GEN register (Offset 0x40) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 793
SPI_I2C_usage register (Offset 0x44) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 798
SPI_I2C_active (Offset 0x48) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 798
I2S_CONF register (Offset 0x4C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 799
I2S_CONF2 register (Offset 0x6C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 801
I2S_CLK_CONF register (Offset 0x50) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 802
Interrupt mask register (Offset 0x54) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 804
Dummy access address . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 805
Interrupt status register (Offset 0x58) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 805
Action memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 806
Doc ID 018672 Rev 1
47/844
List of Tables
Table 728.
Table 729.
Table 730.
Table 731.
Table 732.
Table 733.
Table 734.
Table 735.
Table 736.
Table 737.
Table 738.
Table 739.
Table 740.
Table 741.
Table 742.
Table 743.
Table 744.
Table 745.
Table 746.
Table 747.
Table 748.
Table 749.
Table 750.
Table 751.
48/844
RM0082
External signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 811
Register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 812
MDCTRLREG register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 812
GPIODIRREG register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 813
.GPIODATAREG register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 813
STATUSREG register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 813
KBREG register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814
Key-code table (hex values) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814
Power state for synchronous DRAM system (DRAM clocked by PLL1) . . . . . . . . . . . . . . 817
Power state for asynchronous DRAM system (DRAM clocked by PLL2) . . . . . . . . . . . . . 818
Techniques applicable in NORMAL state . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 820
Modules supporting DCS technique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 821
Power and current consumption for modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 824
Delta power consumption for modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 824
IP voltage usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 825
Booting types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 826
Command format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 834
Device descriptors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835
Configuration registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835
Interface registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 836
Bulk OUT endpoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 836
Bulk In endpoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 836
String descriptors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 837
Document revision history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 843
Doc ID 018672 Rev 1
RM0082
List of figures
List of figures
Figure 1.
Figure 2.
Figure 3.
Figure 4.
Figure 5.
Figure 6.
Figure 7.
Figure 8.
Figure 9.
Figure 10.
Figure 11.
Figure 12.
Figure 13.
Figure 14.
Figure 15.
Figure 16.
Figure 17.
Figure 18.
Figure 19.
Figure 20.
Figure 21.
Figure 22.
Figure 23.
Figure 24.
Figure 25.
Figure 26.
Figure 27.
Figure 28.
Figure 29.
Figure 30.
Figure 31.
Figure 32.
Figure 33.
Figure 34.
Figure 35.
Figure 36.
Figure 37.
Figure 38.
Figure 39.
Figure 40.
Figure 41.
Figure 42.
Figure 43.
Figure 44.
Figure 45.
Figure 46.
Figure 47.
Figure 48.
SPEAr300 top view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
SPEAr300 - Core architecture overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Multiplexing scheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
ARM926EJ-S block diagram. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
VIC block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
ICM block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
MPMC block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
Memory controller architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
WRAPx effective transaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Weighted round-robin priority group structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
Memory map: Maximum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Alternate memory map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Clock generation scheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
Processor clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
DDR Controller Clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
RAS block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
I2S clock schematic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
Telecom clock schematic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
Main Crystal Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
RTC crystal connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
Top view of miscellaneous registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
SPI block diagram. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
System controller block diagram. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
System mode control state machine. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
SMI block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
External SPI memory map in AHB address space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
Watchdog module block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
GPT block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
GPIO block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
GPIO signal interfaces diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
GPIO interrupt triggering logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
DMAC block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
DMAC signal interface diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
DMAC-to-interrupt controller connection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
C3 block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
UHC block diagram. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
USB Host controller (UHOSTC) block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
UDC-AHB subsystem block diagram within the USB 2.0 device . . . . . . . . . . . . . . . . . . . 464
UDC_Device block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464
RxFIFO implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467
Linked-list memory structure in DMA mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471
In transaction flow in DMA mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473
Out transaction flow in DMA mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474
In transaction flow in slave-only mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476
Out transaction flow in slave-only mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477
SETUP data memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478
Out data memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479
In data memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482
Doc ID 018672 Rev 1
49/844
List of figures
Figure 49.
Figure 50.
Figure 51.
Figure 52.
Figure 53.
Figure 54.
Figure 55.
Figure 56.
Figure 57.
Figure 58.
Figure 59.
Figure 60.
Figure 61.
Figure 62.
Figure 63.
Figure 64.
Figure 65.
Figure 66.
Figure 67.
Figure 68.
Figure 69.
Figure 70.
Figure 71.
Figure 72.
Figure 73.
Figure 74.
Figure 75.
Figure 76.
Figure 77.
Figure 78.
Figure 79.
Figure 80.
Figure 81.
Figure 82.
Figure 83.
Figure 84.
Figure 85.
Figure 86.
Figure 87.
Figure 88.
Figure 89.
Figure 90.
Figure 91.
Figure 92.
Figure 93.
Figure 94.
Figure 95.
Figure 96.
Figure 97.
Figure 98.
Figure 99.
Figure 100.
50/844
RM0082
UDC-AHB subsystem memory map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490
MAC-UNIV (MAC-AHB configuration) system-level block diagram . . . . . . . . . . . . . . . . . 506
DMA descriptor list: ring structure (left) and chain structure (right). . . . . . . . . . . . . . . . . . 509
DMA descriptor format (Transmit Descriptor, 32 bit) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510
DMA descriptor format (Receive Descriptor, 32 bit) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513
Interrupt management: sbd_intr_o and pmt_intr_o generation. . . . . . . . . . . . . . . . . . . . . 516
Wake-up frame filter registers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544
Clocking scheme for MAC-AHB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554
JPGC signal interfaces diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556
JPGC block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556
Dataflow block diagram of the FIrDA controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572
UART block diagram. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590
I2C controller functional block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 608
START and STOP conditions [from I2C-bus specification] . . . . . . . . . . . . . . . . . . . . . . . . 609
START byte procedure [from I2C-bus specification] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610
Multiple master arbitration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 616
Clock synchronization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617
ADC block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643
FSMC block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663
SDIO controller pin diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 679
Architectural block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683
SD card detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684
SD clock supply sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685
Command issue sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 686
Command completion sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687
Data transaction sequence without DMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 689
Data transaction sequence with SDMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 691
Data transaction sequence with ADMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693
Abort transaction sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694
CLCD block diagram. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 737
Powering up and down sequences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 748
Power up & power down sequences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 763
CLCD clock muxing scheme. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 764
Telecom block diagram. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 766
TDM clock cell block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767
SYNC0 (slave/master) and SYNC1 to SYNC3 possible shaping . . . . . . . . . . . . . . . . . . . 768
SYNC4 to SYNC7 generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 769
TDM cell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 769
Illustration for TDM switching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 771
Storage in memory during an odd switched frame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 771
Storage in memory during an even switched frame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 772
Various type of data carried by the TDM bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 773
Address generation and bank switching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 773
Memory filling after 3 frames according narrowband cases . . . . . . . . . . . . . . . . . . . . . . . 774
Memory filling after 3 consecutive frames for two wideband cases . . . . . . . . . . . . . . . . . 775
Sample management on odd frame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 775
Sample management on even frame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776
Read/write sequence during frame N of a buffer for a given channel. . . . . . . . . . . . . . . . 776
Buffer address generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 777
I2S data reception and transmission (8 bits) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 778
I2S data flow on 2*32 bit data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 779
DAC application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 780
Doc ID 018672 Rev 1
RM0082
Figure 101.
Figure 102.
Figure 103.
Figure 104.
Figure 105.
Figure 106.
Figure 107.
Figure 108.
Figure 109.
Figure 110.
Figure 111.
Figure 112.
Figure 113.
Figure 114.
Figure 115.
Figure 116.
Figure 117.
Figure 118.
Figure 119.
List of figures
DAC used with TDM at 8 kHz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 780
Camera interface block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 781
IT bus change and persistency supervision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 782
TDM CLK_GEN bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 787
I2S clock tree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 804
Interrupt management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 809
Keyboard controller block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 810
Operative system control states . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 817
Clock supply . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 822
Typical power consumption with DDR2 @ 333 MHz . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823
Typical power consumption with DDR2 @ 166 MHz and mobile DDR. . . . . . . . . . . . . . . 823
Boot stages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 827
Hardware memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 828
Boot flows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 831
Serial NOR Flash boot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 832
NAND Flash boot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 833
USB boot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 838
Serial boot. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 840
Ethernet boot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 842
Doc ID 018672 Rev 1
51/844
Acronyms
1
RM0082
Acronyms
The below table contains acronyms and abbreviations that are used in this document.
Table 1.
52/844
Acronyms
Terms
Expansion
ADC
Analog to Digital Convertor
AES
Advanced Encryption Standard
AFE
Analog Front End
ALU
Arithmetic Logic Unit
ASIC
Application Specific Integrated Circuit
AS
Application Subsystem
AMBA
Advanced Micro controller Bus Architecture
AHB
AMBA High speed Bus
APB
Advanced Peripheral Bus
BIST
Built-In Self Test
BS
Basic Subsystem
CBC
Cipher Block Chaining
CTR
Counter
CMOS
Complimentary Metal-Oxide Semiconductor.
CRC
Cyclic Redundancy Check
DAC
Digital to Analog Convertor
DES
Data Encryption Standard
DLL
Data Link Layer
DMA
Direct Memory Access
DDR
Double Data Rate
ECB
Electronic Code Book
EHCI
Enhanced Host Controller Interface
FIFO
First-In-First-Out
FPGA
Field Programmable Gate Array
FSMC
Flexible Static Memory Controller
GPIO
General Purpose Input Output
HS
High speed Subsystem
IEEE
Institute of Electrical and Electronics Engineers
ISO
Isochronous
JPEG
Joint Photographic Experts Group
JTAG
Joint Test Action Group
Doc ID 018672 Rev 1
RM0082
Acronyms
Table 1.
Acronyms (continued)
Terms
Expansion
LIFO
Last-In-First-Out
LS
Low speed Subsystem
LSB
Least Significant Bit
MAC
Media Access Control
MCU
Micro-Controller Unit
MD-5
Message Digest 5
MMU
Memory Management Unit
MSB
Most Significant Bit
OHCI
Open Host Controller Interface
PHY
Physical layer
RAM
Random Access Memory
RAS
Reconfigurable Array Subsystem
RF
Radio Frequency
RFU
Reserved for Future Use
RISC
Reduced Instruction Set Computing
ROM
Read Only Memory
RTC
Real Time Clock
RX
Receive
SDIO
Secure Digital Input Output
SHA-1
Secure Hash Algorithm
SoC
System-on-Chip
SPEAr
Structured Processor Enhanced Architecture
SMI
Serial Memory Interface
SSP
Synchronous Serial Peripheral
TCM
Tightly Coupled Memory
TX
Transmit
UART
Universal Asynchronous Receiver Transmitter
USB
Universal Serial Bus
VIC
Vectored Interrupt Controller
WDT
Watchdog Timer
Doc ID 018672 Rev 1
53/844
Preface
RM0082
2
Preface
2.1
Terms & conditions
The following terms are used hereafter in this document.
●
Reserved - All reserved or unused bits of registers must be written as zero, and ignored
on read unless otherwise stated in the relevant text.
2.2
Conventions
2.2.1
Numbering
The following convention of stating constant numbers is used in this document:
●
[<size in bits>]’<base><number>
where:
●
<size in bits>: (optional) width of bits field associated to <number>
●
<base>: “b” for binary, ‘h” for hexadecimal, “o” for octal, “d” for decimal
●
<number>: value of constant number, according to <base>
Examples:
‘d19
unsized decimal value
8’h2C
8 bit wide hexadecimal value of 0x2C, corresponding to b00101100
8’b011001
8 bit wide binary value of b00011001
32’hFFFF
32 bit wide hexa decimal value of 0xFFFF, corresponding to
b00000000000000001111111111111111
2.2.2
Bits
The conventions below apply to description of both bit and registry field hereafter in this
document:
2.2.3
●
a bit is defined as “set” when its value is set to ‘b1.
●
a bit is defined as “cleared” when its value is set to ‘b0.
Typographical
The following typographical conventions are used hereafter in this document:
Table 2.
54/844
Typographical conventions
Typographic format
Meaning
italic
Highlights notes
bold
Highlights important terms, definitions and names of registry
field.
MONOSPACE CAPITAL BOLD
Indicates signal names.
Doc ID 018672 Rev 1
RM0082
3
Reference documentation
Reference documentation
1.
ARM926EJ-S – Technical reference manual
2.
AMBA specification (ARM IHI 0011A), rev. 2.0
3.
USB 2.0 specification
4.
OHCI specification
5.
EHCI specification
6.
ISO/IEC 10918-1 (International Organization for Standardization)
Doc ID 018672 Rev 1
55/844
Product overview
RM0082
4
Product overview
4.1
Device overview
An outline picture of the main SPEAr300 functional interfaces is shown in Figure 1.
Figure 1.
SPEAr300 top view
USB Device
I2C
USB2 Host
SSP
DDR2/DDR Low
Power
UART
GPIO
IrDA
TDM/BUS
ADC
I2S
SPEAr300
Camera I/F
SDIO I/F
CLCD
FSMC
Keyboard
56/844
Serial Flash Interface
(SMI)
MII I/F
Doc ID 018672 Rev 1
RM0082
4.1.1
Product overview
Main features
The following main functionalities are implemented in SPEAr300 embedded MPU device:
●
ARM926EJ-S core @333 MHz, 16+16 KB-I/D cache, configurable TCM-I/D size, MMU,
TLB, JTAG and ETM trace module (multiplexed interfaces).
●
Dynamic power saving features.
●
High performance linked list 8-channel DMA.
●
Multi-port memory controller: 8/16 bit mobileDDR@166 MHz or DDR2@333 MHz.
●
USB2.0 Host (High-Full-Low speed); integrated PHY transceiver.
●
USB2.0 Device (High-Full speed); integrated PHY transceiver.
●
Ethernet 10/100 MAC with MII Interface (IEEE-802.3)
●
I2C (High-Fast-Low speed) Master/Slave.
●
Cryptographic co-processor (C3).
●
IrDA controller with a data rate from 9.6 Kbps to 4 Mbps.
●
Touchscreen support (using ADC).
●
RTC - WDT - SYSCTR - MISC internal control registers.
●
ADC (1us/1MSPS) 8 analog input channels; 10 bit resolution.
●
JPEG codec accelerator single clock per pixel encoding decoding.
●
6 x 16 bits general purpose Timers with programmable prescaler (only 4 timers with
capture mode).
●
32KB ROM & up to 56 KB internal SRAM
●
Flexible static memory controller (FSMC) up to 16 bit data bus width, supporting
external asynchronous SRAM, NAND/NOR Flash.
●
3 x SPI Master/Slave (Motorola-Texas_National) Master/Slave up to 50 Mbps.
●
SDIO interface supporting SPI, SD1, SD4 and SD8 mode with card detect, write
protect, LED.
●
I2S interface, full duplex with data buffer for left and right channels allowing up to 64 ms
of voice buffer (for 32 bit samples). The I2S and SDIO interfaces share the same RAM
resources.
●
UART with HW flow control (speed rate up to 3 Mbps)
●
Up to 512 timeslots, master or slave TDM. Any input timeslot can be switched to any
output timeslot, and/or can be buffered for computation (up to 16 channels of 1 to 4
timeslots buffered during 32 ms). Up to 16 buffers can be played in output timeslots.
●
Up to 8 additional I2C/SPI chip selects.
●
Camera interface ITU-601 with external or embedded synchronization (ITU-656 or
CSI2). Picture limit is given by the line length that must be stored in a 2048*32 buffer.
●
Color LCD Controller, supports up to 1024X768 resolution, 24 bpp true colour,
STN/TFT display panels.
●
9 x 9 keyboard controller.
●
18 GPIOs for CODEC (up to 8 quad CODECS) & SLIC management.
●
1 bit DAC
●
Up to 62 GPIOs (multiplexed with peripheral I/Os), up to 22 with interrupt capability.
●
Possible NAND / NOR Flash booting.
●
8/16 bits parallel Flash interface allowing connection of NOR or NAND Flash.
Doc ID 018672 Rev 1
57/844
Product overview
4.2
Architecture properties
●
58/844
RM0082
Power save features:
–
Operating frequency SW programmable.
–
Clock gating functionality.
–
Low frequency operating mode.
–
Automatic power saving controlled from application activity demands.
●
Architecture easily extensible.
●
External memory bandwidth of each master tuneable to meet the target performances
of different applications.
Doc ID 018672 Rev 1
RM0082
Product overview
4.3
System architecture overview
4.3.1
Core architecture
The internal architecture is based on several-shared subsystem logics interconnected
through a multilayer interconnection matrix as shown in the Figure 2.
Figure 2.
12
Debug
Master
clock
2
Master
1
reset
5
0÷6
2
Oscillator
SPEAr300 - Core architecture overview
JTAG/ETM9
Basic subsystem
System
Ctrl
Flash
serial
Coprocessor
TCM-I/D
Timer
Int.Ctrl
cf
g
M
0
ROM
32KB
Misc.
RTC
Timer
3 4 3-
1
2
1
Multi- layer AHB interconnect matrix
WDT
1-
12
3
3 6
8-5 2 7- 64 7
2-
12(
67
4)
Low SpeedD
subsystem
RAM
8KB
JPEG
codec
0÷2
IrDA
0÷2
I2C
0÷7
SPI
0÷6
Uart
10
8 ch.
GPIO
DMA
8 chan.
GPIO
Timer
0÷8
B
ADC
SPEAr300
ARM
CPU
subsystem
ARM926EJS
16+16KB-I/D Cache
2
3
9-4
1
-6
10
4- 5
2
5-
SDRAM
Ctrl DDR1
-2
DDR
M
2
MM M
3 1 4
High Speed
subsystem
A
74.5kBRAM
Cuts:
Half Dual Port
(AHB wired):
2048 * 32 * 1
Dual Port:
96 *128 * 1
1024 * 32 * 4
128 * 8 * 8
Single Port:
2048 * 32 * 2
1024 * 32 * 2
512 * 32 * 4
2048 * 8 * 8
Q
P M
I
H
G F E
USB 2.0
host
L
Reconfigurable Array Subsystem
(RAS)
- TDM/BUS (512 timeslots)
- Upto 8 addiitonal I2C/SPI
chip selects
USB 2.0
host
USB 2.0
device
- I2S
Ethernet
Mac
- Camera
- SDIO
- TFT/STN CLCD controller
- FSMC
- Keyboard
- GPIO
R econfigurable
Array
Subsystem
56
4
4
3
USB
Host
USB
Host
USB
device
0/18
MII
to PHY
C Application
subsystem
RI-O
C3
Words num.
bits wide
instances number
102
98 GPIO, 4clk
The switch matrix structure allows different subsystem dataflows to be executed in parallel
improving the core platform efficiency.
High performance master agents are directly interconnected with the memory controller
reducing the memory access latency. Three different memory paths (two of them shared
with other masters) are reserved for the programmable logic to enhance the user application
Doc ID 018672 Rev 1
59/844
Product overview
RM0082
throughput. The overall memory bandwidth assigned to each master port can be
programmed and optimized through an internal efficient weighted round-robin arbitration
mechanism.
4.4
CPU subsystem
●
4.5
ARM926EJ-S running at 333 MHz with:
–
MMU
–
16 Kbyte of instruction cache
–
16 Kbyte of data cache
–
AMBA bus interface
–
JTAG
–
ETM9 (embedded trace macro-cell) for debug, large size version.
●
Local timer (two channels)
●
Interrupt controller managing sources which are prioritized and vectorized.
Multilayer bus matrix
The bus matrix has seven master inputs: two DMA inputs, and one input each for the
Reconfigurable Array Subsystem (RAS) block, Ethernet controller, USB device, USB host
controller and C3. There are ten slave outputs connected to almost all the system blocks:
Low Speed Subsystem, Application Subsystem, Basic Subsystem, High Speed Subsystem,
DDR Controller Port-2, RAS-F, RAS-G, RAS-I and two DDR Controller Port - 3.
4.6
Dynamic memory controller
This is a multi-port memory controller able to manage DDR mobile up to 166 MHz and
DDR2 up to 333 MHz external memory. Internally, it handles 5 ports supporting the following
masters:
●
CPU
●
Reconfigurable Array Subsystem (RAS)
●
RAS block and one DMA channel through the multilayer bus matrix
●
Ethernet MAC muxed with USB 2.0 device, C3 accelerator and the RAS block.
●
USB 2.0 Host controller muxed with C3 accelerator
as well as the configuration port that can be accessed by the CPU or by the RAS logic
through the multilayer bus matrix.
The multi-port memory controller block has a programmable arbitration scheme and the
transactions happen on a different layer from the main bus. It also offers a local FIFO to
increase the throughput and reduce the latency.
60/844
Doc ID 018672 Rev 1
RM0082
4.7
4.8
4.9
Product overview
Basic subsystem
●
Eight high performance DMA channels with two AHB interfaces to parallelize the
activity when two channels are working at the same time.
●
32 Kbyte of ROM.
●
Serial Flash interface capable of working up to 50 Mbps.
●
Four timers with programmable prescaler.
●
Watchdog timer.
●
RTC with separate power supply allowing battery connection
●
Upto 6 GPIOs bidirectional signals with interrupt capability
●
System controller and miscellaneous registers array allowing a full configurability of the
system.
High speed connectivity subsystem
●
Ethernet MAC controller that can support 10/100 Mbps with external PHY.
●
One USB host controller compatible with USB 2.0 high-speed specification managing
two ports. The peripheral has dedicated channel to the multi-port memory controller
and two slave ports for CPU programming (OHCI and EHCI). The PHYs are
embedded. One host controller at a time can perform high speed transfer.
●
One USB device compatible with USB 2.0 high-speed specifications.
A dedicated channel connects the peripheral with the multi-port memory controller and
registers and internal FIFO are accessible from the CPU through the main AHB bus.
An USB-Plug detector block is also available to detect the presence of the VBUS
voltage.
The port is provided with sixteen physical endpoints and proper configurations to
achieve logical endpoints.
Low speed connectivity subsystem
●
One UART with a data rate up to 3 Mbps.
●
IrDA controller with a data rate from 9.6 Kbps to 4 Mbps.
●
One Synchronous Serial Peripheral (SSP) controller capable of operating in master
and slave (Motorola-Texas-National) with a data rate up to 40 Mbps.
●
One I2C controller capable of operating in master and slave mode and covering all the
possible speeds (data rates) (high, fast and low).
●
JPEG CODEC accelerator (1clk per pixel).
●
57 Kbyte of static RAM.
●
ADC converter (1 µs/1 MSPS) with 8 analog input channels, 10 bit approximation.
Doc ID 018672 Rev 1
61/844
Product overview
4.10
RM0082
Application subsystem
Channel Control Coprocessor (C3) that offers the following main features:
4.11
●
High performance DMA based co-processor enabling the acceleration of data-driven
computationally expensive functions, such as: Cryptography, Pattern matching, Signal
Processing, etc.
●
Highly programmable (instruction driven) controller.
●
Four Instruction Dispatchers.
●
Four hardware accelerators channels with in/out FIFO inside.
●
64 KB of internal RAM for low latency accesses.
●
Coupling/Chaining Module (internal cross- bar) for inter channel direct high-speed
communications, up to 8 paths.
●
Cryptographic channels library that includes:
●
AES with ECB, CBC, CTR modes.
●
Mode Programmable AES.
●
DES/3DES with ECB, CBC modes.
●
MD5, SHA-1, SHA256 with HMAC.
Reconfigurable logic array subsystem
The SPEAr300 also includes certain specific functions:
Note:
62/844
●
8/16 bits parallel Flash interface allowing connection of NOR or NAND Flash and
asynchronous SRAM.
●
Possible NAND Flash or parallel NOR Flash booting.
●
Color LCD Controller, supports upto 1024 x 768 resolution, 24 bpp true colour,
STN/TFT display panels.
●
SDIO interface supporting SPI, SD1, SD4 and SD8 mode with card detect, write
protect, LED.
●
9 x 9 keyboard controller.
●
Upto 62 GPIOs (multiplexed with peripheral I/Os), up to 22 with interrupt capability.
●
Up to 512 timeslots, master or slave TDM. Any input timeslot can be switched to any
output timeslot, and/or can be buffered for computation (up to 16 channels of 1 to 4
timeslots buffered during 32 ms). Up to 16 buffers can be played in output timeslots.
●
18 GPIOs for CODEC (up to 8 quad CODECS) & SLIC management.
●
1 bit DAC.
●
I2S interface, full duplex with data buffer for left and right channels allowing up to 64ms
of voice buffer (for 32 bit samples).
The I2S and SDIO interfaces share the same RAM resources.
●
Camera interface ITU-601 with external or embedded synchronization (ITU-656 or
CSI2). Picture limit is given by the line length that must be stored in a 2048*32 buffer.
●
Upto 8 additional I2C/SPI chip selects.
Doc ID 018672 Rev 1
RM0082
4.12
Product overview
Clock and reset system
●
The system clocks are generated by three PLLs:
–
Two of them are fully programmable (the first one generates the clock for CPU and
AMBA system; instead the second one generates the clock for the RAS block and
for the DDR Memory interface. Both the PLLs offer an EMI reduction mode
(Dithering) than can replace all traditional drop methods for Electro-Magnetic
Interference.
–
The third PLL generates the clock for USB controllers.
●
Several synthesizers provide different frequencies for the various IPs.
●
Fully programmable control of clock and reset signals for all the slave blocks allowing
sophisticated power management.
Doc ID 018672 Rev 1
63/844
Pin description
5
RM0082
Pin description
The following tables describe the pinout of the SPEAr300 listed by functional block.
List of abbreviations:
PU = Pull Up
PD = Pull Down
5.1
5.2
Required external components
●
DDR_COMP_1V8: place an external 121 k Ω resister between ball P4 and ball R4
●
USB_TX_RTUNE: connect an external 43.2 Ω pull-down resistor to ball k5
●
DIGITAL_REXT: place an external 121 k Ω resistor between ball G4 and ball F4
Dedicated pins
Table 3.
Group
Master clock, RTC, Reset and 3.3 V comparator pin descriptions
Signal name
Ball
Direction
Function
MCLK_XI
P1
Input
24 MHz (typical)
crystal in
Master Clock
Oscillator 2.5 V
capable
MCLK_XO
P2
Output
24 MHz (typical)
crystal out
RTC_XI
E2
Input
32 kHz crystal in
RTC_XO
E1
Output
Oscillator 1.5 V
32 kHz crystal out capable
MRESET#(1)
M17
Input
Main Reset
TTL Schmitt trigger
input buffer, 3.3 V
tolerant
DIGITAL_REXT
G4
Output
Configuration
Analog, 3.3 V capable
DIGITAL_GND_REX F4
Power
Power
Power
RTC
Reset
Pin type
3.3 V Comp.
1. The minimum time for which MRESET should be low to reset the device is 1 millisecond.
Table 4.
Power supply pin description
Group
64/844
Signal name
Ball
Value
DIGITAL GROUND
GND
G6, G7, G8, G9, G10, G11, H6, H7, H8, H9,
H10, H11, J6, J7, J8, J9, J10, J11, K6, K7,
K8, K9, K10, K11, L6, L7, L8, L9, L10, M8,
M9, M10
0V
ANALOG GROUND
AGND
F2, G1, J2, L1, L3, L5, N2, N4, P3, R3,N12
0V
I/O
VDD3
F5, F6, F7, F10, F11, F12, G5, J12, K12,
L12, M12
3.3 V
CORE
VDD
F8, F9, G12, H5, H12, J5, L11, M6, M7, M11 1.2 V
Doc ID 018672 Rev 1
RM0082
Pin description
Table 4.
Power supply pin description (continued)
Group
Signal name
Ball
Value
HOST0_VDDbc
L2
2.5 V
HOST0_VDDb3
K4
3.3 V
HOST0_VDDbs
M3
1.2 V
HOST1_VDDbc
K3
2.5 V
HOST1_VDDb3
J1
3.3 V
HOST1_VDDbs
M3
1.2 V
DEVICE_VDDbc
N1
2.5 V
DEVICE_VDDb3
N3
3.3 V
HOST0_VDDbs
M3
1.2V
MCLK_VDD
R1
1.2V
MCLK_VDD2v5
R2
2.5 V
PLL1
DITH1_AVDD
G2
2.5 V
PLL2
DITH2_AVDD
M4
2.5 V
DDR I/O
SSTL_VDDe
M5, N5, N6, N7, N8, N9, N10, N11
1.8 V
ADC
ADC_AVDD
N13
2.5 V
OSCI RTC
RTC VDD
F1
1.5 V
USB HOST0 PHY
USB HOST1 PHY
USB DEVICE PHY
OSCI (master clock)
Table 5.
Group
Debug pin descriptions
Signal name
Ball
TEST_0
K16
TEST_1
K15
TEST_2
K14
TEST_3
K13
TEST_4
J15
BOOT_SEL
J14
Direction
Input
Function
Test[4:0]
configuration
ports. For
functional mode,
they have to be
set to 00110.
Pin type
TTL input buffer,
3.3 V tolerant, PD
Reserved, to be
fixed at high level
nTRST
L16
Input
Test reset input
TTL Schmitt
trigger input
buffer, 3.3 V
tolerant, PU
TDO
L15
Output
Test data output
TTL output buffer,
3.3 V capable 4
mA
TCK
L17
Input
Test clock
TDI
L14
Input
Test data input
TMS
L13
Input
Test mode select
DEBUG
Doc ID 018672 Rev 1
TTL Schmitt
trigger input
buffer, 3.3 V
tolerant, PU
65/844
Pin description
Table 6.
Group
RM0082
Serial memory interface (SMI) pin description
Signal name
Ball
Direction
Function
Pin type
SMI_DATAIN
M13
Input
Serial Flash input
data
TTL Input Buffer
3.3 V tolerant, PU
SMI_DATAOUT
M14
Output
Serial Flash
output data
SMI_CLK
N17
I/O
Serial Flash clock
SMI_CS_0
M15
Output
SMI_CS_1
M16
Serial Flash chip
select
Direction
Function
Pin type
USB Device D+
USB Device D-
Bidirectional
analog buffer 5 V
tolerant
USB Device
VBUS
TTL input buffer
3.3 V tolerant, PD
USB HOST1 D+
Bidirectional
analog buffer 5 V
tolerant
SMI
Table 7.
Group
USB pin descriptions
Signal name
Ball
DEV_DP
M1
I/O
USB DEV
DEV_DM
M2
DEV_VBUS
G3
HOST1_DP
H1
Input
I/O
HOST1_DM
H2
USB HOST1 D-
HOST1_VBUS
H3
Output
TTL output buffer
USB Host1 VBUS 3.3 V capable, 4
mA
HOST1_OVRC
J4
Input
USB Host1
Over-Current
TTL input buffer
3.3 V tolerant, PD
HOST0_DP
K1
USB Host0 D+
Bidirectional
analog buffer 5 V
tolerant
I/O
HOST0_DM
K2
USB Host0 D-
HOST0_VBUS
J3
Output
TTL output buffer
USB Host0 VBUS 3.3 V capable, 4
mA
HOST0_OVRC
H4
Input
USB Host0
Over-current
USB_TXRTUNE
K5
Output
Reference resistor Analog
USB_ANALOG_T
L4
EST
Output
Analog Test
Output
USB HOST
66/844
TTL output buffer
3.3 V capable 4
mA
Doc ID 018672 Rev 1
TTL Input Buffer
3.3 V tolerant, PD
Analog
RM0082
Pin description
Table 8.
Group
ADC pin description
Signal name
Ball
Direction
Function
AIN_0
N16
AIN_1
N15
AIN_2
P17
AIN_3
P16
AIN_4
P15
AIN_5
R17
AIN_6
R16
AIN_7
R15
ADC_VREFN
N14
ADC negative voltage reference
ADC_VREFP
P14
ADC positive voltage reference
Pin type
ADC analog input channel
ADC
Analog buffer
2.5 V tolerant
Input
Doc ID 018672 Rev 1
67/844
Pin description
Table 9.
Group
RM0082
DDR pin description
Signal name
Ball
DDR_ADD_0
T2
DDR_ADD_1
T1
DDR_ADD_2
U1
DDR_ADD_3
U2
DDR_ADD_4
U3
DDR_ADD_5
U4
DDR_ADD_6
U5
DDR_ADD_7
T5
DDR_ADD_8
R5
DDR_ADD_9
P5
DDR_ADD_10
P6
DDR_ADD_11
R6
DDR_ADD_12
T6
DDR_ADD_13
U6
DDR_ADD_14
R7
DDR_BA_0
P7
DDR_BA_1
P8
DDR_BA_2
R8
DDR_RAS
Direction
Function
Output
Address Line
Pin type
SSTL_2/SSTL_18
DDR
Output
Bank select
U8
Output
Row Add. Strobe
DDR_CAS
T8
Output
Col. Add. Strobe
DDR_WE
T7
Output
Write enable
DDR_CLKEN
U7
Output
Clock enable
DDR_CLK_P
T9
Output
Differential clock
DDR_CLK_N
68/844
U9
Doc ID 018672 Rev 1
Differential
SSTL_2/SSTL_18
RM0082
Pin description
Table 9.
Group
DDR
DDR pin description (continued)
Signal name
Ball
DDR_CS_0
P9
DDR_CS_1
R9
DDR_ODT_0
T3
DDR_ODT_1
T4
DDR_DATA_0
P11
DDR_DATA_1
R11
DDR_DATA_2
T11
DDR_DATA_3
U11
DDR_DATA_4
T12
DDR_DATA_5
R12
DDR_DATA_6
P12
DDR_DATA_7
P13
DDR_DQS_0
U10
Direction
Function
Output
Chip Select
I/O
On-Die
Termination
Enable lines
Pin type
SSTL_2/SSTL_18
I/O
Data Lines
(Lower byte)
Output
Lower Data
Strobe
DDR_nDQS_0
T10
DDR_DM_0
U12
Output
Lower Data Mask
DDR_GATE_0
R10
I/O
Lower Gate Open
DDR_DATA_8
T17
DDR_DATA_9
T16
DDR_DATA_10
U17
DDR_DATA_11
U16
I/O
DDR_DATA_12
U14
Data Lines
(Upper byte)
DDR_DATA_13
U13
DDR_DATA_14
T13
DDR_DATA_15
R13
DDR_DQS_1
U15
I/O
Upper Data
Strobe
Differential
SSTL_2/SSTL_18
SSTL_2/SSTL_18
DDR_nDQS_1
T15
DDR_DM_1
T14
Upper Data Mask
I/O
DDR_GATE_1
R14
DDR_VREF
P10
Differential
SSTL_2/SSTL_18
SSTL_2/SSTL_18
Upper Gate Open
Input
Reference Voltage Analog
DDR_MEM_COM
R4
P_GND
Power
Return for Ext.
Resistors
Power
DDR_MEM_COM
P4
P_REXT
Power
Ext. Resistor
Analog
DDR2_EN
Input
Configuration
TTL Input Buffer
3.3 V Tolerant, PU
J13
Doc ID 018672 Rev 1
69/844
Pin description
5.3
RM0082
Shared I/O pins (PL_GPIOs)
SPEAr300 devices feature, in the Reconfigurable Array Subsystem (RAS), specific sets of
IPs as well as groups of software controllable GPIOs (that can be used alternatively). In the
SPEAr300 the following IPs are implemented in the RAS:
●
FSMC NAND/NOR Flash interface
●
GPIO/Keyboard controller
●
8-bit camera interface
●
CLCD controller interface
●
Digital-to-analog converter (DAC)
●
I2S
●
4 SPI/I2C control signals
●
TDM block
●
SDIO interface
●
GPIOs
The 98 PL_GPIO and 4 PL_CLK pins have the following characteristics:
–
Output buffer: TTL 3.3 V capable up to 10 mA
–
Input buffer: TTL, 3.3 V tolerant, selectable internal pull up/pull down (PU/PD)
The PL_GPIOs can be configured in 13 different modes. This allows SPEAr300 to be
tailored for use in various applications, see Section 30.1
5.3.1
PL_GPIO pin description
Table 10.
Group
PL_GPIO pin description
Signal name
PL_GPIO_97...
PL_GPIO_0
PL_GPIOs
Ball
(see the
section
Table 13)
Direction
I/O
PL_CLK1...
PL_CLK4
5.3.2
Function
Pin type
General
purpose I/O or
multiplexed pins (see the
(see the section introduction of
Table 13)
the Section 5.3
programmable here above)
logic external
clocks
Alternate functions
Other peripheral functions are listed in the Alternate Functions column of Table 13:
PL_GPIO multiplexing scheme and can be individually enabled/disabled via RAS register 1.
5.3.3
Boot pins
The status of the boot pins is read at startup by the BootROM.
70/844
Doc ID 018672 Rev 1
RM0082
Pin description
Table 11.
Booting pins
B3-B0
Boot device
0000
USB Device
0001
ETH - MAC address in I2C
0010
ETH - MAC address in SPI
0011
Serial NOR
0100
Parallel NOR 8bit (FSMC)
0101
Parallel NOR 16bit (FSMC)
0110
Nand 8bit
0111
Nand 16bit
1010
UART
Note:
Other combinations are reserved.
5.3.4
GPIOs
Some PL_GPIO pins can be used as software controlled general purpose I/Os (GPIOs).
5.3.5
●
6 base GPIOs can be enabled as alternate functions on PL_GPIO.
●
18 GPIO are provided by the RAS IPs G8 and G10 on PL_GPIO.
●
18 GPIOs are available if the GPIO/ keyboard controller is configured in GPIO mode
Multiplexing scheme
The two multiplexers shown in Figure 3. are controlled by different registers. The first
multiplexer selects the I/O functions of the RAS IPs in one of 13 modes shown in
“Configuration mode” columns in Table 13). This selection is programmable via 4 bits in RAS
register 2.
The second multiplexer is controlled by RAS register 1 and allows you to enable the I/O
functions shown in alternate functions column of Table 13.
Doc ID 018672 Rev 1
71/844
Pin description
Figure 3.
RM0082
Multiplexing scheme
Alternate functions
RAS IP configuration mode 1
PL_GPIO
RAS IP configuration mode 13
4 bits
16 bits
RAS Register 2
RAS Register 1
72/844
Doc ID 018672 Rev 1
RM0082
Pin description
6
2
16-bit
NOR
4
18
6
12
6
3
16-bit
NAND
28
28
1
4
8
1
5
4
1
6
8
1
7
4
1
1
1
Max. no. of I/Os
with Interrupt
12
Special outputs
(sync)
Input only
6
Output only
Bidirectional
18
Keyboard
keys
Max. no. of I/Os
SDIO/MMC
data lines
4
DAC
16-bit
NAND
CLCD
1
I2S
Boot pins
TDM No of voice
devices
GPIOs
FSMC
Camera interface
Available peripherals in each configuration mode
Modes
SPI/I2C
Multi slave control
Table 12.
1
8
22
1
8
8
9*9
62
38
1
2
8
9*9
42
38
1
8
8
9*9
58
38
1
2
8
9*9
42
38
8
4
44
24
8
8
4
14
4
4
42
24
8
8
2
14
8
12
4
4
8
8
14
14
4
4
14
14
8
8-bit
NOR
8
9
8-bit
NAND
/NOR
8
1
1
4
1
1
8-bit
2
8
9*9
36
32
1
14-bit
2
8
7*5
26
26
10
1
14-bit
2
8
7*5
26
26
10
1
8-bit
2
8
9*9
32
28
10
11
1
12
1
4
13
1
1
1
4
4
10
6
TDM interfacing using GPIOs
In some configuration modes where less than 8 TDM devices are indicated in Table 12,
additional TDM devices can be supported by using GPIO pins. The TDM needs a dedicated
interrupt line, an SPI and an independent frame sync signal to interface each device. When
enough SPI chip selects signals are not available (SPI_I2C signals), the chip select can be
performed by a GPIO. In this case the number of possible TDM devices supported is:
●
Modes 5, 7, 8 and 9: up to 8 devices
●
Modes 3 and 10: up to 6 devices
●
Modes 11 and 12: up to 4 devices
Doc ID 018672 Rev 1
73/844
RM0082
Table 13.
PL_GPIO multiplexing scheme
Alternate
PL /
function
(enabled by
pin
number
RAS
register 1)
Configuration mode (enabled by RAS register 2)
Doc ID 018672 Rev 1
1
2
3
4
5
6
7
8
9
10
11
12
13
97/H16
/E1
/E1
/E1
1
1
1
1
/E1
/E1
1
1
1
1
96/H15
D0
DQ0
D0
COL0
COL0
COL0
COL0
D0
D0
COL0
COL0
COL0
COL0
95/H14
D1
DQ1
D1
COL1
COL1
COL1
COL1
D1
D1
COL1
COL1
COL1
COL1
94/H13
D2
DQ2
D2
COL2
COL2
COL2
COL2
D2
D2
COL2
COL2
COL2
COL2
93/G17
D3
DQ3
D3
COL3
COL3
COL3
COL3
D3
D3
COL3
COL3
COL3
COL3
92/G16
D4
DQ4
D4
COL4
COL4
COL4
COL4
D4
D4
COL4
COL4
COL4
COL4
91/G15
D5
DQ5
D5
COL5
COL5
COL5
COL5
D5
D5
COL5
DIO0_1
DIO0_1
COL5
90/G14
D6
DQ6
D6
COL6
COL6
COL6
COL6
D6
D6
COL6
DIO1_1
DIO1_1
COL6
89/F17
D7
DQ7
D7
COL7
COL7
COL7
COL7
D7
D7
COL7
DIO2_1
DIO2_1
COL7
88/F16
D8
DQ8
D8
COL8
COL8
COL8
COL8
G8_0
G8_0
COL8
DIO3_1
DIO3_1
COL8
D9
DQ9
D9
ROW0
ROW0
ROW0
ROW0
G8_1
G8_1
ROW0
ROW0
ROW0
ROW0
86/E17
D10
DQ10
D10
ROW1
ROW1
ROW1
ROW1
G8_2
G8_2
ROW1
ROW1
ROW1
ROW1
85/F15
D11
DQ11
D11
ROW2
ROW2
ROW2
ROW2
G8_3
G8_3
ROW2
ROW2
ROW2
ROW2
84/D17
D12
DQ12
D12
ROW3
ROW3
ROW3
ROW3
G8_4
G8_4
ROW3
ROW3
ROW3
ROW3
83/E16
D13
DQ13
D13
ROW4
ROW4
ROW4
ROW4
G8_5
G8_5
ROW4
ROW4
ROW4
ROW4
82/E15
D14
DQ14
D14
ROW5
ROW5
ROW5
ROW5
G8_6
G8_6
ROW5
ROW5
ROW5
ROW5
81/C17
D15
DQ15 A-1
D15
ROW6
ROW6
ROW6
ROW6
G8_7
G8_7
ROW6
ROW6
ROW6
ROW6
80/D16
0
A0
CLD0
G8_0 (out)
CLD0
0
CLD0
A0
A0
Reserved
CLD0
Reserved
CLD0
79/F14
0
A1
CLD1
G8_1 (out)
CLD1
0
CLD1
A1
A1
Reserved
CLD1
Reserved
CLD1
78/D15
0
A2
CLD2
G8_2 (out)
CLD2
0
CLD2
A2
A2
Reserved
CLD2
Reserved
CLD2
77/B17
0
A3
CLD3
G8_3 (out)
CLD3
0
CLD3
A3
A3
Reserved
CLD3
Reserved
CLD3
76/F13
0
A4
CLD4
G8_4(out)
CLD4
0
CLD4
A4
A4
Reserved
CLD4
Reserved
CLD4
CLD5
0
CLD5
A5
A5
Reserved
CLD5
Reserved
CLD5
CLD6
0
CLD6
A6
A6
Reserved
CLD6
Reserved
CLD6
75/E14
0
A5
CLD5
G8_5
(out)
74/C16
0
A6
CLD6
G8_6 (out)
Pin description
74/945
87/G13
PL_GPIO multiplexing scheme (continued)
Alternate
PL /
function
pin
(enabled by
number
RAS
register 1)
Configuration mode (enabled by RAS register 2)
1
2
3
4
5
6
7
8
9
10
11
12
13
Doc ID 018672 Rev 1
73/A17
0
A7
CLD7
G8_7 (out)
CLD7
0
CLD7
A7
A7
Reserved
CLD7
Reserved
CLD7
72/B16
0
A8
CLD8
IT0
CLD8
IT0
CLD8
IT0
IT0
Reserved
CLD8
Reserved
CLD8
71/D14
0
A9
CLD9
IT1
CLD9
IT1
CLD9
IT1
IT1
Reserved
CLD9
Reserved
CLD9
70/C15
0
A10
CLD10
IT2
CLD10
IT2
CLD10
IT2
IT2
Reserved
CLD10
Reserved
CLD10
69/A16
0
A11
CLD11
IT3
CLD11
IT3
CLD11
IT3
IT3
Reserved
CLD11
Reserved
CLD11
68/B15
0
A12
CLD12
IT4
CLD12
IT4
CLD12
IT4
IT4
Reserved
CLD12
Reserved
CLD12
67/C14
0
A13
CLD13
IT5
CLD13
IT5
CLD13
IT5
IT5
Reserved
CLD13
Reserved
CLD13
66/E13
0
A14
CLD14
IT6
CLD14
IT6
CLD14
IT6
IT6
Reserved
CLD14
Reserved
CLD14
0
A15
CLD15
IT7
CLD15
IT7
CLD15
IT7
IT7
Reserved
CLD15
Reserved
CLD15
0
A16
CLD16
SPI_I2C4
CLD16
SPI_I2C4
CLD16
SPI_I2C4
SPI_I2C4
Reserved
CLD16
Reserved
CLD16
63/C13
0
A17
CLD17
SPI_I2C5
CLD17
SPI_I2C5
CLD17
SPI_I2C5
SPI_I2C5
Reserved
CLD17
Reserved
CLD17
62/A15
0
A18
CLD18
SPI_I2C6
CLD18
SPI_I2C6
CLD18
SPI_I2C6
SPI_I2C6
Reserved
CLD18
Reserved
CLD18
61/E12
0
A19
CLD19
SPI_I2C7
CLD19
SPI_I2C7
CLD19
SPI_I2C7
/DOUT
SPI_I2C7
/DOUT
Reserved
CLD19
Reserved
CLD19
60/A14
0
A20
CLD20
TDM_
SYNC4
CLD20
TDM_
SYNC4
CLD20
TDM_
SYNC4
TDM_
SYNC4
Reserved
CLD20
Reserved
CLD20
59/B13
0
A21
CLD21
TDM_
SYNC5
CLD21
TDM_
SYNC5
CLD21
TDM_
SYNC5
TDM_
SYNC5
Reserved
CLD21
Reserved
CLD21
58/D12
CL
A22
CL
TDM_
SYNC6
CLD22
TDM_
SYNC6
CLD22
TDM_
SYNC6
CL
Reserved
CLD22
Reserved
CLD22
57/E11
AL
A23
AL
TDM_
SYNC7
CLD23
TDM_
SYNC7
CLD23
TDM_
SYNC7
AL
Reserved
CLD23
Reserved
CLD23
56/C12
/W
/W
/W
ROW7
ROW7
ROW7
ROW7
/W
/W
ROW7
VSYNC_1
VSYNC_1
ROW7
55/A13
/R
/G
/R
ROW8
ROW8
ROW8
ROW8
/R
/R
ROW8
HSYNC_1
HSYNC_1
ROW8
54/E10
0
0
CLAC
G10_9
CLAC
G10_9
CLAC
G10_9
G10_9
G10_9
CLAC
G10_9
CLAC
53/D11
0
0
CLCP
G10_8
CLCP
G10_8
CLCP
G10_8
G10_8
G10_8
CLCP
G10_8
CLCP
52/B12
0
0
CLFP
G10_7
CLFP
G10_7
CLFP
G10_7
G10_7
G10_7
CLFP
G10_7
CLFP
RM0082
65/B14
64/D13
Pin description
75/945
Table 13.
PL_GPIO multiplexing scheme (continued)
Alternate
PL /
function
pin
(enabled by
number
RAS
register 1)
51/D10
RM0082
Table 13.
Configuration mode (enabled by RAS register 2)
1
2
3
4
5
6
7
8
9
10
11
12
13
Doc ID 018672 Rev 1
0
0
CLLP
G10_6
CLLP
G10_6
CLLP
G10_6
G10_6
G10_6
CLLP
G10_6
CLLP
50/A12
TMR_CPTR4
0
0
CLLE
G10_5
CLLE
G10_5
CLLE
G10_5
G10_5
G10_5
CLLE
G10_5
CLLE
49/C11
TMR_CPTR3
0
0
CLPP
G10_4
CLPP
G10_4
CLPP
G10_4
G10_4
G10_4
CLPP
G10_4
CLPP
48/B11
TMR_CPTR2
B0
B0
CLD22
SPI_I2C0
SPI_I2C0
SPI_I2C0
SPI_I2C0
SPI_I2C0
SPI_I2C0
SPI_I2C0
DIO4_1
DIO4_1
SPI_I2C0
47/C10
TMR_CPTR1
B1
B1
CLD23
SPI_I2C1
SPI_I2C1
SPI_I2C1
SPI_I2C1
SPI_I2C1
SPI_I2C1
SPI_I2C1
DIO5_1
DIO5_1
SPI_I2C1
46/A11
TMR_CLK4
B2
B2
GPIO7
SPI_I2C2
SPI_I2C2
SPI_I2C2
SPI_I2C2
SPI_I2C2
SPI_I2C2
SPI_I2C2
DIO6_1
DIO6_1
SPI_I2C2
45/B10
TMR_CLK3
B3
B3
GPIO6
SPI_I2C3
SPI_I2C3
SPI_I2C3
SPI_I2C3
SPI_I2C3
SPI_I2C3
SPI_I2C3
DIO7_1
DIO7_1
SPI_I2C3
44/A10
TMR_CLK2
H0
H0
GPIO5
G10_3/O0
G10_3/O0
G10_3/O0
G10_3/O0
G10_3
DAC_O0
DAC_O0
DAC_O0
DAC_O0
DAC_O0
TMR_CLK1
H1
H1
GPIO4
G10_2/O1
G10_2/O1
G10_2/O1
G10_2/O1
G10_2
DAC_O1
DAC_O1
DAC_O1
DAC_O1
DAC_O1
UART_DTR
H2
H2
GPIO3
I2S_DIN
I2S_DIN
I2S_DIN
I2S_DIN
G10_1
I2S_DIN
I2S_DIN
I2S_DIN
I2S_DIN
I2S_DIN
41/C9
UART_RI
H3
H3
GPIO2
G10_0
I2S_LRCK
I2S_LRCK
I2S_LRCK
I2S_LRCK
I2S_LRCK
40/B9
UART_DSR
H4
H4
GPIO1
I2S_CLK
I2S_CLK
I2S_CLK
I2S_CLK
TDM_SYN
C3
I2S_CLK
I2S_CLK
I2S_CLK
I2S_CLK
I2S_CLK
39/A9
UART_DCD
H5
H5
GPIO0
I2S_
DOUT
I2S_
DOUT
I2S_
DOUT
I2S_
DOUT
TDM_SYN
C2
DOUT
I2S_DOUT
I2S_DOUT
I2S_DOUT
I2S_DOUT
38/A8
UART_CTS
H6
H6
TDM_
SYNC1
TDM_
SYNC1
TDM_
SYNC1
TDM_
SYNC1
TDM_
SYNC1
TDM_
SYNC1
TDM_
SYNC1
TDM_
SYNC1
TDM_
SYNC1
TDM_
SYNC1
TDM_
SYNC1
37/B8
UART_RTS
H7
H7
TDM_
DOUT
TDM_
DOUT
TDM_
DOUT
TDM_
DOUT
TDM_
DOUT
TDM_
DOUT
TDM_
DOUT
TDM_
DOUT
TDM_
DOUT
TDM_
DOUT
TDM_
DOUT
36/C8
SSP_CS4
0
0
TDM_
SYNC0
TDM_
SYNC0
TDM_
SYNC0
TDM_
SYNC0
TDM_
SYNC0
TDM_
SYNC0
TDM_
SYNC0
TDM_
SYNC0
TDM_
SYNC0
TDM_
SYNC0
TDM_
SYNC0
35/D8
SSP_CS3
Reserved
Reserved
TDM_CLK
TDM_CLK
TDM_CLK
TDM_CLK
TDM_CLK
TDM_CLK
TDM_CLK
TDM_CLK
TDM_CLK
TDM_CLK
TDM_CLK
34/E8
SSP_CS2
0
0
TDM_DIN
TDM_DIN
TDM_DIN
TDM_DIN
TDM_DIN
TDM_DIN
TDM_DIN
TDM_DIN
TDM_DIN
TDM_DIN
TDM_DIN
33/E7
BasGPIO5
0
0
SD_CMD
SD_CMD
SD_CMD
SD_CMD
SD_CMD
SD_CMD
SD_CMD
SD_CMD
SD_CMD
SD_CMD
SD_CMD
32/D7
BasGPIO4
0
0
SD_CLK
SD_CLK
SD_CLK
SD_CLK
SD_CLK
SD_CLK
SD_CLK
SD_CLK
SD_CLK
SD_CLK
SD_CLK
31/C7
BasGPIO3
0
0
SD_DAT0
SD_DAT0
SD_DAT0
SD_DAT0
SD_DAT0
SD_DAT0
SD_DAT0
SD_DAT0
SD_DAT0
SD_DAT0
SD_DAT0
30/B7
BasGPIO2
0
0
SD_DAT1
SD_DAT1
SD_DAT1
SD_DAT1
SD_DAT1
SD_DAT1
SD_DAT1
SD_DAT1
SD_DAT1
SD_DAT1
SD_DAT1
I2S_ LRCK I2S_ LRCK I2S_ LRCK I2S_ LRCK
Pin description
76/945
43/E9
42/D9
PL_GPIO multiplexing scheme (continued)
Alternate
PL /
function
pin
(enabled by
number
RAS
register 1)
Configuration mode (enabled by RAS register 2)
1
2
3
4
5
6
7
8
9
SD_DAT2
SD_DAT2
SD_DAT2
SD_DAT2
SD_DAT2
SD_DAT2
SD_DAT2
10
11
12
13
Doc ID 018672 Rev 1
29/A7
BasGPIO1
0
0
SD_DAT2
SD_DAT2
SD_DAT2
SD_DAT2
28/A6
BasGPIO0
0
0
SD_SDAT3 SD_SDAT3 SD_SDAT3 SD_SDAT3 SD_SDAT3 SD_SDAT3 SD_SDAT3
SD_SDAT3
SD_SDAT3
SD_SDAT3
SD_SDAT3
27/B6
MII_TX_CLK
0
0
SD_SDAT4 SD_SDAT4 SD_SDAT4 SD_SDAT4 SD_SDAT4
G8_0
G8_0
SD_SDAT4
SD_SDAT4
SD_SDAT4
SD_SDAT4
26/A5
MII_TXD0
0
0
SD_SDAT5 SD_SDAT5 SD_SDAT5 SD_SDAT5 SD_SDAT5
G8_1
G8_1
SD_SDAT5
SD_SDAT5
SD_SDAT5
SD_SDAT5
25/C6
MII_TXD1
0
0
SD_SDAT6 SD_SDAT6 SD_SDAT6 SD_SDAT6 SD_SDAT6
G8_2
G8_2
SD_SDAT6
SD_SDAT6
SD_SDAT6
SD_SDAT6
24/B5
MII_TXD2
0
0
SD_SDAT7 SD_SDAT7 SD_SDAT7 SD_SDAT7 SD_SDAT7
G8_3
G8_3
SD_SDAT7
SD_SDAT7
SD_SDAT7
SD_SDAT7
23/A4
MII_TXD3
0
0
G8_4
G8_4
G8_4
G8_4
G8_4
G8_4
G8_4
G8_4
G8_4
G8_4
G8_4
22/D6
MII_TX_EN
0
0
G8_5
G8_5
G8_5
G8_5
G8_5
G8_5
G8_5
G8_5
G8_5
G8_5
G8_5
21/C5
MII_TX_ER
0
0
G8_6
G8_6
G8_6
G8_6
G8_6
G8_6
G8_6
DIO7
DIO8_1
DIO8_1
DIO7
20/B4
MII_RX_CLK
0
0
G8_7
G8_7
G8_7
G8_7
G8_7
G8_7
G8_7
DIO6
DIO9_1
DIO9_1
DIO6
19/A3
MII_RX_DV
0
0
G10_0
G10_0
G10_0
G10_0
G10_0
G10_0
G10_0
DIO5
DIO10_1
DIO10_1
DIO5
18/D5
MII_RX_ERR
0
0
G10_1
G10_1
G10_1
G10_1
G10_1
G10_1
G10_1
DIO4
DIO11_1
DIO11_1
DIO4
17/C4
MII_RXD0
0
0
G10_2
G10_2
G10_2
G10_2
G10_2
G10_2
G10_2
DIO3
DIO12_1
DIO12_1
DIO3
16/E6
MII_RXD1
0
0
G10_3
G10_3
G10_3
G10_3
G10_3
G10_3
G10_3
DIO2
DIO13_1
DIO13_1
DIO2
15/B3
MII_RXD2
0
0
G10_4
G10_4
G10_4
G10_4
G10_4
G10_4
G10_4
DIO1
G10_4
G10_4
DIO1
14/A2
MII_RXD3
0
0
G10_5
G10_5
G10_5
G10_5
G10_5
G10_5
G10_5
DIO0
G10_5
G10_5
DIO0
13/A1
MII_COL
0
0
G10_6
G10_6
G10_6
G10_6
G10_6
G10_6
G10_6
VSYNC
G10_6
G10_6
VSYNC
12/D4
MII_CRS
0
0
G10_7
G10_7
G10_7
G10_7
G10_7
G10_7
G10_7
HSYNC
G10_7
G10_7
HSYNC
11/E5
MII_MDC
0
0
G10_8
G10_8
G10_8
G10_8
G10_8
G10_8
G10_8
G10_8
G10_8
G10_8
G10_8
10/C3
MII_MDIO
0
0
G10_9
G10_9
G10_9
G10_9
G10_9
G10_9
G10_9
G10_9
G10_9
G10_9
G10_9
SSP_MOSI
0
0
SD_CD
SD_CD
SD_CD
SD_CD
SD_CD
SD_CD
SD_CD
SD_CD
SD_CD
SD_CD
SD_CD
SSP_SCLK
0
0
SD_WP
SD_WP
SD_WP
SD_WP
SD_WP
SD_WP
SD_WP
SD_WP
SD_WP
SD_WP
SD_WP
7/D3
SSP_SS
0
0
0
0
0
0
0
0
0
0
0
0
0
6/B1
SSP_MISO
0
0
SD_LED
SD_LED
SD_LED
SD_LED
SD_LED
SD_LED
SD_LED
SD_LED
SD_LED
SD_LED
SD_LED
5/D2
I2C_SDA
0
0
0
0
0
0
0
0
0
0
0
0
0
RM0082
9/B2
8/C2
Pin description
77/945
Table 13.
PL_GPIO multiplexing scheme (continued)
Alternate
PL /
function
pin
(enabled by
number
RAS
register 1)
RM0082
Table 13.
Configuration mode (enabled by RAS register 2)
1
2
3
4
5
6
7
8
9
10
11
12
13
4/C1
I2C_SCL
0
0
0
0
0
0
0
0
0
0
0
0
0
3/D1
UART_RX
/E4
/E4
/E4
1
1
1
1
1
1
1
1
1
1
2/E4
UART_TX
/E3
/E3
/E3
1
1
1
1
1
1
1
1
1
1
1/E3
IrDA_RX
/E2
/E2
/E2
1
1
1
1
1
1
1
1
1
1
0/F3
IrDA_TX
R/B
R/B
R/B
1
1
1
1
R/B
R/B
1
1
1
1
TCLK*
CCLK/TCL
K*
TCLK*
CCLK/
TCLK*
TCLK*
TCLK*
TCLK*
CCLK/
TCLK*
TCLK*
CCLK/
TCLK*
Doc ID 018672 Rev 1
CK1/K17
PL_CLK1
TCLK*
TCLK*
CCLK/
TCLK*
CK2/J17
PL_CLK2
Reserved
Reserved
int_CLK
int_CLK
int_CLK
int_CLK
int_CLK
int_CLK
int_CLK
int_CLK
int_CLK
int_CLK
int_CLK
CK3/J16
PL_CLK3
Reserved
Reserved
\int_CLK
\int_CLK
\int_CLK
\int_CLK
\int_CLK
\int_CLK
\int_CLK
CLK
CLK
CLK
CLK
CK4/H17
PL_CLK4
Reserved
Reserved
2.048 MHz
2.048 MHz
2.048 MHz
2.048 MHz
2.048 MHz
2.048 MHz
2.048 MHz
PCLK
PCLK
PCLK
PCLK
Pin description
78/945
RM0082
Pin description
Notes/legend for Table 13:
GPIO (General purpose I/O):
●
basGPIO: Base GPIOs in the basic subsystem (enabled as alternate functions)
●
G10 and G8: GPIOs in the telecom subsystem
●
GPIOx: GPIOs in the independent GPIO block in the RAS subsystem
TDM_: DM interface signals
SD_: SDIO interface
IT pins: interrupts
Table cells filled with ‘0’ or ‘1’ are unused and unless otherwise configured as Alternate
function or GPIO, the corresponding pin is held at low or high level respectively by the
internal logic.
Table cells filled with ‘Reserved’ denote pins that must be left unconnected.
Table 14.
5.4
Table shading
Shading
Pin group
FSMC
FSMC pins: NAND or NOR Flash
Keyboard
Keyboard pins ROWs are outputs, COLs are inputs
CLCD
Colur LCD controller pins
CAMERA
Camera pins
UART
UART pins
Ethernet MAC
MII/SMII Ethernet MAC Pins
SDIO/MMC
SD card controller pins
GPT
Timer pins
IrDA
IrDA pins
SSP
SSP pins
I2C
I2C pins
PL_GPIO pin sharing for debug modes
In some cases the PL_GPIO pins may be used in different ways for debugging purposes.
There are three different cases (see also Table 15):
1.
Case 1 - All the PL_GPIO get values from Boundary scan registers during Ex-test
instruction of JTAG. Typically this configuration is used to verify correctness of the
soldering process during the production flow.
2.
Case 2 - All the PL_GPIO maintain their original meaning but the JTAG Interface is
connected to the processor. This configuration is useful during the development phase
but offers only “static” debug.
3.
Case 3 - Some PL_GPIO, as shown inTable 15: Ball sharing during debug, are used to
connect the ETM9 lines to an external box. This configuration is typically used only
during the development phase. It offers a very powerful debug capability. When the
processor reaches a breakpoint it is possible, by analyzing the trace buffer, to
understand the reason why the processor has reached the break.
Doc ID 018672 Rev 1
79/844
Pin description
Table 15.
80/844
RM0082
Ball sharing during debug
Signal
Case 1 - Board debug
Case 2 - Static debug
Case 3 - Full debug
Test [0]
0
1
0
Test [1]
0
0
1
Test [2]
0
0/1
0/1
Test [3]
0
0/1
0/1
Test [4]
1
0
0
nTRST
nTRST_bscan
nTRST_ARM
nTRST_ARM
TCK
TCK_bscan
TCK_ARM
TCK_ARM
TMS
TSM_bscan
TMS_ARM
TSM_ARM
TDI
TDI_bscan
TDI_ARM
TDI_ARM
TDO
TDO_bscan
TDO_ARM
TDO_ARM
PL_GPIO [97]
BSR Value
Functional I/O
ARM_TRACE_CLK
PL_GPIO [96]
BSR Value
Functional I/O
ARM_TRACE_PKTA[0]
PL_GPIO [95]
BSR Value
Functional I/O
ARM_TRACE_PKTA[1]
PL_GPIO [94]
BSR Value
Functional I/O
ARM_TRACE_PKTA[2]
PL_GPIO [93]
BSR Value
Functional I/O
ARM_TRACE_PKTA[3]
PL_GPIO [92]
BSR Value
Functional I/O
ARM_TRACE_PKTB[0]
PL_GPIO [91]
BSR Value
Functional I/O
ARM_TRACE_PKTB[1]
PL_GPIO [90]
BSR Value
Functional I/O
ARM_TRACE_PKTB[2]
PL_GPIO [89]
BSR Value
Functional I/O
ARM_TRACE_PKTB[3]
PL_GPIO [88]
BSR Value
Functional I/O
ARM_TRACE_SYNCA
PL_GPIO [87]
BSR Value
Functional I/O
ARM_TRACE_SYNCB
PL_GPIO [86]
BSR Value
Functional I/O
ARM_PIPESTATA[0]
PL_GPIO [85]
BSR Value
Functional I/O
ARM_PIPESTATA[1]
PL_GPIO [84]
BSR Value
Functional I/O
ARM_PIPESTATA[2]
PL_GPIO [83]
BSR Value
Functional I/O
ARM_PIPESTATB[0]
PL_GPIO [82]
BSR Value
Functional I/O
ARM_PIPESTATB[1]
PL_GPIO [81]
BSR Value
Functional I/O
ARM_PIPESTATB[2]
PL_GPIO [80]
BSR Value
Functional I/O
ARM_TRACE_PKTA[4]
PL_GPIO [79]
BSR Value
Functional I/O
ARM_TRACE_PKTA[5]
PL_GPIO [78]
BSR Value
Functional I/O
ARM_TRACE_PKTA[6]
PL_GPIO [77]
BSR Value
Functional I/O
ARM_TRACE_PKTA[7]
PL_GPIO [76]
BSR Value
Functional I/O
ARM_TRACE_PKTB[4]
PL_GPIO [75]
BSR Value
Functional I/O
ARM_TRACE_PKTB[5]
PL_GPIO [74]
BSR Value
Functional I/O
ARM_TRACE_PKTB[6]
Doc ID 018672 Rev 1
RM0082
Pin description
Table 15.
Ball sharing during debug (continued)
Signal
Case 1 - Board debug
Case 2 - Static debug
Case 3 - Full debug
PL_GPIO [73]
BSR Value
Functional I/O
ARM_TRACE_PKTB[7]
PL_GPIO [72:0]
Doc ID 018672 Rev 1
81/844
Memory map
6
Memory map
Table 16.
Main memory map
Start address
End address
Notes
0x0000.0000
0x3FFF.FFFF
DDR2 or Low Power DDR
0x4000.0000
0xBFFF.FFFF
Table 22: Reconfigurable array subsystem
0xC000.0000
0xCFFF.FFFF
Reserved
0xD000.0000
0xD7FF.FFFF
Table 18: Low speed subsystem
0xD800.0000
0xDFFF.FFFF
Table 21: Application subsystem
0xE000.0000
0xE7FF.FFFF
Table 20: High speed subsystem
0xE800.0000
0xEFFF.FFFF
Reserved
0xF000.0000
0xF7FF.FFFF
Table 17: Multi layer CPU subsystem
0xF800.0000
0xFFFF.FFFF
Table 19: Basic subsystem
Table 17.
Multi layer CPU subsystem
Start address
End address
Peripheral
0xF000.0000
0xF00F.FFFF
Timer
0xF010.0000
0xF10F.FFFF
-
0xF110.0000
0xF11F.FFFF
VIC
0xF120.0000
0xF7FF.FFFF
-
Table 18.
82/844
RM0082
Notes
Bus
APB
Reserved
AHB
Reserved
-
Notes
Bus
Low speed subsystem
Start address
End address
Peripheral
0xD000.0000
0xD007.FFFF
UART
APB
0xD008.0000
0xD00F.FFFF
ADC
APB
0xD010.0000
0xD017.FFFF
SSP
APB
0xD018.0000
0xD01F.FFFF
I2C
APB
0xD020.0000
0xD07F.FFFF
-
0xD080.0000
0xD0FF.FFFF
JPEG codec
AHB
0xD100.0000
0xD17F.FFFF
IrDA
AHB
0xD180.0000
0xD1FF.FFFF
-
Reserved
-
0xD280.0000
0xD7FF.FFFF
SRAM
Static ram shared memory
(56 Kbyte)
AHB
Doc ID 018672 Rev 1
Reserved
-
RM0082
Memory map
Table 19.
Basic subsystem
Start address
End address
Peripheral
0xF800.0000
0xFBFF.FFFF
Serial Flash memory
0xFC00.0000
0xFC1F.FFFF
Serial Flash controller
0xFC20.0000
0xFC3F.FFFF
-
0xFC40.0000
0xFC5F.FFFF
DMA controller
0xFC60.0000
0xFC7F.FFFF
SDRAM controller
0xFC80.0000
0xFC87.FFFF
Timer 1
0xFC88.0000
0xFC8F.FFFF
Watch dog timer
0xFC90.0000
0xFC97.FFFF
Real time clock
0xFC98.0000
0xFC9F.FFFF
General purpose I/O
0xFCA0.0000
0xFCA7.FFFF
System controller
0xFCA8.0000
0xFCAF.FFFF
Miscellaneous registers
0xFCB0.0000
0xFCB7.0000
Timer 2
0xFCB8.0000
0xFEFF.FFFF
-
Reserved
0xFF00.0000
0xFFFF.FFFF
Internal Rom
Boot ROM
Table 20.
Notes
reserved
High speed subsystem
Start address
End address
Peripheral
Notes
Bus
0xE000.0000
0xE07F.FFFF
-
Reserved
APB
0xE080.0000
0xE0FF.FFFF
Ethernet ctrl
MAC
AHB
0xE100.0000
0xE10F.FFFF
USB2.0 device
FIFO
AHB
0xE110.0000
0xE11F.FFFF
USB2.0 device
Configuration registers
AHB
0xE120.0000
0xE12F.FFFF
USB2.0 device
Plug detect
AHB
0xE130.0000
0xE17F.FFFF
-
Reserved
AHB
0xE180.0000
0xE18F.FFFF
USB2.0 EHCI 0/1
AHB
0xE190.0000
0xE19F.FFFF
USB2.0 OHCI 0
AHB
0xE1A0.0000
0xE20F.FFFF
-
0xE210.0000
0xE21F.FFFF
USB2.0 OHCI 1
0xE220.0000
0xE27F.FFFF
-
Reserved
AHB
0xE280.0000
0xE28F.FFFF
ML USB ARB
Configuration register
AHB
0xE281.0000
0xE7FF.FFFF
-
Reserved
AHB
Peripheral
Notes
Table 21.
Reserved
AHB
AHB
Application subsystem
Start address
End address
0xD800.0000
0xD8FF.FFFF
Reserved
0xD900.0000
0xD97F.FFFF
C3 coprocessor
0xD980.0000
0xDFFF.FFFF
Reserved
Doc ID 018672 Rev 1
Bus
AHB
83/844
Memory map
Table 22.
84/844
RM0082
Reconfigurable array subsystem
Base Address
Address Space
IP
0x50000000
0x5000_0000 - 0x5FFF_FFFF
TELECOM
0x60000000
0x6000_0000 - 0x6FFF_FFFF
CLCD
0x70000000
0x7000_0000 - 0x7FFF_FFFF
SDIO
0x80000000
0x8000_0000 - 0x98FF_FFFF
FSMC
0x80000000
0x8000_0000 - 0x83FF_FFFF
FSMC NAND on PCBank0
0x84000000
0x8400_0000 - 0x87FF_FFFF
FSMC NAND on PCBank1
0x88000000
0x8800_0000 - 0x8BFF_FFFF
FSMC NAND on PCBank2
0x8C000000
0x8C00_0000 - 0x8FFF_FFFF
FSMC NAND on PCBank3
0x90000000
0x9000_0000 - 0x90FF_FFFF
FSMC NOR 0
0x91000000
0x9100_0000 - 0x91FF_FFFF
FSMC NOR 1
0x92000000
0x9200_0000 - 0x92FF_FFFF
FSMC NOR 2
0x93000000
0x9300_0000 - 0x93FF_FFFF
FSMC NOR 3
0x94000000
0x9400_0000 - 0x98FF_FFFF
FSMC Registers
0x99000000
0x9900_0000 - 0x9FFF_FFFF
RAS Registers
0xA0000000
0xA000_0000 - 0xA8FF_FFFF
Keyboard
0xA9000000
0xA900_0000 - 0xAFFF_FFFF
GPIO
Doc ID 018672 Rev 1
RM0082
CPU subsystem_ARM926EJ-S
7
CPU subsystem_ARM926EJ-S
7.1
Overview
The ARM926EJ-S is a powerful processor, targeted for multi-tasking applications.
Belonging to ARM9 general purposes family microprocessor, its main outstanding feature is
its Memory management unit, which provides virtual memory features, making it also
compliant with advanced operating system, like Linux.
The ARM926EJ-S supports the 32 bit ARM and 16 bit thumb instruction sets, enabling the
user to trade off between high performance and high code density and includes features for
efficient execution of byte code Java mode.
Additionally, it has the ARM debug architecture and includes logic to assist in software
debug.
Main features are:
●
Max CPU frequency 333 MHz (downward scalable).
●
MMU.
●
16 Kbyte of instruction cache + 16 Kbyte of data cache.
●
AMBA bus interface.
●
JTAG and ETM9 (embedded trace macro-cell) for debug, large size version.
Doc ID 018672 Rev 1
85/844
CPU subsystem_ARM926EJ-S
7.2
RM0082
Functional description
Figure 4.
ARM926EJ-S block diagram
External Coprocessor
Interface
CPUINST
CPUOUT CPUIN
R
ETM
interfac
e
DRDATA
IRDATA
DRWDATA
Coprocessor
interface
TCM
interface
DEXT
Write buffer
DCACHE
DROUTE
Cache
Data
AHB
Interface
PA
Write back
TAGRAM Write buffer
MMU
WDATA RDATA
ARM9EJ-S
FCSE
TLB
Bus
Interface
unit
INSTR
ICACHE
Intruction
AHB
Interface
IROUTE
IEXT
Note:
Co-processor interface and TCM interface are not used.
7.3
Main function description
7.3.1
Memory management unit
A single set of two-level page tables stored in main memory is used to control the address
translation, permission checks, and memory region attributes for both data and instruction
accesses.
The Memory Management Unit (MMU) uses a single unified Translation Look aside Buffer
(TLB) to cache the information held in the page tables. To support both sections and pages,
there are two levels of address translation, and the MMU puts the translated physical
addresses into the MMU TLB.
86/844
Doc ID 018672 Rev 1
RM0082
CPU subsystem_ARM926EJ-S
The MMU TLB consists of two parts:
●
The main TLB, which is a two-way, set-associative cache for page table information. It
has 32 entries per way for a total of 64 entries.
●
The lockdown TLB, which is an eight-entry fully-associative cache that contains locked
TLB entries. Locking TLB entries can ensure that a memory access to a given region
never incurs the penalty of a page table walk.
The MMU features are:
7.3.2
●
Standard ARM architecture v4 and v5 MMU mapping sizes, domains, and access
protection scheme,
●
Mapping sizes are 1 MB (sections), 64 KB (large pages), 4 KB (small pages), and 1 KB
(tiny pages),
●
Access permissions for large pages and small pages can be specified separately for
each quarter of the page (subpage permissions),
●
Hardware page table walks,
●
Invalidate entire TLB using CP15 c8,
●
Invalidate TLB entry selected by MVA, using CP15 c8,
●
Lockdown of TLB entries using CP15 c10.
Caches and write buffer
The ARM926EJ-S processor includes an Instruction Cache (ICache), a Data Cache
(DCache) and a write buffer of 16 KB each. The size of the caches are 16 KB Instruction
Cache and 16 KB Data Cache.
The caches have the following features:
●
Virtual index, virtual tag, addressed using the Modified Virtual Address (MVA),
●
Four-way set associative, with a cache line length of 32 bytes per line, and with two
dirty bits in the DCache,
●
DCache supports write-through and write-back (or copyback) cache operations,
●
Allocate on read-miss is supported. The caches perform critical-word first cache
refilling,
●
Pseudo-random or round-robin replacement selectable,
●
Cache lockdown registers enable control over which cache ways are used for allocation
on a linefill, providing a mechanism for both lockdown and controlling cache pollution,
●
The DCache stores the Physical Address (PA) tag,
●
PLD data preload instruction does not cause data cache linefills,
●
Maintenance operations to provide efficient invalidation of the entire DCache or
ICache, regions of the two caches or region of virtual memory,
●
Provide operations for efficient cleaning and invalidation of entire DCache, regions of it
and regions of virtual memory.
The latter allows DCache coherency to be efficiently maintained when small code changes
occur, for example for self-modifying code and changes to exception vectors.
7.3.3
Bus interface unit
The ARM926EJ-S Bus Interface Unit (BIU) arbitrates and schedules the AHB requests.
Doc ID 018672 Rev 1
87/844
CPU subsystem_ARM926EJ-S
RM0082
The BIU contains separate masters for both instruction and data access, enabling multilayer AHB and multi-AHB systems to be implemented, giving the benefit of increased overall
bus bandwidth and a more flexible system architecture.
To increase system performance, write buffers are used to prevent AHB writes stalling the
ARM926EJ-S system.
88/844
Doc ID 018672 Rev 1
RM0082
CPU subsystem_Vectored interrupt controller (VIC)
8
CPU subsystem_Vectored interrupt controller (VIC)
8.1
Overview
Acting as an interrupt controller, the VIC determines the source that is requesting service
and where its interrupt service routine (ISR) is loaded, doing that in hardware. In particular,
the VIC supplies the starting address, or vector address, of the ISR corresponding to the
highest priority requesting interrupt source.
Main features of the VIC are:
●
Support for 32 standard interrupt sources.
●
Generation of both Fast Interrupt reQuest (FIQ) and Interrupt ReQuest (IRQ),
according to ARM system operation. IRQ is used for general interrupts, whereas FIQ is
intended for fast, low-latency interrupt handling. In particular, using a single FIQ source
at a time in the system provides interrupt latency reduction, because the ISR can be
directly executed without determining the source of the interrupt.
●
Support for 16 vectored interrupts (IRQ only).
●
Hardware interrupt priority, where FIQ interrupt has the highest priority, followed by
vectored IRQ interrupts (from vector 0 to vector 15), and then non-vectored IRQ
interrupts with the lowest priority.
●
Interrupt masking.
●
Interrupts request status and raw interrupt status (prior to masking).
●
Software interrupt generation.
●
An AHB slave to connect to the CPU.
The interrupt inputs must be level sensitive, active HIGH, and held asserted until the
interrupt service routine clears the interrupt. Edge-triggered interrupts are not compatible.
The interrupt inputs do not have to be synchronous to HCLK.
Note:
The VIC does not handle interrupt sources with transient behaviour.
8.2
Block diagram
Figure 5 shows the block diagram of VIC.
Doc ID 018672 Rev 1
89/844
CPU subsystem_Vectored interrupt controller (VIC)
Figure 5.
RM0082
VIC block diagram
Non-vectored FIQ
interrupt logic
FIQSTATUS
[31:0]
Non-vectored IRQ
interrupt logic
IRQSTATUS
[31:0]
VICINTSOURCE[31:0]
Interrupt
request
logic
IRQ0
Vector interrupt 0
VectAddr0
IRQ1
Vector interrupt 1
VectAddr1
IRQn
VectAddrn
Vector interrupt 15
nVICRQIN
VICVECTADDRIN
VICVECTADDROUT
nVICFIQIN
nVICFIQ
IRQ15
VectAddr15
IRQ
vector
address
and
priority
logic
nVICIRQ
IRQ
Daisy
Chain
VectAddrIn
VectAddrOut
HCLK
HSELVIC
HRESETn
HTRANS
AHB slave
interface
HWRITE
HREADYIN
HREADYOUT
HRESP[1:0]
HADDR[11:2]
HRDATA[31:0]
HWDATA[31:0]
HSIZE[2:0]
HPROT
Control logic
8.3
Main functions description
8.3.1
Interrupt request logic
The interrupt request logic block receive the interrupt requests from peripheral and
combines them with the software interrupt requests (see Section 8.3.6). After that, it masks
out the requests that are not enabled (through VICINTENABLE register, Section 8.6.7:
VICINTENABLE register) and roots the others to either IRQSTATUS or FIQSTATUS
depending on VICINTSELECT (see Section 8.6.6: VICINTSELECT register).
FIQ interrupts have the highest priority, followed by vectored interrupts (0-15) and, finally,
non vectored interrupts.
8.3.2
Non-vectored FIQ interrupt logic
The non-vectored FIQ interrupt logic block generates the FIQ interrupt signal by combining
the FIQ interrupt requests coming from the interrupt request logic and any requests from
daisy-chained interrupt controllers.
90/844
Doc ID 018672 Rev 1
RM0082
8.3.3
CPU subsystem_Vectored interrupt controller (VIC)
Non-vectored IRQ interrupt logic
The non-vectored IRQ Interrupt Logic block generates the non-vectored IRQ interrupt signal
by combining the non-vectored IRQ interrupt requests coming from the interrupt request
logic. This signal is then sent to the IRQ vector address and priority logic.
8.3.4
Vectored interrupts
As depicted in Figure 5, there are 16 vectored interrupt blocks within the VIC. Each vectored
interrupt block receives the IRQ interrupt requests from the interrupt request logic block and
it generates a vectored IRQ interrupt.
In particular, a vectored IRQ interrupt is generated only if:
●
It is enabled in the VICINTENABLE register (Section 8.6.7: VICINTENABLE register),
●
It is set to generate an IRQ interrupt in the VICINTSELECT register (Section 8.6.6:
VICINTSELECT register),
●
It is enabled in the relevant VICVECTCNTL register (Section 8.6.15: VICVECTCNTL
register),
●
It is currently the highest requesting interrupt (vector 0 to vector 15, highest to lowest).
Besides, each vectored interrupt block is associated to the 32 bit address of the ISR to be
executed. These ISR addresses are mapped in the VICVECTADDRi (with i = 0...15)
registers (Section 8.6.14: VICVECTADDR register). The VICVECTADDR register
(Section 8.6.12: VICVECTADDR register) contains the ISR address for the currently active
IRQ interrupt.
8.3.5
Interrupt priority logic
The interrupt priority logic block organizes the following requests according to their priority:
●
Non-vectored interrupt requests,
●
Vectored interrupt requests,
●
External interrupt requests.
If the interrupt is not currently being serviced, the highest priority request generates an IRQ
interrupt.
Note:
External interrupt is not being used in SPEAr300.
8.3.6
Software interrupts
The software can control the source interrupt lines to generate software interrupts
(VICSOFTINT register, Section 8.6.9: VICSOFTINT register). These interrupts are
generated before interrupt masking within the Interrupt Request Logic block, in the same
way as external source interrupts.
It is possible to clear software interrupts by writing to the VICSOFTINTCLEAR register
(Section 8.6.10: VICSOFTINTCLEAR register). This is normally done at the end of the ISR.
8.3.7
AHB slave interface
The AHB Slave Interface block connects the VIC to the CPU through the AHB bus.
Doc ID 018672 Rev 1
91/844
CPU subsystem_Vectored interrupt controller (VIC)
8.4
Interrupt connection table
Table 23.
92/844
RM0082
Interrupt sources
Interrupt sources
IRQ #
Reserved
0
Generic Interrupt #3 from RAS
1
CPU Subsystem Timer 1_1
2
CPU Subsystem Timer 1_2
3
Basic Subsystem Timer 1_1
4
Basic Subsystem Timer 1_2
5
Basic Subsystem Timer 2_1
6
Basic Subsystem Timer 2_2
7
Basic Subsystem DMA (Direct Memory Access)
8
Basic Subsystem SMI (Serial Memory Interface)
9
Basic Subsystem RTC (Real Time Clock)
10
Basic Subsystem GPIO (General Purpose Input Output)
11
Basic Subsystem WD (WatchDog Timer)
12
DDR Controller
13
System Error
14
Wake-up FIQ from RCG
15
Low Speed Subsystem JPEG (Joint Photographic Experts Group)
16
Low Speed Subsystem IrDA (Infrared Data Association)
17
Low Speed Subsystem ADC (Analog to Digital Converter)
18
Low Speed Subsystem UART (Universal Asynchronous Receiver and Transmitter)
19
Low Speed Subsystem SPI (Serial Peripheral Interface bus)
20
Low Speed Subsystem I2C (Inter-Integrated Circuit)
21
High Speed Subsystem Ethernet MAC (Medium Access Control)
Power Management Event
22
High Speed Subsystem Ethernet MAC (Medium Access Control)
23
High Speed Subsystem USB Device (Universal Serial Bus)
24
High Speed Subsystem USB Host 1 OHCI (Open Host Controller Interface)
25
High Speed Subsystem USB Host EHCI (Enhanced Host Controller Interface)
26
High Speed Subsystem USB Host 2 OHCI (Open Host Controller Interface)
27
Generic Interrupt #0 from RAS
28
Generic Interrupt #1 from RAS
29
Generic Interrupt #2 from RAS
30
Application Subsystem C3 (Channel Control Coprocessor)
31
Doc ID 018672 Rev 1
RM0082
8.5
CPU subsystem_Vectored interrupt controller (VIC)
How to reduce interrupt latency
The interrupt latency depends on the type of interrupt, see Table 24.
Table 24.
Interrupt latency for different types of interrupts
Worst case (cycles)
Event
FIQ
IRQ
IRQ (reduced latency)
Interrupt synchronization
3
3
3
Worst case interrupt disable period
7
10
10
Entry to first instruction
2
2
2
Nesting, assuming single-state AHB
-
10
-
Load IRQ vector to PC
-
-
5
Total
12
25
20
To reduce interrupt latency, you can re-enable the IRQ interrupts in the processor after the
ISR is entered, so the current ISR is interrupted, and the higher-priority ISR is executed.
The VIC then only enables a higher priority interrupt than the interrupt currently being
serviced. If a higher priority interrupt goes active, the current ISR is interrupted and the
higher-priority ISR is executed. Before the interrupt enable bits in the processor can be reenabled, the LR and SPSR must be saved, preferably on a software stack. When the ISR is
exited, you must disable the interrupts, reload the LR and SPSR, and write to the vector
address register, VICVECTADDR.
8.6
Programming model
8.6.1
Register map
The VIC can be fully configured by programming its 32 bit wide registers which can be
accessed at the base addresses 0xF110_0000.
VIC registers can be logically divided in four main groups:
Note:
●
Interrupt control and status registers (listed in Table 25), for interrupt configuration.
●
Vector address registers (listed in Table 26), containing the address of the ISRs.
●
Vector control registers (listed in Table 27), which select the interrupt source for the
vectored interrupt.
●
Identification registers (listed in Table 28), namely eight 8 bit RO registers reporting
VIC-specific information (part number, revision number and so on). Refer to ARM
technical documentation for further details.
Offset addresses from 0x300 to 0x310 are reserved for test purposes.
Table 25.
VIC interrupt control registers summary
Name
Offset
Type
Reset value
Description
VICIRQSTATUS
0x000
RO
32’h0
IRQ status
VICFIQSTATUS
0x004
RO
32’h0
FIQ status
Doc ID 018672 Rev 1
93/844
CPU subsystem_Vectored interrupt controller (VIC)
Table 25.
RM0082
VIC interrupt control registers summary (continued)
Name
Offset
Type
Reset value
Description
VICRAWINTR
0x008
RO
-
Raw interrupt status
VICINTSELECT
0x00C
RW
32’h0
Interrupt select
VICINTENABLE
0x010
RW
32’h0
Interrupt enable
VICINTENCLEAR
0x014
WO
-
Interrupt enable clear
VICSOFTINT
0x018
RW
32’h0
Software interrupt
VICSOFTINTCLEAR 0x01C
WO
-
Software interrupt clear
VICPROTECTION
RW
32’h0
Protection enable
Table 26.
0x020
VIC vector address registers summary
Name
Offset
Type
Reset value
Description
VICVECTADDR
0x030
RW
32’h0
Vector address
VICDEFVECTADDR
0x034
RW
32’h0
Default vector address
VICVECTADDR0
0x100
RW
32’h0
VICVECTADDR1
0x104
RW
32’h0
VICVECTADDR2
0x108
RW
32’h0
VICVECTADDR3
0x10C
RW
32’h0
VICVECTADDR4
0x110
RW
32’h0
VICVECTADDR5
0x114
RW
32’h0
VICVECTADDR6
0x118
RW
32’h0
VICVECTADDR7
0x11C
RW
32’h0
VICVECTADDR8
0x120
RW
32’h0
VICVECTADDR9
0x124
RW
32’h0
VICVECTADDR10
0x128
RW
32’h0
VICVECTADDR11
0x12C
RW
32’h0
VICVECTADDR12
0x130
RW
32’h0
VICVECTADDR13
0x134
RW
32’h0
VICVECTADDR14
0x138
RW
32’h0
VICVECTADDR15
0x13C
RW
32’h0
Vector address registers
94/844
Doc ID 018672 Rev 1
RM0082
CPU subsystem_Vectored interrupt controller (VIC)
Table 27.
VIC interrupt vector control registers summary
Name
Offset
Type
Reset value
VICVECTCNTL0
0x200
RW
32’h0
VICVECTCNTL1
0x204
RW
32’h0
VICVECTCNTL2
0x208
RW
32’h0
VICVECTCNTL3
0x20C
RW
32’h0
VICVECTCNTL4
0x210
RW
32’h0
VICVECTCNTL5
0x214
RW
32’h0
VICVECTCNTL6
0x218
RW
32’h0
VICVECTCNTL7
0x21C
RW
32’h0
VICVECTCNTL8
0x220
RW
32’h0
VICVECTCNTL9
0x224
RW
32’h0
VICVECTCNTL10
0x228
RW
32’h0
VICVECTCNTL11
0x22C
RW
32’h0
VICVECTCNTL12
0x230
RW
32’h0
VICVECTCNTL13
0x234
RW
32’h0
VICVECTCNTL14
0x238
RW
32’h0
VICVECTCNTL15
0x23C
RW
32’h0
Description
Vector Control.
Table 28.
VIC identification registers summary
Name
Offset
Type
Reset value
VICPERIPHID0
0xFE0
RO
8’h90
VICPERIPHID1
0xFE4
RO
8’h11
VICPERIPHID2
0xFE8
RO
8’h04
VICPERIPHID3
0xFEC
RO
8’h00
VICPCELLID0
0xFF0
RO
8’h0D
VICPCELLID1
0xFF4
RO
8’hF0
VICPCELLID2
0xFF8
RO
8’h05
VICPCELLID3
0xFFC
RO
8’hB1
Description
Peripheral Identification.
Identification Registers
8.6.2
Register description
8.6.3
VICIRQSTATUS register
The VICIRQSTATUS is the RO register which provides the status of interrupts after IRQ
masking (through VICINTENABLE and VICINTSELECT registers, Section 8.6.7:
VICINTENABLE register and Section 8.6.6: VICINTSELECT register respectively), at the
output of the Interrupt Request Logic block (Section 8.3.1). The VICIRQSTATUS bit
assignments are given in Table 29.
Doc ID 018672 Rev 1
95/844
CPU subsystem_Vectored interrupt controller (VIC)
Table 29.
8.6.4
RM0082
VICIRQSTATUS register bit assignments
Bit
Name
Reset
value
Description
[31:00]
IRQStatus
32’h0
Each bit is associated to an interrupt.
If a bit is set, it indicates that the relevant interrupt is
active, and generates an interrupt to the processor.
VICFIQSTATUS register
The VICFIQSTATUS is the RO register which provides the status of the interrupts after FIQ
masking (through VICINTENABLE and VICINTSELECT, Section 8.6.7: VICINTENABLE
register and Section 8.6.6: VICINTSELECT register respectively), at the output of the
interrupt request logic block (Section 8.3.1). The VICFIQSTATUS bit assignments are given
in Table 30.
Table 30.
8.6.5
VICFIQSTATUS register bit assignments
Bit
Name
Reset
value
Description
[31:00]
FIQStatus
32’h0
Each bit is associated to an interrupt.
If a bit is set, it indicates that the relevant interrupt is
active, and generates an interrupt to the processor.
VICRAWINTR register
The VICRAWINTR is a RO register, which provides the raw status of both interrupt sources
and software interrupts (before masking through enable registers, VICINTENABLE and
VICINTSELECT). The VICRAWINTR bit assignments are given in Table 31.
Table 31.
8.6.6
VICRAWINTR register bit assignments
Bit
Name
Reset
value
Description
[31:00]
Raw Interrupt
-
Each bit is associated to an interrupt.
If a bit is set, it indicates that the relevant interrupt
request is active before masking.
VICINTSELECT register
The VICINTSELECT is a RW register which allows to select whether the corresponding
interrupt generates an FIQ or an IRQ interrupt. The VICINTSELECT bit assignments are
given in Table 32.
96/844
Doc ID 018672 Rev 1
RM0082
CPU subsystem_Vectored interrupt controller (VIC)
Table 32.
Bit
[31:00]
8.6.7
VICINTSELECT register bit assignments
Name
IntSelect
Reset
value
Description
32’h0
Each bit is associated to an interrupt line.
Each bit allows to select the type of interrupt for
relevant interrupt requests, according to encoding:
1‘b0 = IRQ interrupt
1‘b1 = FIQ interrupt
VICINTENABLE register
The VICINTENABLE is a RW register which allows to enable the interrupt request lines by
masking the interrupt sources for the IRQ interrupt. The VICINTENABLE bit assignments
are given in Table 33.
Table 33.
Bit
[31:00]
8.6.8
VICINTENABLE register bit assignments
Name
IntEnable
Reset
value
Description
32’h0
Each bit is associated to an interrupt line.
If a bit is set, the relevant interrupt request to the
processor is enabled.
A HIGH bit sets the corresponding bit in the
VICINTENABLE Register. A LOW bit has no effect.
VICINTENCLEAR register
The VICINTENCLEAR is a WO register which allows to clear bits in the VICINTENABLE
register (Section 8.6.7: VICINTENABLE register). The VICINTENCLEAR bit assignments
are given in Table 34.
Table 34.
Bit
[31:00]
8.6.9
VICINTENCLEAR register bit assignments
Name
IntEnableClear
Reset
value
Description
-
Each bit is associated to an interrupt line.
Writing a 1‘b1 in a bit, the corresponding bit in the
VICINTENABLE register is cleared.
Writing a 1‘b0 has no effect.
VICSOFTINT register
The VICSOFTINT (software interrupt) is a RW register which generates software interrupts.
The VICSOFTINT bit assignments are given in Table 35.
Doc ID 018672 Rev 1
97/844
CPU subsystem_Vectored interrupt controller (VIC)
Table 35.
8.6.10
RM0082
VICSOFTINT register bit assignments
Bit
Name
Reset
value
Description
[31:00]
SoftInt
32’h0
Each bit is associated to a source interrupt.
Setting a bit, a software interrupt for the specific source
interrupt is generated before interrupt masking.
VICSOFTINTCLEAR register
The VICSOFTINTCLEAR is a WO register which allows to clear bits in the VICSOFTINT
register (Section 8.6.9: VICSOFTINT register). The VICSOFTINTCLEAR bit assignments
are given in Table 36.
Table 36.
Bit
[31:00]
8.6.11
VICSOFTINTCLEAR register bit assignments
Name
SoftIntClear
Reset
value
Description
-
Each bit is associated to an interrupt line.
Writing a 1‘b1 in a bit, the corresponding bit in the
VICSOFTINT register is cleared.
Writing a 1‘b0 has no effect.
VICPROTECTION register
The VICPROTECTION is a RW register which allows to enable or disable protected register
access. The VICPROTECTION bit assignments are given in Table 37.
Table 37.
VICPROTECTION register bit assignments
Bit
Name
Reset
value
Description
[31:01]
Reserved
-
Read: undefined. Write: should be zero.
1’h0
Enable/disable protected register access.
Setting this bit, protected register access is enabled
ensuring that only privileged mode accesses, reads
and writes, can access the interrupt controller
registers.
Clearing this bit, protected register access is disabled
allowing both user mode and privileged mode to
access the registers.
[00]
Protection
Note:
This register is cleared on reset, and it can only be accessed in privileged mode. If the AHB
master cannot generate accurate protection information, this register shall leaved in its reset
state (protection disabled) in order to enable User mode access.
8.6.12
VICVECTADDR register
The VICVECTADDR (vector address) is a RW register which contains the ISR address of
the currently active interrupt. The VICVECTADDR bit assignments are given in Table 38.
98/844
Doc ID 018672 Rev 1
RM0082
CPU subsystem_Vectored interrupt controller (VIC)
Table 38.
Bit
[31:00]
VICVECTADDR register bit assignments
Name
Vector Addr
Reset
value
Description
32’h0
Reading from this register provides the address of the
currently active ISR, indicating that the interrupt is
being serviced.
Writing to this register indicates that the interrupt has
been serviced and the interrupt is cleared.
Note:
The ISR reads the VICVECTADDR register when an IRQ interrupt is generated. At the end
of the ISR, the VICVECTADDR register is written to, to update the priority hardware.
Reading or writing to this register at other times can cause incorrect operation.
8.6.13
VICDEFVECTADDR register
The VICDEFVECTADDR (default vector address) is a RW register which contains the
default ISR address.
8.6.14
VICVECTADDR register
Each VICVECTADDRi (with i = 0...15) is a RW register which contains the ISR address for
the relevant vectored interrupt.
8.6.15
VICVECTCNTL register
Each VICVECTCNTLi (with i = 0...15) is a RW registers which allows to select the interrupt
source for the i-th vectored interrupt. The bit assignments of VICVECTCNTLi are given in
Table 39.
Table 39.
VICVECTCNTL registers bit assignments
Bit
Name
Reset
value
Description
[31:06]
Reserved
-
Read: undefined. Write: should be zero.
[05]
E
1’h0
If set, it enables vector interrupt.
[04:00]
IntSource
5’h0
It allows to select any of the 32 interrupt sources (IRQ
only).
Note:
Vectored interrupts are only generated if the interrupt is enabled. The specific interrupt is
enabled in the VICINTENABLE register (Section 8.6.7: VICINTENABLE register), and the
interrupt is set to generate an IRQ interrupt in the VICINTSELECT register (Section 8.6.6:
VICINTSELECT register). This prevents multiple interrupts being generated from a single
request if the controller is incorrectly programmed.
8.6.16
Peripheral identification registers
The read-only VICPeriphID0-3 registers are four 8 bit registers, that span address locations
0xFE0-0xFEC. You can treat the registers conceptually as a single 32 bit register. The readonly registers provide the following options for the peripheral.Table 40.
Doc ID 018672 Rev 1
99/844
CPU subsystem_Vectored interrupt controller (VIC)
Table 40.
Peripheral identification registers bit assignments
Bit
Name
Description
[31:24]
Configuration
This is the configuration option of the peripheral. the
configuration value is 0.
[23:20]
Revision number
This is the revision number of the peripheral. The revision
number starts from 0.
[19:12]
Designer
This is the identification of the designer
12 -15 Designer 0;
16 -19 Designer 1
Part number
This identifies the peripheral. The VIC uses the three-digit
product code 0x90.
0 - 7 Part number 0;
8-11 Part number 1
[11:00]
8.6.17
RM0082
VICPERIPHID0 register
The read-only VICPERIPHID0 register, with address offset of 0xFE0, is hard-coded, and the
fields within the register determine the reset value. Table 41 shows the bit assignments for
this register.
Table 41.
Bit
VICPERIPHID0 register bit assignments
Name
[31:08]
[07:00]
8.6.18
Description
Read undefined
Partnumber0
These bits read back as 0x90
VICPERIPHID1 register
The read-only VICPERIPHID1 register, with address offset of 0xFE4, is hard-coded, and the
fields within the register determine the reset value. Table 42 shows the bit assignments for
this register.
Table 42.
Bit
VICPERIPHID1 register bit assignments
Name
[31:08]
8.6.19
Description
Read undefined
[07:04]
Designer0
These bits read back as 0x1
[03:00]
Partnumber1
These bits read back as 0x1
VICPERIPHID2 register
The read-only VICPERIPHID2 register, with address offset of 0xFE8, is hard-coded, and the
fields within the register determine the reset value. Table 43 shows the bit assignments for
this register.
100/844
Doc ID 018672 Rev 1
RM0082
CPU subsystem_Vectored interrupt controller (VIC)
Table 43.
Bit
VICPERIPHID2 register bit assignments
Name
[31:08]
8.6.20
Description
Read undefined
[07:04]
Revision
These bits read back as 0x1
[03:00]
Designer1
These bits read back as 0x0
VICPERIPHID3 register
The read-only VICPERIPHID3 register, with address offset of 0xFEC, is hard-coded, and
the fields within the register determine the reset value.Table 44 shows the bit assignments
for this register.
Table 44.
Bit
VICPERIPHID3 register bit assignments
Name
[31:08]
[07:00]
8.6.21
Description
Read undefined
Configuration
These bits read back as 0x0
Identification registers
The read-only VICPCELLID0-3 registers are four 8 bit registers, that span address locations
0xFF0-0xFFC. You can treat the registers conceptually as a single 32 bit register. Use the
register as a standard cross-peripheral identification system.
8.6.22
VICPCELLID0 register
The read-only VICPCELLID0 register, with address offset 0xFF0, is hard-coded and the
fields within the register determine the reset value. Table 45 shows the bit assignments for
this register
Table 45.
Bit
VICPCELLID0 register bit assignments
Name
[31:08]
[07:00]
8.6.23
Description
Read undefined
VICPCellID0
These bits read back as 0x0D
VICPCELLID1 register
The read-only VICPCELLID1 register, with address offset 0xFF4, is hard-coded and the
fields within the register determine the reset value. Table 46 shows the bit assignments for
this register
Table 46.
Bit
VICPCELLID1 register bit assignments
Name
[31:08]
[07:00]
Description
Read undefined
VICPCellID1
These bits read back as 0xF0
Doc ID 018672 Rev 1
101/844
CPU subsystem_Vectored interrupt controller (VIC)
8.6.24
RM0082
VICPCELLID2 register
The read-only VICPCELLID2 register, with address offset 0xFF8, is hard-coded and the
fields within the register determine the reset value. Table 47 shows the bit assignments for
this register
Table 47.
Bit
VICPCELLID2 register bit assignments
Name
[31:08]
[07:00]
8.6.25
Description
Read undefined
VICPCellID2
These bits read back as 0x05
VICPCELLID3 register
The read-only VICPCELLID3 register, with address offset 0xFFC, is hard-coded and the
fields within the register determine the reset value. Table 48 shows the bit assignments for
this register
Table 48.
Bit
VICPCELLID3 register bit assignments
Name
[31:08]
[07:00]
102/844
Description
Read undefined
VICPCellID3
These bits read back as 0xB1
Doc ID 018672 Rev 1
RM0082
9
Bus interconnection matrix
Bus interconnection matrix
The SoC interconnection matrix scheme is given Table 49 and Table 50.
MemCtr#0
RAS H
DMA#2
REQ
MemCtr#2
lcm5
MemCtr#3
lcm7
MemCtr#4
lcm8
REQ1
REQ1
REQ2
REQ1
Ras_I
REQ3
REQ2
REQ4
REQ2
REQ
Ras_M
Targets
DMA#1
REQ
MemCtr#1
REQ
Ras_G1
REQ
Ras_G2
REQ
Ras_F
Note:
Processor
RAS L
RAS _E
C3
USB (Host and Device)
SoC interconnection matrix scheme
Ethernet MAC
Table 49.
lcm6
REQ1
REQ2
Sbs_LowS
lcm1
peed
REQ
1
Sbs_High
Speed
lcm4
REQ
1
REQ2
Sbs_Basic lcm3
REQ
1
REQ2
Sbs_Applic
lcm2
ation
REQ
1
REQ2
REQ3
REQ3
REQ2
1
RAS_E,F, G,G2,H,M designate the internal logic ports connecting to the RAS subsystem.
2
RAS_G1 and RAS_G2 are internal logic ports assigned to the interconnection implemented
between the two masters of the DMA controller with the IPs in the RAS subsystem.
Table 50.
SoC interconnection matrix
Legend
Description
A
Grey box: No connection exists between target and initiator
B
White box: A connection exists between target and initiator
C
‘Req’: A connection that is required between target and initiator
Doc ID 018672 Rev 1
103/844
Bus interconnection matrix
9.1
RM0082
ICM
The AMBA system has ten programmable Multi-layer Interconnection Matrix (ICM). The ICM
allows multiple master layers to access a slave (See Figure 6)
Figure 6.
ICM block diagram
AHB MASTER
(Layer 0)
AHB SLAVE
ICM
AHB MASTER
(Layer N)
priority
Arbiter
A layer is referred to as one or more masters that complete together with one master
winning ownership of the slave.
When there is more that one layer looking for access to the slave at the sametime, this is
referred to as a clash of requests. Whenever a clash is detected, only one layer can gain
access to the slave. The layer that do not gain access to the slave need to have their
address and control signals stored into their input stage. When address and control signals
are stored into an input stage, then the stored transfer controls the request and lock
generation circuitry. When a lower priority layer is in the middle of a burst transfer and a
higher priority layer issues a transfer, the higher priority layer is stored and then held off until
the lower priority layer completes the transfer.
Table 51 shows the Master Layer on each ICM input stages while Table 52 lists the ICM
slaves.
Table 51.
104/844
ICM master layers (Initiator)
ICM
L0
L1
L2
1
Processor
RAS_H
DMA#1
2
Processor
RAS_H
DMA#1
3
Processor
RAS_H
4
Processor
RAS_H
5
RAS_H
DMA#1
6
Ethernet MAC
USB(Hosts - Device
7
Ras_E
DMA#2
8
C3
USB(Hosts - Device)
Doc ID 018672 Rev 1
Ethernet MAC
L3
C3
RM0082
Bus interconnection matrix
Table 52.
ICM slaves (Targets)
ICM
M1
1
Sbs_LowSpeed
2
Sbs_Application
3
Sbs_Basic
4
Sbs_Highspeed
5
MemCtr#2 (MPMC)
6
Ras_F
7
MemCtr#3 (MPMC)
8
MemCtr#4 (MPMC)
In the Miscellaneous register bank are allocated eight register (ICM_x_ARB_CFG) one for
each ICM.
These registers have all the same layout:
●
The 31th bit is in charge of choosing the arbitration scheme: fixed priority or round robin
●
Bit [30:28] specifies the priority starting level in case of round robin arbitration protocol
●
Then 3 bit are allocated to each layer to set the priority level in case of fixed priority
scheme: bit [2:0] for Layer0, [5:3] for Layer1 and so on. Refer to table 4 for layer list.
Doc ID 018672 Rev 1
105/844
DDR memory controller (MPMC)
RM0082
10
DDR memory controller (MPMC)
10.1
Overview
SPEAr300 integrates a high performances multi-port memory controller able to support
DDR-Mobile and DDR2 double data rate memory devices. The multi-port architecture
ensures memory is shared efficiently among different high-bandwidth client modules.
It offers 6 internal ports. One of them is reserved to registers access during the controller
initialization while the other five are used to access the external memory.
It also include the physical layer (PHY) and some DLL that allows a fine tuning of all the
timing parameter to maximize the data valid windows at every frequency in the allowed
range.
Figure 7.
MPMC block diagram
AHB-CFG
AHB0
AHB1
CORE
Controller
PHY
Ext.Memory I/F
AHB2
AHB3
AHB4
Multi port Memory Controller
10.2
Signal description
The following Table 53 and Table 54 describe the signals either for the internal connections
that the external ones.
Table 53.
106/844
External memory Interface signals
Signal name
Direction
Description
DDR_CLK_P
Out
Differential memory clock. Positive line
DDR_CLK_N
Out
Differential memory clock. Negative line.
DDR_DQS_(1:0)
Bidir
Differential memory data strobe positive line. Drove during
write transaction and received from memory device during
read transfer.
Doc ID 018672 Rev 1
RM0082
DDR memory controller (MPMC)
Table 53.
External memory Interface signals (continued)
Signal name
Direction
Description
DDR_nDQS_(1:0)
Bidir.
Differential memory data strobe negative line. Drove during
write transaction and received from memory device during
read transfer.
DDR_CLKEN
Out
Memory clock enable (active high)
DDR_CS_(1:0)
Out
Memory chip select (active low)
DDR_RAS
Out
Memory row address select
DDR_CAS
Out
Memory column address select
DDR_WE
Out
Memory write enable
DDR_ADD_(14:0)
Out
Memory address bus
DDR_BA_(2:0)
Out
Memory bank address
DDR_DM_(1:0)
Out
Memory data mask (active high)
DDR_DATA_(15:0)
Bidir.
Memory data bus
DDR_ODT_(1:0)
Out
Memory On-die termination enable signals (active high)
DDR_GATE_(1:0)
Bidir.
Memory gate open (DQS delay tune considering board
propagation delay and internal pad propagation delay)
Table 54.
Internal signals
Signal name
Description
AHB-CFG
Through this bus, connected to the multilayer interconnection matrix output port
#3, the CPU or any other logic block with master capability can configure the
memory controller registers.
AHB0
Through this bus the CPU can access the external memory.
AHB1
Through this bus the master port L can access the external memory.
AHB2
This bus, through the multilayer interconnection matrix output port 5, give access
to the external memory to the following masters:
DMA1
Master port H
AHB3
This bus, thanks to an external multiplexer, give access to the external memory to
the following masters:
DMA2
Ethernet controller
Master port E
Channel controller coprocessor (C3)
AHB4
This bus, thanks to an external multiplexer, give access to the external memory to
the following masters:
USB2 host and device controllers
Channel controller coprocessor (C3)
IRQ
The memory controller interrupt request line is connected to the physical request
number 13
Doc ID 018672 Rev 1
107/844
DDR memory controller (MPMC)
10.3
RM0082
Features overview
The memory controller includes the following main features:
●
108/844
Multi channel AHB interfaces:
–
Five independent AHB ports.
–
Separate AHB memory controller programming interface.
–
Support all AHB burst types.
–
Lock transaction are not supported.
–
Port queue post multiple AHB transactions.
●
Internal efficient port arbitration scheme to ensure high memory bandwidth utilization.
●
Fully pipelined read - write commands.
●
Advanced bank look-ahead features for high memory throughput.
●
Programmable register interface to control memory device parameters and protocols
including the following main functionalities:
–
Auto pre-charge.
–
Read/write grouping.
–
Bank splitting.
–
Bank grouping.
–
Swapping.
–
Aging.
●
Full initialization of memory on memory controller reset.
●
DRAM controller supports both DDR-Mobile and DDR2 memory devices:
–
DDR- Mobile up to 166 MHz (333 MT/sec).
–
DDR2 up to 333 MHz (666 MT/sec).
●
Memory frequency with DLL enable configured within range from 100 MHz to 333 MHz.
●
Controller supports:
–
Wide range of memory device: 128 MBit, 256 MBit, 512 MBit, 1 MBit, 2 MBit.
–
Two chip selects.
–
Memory data with 8 or 16 bit.
–
Configurable memory parameters:
–
Row address from 8 to 15 bit.
–
Column address from 7 to 14 bit.
–
Memory internal banks 4 or 8.
●
Programmable DQS0/1 signals per byte configurable single ended and differential
mode.
●
Built-in adjustable delay compensation circuitry (DCC) for reliable data sends and
captures timing.
●
Dynamic memory self refresh power reduction automatically activated from SoC power
management unit.
Doc ID 018672 Rev 1
RM0082
10.4
DDR memory controller (MPMC)
Main block description
The multi-port memory controller supports high memory bandwidth utilization and an
efficient arbitration scheme for high priority agent requests.
The memory controller architecture consists of the following main sub-blocks:
●
AHB port interfaces.
●
Arbiter.
●
Command queue with placement logic.
●
Write data queue.
●
DRAM command processing.
The core controller interfaces with standard AHB ports through the interface blocks. All
requests are processed through the internal arbiter which feeds single commands to the
command queue of core controller. Write and read data is routed independently of the
arbiter through the data interfaces. There are multiple write data interfaces to the write data
queue of core controller, and a single read data interface back from the core controller to the
port interface blocks. The architecture of the multi-port system is shown in Figure 8.
Figure 8.
Memory controller architecture
AHB0
Port queue
AHB1
Port queue
AHB2
Port queue
AHB3
Port queue
AHB4
Port queue
Write data
queue
Command
queue
Placement
Logic
Arbiter
AHB Port I/
F
AHB-CFG
DRAM
Command
Logic
Read data
queue
PHY
CORE Controller
CFG
REG
The interface blocks contain FIFOs for commands, READ and WRITE data, handling any
clock domain crossings as required. From the port interface blocks, commands are
processed by an Arbiter which feeds single commands to the command queue of the
Memory Controller core. WRITE and READ data are routed directly to the WRITE and
READ data queues of the Memory Controller core, Arbiter independently.
Each port has a distinct WRITE data interface to the WRITE data queue of the Memory
Controller core. However, for READ data, all ports share a single READ data interface back
to the port interface blocks.
Doc ID 018672 Rev 1
109/844
DDR memory controller (MPMC)
10.4.1
RM0082
AHB-Memory controller interfaces
The Memory Controller core interfaces with 5 AHB data ports and 1 AHB register port. The
AHB data ports function as AHB slaves to external AHB masters such as CPUs, DMAs,
DSPs, and other peripherals. The port implementation is restricted to support the AHB-lite
protocol and is designed for Multi-Layer AHB architectures. This implies that an AHB slave
port will never respond with a SPLIT or a RETRY response type. Early termination of AHB
bursts is fully supported.
Note:
An AHB slave port can be used in a system with masters that support the full AHB protocol
as long as the system is Multi-Layer AHB.
AHB-Memory Controller interfaces handle all communication between the AHB bus and the
Memory Controller core. An incoming AHB transaction is first synchronized from the AHB
clock domain to the Memory Controller core clock domain, then mapped into a Memory
Controller core-level transaction, and finally stored in the AHB port FIFOs. From the AHB
FIFOs, the transaction is presented to the Arbiter which arbitrates requests from all ports
and forwards a single transaction to the Memory Controller core.
Configured options
Each AHB port in the Memory Controller has been defined for the requirements of the
intended system. The configured options are:
Type of interface to the memory controller core clock
All ports of this Memory Controller are clock domain programmable relative to the main
Memory Controller core clock. These ports initialize in asynchronous operation, but can be
changed by programming the associated ahbY_fifo_type_reg parameter. For more
information on the setting of this parameter, refer to Port clocking.
Asynchronous FIFOs handle the clock domain crossing when operating in any of the non
synchronous modes. Refer to Table 55: Configured AHB settings, for the clock relativity for
each port.
Note:
When switching between asynchronous and synchronous mode of operation, ensure that
there are no outstanding transactions on the port whose behaviour is being changed. If
transactions are waiting, there may be unexpected loss of data or a lockout condition on that
AHB port.
Datapath width
Each port has a data interface width of 32 bits.
READ and WRITE command Lengths for INCR Operations
AHB ports handle sequential requests of unspecified length (INCR) by issuing block data
requests of the size programmed in the associated ahbX_wrcnt or ahbX_rdcnt parameter
(where X is the port number). If the request is larger than the value programmed in that
parameter, the request will be divided into multiple requests. Subsequent read commands
will be issued when the last word of data has been delivered back to the requesting AHB
port. Subsequent WRITE commands will be issued after the last data word of the previous
request has been transferred from the AHB interface to the Memory Controller core. The
value defined in each parameter should be a multiple of the number of bytes in the AHB bus
width. For this Memory Controller, since the AHB bus width is 32 bits, these parameters
should be programmed to 4, 8, 12, 16, etc. up to 1024 bytes.
110/844
Doc ID 018672 Rev 1
RM0082
DDR memory controller (MPMC)
Port FIFO depths
Each data port contains a read, a write and a command FIFO. The depth of each buffer in
each port is listed in Table 55: Configured AHB settings.
Error detection
When an illegal operational condition is detected on a new AHB transaction entering the
port, the port responds with an ERROR.
Port clocking
There are four user-selectable modes of operation for each of the AHB-Memory Controller
port interfaces.
The mode is set by programming the corresponding ahbY_fifo_type_reg parameter. The
four settings are:
Synchronous ('b11)
The AHB port clock and the Memory Controller core clock must be aligned in frequency in
phase. The AHB-Memory Controller port interface block will not be required to perform any
clock synchronization in any of the FIFOs.
●
Port: Core Pseudo-Synchronous ('b10)
The port operates at half of the frequency of the Memory Controller core frequency,
with clocks that are aligned in phase. One stage of the two-stage synchronization logic
of the FIFOs will be utilized to synchronize commands, WRITE data and READ data to
the appropriate clock domain.
●
Port: Core Pseudo-Synchronous ('b01)
The port frequency is twice the Memory Controller core frequency, although the clocks
are aligned in phase. One stage of the two-stage synchronization logic of the FIFOs will
be utilized to synchronize commands, WRITE data and READ data to the appropriate
clock domain.
Asynchronous ('b00)
The AHB bus and the Memory Controller core operate on clocks that are mismatched in
frequency and phase. The AHB port FIFOs use two stages of synchronization logic to
synchronize commands, WRITE data and READ data to the appropriate clock domain.
AHB Port FIFOs
Incoming transactions on the AHB bus are processed by the interface logic and mapped into
equivalent transactions on the Memory Controller core bus. These transactions are queued
in the port FIFOs.
There are three separate AHB port FIFOs for commands, READ data and WRITE data. The
depths of the FIFOs are configured by the user and generally dependent on system
requirements.
Command FIFO
The command FIFO holds the AHB command address, burst type and size. Typically, the
command FIFO is fairly small in depth due to the single-threaded, pipelined nature of the
AHB protocol. The protocol does not allow more than one outstanding transaction on any
Doc ID 018672 Rev 1
111/844
DDR memory controller (MPMC)
RM0082
AHB port. A deeper command FIFO is only useful in situations when the master issues
several very short WRITE bursts.
In this case, the commands and the associated data will be completely captured in the
command and write FIFOs and the bus will be free to start other operations.
Read FIFO
The read FIFO holds the ahbX_HRDATA signals sent back from the Memory Controller.
There is only one streaming READ data interface out from the memory for all AHB ports.
The Memory Controller steers this data stream to the port that requested the data. As a
result, the AHB ports must be ready to accept the READ data as soon as it is available on
the internal Memory Controller core bus to avoid stalling the Memory Controller itself.
Write FIFO
The write FIFO holds the ahbX_HWDATA signals sent into the Memory Controller. The
depth of the write FIFO depends on the typical length of a burst write transaction.
Note:
There is a WRITE data queue inside the Memory Controller core as well. Therefore, the
write FIFOs allow the AHB bus to off load its WRITE command completely before it is fully
transferred to the Memory Controller core buffers.
Settings
Table 55.
Configured AHB settings
Port
number
Data
width
Clock domain type
Command
FIFO depth
Write FIFO
depth
Read FIFO
depth
0
32
Async or Sync
8
8
8
1
32
Async or Sync
8
8
8
2
32
Async or Sync
8
16
16
3
32
Async or Sync
8
8
8
4
32
Async or Sync
8
8
8
Reset
There are two sets of reset logic inside the Memory Controller: the reset for the Memory
Controller core and the reset for the AHB ports.
The reset signal for the Memory Controller core is the asynchronous active-low reset rst_n
signal that resets all critical flip-flops in the system to ensure the Memory Controller core
exits from reset in a known state.
When the Memory Controller core is reset all parameters are reset too, so any command
inside the Memory Controller core are lost. Resetting Memory Controller core does not
automatically reset the AHB ports: resetting the Memory Controller core without AHB port
reset will generate unknown behavior.
The AHB port reset is the active-low asynchronous signal ahbX_HRESETn. When this reset
is asserted, the associated AHB port will be reset. The port FIFOs will be cleared and the
pointers will be reset. To prevent corruption within the Memory Controller, AHB ports should
only be reset at initialization and while the port is idle at the interface and with no commands
within the Memory Controller core.
112/844
Doc ID 018672 Rev 1
RM0082
DDR memory controller (MPMC)
During initialization, it is recommended that both resets be asserted simultaneously. The
Memory Controller core reset should be removed first, followed by the port reset. The reset
should be asserted for at least 5 cycles.
AHB register port
The AHB-Memory Controller Interface contains a special register port for converting AHB
register addresses to Memory Controller core register addresses. This port operates
asynchronously. However, unlike the data ports, the register port has no allocated storage in
the form of FIFOs.
The register port only supports the AHB SINGLE transaction burst types for all transactions
with a bytes-per-beat (2ahbX_HSIZE) equal to or less than the width of the AHB register
bus. There is no support for WRAP transactions or early burst termination for the register
port. BUSY cycles can be inserted between the incrementing burst operations.
Similar to the data ports, the AHB register port responds to illegal conditions with the
ERROR response. However, a register port ERROR will only occur when the transaction
address is not aligned to the size of the transaction.
All parameters related to the AHB port operation are located in the Memory Controller core
register map.
These parameters are programmed during the Memory Controller initialization sequence
along with all of the other device parameters. A typical boot-up sequence includes a reset of
the AHB ports as well as of the Memory Controller core, followed by Memory Controller core
setting for AHB operation by AHB register port.
AHB transactions
The AHB-Memory Controller Interfaces support the complete set of AHB transactions. The
list includes: SINGLE, INCR4, INCR8, INCR16, WRAP4, WRAP8, WRAP16 and INCR.
For documentation purposes, INCRx will refer to INCR4, INCR8 or INCR16 commands.
WRAPx will refer to WRAP4, WRAP8 or WRAP16 commands. Command handling is
defined for full-size transfers, in which the bytes-per-beat is equal to the bus width, or narrow
transfers, where the bytes-per-beat is less than the bus width.
Full-Size SINGLE, INCRx or WRAPx transactions
SINGLE and INCRx transactions with a bytes-per-beat value (2ahbX_HSIZE) equal to the
width of the AHB bus are issued as single Memory Controller commands to the Memory
Controller core. The starting address of the Memory Controller transaction is the same as
the address specified during the first NONSEQ beat of the corresponding AHB transaction.
The Memory Controller core accepts these commands in a pipelined fashion such that, for
read transactions, the READ data can be delivered in contiguous data words back to the
AHB interface. These words may not be contiguous if other AHB requests with higher
priority get placed ahead of some of these commands, or if the read queue inside the
Memory Controller core is not deep enough to absorb a full burst.
WRAPx transactions with a starting address that is not aligned to the total number of bytes
in the burst (bytes-per-beat times the number of beats) are issued as two separate Memory
Controller core transactions as shown in Figure 9. The first transaction has a starting
address which is the same as the WRAP transaction starting address and its byte count is
the number of bytes from the starting address to the wrap boundary. The second transaction
has a starting address which is aligned to the byte count in the WRAPx transfer and its byte
count is the number of bytes from the wrapped address back to the starting address. This
Doc ID 018672 Rev 1
113/844
DDR memory controller (MPMC)
RM0082
means that an AHB WRAP instruction is divided into two Memory Controller core
transactions, one for the non-wrapped portion of the transaction and one for the wrapped
portion. The starting address determines whether the WRAP transaction will actually wrap
or not. A wrap transaction with an aligned address is equivalent to an INCRx command and
is treated as such by the AHB port.
Figure 9.
WRAPx effective transaction
Memory Page Containing Starting Address
Starting
Address
Wrap
Address
WRAPx Command
Length = X*ahbX_HSIZE
Transaction #1
Transaction #2
The command wraps at address:
(Starting Address+X)-Modules(Starting Address/X)
Where X is the Wrap Size in WARPx
Starting Address-Modules (Starting Address/X)
Where X is the Wrap Size in WARPx
Full-Size INCR transactions
Since the Memory Controller core bus protocol does not support transactions of an
unspecified length, AHB INCR transactions require special handling by the AHB port logic.
Each AHB port contains a pair of programmable parameters for determining the length of a
command that will be issued to the Memory Controller core when an INCR command is
issued to the AHB port. These parameters are ahbX_wrcnt and ahbX_rdcnt and they hold
the programmed size used for an unspecified length WRITE and a READ command length
in bytes for port X when this type of command is issued to the Memory Controller core.
The value defined in these parameters should be a multiple of the number of bytes in a data
word for the Memory Controller core. If that is not the case, the parameter values will
automatically be truncated to the data word boundary. Clearing these parameters will cause
the port to issue commands of 0 length to the Memory Controller core, which the core
interprets as the pre-configured value of 1024.
The values for the ahbX_wrcnt and ahbX_rdcnt parameters should be chosen carefully and
should be based on the average length of an INCR transaction expected from the AHB
master. If the values are programmed too low, the AHB port must issue a large number of
small Memory Controller core transactions that may fill up the command queue and reduce
system performance. A full queue may also inhibit higher priority requests from meeting
their latency requirements. On the other hand, if the values for the parameters are
programmed too high, then write transactions may force the AHB port to issue masked
WRITE commands (WRITE commands that do not alter the contents of memory) to the
Memory Controller core to complete the transactions. Similarly, for READ transactions,
programming the length too large will cause extraneous data to be gathered, wasting cycles.
An optimal value for the READ and WRITE length is important.
Note:
114/844
The values in the ahbX_wrcnt and ahbX_rdcnt parameters should never exceed 1024.
Doc ID 018672 Rev 1
RM0082
DDR memory controller (MPMC)
The first command is issued when the AHB request is decoded. Subsequent read
commands are issued when the last word of data has been delivered from the Memory
Controller core to the AHB port.
Subsequent WRITE commands are issued after the last WRITE data word of the last
command has been transferred from the AHB bus to the Memory Controller core.
Narrow SINGLE or INCRx transactions
For INCRx transactions with a bytes-per-beat less than the width of the AHB data bus, the
port gathers data from the AHB master until it collects all the data needed to form a
complete data word, or until the completion of the transaction.
The data is then issued to the Memory Controller core as multiples of the complete data
word. If the start or end of a WRITE transaction is not aligned to the data word boundary, the
appropriate bytes are masked off when the data is sent to the Memory Controller core. This
provides a significant optimization in the port, preventing the Memory Controller core's Write
Data Queue from filling with a large number of small data chunks. Performance is also
improved significantly by allowing the Memory Controller core to write a complete word of
data in a single burst instead of small sections of the word in several bursts. The reverse
operation is done for INCRx READ transactions. The AHB port issues a READ of the
complete word and then divides the READ data into smaller components depending on the
size specified with the READ request. The alignment of data bytes within the AHB bus for
transaction with a size less than the bus data width depends on the address of the written or
read bytes. The AHB master is responsible for aligning the WRITE data bytes in the
appropriate byte lanes of the AHB bus for these transactions. Similarly, the AHB master
should mask out any data that is not in the appropriate byte lanes for the READ transaction
as don't-care bytes.
Narrow WRAPx or INCR transactions
This optimization is NOT performed for WRAPx transactions with a bytes-per-beat less than
width or INCR transactions of unspecified lengths. Each beat of these kinds of transactions
is issued to the Memory Controller core as a separate transaction, thereby occupying a
separate queue entry. Therefore, these transactions are inefficient and should only be used
if necessary.
Data Alignment for Narrow transactions
Examples of the alignment of READ/WRITE data for a 64 bit wide AHB bus with BYTE,
HALFWORD and WORD transactions at different addresses is shown in Table 56 and
Table 57.
Table 56.
READ/WRITE data alignment - Little Endian
Transaction type
Address
Data alignment - little endian
BYTE
0x0
0x--------------Aa
BYTE
0x1
0x------------Aa--
BYTE
0x2
0x----------Aa----
BYTE
0x3
0x--------Aa------
BYTE
0x4
0x------Aa--------
BYTE
0x5
0x----Aa----------
Doc ID 018672 Rev 1
115/844
DDR memory controller (MPMC)
Table 56.
RM0082
READ/WRITE data alignment - Little Endian (continued)
Transaction type
Address
Data alignment - little endian
BYTE
0x6
0x--Aa------------
BYTE
0x7
0xAa--------------
HALF WORD
0x0
0x------------BbAa
HALF WORD
0x2
0x--------BbAa----
HALF WORD
0x4
0x----BbAa--------
HALF WORD
0x6
0xBbAa------------
WORD
0x0
0x--------DdCcBbAa
WORD
0x4
0xDdCcBbAa--------
Table 57.
READ/WRITE data alignment - Big Endian
Transaction type
Address
Data alignment - big endian
BYTE
0x0
0xAa--------------
BYTE
0x1
0x--Aa------------
BYTE
0x2
0x----Aa----------
BYTE
0x3
0x------Aa--------
BYTE
0x4
0x--------Aa------
BYTE
0x5
0x----------Aa----
BYTE
0x6
0x------------Aa--
BYTE
0x7
0x--------------Aa
HALF WORD
0x0
0xAaBb------------
HALF WORD
0x2
0x----AaBb--------
HALF WORD
0x4
0x--------AaBb----
HALF WORD
0x6
0x------------AaBb
WORD
0x0
0xAaBbCcDd--------
WORD
0x4
0x--------AaBbCcDd
AHB-memory controller transaction mapping equations
For AHB ports, a WORD is defined as 32 bits (4 bytes) and is the maximum size supported
for a 32 bit AHB port. Table 58 shows examples of the mapping of various AHB transaction
bursts and sizes to the corresponding Memory Controller core transaction lengths for a 32
bit wide AHB port interface.
116/844
Doc ID 018672 Rev 1
RM0082
DDR memory controller (MPMC)
Table 58.
AHB-Memory controller translation example
AHBx transaction
Burst size
Memory controller transaction
Bytes per beat
Address
Length
Byte, half-word or
word
AHBx Address
1 x (AHBx HSIZE)
INCR4
Byte, half-word or
word
AHBx Address
2 x (AHBx HSIZE)
AHBx
Address
INCR8
Byte, half-word or
word
AHBx Address
8 x (AHBx HSIZE)
AHBx
Address
INCR16
Byte, half-word or
word
AHBx Address
16 x (AHBx HSIZE)
Address
AHBx
HBURST
(AHBx HSIZE)
AHBx
Address
SINGLE
AHBx
Address
WRAP4
Byte, half-word or
(offset n= 0-3) word
Transaction #1:
Transaction#1:
(4 - n) x (AHBx
AHBx Address
HSIZE)
Transaction #2:
Transaction #2:
Wrapped AHBx Address
n x (AHBx HSIZE)
AHBx
Address
WRAP8
Byte, half-word or
(offset n= 0-7) word
Transaction #1:
Transaction#1:
(8 - n) x (AHBx
AHBx Address
HSIZE)
Transaction #2:
Transaction #2:
Wrapped AHBx Address
n x (AHBx HSIZE)
AHBx
Address
WRAP16
(offset n= 015)
Byte, half-word or
word
Transaction #1:
Transaction#1:
(16 - n) x (AHBx
AHBx Address
HSIZE)
Transaction #2:
Transaction #2:
Wrapped AHBx Address
n x (AHBx HSIZE)
AHBx
Address
INCR
(for each
beat)
Byte or half-word
AHBx Address
1 x (AHBx HSIZE)
Word
Transaction 1:
AHBx HADDR
Transaction 2:
AHBx HADDR+blk size
Transaction 3:
2 x (AHBx HADDR+blk
size)(1)
(AHBx read_cnt)
or
(AHBx write_cnt)(2)
AHBx
Address
AHBx
Address
INCR
1. blk size is the value in ahbX_rdnct or abhX_wrcnt.
2. Programmable value
Early burst termination
Unlike the AHB bus protocol, the Memory Controller core bus protocol does not allow for
early burst termination. As a result, the Memory Controller core requires the master to
complete the whole READ/WRITE transaction of the length specified to the Memory
Doc ID 018672 Rev 1
117/844
DDR memory controller (MPMC)
RM0082
Controller core. The length is a defined quantity that is specified at the beginning of the
transaction. For WRITE transactions, the AHB port forwards the data from the AHBx
HWDATA signals provided by the AHB master to the Memory Controller core. If the WRITE
transaction is early burst-terminated, the port will continue the data stream, but issue
masked WRITE data for the duration of the transaction instead. This allows the whole
transaction to be completed without corrupting data in memory.
For READ transactions, the AHB port returns the expected number of bytes of data to the
AHB master. If a READ transaction is early burst-terminated, the Memory Controller
continues to send the READ data from the Memory Controller core, but the data is not
forwarded back to the AHB master.
Errors
●
Error types
When an illegal operational condition is detected on a new AHB transaction entering the
port (i.e. during a NONSEQ burst), the port responds with an ERROR. The ERROR is a twocycle response as dictated by the AHB protocol. In the first cycle, the ahbX_HREADY signal
is low and in the second cycle, the ahbX_HREADY signal is high. The illegal conditions
which generate this error are:
1.
Transactions with a bytes-per-beat greater than the width of the AHB bus.
2.
The transaction address is not aligned to the size of the transaction. This is a
requirement of the AHB protocol.
●
Error handling
Once a port error is detected in the Memory Controller core, the following actions occur:
1.
The internal interrupt signal controller_int is asserted.
2.
A bit in the status parameter int_status will be set to 1'b1 to indicate the type of error.
The interrupt is cleared by writing to the interrupt acknowledge parameter int_ack. Setting
1'b1 a bit in the int_ack parameter will trigger the same bit in the int_status parameter to be
cleared to 1'b0. Please refer to Section 10.13 for more information on the interrupt
parameters.
10.4.2
Arbiter
From the port interface blocks, commands are presented to the Arbiter, which is responsible
for arbitrating between the port requests and sending a single command to the Memory
Controller core.
10.4.3
Write data queue
The WRITE data queue is a WRITE data storage array for transactions. The queue consists
of multiple buffers holding WRITE data for the write requests of a particular port. Write data
is stored in these buffers for commands in the command queue until the command is
processed in the placement logic and needed by the DRAM command arbitration logic. The
buffers can accept data until space is no longer available. The buffers are defined to hold 16
entries.
The size of the WRITE data buffers and the burst length programmed into the memory
devices affect the overall performance of a single port during the WRITE operation. Each
buffer must have a depth of at least twice the number of data words for a memory burst to
ensure that the Memory Controller can continuously burst WRITE data for a port. The buffer
118/844
Doc ID 018672 Rev 1
RM0082
DDR memory controller (MPMC)
should also be so large to hold enough words to consume data for a single write transaction
related to the bus. The data may actually be written into the buffers from the bus at a later
time, depending on the priority of the request and the number of transactions in the
Command Queue.
10.4.4
DRAM command processing
The DRAM command processing logic is used to process the commands in the Command
Queue.
The logic organizes the commands to the memory devices in such a way that data
throughput is maximized. Bank opening and closing cycles are used for data transfers.
The logic uses a variety of factors to determine when to issue bank open and close
commands. The logic reviews the entire Command Queue to look-ahead which banks are to
be accessed in the future. The timing is then set to meet the trc and tras_min timing
parameters of the memory devices, values which were programmed into the Memory
Controller on initialization. This flexibility allows the Memory Controller to be tuned to extract
the maximum performance out of memory devices. The parameters that relate to DRAM
device protocol are listed in Chapter “Register Interface”.
10.4.5
Latency
By using the placement logic of the command queue in the Memory Controller core, a new
request by any port can be immediately placed at the top of the command queue or can
interrupt an ongoing request. This scheme allows a high priority request to be processed in
the shortest possible time.
However, since there are many factors that determine the placement into the command
queue, there are also many factors that affect the actual latency of the command. These
factors include:
The coherency status of the transactions already in the command queue: If there is a data
coherency conflict with a transaction already in the command queue, the new transaction
will be placed after the transaction that produced the conflict. The position of the conflicting
transaction determines the latency of the high priority READ or WRITE command.
●
The priority status of the transactions already in the command queue: If the new
command has a higher priority than those already in the command queue, the new
request will be serviced ahead of the lower priority command. As a result, the latency of
the new command will be lower than the latency of the older command.
●
The READ, WRITE, and bank information of the transactions already in the command
queue: In general, READs will be placed ahead of WRITEs when both are of the same
priority level. READ commands are grouped with other READ commands of similar
priorities and WRITE commands are grouped with other WRITE commands of similar
priorities. Among these groupings, transactions with similar bank and different row
destinations are separated as much as possible.
If every placement conditions are met, a new command would be placed at the top of the
command queue. However, if the new command is of a higher priority than the transaction
executing, the current command will be interrupted and the new command will be processed
first. The interruption will occur at a natural burst boundary of the DRAMs. The interrupted
transaction will be placed at the top of the placement queue and it will be recovered after the
new request is completed. The page status of the new transaction determines when the
current transaction is interrupted.
Doc ID 018672 Rev 1
119/844
DDR memory controller (MPMC)
RM0082
If the page for the new transaction is already open, the current transaction will be interrupted
at the next natural burst boundary of the DRAM device. If the page is not currently open
instead, the new request will be placed at the top of the command queue while its page is
prepared.
There are a fixed number of latency cycles in the memory controller, based on the pipeline
through the memory controller logic. These steps are:
●
Command passing through the port interface. (fixed)
●
Arbitration through the Arbiter. (fixed)
●
Placement into the Command Queue. (fixed)
●
Memory Command Generation. (variable)
●
Sending of control signals from the core logic to flip-flops near the I/O drivers. (fixed)
●
Flight time to the DRAM device. (variable)
●
Flight time from the DRAM device. (variable)
●
For READs, synchronization of READ data from the data strobe domain. (fixed)
●
For READs, data pass through the port interface. (fixed)
For asynchronous AHB interfaces, additional 4-5 cycles are included for the round-trip
transaction to synchronize to the Database core clock. Some typical scenarios for a MultiPort AHB interface and their effects on latency are:
●
Read latency with a page hit and empty queue.
●
(9) + Cas Latency
●
Read latency with a page miss to a closed page and an empty queue.
●
Trcd + Cas latency + (9)
●
Read latency with a page miss to an open page and an empty queue.
●
Trp+Trcd+Cas latency+9
●
Read latency with a page hit and a currently executing transaction.
●
TBurst end+Cas Latency+9
●
Read latency with a page miss to a closed bank and a currently executing transaction.
The page open command will be executed while the current burst is completing if
possible.
●
MAX(Trcd, TBurst end)+ Cas Latency + 9
●
Read latency with a page miss to an open page and an empty queue. The page close
command will be executed while the current burst is completing if possible.
●
MAX(Trp+Trcd,TBurst end)+Cas latency+9
TBurst end equals the time to complete the current burst in progress. The maximum value
here is 3 for a READ command and 3 + twr for a WRITE command if the burst count is
configured to 8 for DDR DRAM devices. The minimum value is 0.
10.5
Multi-port arbiter
The Arbiter manages arbitrating requests from the ports and sending requests to the
Memory Controller core. Each transaction received by the Arbiter logic has an associated
priority, which works with each port's arbitration logic to determine how ports issue requests
to the Memory Controller core. The Memory Controller supports the Weighted Round-Robin
arbitration scheme.
120/844
Doc ID 018672 Rev 1
RM0082
DDR memory controller (MPMC)
The Arbiter logic routes READ data from the Memory Controller core to the appropriate port.
The requesting port is assumed to be able to receive the data. WRITE data from each port
is connected directly to its own WRITE data interface inside the Memory Controller core,
allowing the ports to independently pass them to the Memory Controller core buffers.
10.5.1
Arbitration overview
The weighted round-robin arbitration scheme is a three-step arbitration system. All
commands are routed into priority groups based on the priority of the requests. Inside each
priority group, requests are processed according to the “weight” (relative priority) of each
port. Finally, each priority group sends a single command to the priority select module,
which passes the highest priority command on to the Memory Controller core.
This arbitration scheme also supports two additional features. First, for situations where the
priority (port and relative) for multiple commands are identical, a port ordering system
whereby the user may adjust the order in which the ports are considered is provided.
Beside, for situations where two ports may be linked, a mechanism allowing the pair of ports
to share arbitration bandwidth for a better bandwidth efficiency, is also supplied.
Weighted round-robin arbitration is a complex arbitration scheme. To understand the
operation, each concept must be first understood individually. This will be matter of the
following Sections.
10.5.2
Understanding round-robin operation
Round-robin operation is the simplest form of arbitration and is the best one for systems not
requiring requests to be treated preferentially to maintain bandwidth or minimize latency.
This scheme uses a counter that rotates through the port numbers, incrementing every time
a port request is granted.
If the port that the counter is checking has an active request and the Memory Controller core
command queue is not full, the request will be sent to the Memory Controller core.
If there is not an active request for that port, the port itself will be skipped and the next port
will be checked.
In any case, the counter is incremented one-by-one as any request has been processed,
regardless of which port's request was arbitrated.
Round-robin arbitration guarantees that each port's requests can be successfully arbitrated
into the Memory Controller core every N cycles, where N is the number of ports in the
component itself.
No port will ever be locked out, and any port can have its requests processed on every cycle
as long as all other ports are idle and the command queue is not full.
An example of the round-robin scheme is shown in Table 59.
Cycles 0, 2 and 6 show the system behaviour when the command queue is full. Cycle 8
shows the system behaviour when the port addressed by the arbitration counter does not
have an active request.
All other cycles show normal behaviour.
Doc ID 018672 Rev 1
121/844
DDR memory controller (MPMC)
Table 59.
10.5.3
RM0082
Round-Robin operation example
Port addressed Port requesting
Cycle by an arbitration
P0
P1
P2
counter
P3
0
0
Y
Y
Y
Y
Yes
None
0
1
0
Y
Y
Y
Y
No
P0
1
2
1
Y
Y
Y
Yes
None
1
3
1
Y
Y
Y
Y
No
P1
2
4
2
Y
Y
Y
No
P2
3
5
3
Y
Y
No
P3
0
6
0
Y
Y
Yes
None
0
7
0
Y
Y
No
P0
1
8
1
Y
No
P2
2
9
2
Y
Y
No
P2
3
10
3
Y
No
P3
0
Y
Command Winner of Value of counter
queue full? arbitration at the next cycle
Understanding port priority
For AHB ports, the priority is associated with a port and each port has separate priority
parameter for READ and WRITE operations. These values are stored into the
programmable parameters ahbX_r_priority and ahbX_w_priority (where X is the port
number) at startup. Internally, the ports are organized into priority groups based on their
priority setting.
The priority value is also used by the placement logic inside the Memory Controller core
when filling the command queue, with “0” meaning highest priority and “7” as lowest priority.
Even if the user is allowed to set a “0” priority level, it would be better to avoid this specific
value so the placement queue can reach this level by aging.
10.5.4
Understanding relative priority
Inside each priority group, the relative priority is used to set arbitration. The Memory
Controller contains 8 identical priority groups with control logic selecting among the
requests from all ports at that given priority level. The relative priority parameters
ahbX_priorityY_relative_priority (where X being the port number and Y the priority group)
“weight” the ports for each level and determine how the priority group will be arbitrated.
Figure 10 shows this type of arbitration system.
122/844
Doc ID 018672 Rev 1
RM0082
DDR memory controller (MPMC)
Figure 10. Weighted round-robin priority group structure
Ports
0-X
Priority Sorting
Priority 1
Commands
Priority 2
Commands
Priority Z
Commands
Priority Group 1
ahb0_priority1_relative_priority
…
ahbX_priority1_relative_priority
Priority Group 2
ahb0_priority2_relative_priority
…
ahbX_priority2_relative_priority
Command Queue of the Databahn Core
Commands
Priority Select Module
Priority 0
Priority Group 0
ahb0_priority0_relative_priority
ahb1_priority0_relative_priority
ahb2_priority0_relative_priority
…
abhX_priority0_relative_priority
Priority Group Z
ahb0_priorityZ_relative_priority
…
ahbX_priorityZ_relative_priority
Programmable Register Settings
Using relative priority concept, the arbitration is skewed in favor of certain ports following
user setting.
Note:
The relative priority parameters have a minimum acceptable value of 1 to prevent port
lockout: A 0 value triggers an error condition.
If the relative priorities are all programmed to the same value within any priority group, the
arbitration will mimic a version of simple round-robin scheme within that specific priority
group. Instead of incrementing as any request is processed, the simple round-robin counter
will only increment to the next port after the ahbX_priorityY_relative_priority number of
requests are processed.
To each port X owning priority level Y, it will be allocated resources corresponding to the
ratio of that port's relative priority (ahbX_priorityY_relative_priority) to the sum of all
requesting port's relative priority values. If a particular port is not requesting, it will be not
included in the sum calculation, i.e. the arbitration will be proportionately split among the
requesting ports.
For instance, let us consider a system with 4 ports where all requests have priority 0. This
system is described in Table 60.
Doc ID 018672 Rev 1
123/844
DDR memory controller (MPMC)
Table 60.
RM0082
Relative priority example
Parameter
System A
ahb0_priority0_relative_priority
1
ahb1_priority0_relative_priority
2
ahb2_priority0_relative_priority
3
ahb3_priority0_relative_priority
4
For this system, port 0 will be processed 1/(1+2+3+4) = 1/10 of the time and Port 3 will be
processed 4/ (1+2+3+4) = 4/10 of the time. However, if Port 2 is not actively requesting, then
port 0 will be processed 1/(1+2+4) = 1/7 of the time and port 3 will be processed 4/(1+2+4)
= 4/7 of the time.
In order to warrant that relative priorities are maintained, there is a weight counter for each
port within each priority group. These counters track the number of transactions accepted
for that port in that priority group. When any counter value reaches the programmed relative
port priority, the scan order for that priority group will be internally modified. The port
matching its relative priority will be dynamically positioned to the bottom of the scan order
and its counter reset, allowing other ports to get a preferential position.
For ports that are not expected to issue requests at a given priority level, the associated
relative priority parameter should be programmed to 0x1. This allows to minimum allocation
avoiding the risk of lock out in case a command appears.
10.5.5
Understanding port ordering
With simple round-robin arbitration, the ports are scanned following their port number in
incrementing order inside the system. Assuming that the command queue is not full, the
port referenced by the counter is examined for valid incoming transactions. If there is an
active request, it will be accepted. Otherwise, the next port in the scan order will be checked.
For Memory Controller performing weighted round-robin arbitration, the user can sort the
order in which the ports are scanned. This is a useful feature either requests from some
ports are more critical or specific order could reduce contention among ports.
The three bit ahbX_port_ordering parameters are used to set this new scan order. A value
of 3'b000 sets the highest listing in the scan order as a value of 3'b111 is the lowest as well.
If the 5 ahbX_port_ordering parameters are set with unique values, the scan order will be
modified to proceed sequentially following this new order.
If any of the port ordering parameters have the same value, those ports will still be equal in
the arbitration test. In this case, the port number will select between these ports, with the
lower-numbered port automatically being selected first.
For instance, let us consider a system with 8 ports and two port orders as shown in
Table 61.
For System B, the port ordering parameters contain different values, so the resulting order is
entirely based on the values of the parameters.
For System C, three ports have the same value set as port order. For these three ports, the
port number settles the order. Remaining ports follow the port ordering parameters.
124/844
Doc ID 018672 Rev 1
RM0082
DDR memory controller (MPMC)
Table 61.
Port ordering example
Parameter
System B
System C
ahb0_port_ordering
3
3
ahb1_port_ordering
4
0
ahb2_port_ordering
5
5
ahb3_port_ordering
6
6
ahb4_port_ordering
7
7
ahb5_port_ordering
0
1
ahb6_port_ordering
2
0
ahb7_port_ordering
1
0
Port Scan Order
P5-P7-P6-P0-P1-P2-P3-P4
P1-P6-P7-P5-P0-P2-P3-P4
If every port ordering parameters are set to the same value, the scan order will default to the
numbered port order.
10.5.6
Weighted round-robin arbitration summary
The Memory Controller weighted round-robin arbitration system merges the concepts of
round-robin operation, priority, relative priority and port ordering. The incoming commands
are separated into priority groups based on the priority of the associated port for that type of
command. Inside each priority group, the relative priority values are examined to settle the
arbitration winner. If relative priority values are the same and no individual command can be
selected, the scan order is used to select among the requests.
Finally the highest priority command incoming from the highest relative priority port, having
the highest location in the scan order, will be selected and sent to the Memory Controller
core.
For instance, let us consider the system described in Table 62. The counters refer to the
ones inside each port priority group to guarantee that relative priorities are maintained. To
simplify, on assumes the command queue never be full and commands are only received at
priority level 0.
Table 62.
System D specifications
Parameter
Port 0
Port 1
Port 2
Port 3
ahbX_priority0_relative_priority
4
3
2
1
ahbX_port_ordering
0
1
2
3
The behaviour is shown inTable 63. The highest requesting port in the scan order always
wins arbitration and the scan order is dynamically modified whenever any port counter
reaches its allocated relative priority value.
Note:
If the command queue was considered, cycles where the command queue was full would
not have any arbitration winner and therefore the counter values and scan order would not
change on that cycle.
Doc ID 018672 Rev 1
125/844
DDR memory controller (MPMC)
Table 63.
RM0082
System D operation
Ports requesting
Cycle
P0
P1
P2
P3
Arbitration
winner
Next counter
Next scan order
P0
P1
P2
P3
P0-P1-P2-P3
0
Y
Y
Y
P0
1
0
0
0
P0-P1-P2-P3
1
Y
Y
Y
P0
2
0
0
0
P0-P1-P2-P3
2
Y
Y
Y
Y
P0
3
0
0
0
P0-P1-P2-P3
3
Y
Y
Y
Y
P0
4
0
0
0
P1-P2-P3-P0
4
Y
Y
Y
Y
P1
0
1
0
0
P1-P2-P3-P0
5
Y
Y
Y
Y
P1
0
2
0
0
P1-P2-P3-P0
6
Y
Y
Y
Y
P1
0
3
0
0
P2-P3-P0-P1
7
Y
Y
Y
P2
0
0
1
0
P2-P3-P0-P1
8
Y
Y
Y
P2
0
0
2
0
P3-P0-P1-P2
9
Y
Y
P3
0
0
0
1
P0-P1-P2-P3
10
Y
Y
Y
P0
1
0
0
0
P0-P1-P2-P3
11
Y
Y
P2
1
0
1
0
P0-P1-P2-P3
12
Y
Y
P2
1
0
2
0
P0-P1-P3-P2
If the same system also contains two ports that only can request at priority level 1, the
system behavior will be slightly altered. Adding these 2 ports leads to the second priority
group structure increasing the arbitration depth. Table 64 describes this system. The text in
bold-italic (grey background) highlights the priority level changes for P4 and P5.
Table 64.
System E specifications
Parameter
Port 0
Port 1
Port 2
Port 3
Port 4
Port 5
ahbX_priority0_relative_priority
4
3
2
1
1
1
ahbX_priority1_relative_priority
1
1
1
1
3
2
ahbX_port_ordering
0
1
2
3
4
5
To simplify, the command queue is again considered to never be full and it is assumed that
commands from ports 0, 1, 2 and 3 are only received at priority level 0. The behavior is
shown in Table 65.
Note:
126/844
If any priority 0 port (P0, P1, P2, P3) is requesting, the system will behave as one only
priority group is acting as shown in Table 63. Ports 4 and 5 can only win arbitration when no
higher-priority commands exist.
Doc ID 018672 Rev 1
RM0082
DDR memory controller (MPMC)
Table 65.
System E operation
Port Requesting
Cycle
P0 P1 P2 P3 P4 P5
Arbitration
Winner
Next Counter
Next Scan Order
P0 P1 P2 P3 P4 P5
Priority 0: P0-P1-P2-P3
Priority 1: P4-P5
0
1
Y
2
3
Y
Y
Y
P2
0
0
1
0
0
0
P0-P1-P2-P3-P4-P5
Y
Y
P0
1
0
1
0
0
0
P0-P1-P2-P3-P4-P5
Y
Y
P2
1
0
2
0
0
0
P0-P1-P3-P2-P4-P5
Y
Y
Y
P0
2
0
0
0
0
0
P0-P1-P3-P2-P4-P5
Y
Y
Y
P2
2
0
1
0
0
0
P0-P1-P3-P2-P4-P5
Y
Y
P4
2
0
1
0
1
0
P0-P1-P3-P2-P4-P5
Y
Y
P1
2
1
1
0
1
0
P0-P1-P3-P2-P4-P5
7
Y
Y
P4
2
1
1
0
2
0
P0-P1-P3-P2-P4-P5
8
Y
Y
P4
2
1
1
0
3
0
P0-P1-P3-P2-P5-P4
9
Y
Y
P5
2
1
1
0
0
1
P0-P1-P3-P2-P5-P4
10
Y
P4
2
0
1
0
1
1
P0-P1-P3-P2-P5-P4
4
5
6
10.5.7
Y
Priority relaxing
With reference to Table 65, it is evident that ports at lower priority levels will not win
arbitration in weighted round-robin arbitration unless there are no higher priority requests.
This could mean that, in a situation where high priority requests are being received
continuously, lower priority requests could be locked out indefinitely. To avoid this scenario
and control the arbitration latency for lower-priority ports, it is possible to disable priority
groups temporarily. This is known as priority relaxing, and it is a time-controlled function.
Each higher priority group will be temporarily disabled when the pre-set counter value for the
lower priority group has been reached and a request is waiting. The ahbX_priority_relax
parameters set the counter value for port X at which the priority relax condition will be
triggered.
The timing counters inside each port are controlled by the
weighted_round_robin_latency_control parameter. When the latency control bit is set to
1'b1, the timing counters are free-running. Any timing counter may hit its
ahbX_priority_relax value at any point. Whenever this happens, higher-priority groups are
disabled to allow a waiting request for this port to be processed. This brings a random
latency for each port, but the maximum latency is fixed at the ahbX_priority_relax value.
If the current port does not have any commands waiting when the timing counter hits the
relax value, the counter will be reset and the Arbiter will works normally.
When the weighted_round_robin_latency_control parameter is cleared to 1'b0, the timing
counters only count while that port has a waiting request that is not being processed. In this
case, when the port's ahbX_priority_relax parameter value is reached, all priority groups at
priority levels higher than the waiting request are disabled. This port's command is granted
arbitration and is moved through to the Memory Controller core. Since the priority relax
parameters and counters are associated with individual ports, it is possible that multiple
Doc ID 018672 Rev 1
127/844
DDR memory controller (MPMC)
RM0082
priority relax counters could reach their specified value simultaneously. In this case, the
lower priority command will be arbitrated first and the higher priority command afterward.
This situation could modify the arbitration latency slightly, causing it to be longer than the
expected value in the priority relax parameter.
Consider the System F as described in Table 66. The same conditions apply as for the
previous example. The command queue is considered to never be full, commands from
ports 0, 1, 2 and 3 are only received at priority level 0, and commands from ports 4 and 5
are only received at priority 1.
Table 66.
System F specifications
Parameter
Port 0
Port 1
Port 2
Port 3
Port 4
Port 5
ahbX_priority0_relative_priority
4
3
2
1
1
1
ahbX_priority1_relative_priority
1
1
1
1
2
1
ahbX_port_ordering
0
1
2
3
5
4
Table 67 shows the system behavior. The exact settings of the latency control and priority
relax parameters are not displayed. Relaxed Ports column indicates instead which ports, if
any, have hit their priority relax values. The following cycles are important to observe:
●
Cycles 1 and 7: A port relaxes while a higher priority request and a higher scan order
request are both present. The relaxed port still wins arbitration.
●
Cycle 4: Two ports of the same priority relax. The higher scan order request wins
arbitration.
●
Cycle 5: Two ports of different priorities relax. The lower priority port that relaxed wins
arbitration. The higher priority port that relaxed will maintain its relax condition, and win
arbitration in the next cycle.
Table 67.
System F operation with priority relaxing
Ports Requesting
Cycle
P
0
P
1
P
2
P
3
P
4
P
5
Next Counter
Relaxed Arbitration
P P P P P
Ports
Winner
0 1 2 3 4
P
5
Next Scan Order
Priority 0: P0-P1-P2P3
Priority 1: P5-P4
0
0
1
0
0
0
P0-P1-P2-P3
P5-P4
P5
0
0
1
0
0
1
P0-P1-P2-P3
P5-P4
Y
P2
0
0
2
0
0
0
P0-P1-P3-P2
P4-P5
Y
Y
P1
0
1
0
0
0
0
P0-P1-P3-P2
P4-P5
Y
Y
P4
0
1
0
0
1
0
P0-P1-P3-P2
P4-P5
Y
Y
Y
1
Y
Y
Y
2
Y
Y
3
4
128/844
P2
0
Y
Y
P5
P4, P5
Doc ID 018672 Rev 1
RM0082
DDR memory controller (MPMC)
Table 67.
System F operation with priority relaxing (continued)
Ports Requesting
Cycle
P
0
P
1
P
2
P
3
P
4
P
5
Next Counter
Relaxed Arbitration
P P P P P
Ports
Winner
0 1 2 3 4
Y
P0, P5
P5
0
1
0
0
1
1
P0-P1-P3-P2
P4-P5
P0
P0
1
1
0
0
1
0
P0-P1-P3-P2
P4-P5
P4
P4
1
1
0
0
2
0
P0-P1-P3-P2
P5-P4
Y
P0
2
1
0
0
0
0
P0-P1-P3-P2
P5-P4
P1
2
2
0
0
0
0
P0-P1-P3-P2
P5-P4
P2
2
2
1
0
0
0
P0-P1-P3-P2
P5-P4
5
Y
Y
6
Y
Y
7
Y
Y
8
Y
Y
Y
Y
9
Y
Y
Y
Y
10
Y
Y
Y
Y
P2
P
5
Next Scan Order
Priority relaxing allows low priority commands to be able to move through the Arbiter to the
Memory Controller core. This will ensure that the system can meet maximum latency
requirements.
10.5.8
Port pairing
The Memory Controller Arbiter embeds a feature which allows adjacent ports to be grouped
together and considered jointly for arbitration. The weighted_round_robin_weight_sharing
parameter controls this function, with one bit per pair of ports in the Memory Controller. Bit 0
handles ports 0 and 1, Bit 1 handles ports 2 and 3 and so on. Where Memory Controller
interfaces to an odd number of ports, the highest numbered port is excluded from the port
pairing system.
Since the ports are grouped together, their relative priorities are not considered separately.
Referring to Section 10.5.4, the general formula for port priority allocation is the ratio of that
port's relative priority (ahbX_priorityY_relative_priority) to the sum of all requesting port's
relative priority values. In this case, the relative priority value of only one of the paired ports
is used for the sum calculation. This means that the bandwidth will be divided differently
among the ports.
Let us consider the port pair at the top of the scan order: if one only port is requesting it will
win arbitration. If the both are requesting, port ordering is used to determine which port wins
arbitration.
When the ports are paired, their scan order can never be altered and they will always remain
together in the scan order. Their counters increment together, so when they reach their
relative priority value, the port pair will dynamically be placed at the bottom of the scan order
for that priority group.
In order for port weight sharing to be used, the relative priority parameters for the port pair
must be programmed to the same value and the port order of the paired ports should be
sequential. If either condition is not followed, an error bit will be set to1'b1.
Doc ID 018672 Rev 1
129/844
DDR memory controller (MPMC)
RM0082
Let us consider System G as described inTable 68. Again, to simplify the command queue is
considered to never be full, commands from ports 0, 1, 2 and 3 are only received at priority
level 0 and commands from ports 4 and 5 are always at priority 1.
However, now ports P0 - P1, and ports P4 - P5 are paired.
Table 68.
System G specifications
Parameter
Port 0
Port 1
Port 2
Port 3
Port 4
Port 5
ahbX_priority0_relative_priority
3
3
2
2
1
1
ahbX_priority0_relative_priority
3
3
2
2
1
1
ahbX_priority0_relative_priority
3
3
2
2
1
1
weighted_round_robin_weight_sharing
1 (Paired)
0 (Not Paired)
1 (Paired)
Table 69 shows the system behavior with port pairing. Since ports P4 - P5 are still at a lower
priority, they will be ignored unless none of the higher priority ports (i.e. P0, P1, P2 or P3)
are requesting. Note the following points:
Note:
●
When either port of a port pair wins arbitration, the counters for both ports of the pair
increment.
●
In Cycle 3, the port pair P0/P1 reaches its allocated relative priority.
The port pair dynamically moves to the bottom of the scan order.
●
In Cycle 8, the port pair P4/P5 reaches its allocated relative priority. However, since
these are the only requests at priority 1, the scan order does not change.
Table 69.
System G operation
Ports Requesting
Cycle
P0 P1 P2 P3 P4 P5
Arbitration
Winner
Next Counter
Next Scan Order
P0 P1 P2 P3 P4 P5
Priority 0: P0-P1-P2-P3
Priority 1: P4-P5
0
Y
Y
1
Y
Y
Y
2
1
1
0
0
0
0
P0-P1-P2-P3
P5-P4
Y
P0
2
2
0
0
0
0
P0-P1-P2-P3
P5-P4
Y
P2
2
2
1
0
0
0
P0-P1-P2-P3
P5-P4
Y
Y
Y
P0
3
3
1
0
0
0
P2-P3-P0-P1
P5-P4
4
Y
Y
Y
P3
0
0
1
1
0
0
P2-P3-P0-P1
P5-P4
5
Y
Y
Y
P3
0
0
1
2
0
0
P2-P0-P1-P3
P5-P4
6
Y
Y
P1
1
1
1
0
0
0
P2-P0-P1-P3
P5-P4
3
130/844
P0
Y
Doc ID 018672 Rev 1
RM0082
DDR memory controller (MPMC)
Table 69.
System G operation (continued)
Ports Requesting
Cycle
P0 P1 P2 P3 P4 P5
7
Y
Next Counter
Next Scan Order
P0 P1 P2 P3 P4 P5
P5
1
1
1
0
1
1
P2-P0-P1-P3
P5-P4
P4
1
1
1
0
2
2
P2-P0-P1-P3
P5-P4
8
Y
9
Y
Y
P5
1
1
1
0
1
1
P2-P0-P1-P3
P5-P4
Y
Y
P2
1
1
2
0
1
1
P0-P1-P3-P2
P5-P4
Y
Y
P1
2
2
0
0
1
1
P0-P1-P3-P2
P5-P4
10
Y
11
10.5.9
Arbitration
Winner
Error conditions
Because of the programming difficulties of the weighted round-robin arbitration scheme, an
error reporting mechanism is included to notify users of illegal programming scenarios.
These error conditions generate a Memory Controller core interrupt and set a bit in the
wrr_param_value_err parameter to 1'b1. The potential error conditions are:
●
Bit 0 = The 5 ahbX_port_ordering parameters do not contain unique values.
●
Bit 1 = Any of the ahbX_priorityY_relative_priority parameters have been set to 10
value. A 0 value leads to unknown behavior. The minimum accepted value is 1.
●
Bit 2 = Any port, whose related bit of the weighted_round_robin_weight_sharing
parameter is set to 1'b1, do not have the same values in its
ahbX_priorityY_relative_priority parameter.
●
Bit 3 = For ports whose related bit of the weighted_round_robin_weight_sharing
parameter is set to 1'b1, the values of the ahbX_port_ordering parameters are not
sequential.
If bits 0, 2 or 3 are set to 1'b1 in the wrr_param_value_err parameter, and any of the ports
are paired in the weighted_round_robin_weight_sharing parameter, all weight sharing data
will be ignored during Memory Controller initialization and the ports will be prioritized by port
number. If port pairing is not being used, but the bit 0 error condition is set to 1'b1, then
ports with a non-unique port ordering are prioritized by port number.
Note:
The user is strongly cautioned against modifying the values of the port ordering or relative
priority parameters during active port usage.
10.5.10
Command queue with placement logic
From the Arbiter, commands are routed to the command queue of the Memory Controller
core. The command queue is fed using a placement algorithm. For more information on this
algorithm, refer to below Chapter “Core Command Queue with Placement Logic”.
Doc ID 018672 Rev 1
131/844
DDR memory controller (MPMC)
10.6
RM0082
Core command queue with placement logic
The Memory Controller core contains a command queue that accepts commands from the
Arbiter. This command queue uses a placement algorithm to determine the order in which
commands will be executed in the Memory Controller core. The placement logic follows
many rules to determine where new commands should be inserted into the queue, relative
to the contents of the command queue at the time.
Placement is determined by considering address collisions, source collisions, data
collisions, command types and priorities. In addition, the placement logic attempts to
maximize efficiency of the Memory Controller core through command grouping and bank
splitting. Once placed into the command queue, the relative order of commands is constant.
Many of the rules used in placement may be individually enabled/disabled. In addition, the
queue may be programmed by the placement_en parameter to disable the placement logic
entirely, resulting in an in-line queue that attends requests in the order they are received. If
the placement_en parameter is cleared to 1'b0, the placement algorithm will be ignored.
10.6.1
Rules of the placement algorithm
The factors affecting command placement together work to identify where a new command
fits into the execution order. They are listed in order of importance.
Address collision/Data coherency violation
The order in which READ and WRITE commands are processed inside Memory Controller
is critical to proper system behavior. While READs and WRITEs to different addresses are
independent and may be re-ordered without affecting system performance, READs and
WRITEs that access the same address are significantly related. If the port requests a READ
after a WRITE to the same address, then repositioning the READ before the WRITE would
return the original data, not the changed data. Similarly, if the READ was requested ahead
of the WRITE but accidentally positioned after the WRITE, the READ would return the new
data, not the original data prior to being overwritten. These are significant data coherency
mistakes.
To avoid address collisions, READs or WRITEs that access the same chip select, bank and
row as a command already in the command queue will be inserted into the command queue
after the original command, even if the new command is of a higher priority.
This factor may be enabled/disabled through the addr_cmp_en parameter and should only
be disabled if the system can guarantee coherency of READs and WRITEs.
Source ID collision
Each port is assigned a specific source ID that identifies the source uniquely. This allows the
Memory Controller to map data from/to the correct source/destination.
Note:
A source ID does contain port identification information which means that the rules for
placement are dependent on the requesting port. There will not be source ID collisions
between ports.
In general, commands of the same type from the same source ID will be placed in the
command queue in order. Therefore, a READ/WRITE command with the same source ID of
a READ/WRITE command being already in the command queue will be processed
afterward.
132/844
Doc ID 018672 Rev 1
RM0082
DDR memory controller (MPMC)
The behavior of commands of different types from the same source ID is dependent on the
user configuration. For Memory Controller, the placement of new READ/WRITE commands
that collide in terms of source ID with existing entries in the command queue will only
depend on other commands of the same type, not on different types. This means that, if
there are no address conflicts, a READ command could be executed ahead of a WRITE
command with the same source ID, as a WRITE command could be executed ahead of a
READ command with the same source ID as well.
This feature is always enabled.
Write buffer collision
Incoming WRITE requests in the command queue are allocated to one of the 8 WRITE
buffers of the Memory Controller core automatically based on availability. New WRITE
commands will be designated to any available buffer. However, back-to-back write requests
from a particular source ID will be allocated to the same WRITE buffer as the previous
command.
Since the Memory Controller core must pull data out of the buffers in the order it was stored,
if a WRITE command is linked to a buffer associated with another command in the queue,
the new command will be placed in the command queue after that command, regardless of
priority.
This feature is always enabled.
Priority
Priorities are used to distinguish important commands from less important commands. Each
command is given a priority based on the command type through the programmable
parameters ahbX_r_priority and ahbX_w_priority (X is the x-th port), where '0' value is the
highest priority and '7' is the lowest.
The placement algorithm will attempt to place higher priority commands ahead lower priority
commands, as long as they have no source ID, WRITE buffer or address collisions.
Higher priority commands will be placed lower in the command queue in case:
●
They access the same address and
●
They are from the same requestor or
●
They use the same buffer used by lower priority commands being in the command
queue already.
This feature is enabled through the priorities parameter.
Bank splitting
Before accesses to two different rows within the same bank could be performed, first active
row must be closed (pre-charged) and the new row must be opened (activated). Therefore,
the both activities require some timing overhead for optimization, the placement queue will
attempt to insert the new command into the command queue such that commands to other
banks may execute during this timing overhead.
Still the placement of the new commands will follow priority, source ID, WRITE buffer and
address collision rules. The placement logic will also attempt to optimize the Memory
Controller core, by inserting a command to the same bank of any existing command in the
command queue, immediately after the original command. This reduces the overall timing
overhead by potentially eliminating one pre-charge/activate cycle. This placement will only
Doc ID 018672 Rev 1
133/844
DDR memory controller (MPMC)
RM0082
be possible if there are no priority, source ID, WRITE buffer or address collisions or conflicts
with other commands in the command queue.
Every bank splitting feature could be enabled through the bank_split_en parameter.
Read/Write grouping
The memory suffers a small timing overhead when switching from READ to WRITE mode.
For efficiency, the placement queue will attempt to place a new read command sequentially
with other read commands in the command queue, or a new WRITE command sequentially
with other WRITE commands in the command queue. Grouping will only be possible if no
priority, source ID, WRITE buffer or address collision rules are violated.
This feature is enabled through the rw_same_en parameter.
10.6.2
Command execution order after placement
Once a command has been placed in the command queue, its order relative to the other
commands in the queue at that time is fixed. Even if this simplifies the algorithm there are
some drawbacks. For this reason, Memory Controller offers two options that affect
commands once they have been placed in the command queue.
High-Priority command swapping
Commands are assigned priority values to ensure that critical commands are executed
before less important commands. Therefore, it is desirable that high-priority commands
cross the Memory Controller core as sooner as possible. The placement algorithm sorts
commands by priority though it can not avoid a such scenario in which a high-priority
command is waiting at the top of the command queue while another command, possibly of a
lower priority, is in process.
The high-priority command swapping feature allows this new high-priority command to be
executed quite sooner. If the user has enabled the swapping function by the swap_en
parameter, the entry at the top of the command queue will be compared with the current
command in progress. If the command queue's top entry is of a higher priority (not the same
priority), and it does not have an address, source ID or WRITE buffer conflict with the
current command being executed, the original command will be interrupted.
If the command has to be interrupted, it will be halted after completing the current burst,
stacked and placed at the top of the queue, while the new command will be executed. As
long as the command queue is not full, new commands may continue to be inserted into the
command queue based on the placement rules, even at the head of the queue ahead of the
interrupted command. The top entry in the command queue will be executed next.
Whenever the interrupted command is resumed, it will start from the point at which it was
interrupted.
Note:
Priority 0 commands could never be interrupted, so the user should set any commands that
should not be interrupted to priority 0.
Command ageing
Since commands can be inserted ahead of existing commands in the command queue, it
could happen a low priority command remains at the bottom of the queue indefinitely. To
avoid such a lockout condition, aging counters have been included in the placement logic
that measure the number of cycles that each command has been waiting. If command aging
is enabled through the active_ageing parameter and an aging counter hits its maximum, the
134/844
Doc ID 018672 Rev 1
RM0082
DDR memory controller (MPMC)
priority of the associated command will be decremented by one (lower priority commands
are executed first). This increases the likelihood that this command will move to the top of
the command queue and be executed.
Note:
This command does not move relative positions in the command queue when it ages; the
new priority will be considered when placing new commands into the command queue.
Aging is controlled by a master aging-rate counter and command aging counters associated
with each command in the command queue. The age_count and command_age_count
parameters hold the initial values for each of these counters, respectively. When the master
counter counts down the age_count value, a signal is sent to the command aging counters
to decrement. When the command aging counters have completely decremented, the
priority of the associated command is decremented by one and the counter is reset.
Therefore, a command does not age by a priority level until the total elapsed cycles has
reached the product of the age_count and command_age_count values. The maximum
number of cycles that any command can wait in the command queue until reaching the top
priority level is the product of the age_count value, the command_age_count value, and the
number of priority levels in the system.
10.7
Low power operation
In many applications, it is highly desirable to minimize power consumption. The Memory
Controller provides various user configurable low power options to manage power savings.
In addition, a partial-array self-refresh option is included for mobile memory devices.
10.7.1
Low power modes
Five low power modes are available in the Memory Controller. The low power modes are
listed from least to most power saving.
Note:
It is not possible to exit one low power mode and enter another low power mode
simultaneously. The user should plan for a minimum delay between exit and entry between
the two low power modes of 15 cycles in which the Memory Controller must remain stable.
1.
Memory Power-Down
The Memory Controller sets the memory devices into power-down which reduces the
overall power consumption of the system. This is the low power modes having the least
effect: The Memory Controller and memory clocks are fully operational, but the CKE
input bit toward the memory devices is de-asserted.
The Memory Controller will continue to monitor memory refresh needs and will
automatically bring the memory out of power-down to perform these refreshes.
Whenever a refresh is required, the CKE bit will be turned enabled. This action drives
memory devices out power-down. Once the refresh has been completed, the memory
devices will be returned to power-down by de-asserting the CKE input bit.
2.
Memory Power-Down with Memory Clock Gating
The Memory Controller sets the memory devices into power-down and gates off the
clock to the memory devices. Refresh operations will be handled as seen above for the
Memory Power-Down mode (Mode 1), but the gating on the memory clock will be now
removed before asserting the CKE pin. After the refresh has been completed, the
memory devices will be returned to power-down with the clock gated. Before the
memory devices are removed from power-down, the clock will be gated on again.
Although this mode is supported in both mobile and non-mobile memory devices, clock
gating while in power-down is only allowed for mobile memory devices. Therefore, the
Doc ID 018672 Rev 1
135/844
DDR memory controller (MPMC)
RM0082
Memory Controller will only attempt to gate the clock if it is configured for mobile device
operation. For non-mobile memory devices in this low power mode, the Memory
Controller will operate identically to the Memory Power-Down mode without the clock
gating (Mode 1).
3.
Memory Self-Refresh
The Memory Controller sets the memory devices into self-refresh. In this mode, the
Memory Controller and memory clocks are fully operational and the CKE input bit to the
memory devices is de-asserted. Since the memory automatically refreshes its
contents, the Memory Controller does not need to send explicit refreshes to the
memory.
4.
Memory Self-Refresh with Memory Clock Gating
The Memory Controller sets the memory devices into self-refresh and gates off the
clock to the memory devices. Before the memory devices are removed from selfrefresh, the clock will be gated on again.
5.
Memory Self-Refresh with Memory and Controller Clock Gating
This is the most effective low power mode of the Memory Controller: The Memory
Controller sets the memory devices self-refreshing and gates off the clock toward them.
In addition, the clock toward the Memory Controller and the programming parameters
will be gated off, except to a small portion of the DLL, which must remain active to
maintain the lock. Before the memory devices are removed from self-refresh, the
Memory Controller and memory clocks will be gated on.
10.7.2
Low power mode control
The Memory Controller may enter and exit the various low power modes in the following
ways:
●
Automatic Entry:
●
When the Memory Controller is idle, 4 different timing counters begin counting the
cycles of inactivity. If any of the counters expires, the Memory Controller enters the low
power mode associated with that counter.
●
Manual Entry:
●
The user may set any low power mode by setting the bit of the lowpower_control
parameter associated with the desired mode. The Memory Controller will enter the
selected low power mode when it is has completed its current burst.
Automatic and Manual entry methods are both controlled by two parameters:
lowpower_control and lowpower_auto_enable. The lowpower_control parameter contains
individual enable/disable bits for each low power mode, and the lowpower_auto_enable
parameter controls whether each mode will be entered automatically or manually.
Automatic entry
Automatic Entry will occur as all the following conditions are matched:
136/844
●
The mode is programmed for automatic entry by setting the relevant bit in the
lowpower_auto_enable parameter to 1'b1.
●
The particular mode is enabled in the lowpower_control parameter.
●
The Memory Controller is idle.
●
The counter associated with this mode expires.
Doc ID 018672 Rev 1
RM0082
DDR memory controller (MPMC)
There are 4 counters to full cover the 5 low power modes. There are separate counters for
each of the three memory self-refresh low power modes (Modes 3, 4 and 5). Memory
Power-Down mode (Mode 1) and Memory Power-Down with Memory Clock Gating mode
(Mode 2) share the same counter.
The counters determine the number of idle cycles before entering into the associated low
power mode. Every counter is re-initialized each time there is a new READ or WRITE
transaction entering or executing in the Memory Controller. This guarantees that the
Memory Controller will not enter any of the low power modes when active.
Each low power mode can be entered through automatic entry, and will be exited
automatically whenever any of the following conditions occur:
Note:
●
A new READ or WRITE transaction appears at the Memory Controller interface.
●
The Memory Controller must refresh the memory when in either of the power-down
modes (Modes 1 or 2). After completing the memory refresh, the Memory Controller reenters power-down.
●
The counter for a deeper low power mode expires. The Memory Controller must exit the
current low power mode in order to enter the deeper low power mode. A minimum of 15
cycles occur between exit from one low power mode before entering into the next low
power mode, even if the counters expire within 15 cycles of each other.
The Memory Controller will not enter a less deep low power mode, regardless of which
counter expires.
Manual “On-Demand” entry
Manual Entry occurs when the 2 following conditions are matched:
●
The mode is programmed for manual entry by clearing the relevant bit in the
lowpower_auto_enable parameter to 1'b0.
●
The particular mode is set to 1'b1 in the lowpower_control parameter.
For manual entry, the lowpower_control parameter triggers the entry into the low power
modes. The Memory Controller does not need to be idle when the low power mode bit is
enabled. When a particular mode that is programmed for manual entry is enabled, the
Memory Controller will complete the current memory burst access, and then, regardless of
the activity inside the Memory Controller or at the memory interface, it will enter the selected
low power mode.
If any new transaction would involve the Memory Controller while it is in any of the low power
modes, the transaction itself will be stacked inside the Memory Controller's command queue
until the queue is completely full.
The way to exit from a manually-entered low power mode is manual too. Clearing the
lowpower_control parameter bits to 1'b0 will trigger the Memory Controller to pull the
memory devices out of powerdown or self-refresh, and command processing will resume.
Note:
In the deepest low power mode (Mode 5), the clock toward the programming registers
module is gated off. However, manual low power mode exit requires the user to clear the
lowpower_control parameter to 1'b0, which is not possible when the clock is off. As a result,
the user should not manually activate the deepest low power mode. If Memory Self-Refresh
with Memory and Controller Clock Gating Mode (Mode 5) was entered manually, the device
would not be able to be brought out of low power mode again.
If a different lowpower_control bit is set to 1'b1 while in one of the low power modes, or on
clearing of the original bit to 1'b0, the Memory Controller will exit the current low power
Doc ID 018672 Rev 1
137/844
DDR memory controller (MPMC)
RM0082
mode. There will be at least a 15 cycle delay before the component being either fully
operational or enters the new low power mode.
Register programming
The low power modes of the Memory Controller are controlled by the lowpower_control and
lowpower_auto_enable parameters. These 5 bit parameters contain each one bit to control
each low power mode. The lowpower_control parameter enables the associated low power
mode, and the lowpower_auto_enable parameter sets the entry method into that mode as
manual or automatic. Table 70 displays the relationship between the 5 bits of the
lowpower_control and lowpower_auto_enable parameters and the various low power
modes. Parameters meaning is discussed in Section 10.14: Summary of memory controller
parameters.
Table 70.
Low power mode parameters
Low Power Mode
Enable
Entry
Memory Power-Down (Mode 1)
lowpower_auto_enable [4]:
lowpower_control [4] =1'b1 1'b0 = Manual
1'b1 = Automatic
Memory Power-Down with
Memory Clock Gating (Mode 2)
lowpower_auto_enable [3]:
lowpower_control [3] =1'b1 1'b0 = Manual
1'b1 = Automatic
Memory Self-Refresh (Mode 3)
lowpower_auto_enable [2]:
lowpower_control [2] =1'b1 1'b0 = Manual
1'b1 = Automatic
Memory Self-Refresh with
Memory Clock Gating (Mode 4)
lowpower_auto_enable [1]:
lowpower_control [1] =1'b1 1'b0 = Manual
1'b1 = Automatic
Memory Self-Refresh with Memory and
Controller Clock Gating (Mode 5)
lowpower_auto_enable [0]:
lowpower_control [0] =1'b1 1'b0 = Manual
1'b1 = Automatic
When a lowpower_control parameter bit is set to 1'b1 by the user, the Memory Controller
checks the lowpower_auto_enable parameter.
138/844
●
If the associated bit in the lowpower_auto_enable parameter is set to 1'b1, the Memory
Controller will watch the associated counter for expiration and then enter that low power
mode.
●
Table 71 shows the correlation between the low power modes and the counters that
control each mode's automatic entry.
●
If the associated bit in the lowpower_auto_enable parameter is cleared to 1'b0, the
Memory Controller will complete its current memory burst access and then enter the
specified low power mode.
Doc ID 018672 Rev 1
RM0082
DDR memory controller (MPMC)
Table 71.
Note:
Low power mode controls
Low Power Mode
Counter
Memory Power-Down (Mode 1)
lowpower_power_down_cnt
Memory Power-Down with Memory Clock Gating (Mode 2)
lowpower_power_down_cnt
Memory Self-Refresh (Mode 3)
lowpower_self_refresh_cnt
Memory Self-Refresh with Memory Clock Gating (Mode 4)
lowpower_external_cnt
Memory Self-Refresh with Memory and Controller Clock Gating
(Mode 5)
lowpower_internal_cnt
The values in lowpower_auto_enable parameter are only relevant when the associated
lowpower_control bit is set to 1'b1.
Multiple bits of the lowpower_control and lowpower_auto_enable parameters can be set to
1'b1 at the same time. When this happens, the Memory Controller always enters the
deepest low power mode of all the modes that are enabled.
If the Memory Controller is already in one low power mode when a deeper low power mode
is automatically or manually requested, first it exits the current low power mode and then
enters the deeper low power mode. A minimum 15 cycle delay occurs before the second
entry occurs.
The timing for automatic entry into any of the low power modes is based on the number of
idle cycles that have elapsed in the Memory Controller. There are 4 counters related to the 5
low power modes to determine when any particular low power mode will be entered if the
automatic entry option is chosen. The counters are also shown in Table 70. Since the two
power-down modes share one counter, wishing the user automatically enter Memory PowerDown mode (Mode 1), the Memory Power-Down with Memory Clock Gating mode (Mode 2)
must not be enabled.
Controller clock gating and Re-locking
When the Memory Controller is in its deepest low power modes, the clock to the Memory
Controller is gated off, except a small portion of the DLL to maintain the current frequency.
Since the voltage and temperature differences of the chip can change and the DLL would
not adjust to these changes, it is possible that the Memory Controller DLL shifts out of range
of the controller clock.
The DLL can respond to slight variations of the frequency very quickly, but it requires a long
time to manage large shifts. Therefore, it is better the Memory Controller to be periodically
awoken from controller clock gating, so it can resynchronize to the controller clock and then
resume controller clock gating.
The interval among synchronizations is user-defined by the lowpower_refresh_hold
parameter. This value directly feeds a counter and sets the number of cycles that the
Memory Controller will wait before attempting to re-lock the DLL.
Note:
This is only relevant when the controller clock is gated (Mode 5).
When this counter expires, the DLL will be un-gated and the DLL will attempt to re-lock. The
clock will be kept un-gated for at least 16 cycles, even if the DLL locks during that time. Once
the DLL has re-locked and the 16 cycles have elapsed, the DLL controller clock will be gated
again and the counter will restart countdown at the value in the lowpower_refresh_hold
parameter.
Doc ID 018672 Rev 1
139/844
DDR memory controller (MPMC)
RM0082
Refresh masking
Regular refresh commands will be issued at the same intervals as the Memory Controller is
operating normally, is idle, or is in any of the low power modes. However, for memory arrays
with multiple chip selects, the Memory Controller can mask refreshes during any of the low
power modes. By setting bits of the lowpower_refresh_enable parameter to 1'b1, autorefreshes will be masked for the associated chip selects.
User should ensure that refreshes are not constantly masked, and that each chip select is
refreshed periodically.
Low power and clock forwarding
The Memory Controller implements a clock forwarding scheme, which eliminates the need
for a de-skew PLL and reduces the overall power consumption of the device. Controllers that
are configured for low power should also be configured for clock forwarding.
Mobile DDR/SDRAM devices
●
Enabling mobile usage
When the device is used inside a mobile device, the parameter en_lowpower_mode
must be set to 1'b1. This enables the Memory Controller to use the initialization
sequence and EMRS addressing suitable for mobile equipments. When the
en_lowpower_mode parameter is cleared to 1'b0, a standard DDR SDRAM or SDRAM
device may be used.
●
Partial array self-refresh
For mobile applications, the Memory Controller is able to support refresh operations to
subsections of the memory array. To simplify this duty, separate parameters are
provided to supply the EMRS data for each chip select. These are the emrs_data_X
parameters, where X represents the chip select.
Having separate control parameters for the EMRS data allows the individual chips to
set their own masked refresh. The write_modereg parameter controls the writing of this
EMRS data into the registers. When write_modereg is set to 1'b1 initially, the EMRS
register of chip select 0 will be written. Each subsequent setting of the write_modereg
parameter to 1'b1 will write the EMRS register of the next chip select (1, 2, then 3).
Note:
The Memory Controller does not check if operations attempt to access addresses outside
the refresh ranges set by the EMRS registers, so any access to these addresses may result
in corrupt or lost data.
10.8
Additional features
10.8.1
Out-of-range address checking
It is possible that the master attempts to write to an invalid address. For this reason, all
incoming addresses are always checked against the addressable physical memory space. If
a transaction is addressed to an out-of-range memory location, bit 0 of the int_status
parameter will be set to 1'b1 to alert the user of this condition. The Memory Controller will
record the address, source ID, length and type of transaction that caused the out-of-range
interrupt in the out_of_range_addr, out_of_range_source_id, out_of_range_length and
out_of_range_type parameters.
140/844
Doc ID 018672 Rev 1
RM0082
DDR memory controller (MPMC)
Reading the out-of-range parameters will trigger the Memory Controller to empty these
parameters and allow them to store out-of-range access information for future errors. The
interrupt should be acknowledged by setting bit 0 of the int_ack parameter to 1'b1, which will
in turn cause bit 0 of the int_status parameter to be cleared to 1'b0.
If a second out-of-range access occurs before the first out-of-range interrupt is
acknowledged, bit 1 of the int_status parameter will be set to 1'b1 to indicate that multiple
out-of-range accesses have occurred. If the out-of-range parameters have been read when
the second out-of-range error occurs, the details for this transaction will be stored in the outof-range parameters. If they have not been read, the details of the second error will be lost.
Even though the address has been identified as erroneous, the Memory Controller will still
process the READ or WRITE transaction. A READ transaction will return random data
which the user must receive to avoid stalling the Memory Controller. A WRITE transaction
will write the associated data to an unknown location in the memory array, potentially overwriting other stored data. The command can not be aborted once accepted into the Memory
Controller.
10.8.2
Mobile devices DQS
For Mobile applications the user must add pull-down resistors on the DRAM boundary to the
DQS and DQS_n pins. These resistors enable the system to open the gate early without
receiving bad data. Both the resistors are very important and the system can not function
accurately without them.
10.8.3
Half datapath option
Memory Controller can also reduce the usable size of the bus between the Memory
Controller itself and memory devices. This feature is very useful when a different memory
part, having a smaller data width, is utilized. To use a memory device with a smaller
datapath, the half datapath option could be enabled setting the programmable reduce
parameter to 1'b1. The memory interface consists of the data signal (DQ) [15:0], data strobe
(DQS) [1:0] and data mask (DM) [1:0]. When the reduce parameter is set to 1'b1, only the
lower half of the memory interface is used. In this setting, the upper half bits of the
dm_disable, dqs_disable and data_disable signals are driven high, causing the upper half of
the data and data strobe buses to be driven low. The upper half of the data mask bus is
driven high.
If the reduce parameter is cleared to 1'b0, the Memory Controller will ignore the half
datapath option and work normally. In this case, the entire memory interface will be used.
Table 72 displays the effect of the Half Datapath option on the memory interface buses.
Table 72.
Memory interface buses with Half Datapath option
Reduce parameter is set (1‘b1)
Reduce parameter is cleared(1‘b0)
Bus size
Relevant bit
Bus size
Relevant bit
Data DQ
[15:00]
[07:00]
[15:00]
[15:00]
Data DQS
[01:00]
[00:00]
[01:00]
[01:00]
Data DM
[01:00]
[00:00]
[01:00]
[01:00]
Signal
Doc ID 018672 Rev 1
141/844
DDR memory controller (MPMC)
10.8.4
RM0082
User-defined registers
Memory Controller contains two user-defined parameters. These register-width size
parameters hold user-defined values that will be available as output signals
param_user_def_reg_X (X is 0 or 1) at the Memory Controller core (stp_memcd) level.
These parameters have no effect on the Memory Controller except that utilizing addresses
in the register map.
Only a single bit of the user-defined registers is used in this configuration. All other bits of
user_def_reg_0 and user_def_reg_1 are available if customer hookup is required.
Bit 0 of user_def_reg_0 controls the READ data retime function. This function provides the
user with a choice in clock synchronization paths in the PHY.
An alternative path has been created allowing the PHY to synchronize the READ data to the
core clock domain and then pass the data to the read FIFO synchronously, i.e. in 1one clock
cycle. This constrains the 1/4 cycle path for clock synchronization within the PHY between
two flip-flops which are easily co-located, however it adds a cycle of latency to the path.
Bit 0 of user_def_reg_0 allows the user to select the desired path. If the bit is cleared to
1'b0, the alternative path is used and synchronization occurs in the PHY, incurring the extra
cycle of latency. If the bit is set to 1'b1, the standard path is used.
10.9
Address mapping
The Memory Controller automatically maps user addresses to the DRAM memory in a
contiguous block. Address map begins at user address 0 and finishes at the highest
available address according to the size and number of DRAM devices present. This
mapping is dependent on how the Memory Controller is configured and how the parameters
in the internal Memory Controller registers are programmed (Section 10.13). The exact
number and values of these parameters depends on the configuration and the type of
memory for which the Memory Controller was designed.
The mapping of the address space to the internal data storage structure of the DRAM
devices is based on the actual size of the DRAM devices available. The size is stored in
user-programmable parameters that must be initialized at power up. Certain DRAM devices
allow for different mapping options to be chosen, while other DRAM devices depend on the
burst length chosen.
10.9.1
DDR SDRAM address mapping options
The address structure of DDR SDRAM devices contains five fields. Each of these fields can
be individually addressed when accessing the DRAM. The address map for this Memory
Controller is ordered as follows:
“Chip Select - Row - Bank - Column - Datapath”
The maximum widths of the fields are based on the configuration settings. The actual widths
of the fields may be smaller if the device address width parameters (addr_pins,
eight_bank_mode and column_size) are programmed differently.
142/844
Doc ID 018672 Rev 1
RM0082
10.9.2
DDR memory controller (MPMC)
Maximum address space
The maximum user address range is determined by the width of the memory datapath, the
number of chip select pins, and the address space of the DRAM device. The maximum
amount of memory can be calculated by the following formula:
Max Memory Bytes = ChipSelects x 2Address x NumBanks x DPWidthBytes
For this Memory Controller, the maximum values for these fields are as follows:
●
Chip Selects = 2
●
Device Address = 15+14 (Row+Column)
●
Number of Banks = 8
●
Datapath Width in Bytes = 2 bytes
As a result, the maximum accessible memory area is 16 GB.
10.9.3
Memory mapping to address space
The maximum allowable address space and mapping into the DRAM devices for the
Memory Controller is shown in Figure 11. This map corresponds to a memory device with
15 row bits and 14 column bits.
Figure 11. Memory map: Maximum
33
33 32
Chip Select
18 17
Row
15
14
Bank
1 0
Column
0
Data Path
The addr_pins and column_size parameters can range from the maximum configured for
the Memory Controller to seven bits smaller than the maximum configured. This allows the
Memory Controller to work with a wide variety of memory device sizes.
The settings for the addr_pins and column_size parameters control how the address map is
used to decode the user address to the DRAM chip selects and row and column addresses.
The eight_bank_mode parameters control the address in DDR2 mode. It is assumed that
the values in these parameters never exceed the maximum values configured.
Using the example shown in Figure 11, if the Memory Controller is wired to devices with 12
row pins and 12 column bits, the maximum accessible memory space would be reduced.
The accessible memory space for this configuration is 512 MB.
The address map for this configuration is shown in Figure 12.
Note:
Address bits 29 through 33 are not used. These bits are ignored when generating the
address to the DRAM devices
Figure 12. Alternate memory map
33
Don’t care
Note:
29 28
28 27
Chip Select
16 15
Row
13 12
Bank
Column
1 0
0
Data Path
The Chip Select, Row, Bank, and Column fields are used to address an entire memory
word, and the Datapath bits are used to address individual bytes within that user word. For
example, for a read starting at byte address 0x2, the Datapath bits must be defined as
3'b010 in order to address this byte directly. READs and WRITEs are memory word-aligned
if all the Datapath bits are 0.
Doc ID 018672 Rev 1
143/844
DDR memory controller (MPMC)
10.10
RM0082
DCC tuning timing
The command and address for the transaction are sent from the memory controller
coincident with the falling edge of the memory controller clock. Since the clock, command,
and address signals will all have roughly the same pad and flight delays to travel to the
memory, the rising edge of the clock at the memory will be centered with the command and
address signals, allowing reliable capture. To ensure proper memory read write sequences
the DDR memory controller contains a delay compensation circuit that, in conjunction with
I/O cell circuitry, can be used to meet the memory target timing requirements. The delay
compensation circuit offers the following features:
1.
Programmable read clock delay specified as a percentage of a clock cycle:
Read transfer path, should also take in account the memory the flight paths. There is a
certain time lag from when the clock is sent from the memory controller to when the data
and DQS signals are received at the memory controller from the memory. Since the DQS
from the memory will be sent coincident with the data, and the data must be captured
reliably, the DQS signal is delayed through the register field dll_dqs_delay_X so that it is
centered in the data valid window (nominally approximately 1/4 cycle).
2.
Programmable write clock and write DQS delays specified as percentages of a
clock cycle:
Write transfer path are control from dqs_out_shift and wr_dqs_shift register parameters
which set the delay for the DQS signal for dll_wr_dqs_slice and for the clk_wr signal,
respectively. These parameters should be programmed such that clk_dqs_out is in phase
with clk and that clk_wr is 1/4 cycle ahead of clk_dqs_out.
3.
Delay compensation circuit re-sync circuitry activated during refresh cycles to
compensate for temperature and voltage drift:
The delay compensation circuitry relies on a master/slave approach. There is a master
delay line which is used to determine how many delay elements constitute a complete cycle.
This count is used, along with the programmable fractional delay settings, to determine the
actual number of delay elements to program into the slave delay lines. The master and slave
delay lines are identical. This approach allows the memory controller to observe a clock and
then delay other signals a fixed percentage of that clock. The DCC logic does not actively
generate clock signals.
The delay parameters are listed in Table 73. The total delay can be determined based on
the following equation, where param is one of the parameters in the table:
delay = #delays in one cycle × (param[6:0]) /128
Table 73.
Delay parameters
Operation
Parameter
Clock
wr_dqs_shift
Read
dll_dqs_delay_X
Write
dqs_out_shift
1.
Separate delay chains for each DQS signal from the DRAM devices.
2.
Support for multiple DQ:DQS ratios
The DQS bus is a bidirectional bus that is driven by the memory controller on writes and the
memory on reads. When neither device is driving the bus, DQS will remain in a high-
144/844
Doc ID 018672 Rev 1
RM0082
DDR memory controller (MPMC)
impedance state. However, DQS is only relevant to the memory controller during reads in
order to capture valid data. For this reason, the DQS signal from memory must be gated so
that it is ignored at all other times. Gating of the DQS signal is shown in Figure 4, DQS
gating.
The timing of when to start gating the DQS depends on the design itself, the flight time of
the clock to memory, and the flight time of the data/DQS to the memory controller, as
follows:
●
If the round trip time is between ½ cycle and 1½ cycles, program the caslat_lin
parameter equal to the caslat parameter.
●
If the round trip time is less than ½ cycle, program the caslat_lin parameter one value
less (which translates to ½ cycle) than the caslat parameter to open the gate ½ cycle
sooner.
●
lf the round trip time is longer than 1½ cycles, program the caslat_lin parameter one
value more (which translates to ½ cycle) than the caslat parameter to open the gate ½
cycle later.
In addition, the caslat_lin_gate parameter controls the opening of the gating signal.
Nominally, caslat_lin_gate should have the same value as the caslat_lin parameter.
However, to accommodate the skew of the memory devices, it may be necessary to open
the gate a 1/2-cycle sooner or later. Adjusting the value of caslat_lin_gate modifies the gate
opening by this factor.
10.11
External pin connection Of DDR interface in SPEAr300
Refer to Chapter 5: Pin description.
10.12
Initialization protocol
After power on, once the power supply to memory devices and the device itself is stable, the
Memory Controller must be initialized: afterward it will automatically initialize the memory
devices.
The procedure to initialize the Memory Controller is as follows:
1.
Clear the rst_n signal by driving it to 1'b0. All programmable registers will be cleared.
2.
Set the rst_n signal synchronously with the Memory Controller clock by driving the
signal to 1'b1.
3.
Issue write register commands to configure the DRAM protocols and the settings for
the DCC. Keep the start parameter de-asserted during this initialization step. For more
details, refer to Section 10.13.
4.
Assert the start parameter. This triggers the Memory Controller to execute the
initialization sequence using the parameters written into the registers.
The Memory Controller will automatically initialize the DRAM memory devices and lock the
internal DCC. The DLL will process and send a signal to the initialization block when it has
locked.
Doc ID 018672 Rev 1
145/844
DDR memory controller (MPMC)
Table 74.
146/844
RM0082
MT47H128M8-3 (DDR2@333 MHz cl5) initialization table
Register name
Value
Register name
Value
MEM0_CTL
0x01010101
MEM55_CTL
0x00000000
MEM1_CTL
0x00000101
MEM56_CTL
0x5B1C00C8
MEM2_CTL
0x01000000
MEM57_CTL
0x00C8002E
MEM3_CTL
0x00000101
MEM58_CTL
0x00000000
MEM4_CTL
0x00000101
MEM59_CTL
0x00000043
MEM5_CTL
0x01000000
MEM60_CTL
0x00000000
MEM6_CTL
0x00010001
MEM61_CTL
0x00000000
MEM7_CTL
0x00000100
MEM62_CTL
0x00000000
MEM8_CTL
0x00010001
MEM63_CTL
0x00000000
MEM9_CTL
0x01020003
MEM64_CTL
0x00000000
MEM10_CTL
0x01000102
MEM65_CTL
0x001C0000
MEM11_CTL
0x02000102
MEM66_CTL
0x0019001C
MEM12_CTL
0x02020102
MEM67_CTL
0x005A0000
MEM13_CTL
0x03020202
MEM68_CTL
0x001E007A
MEM14_CTL
0x02040202
MEM69_CTL
0x00000000
MEM15_CTL
0x00000002
MEM70_CTL
0x00000000
MEM16_CTL
0x00000000
MEM71_CTL
0x00000000
MEM17_CTL
0x03000405
MEM72_CTL
0x00000000
MEM18_CTL
0x03030002
MEM73_CTL
0x00000000
MEM19_CTL
0x04000305
MEM74_CTL
0x00000000
MEM20_CTL
0x0505053F
MEM75_CTL
0x00000000
MEM21_CTL
0x05050505
MEM76_CTL
0x00000000
MEM22_CTL
0x04040405
MEM77_CTL
0x00000000
MEM23_CTL
0x04040404
MEM78_CTL
0x00000000
MEM24_CTL
0x03030304
MEM79_CTL
0x00000000
MEM25_CTL
0x03030303
MEM80_CTL
0x00000000
MEM26_CTL
0x02020203
MEM81_CTL
0x00000000
MEM27_CTL
0x02020202
MEM82_CTL
0x00000000
MEM28_CTL
0x01010102
MEM83_CTL
0x00000000
MEM29_CTL
0x01010101
MEM84_CTL
0x00000000
MEM30_CTL
0x00000001
MEM85_CTL
0x00000000
MEM31_CTL
0x00000000
MEM86_CTL
0x00000000
MEM32_CTL
0x00000000
MEM87_CTL
0x00000000
MEM33_CTL
0x00000000
MEM88_CTL
0x00000000
MEM34_CTL
0x0A0C0A00
MEM89_CTL
0x00000000
Doc ID 018672 Rev 1
RM0082
DDR memory controller (MPMC)
Table 74.
MT47H128M8-3 (DDR2@333 MHz cl5) initialization table (continued)
Register name
Value
Register name
Value
MEM35_CTL
0x0000023F
MEM90_CTL
0x00000000
MEM36_CTL
0x00050A00
MEM91_CTL
0x00000000
MEM37_CTL
0x0D000000
MEM92_CTL
0x00000000
MEM38_CTL
0x00001302
MEM93_CTL
0x00000000
MEM39_CTL
0x00001E1E
MEM94_CTL
0x00000000
MEM40_CTL
0x7F000000
MEM95_CTL
0x00000000
MEM41_CTL
0x005F0000
MEM96_CTL
0x00000000
MEM42_CTL
0x2B050E00
MEM97_CTL
0x00000000
MEM43_CTL
0x00640064
MEM98_CTL
0x00000000
MEM44_CTL
0x00640064
MEM99_CTL
0x00000000
MEM45_CTL
0x00000064
MEM100_CTL
0x01010001
MEM46_CTL
0x00000000
MEM101_CTL
0x01000000
MEM47_CTL
0x00200020
MEM102_CTL
0x00000001
MEM48_CTL
0x00200020
MEM103_CTL
0x00000000
MEM49_CTL
0x00200020
MEM104_CTL
0x00000000
MEM50_CTL
0x00200020
MEM105_CTL
0x00000000
MEM51_CTL
0x00200020
MEM106_CTL
0x00000000
MEM52_CTL
0x00000000
MEM107_CTL
0x00860000
MEM53_CTL
0x00000000
MEM108_CTL
0x00000002
MEM54_CTL
0x00000A24
Table 75.
MT46H6M16LF-6(Low Power DDR @166 MHz cl3) initialization table
Register name
Value
Register n ame
Value
MEM0_CTL
0x03030301
MEM55_CTL
0x00000000
MEM1_CTL
0x00000303
MEM56_CTL
0x2D890000
MEM2_CTL
0x01000000
MEM57_CTL
0x00180018
MEM3_CTL
0x00000001
MEM58_CTL
0x00000000
MEM4_CTL
0x00000001
MEM59_CTL
0x00000022
MEM5_CTL
0x01000000
MEM60_CTL
0x00000000
MEM6_CTL
0x00010001
MEM61_CTL
0x00000000
MEM7_CTL
0x00000100
MEM62_CTL
0x00000000
MEM8_CTL
0x00010001
MEM63_CTL
0x00000000
MEM9_CTL
0x01020003
MEM64_CTL
0x00000000
MEM10_CTL
0x01000102
MEM65_CTL
0x003A0000
MEM11_CTL
0x02000102
MEM66_CTL
0x0030003A
Doc ID 018672 Rev 1
147/844
DDR memory controller (MPMC)
Table 75.
148/844
RM0082
MT46H6M16LF-6(Low Power DDR @166 MHz cl3) initialization table
Register name
Value
Register n ame
Value
MEM12_CTL
0x02020102
MEM67_CTL
0x00B70000
MEM13_CTL
0x03020202
MEM68_CTL
0x003C00F4
MEM14_CTL
0x02040202
MEM69_CTL
0x00000000
MEM15_CTL
0x00000002
MEM70_CTL
0x00000000
MEM16_CTL
0x00000000
MEM71_CTL
0x00000000
MEM17_CTL
0x01000403
MEM72_CTL
0x00000000
MEM18_CTL
0x02020002
MEM73_CTL
0x00000000
MEM19_CTL
0x01000103
MEM74_CTL
0x00000000
MEM20_CTL
0x0505053F
MEM75_CTL
0x00000000
MEM21_CTL
0x05050505
MEM76_CTL
0x00000000
MEM22_CTL
0x04040405
MEM77_CTL
0x00000000
MEM23_CTL
0x04040404
MEM78_CTL
0x00000000
MEM24_CTL
0x03030304
MEM79_CTL
0x00000000
MEM25_CTL
0x03030303
MEM80_CTL
0x00000000
MEM26_CTL
0x02020203
MEM81_CTL
0x00000000
MEM27_CTL
0x02020202
MEM82_CTL
0x00000000
MEM28_CTL
0x01010102
MEM83_CTL
0x00000000
MEM29_CTL
0x01010101
MEM84_CTL
0x00000000
MEM30_CTL
0x00000001
MEM85_CTL
0x00000000
MEM31_CTL
0x00000000
MEM86_CTL
0x00000000
MEM32_CTL
0x00000000
MEM87_CTL
0x00000000
MEM33_CTL
0x00000000
MEM88_CTL
0x00000000
MEM34_CTL
0x05060A00
MEM89_CTL
0x00000000
MEM35_CTL
0x0000023F
MEM90_CTL
0x00000000
MEM36_CTL
0x00030600
MEM91_CTL
0x00000000
MEM37_CTL
0x0A000000
MEM92_CTL
0x00000000
MEM38_CTL
0x00000A02
MEM93_CTL
0x00000000
MEM39_CTL
0x00001E1E
MEM94_CTL
0x00000000
MEM40_CTL
0x70000000
MEM95_CTL
0x00000000
MEM41_CTL
0x00250000
MEM96_CTL
0x00000000
MEM42_CTL
0x18030700
MEM97_CTL
0x00000000
MEM43_CTL
0x00640064
MEM98_CTL
0x00000001
MEM44_CTL
0x00640064
MEM99_CTL
0x00000000
MEM45_CTL
0x00000064
MEM100_CTL
0x01010001
MEM46_CTL
0x00000000
MEM101_CTL
0x01010001
Doc ID 018672 Rev 1
RM0082
DDR memory controller (MPMC)
Table 75.
MT46H6M16LF-6(Low Power DDR @166 MHz cl3) initialization table
Register name
Value
Register n ame
Value
MEM47_CTL
0x00200020
MEM102_CTL
0x00000001
MEM48_CTL
0x00200020
MEM103_CTL
0x00000000
MEM49_CTL
0x00200020
MEM104_CTL
0x00000000
MEM50_CTL
0x00200020
MEM105_CTL
0x00000000
MEM51_CTL
0x00200020
MEM106_CTL
0x00000000
MEM52_CTL
0x00000000
MEM107_CTL
0x00000000
MEM53_CTL
0x00000000
MEM108_CTL
0x00000001
MEM54_CTL
0x00000283
10.13
Register interface
10.13.1
Register overview
A register may contain multiple parameters, a single parameter, or partial data for a
parameter. As a result, a READ from or a WRITE to a particular parameter may require
multiple READ or WRITE commands to different register addresses.
While parameters can be of any size, each parameter is mapped to byte boundaries that will
fit the entire parameter. Unused bits are considered reserved and indicated with a RESV
tag. Reserved fields will return 0 on all register reads.
Table 76.
10.13.2
Parameter size to mapping conditions
Parameter size (in Bits)
Mapping size
Starting address
1 to 8
1 byte
Byte Boundary
9 to 16
2 bytes
2 Byte Boundary
17 to 128
4 bytes
4 Byte Boundary
MPMC base address In SPEAr300
Base address = 0xFC60.0000
10.13.3
Register map
Note:
The address refers to the register address reg_addr, not a signal on the command address
line. The registers are not byte addressable unless the register width is defined as 8 bits. To
read or write a single parameter, use the register mask to mask other bits.
Doc ID 018672 Rev 1
149/844
DDR memory controller (MPMC)
Table 77.
Registers overview
Register name
Offset
Mem. CTRL
core Reg.
Address
Type(1)
Parameter(s)
AHB2_FIFO_TYPE_REG
AHB1_FIFO_TYPE_REG
AHB0_FIFO_TYPE_REG
ADDR_CMP_EN
MEM0_CTL
0x00
0x00
RW
RW
RW
RW
MEM1_CTL
0x04
0x01
RW
RW
AHB4_FIFO_TYPE_REG
AHB3_FIFO_TYPE_REG
0x02
RW
RW
WR
RW
BANK_SPLIT_EN
AUTO_REFRESH_MODE
AREFRESH
AP
0x03
RW
RD
RW
RW
DLL_BYPASS_MODE
DLLLOCKREG
DDRII_SDRAM_MODE
CONCURRENTAP
0x04
RW
RW
RW
RW
INTRPTAPBURST
FAST_WRITE
EIGHT_BANK_MODE
DQS_N_EN
0x05
RW
RW
RW
RW
ODT_ADD_TURN_CLK_EN
NO_CMD_INIT
INTRPTWRITEA
INTRPTREADA
0x06
RW
RW
RW
RW
REDUC
PRIORITY_EN
POWER_DOWN
PLACEMENT_EN
0x07
RW
RW+
RW
RW
START
SREFRESH
RW_SAME_EN
REG_DIMM_ENABLE
0x08
WR
RW
RW
RW
WRITE_MODEREG
WRITEINTERP
WEIGHTED_ROUND_ROBIN_LATENCY_C
ONTROL
TRAS_LOCKOUT
0x09
RW
RW
RD
RW
ODT_RD_MAP_CS1
ODT_RD_MAP_CS0
MAX_CS_REG
CS_MAP
MEM2_CTL
MEM3_CTL
MEM4_CTL
MEM5_CTL
MEM6_CTL
MEM7_CTL
MEM8_CTL
MEM9_CTL
150/844
RM0082
0x08
0x0C
0x10
0x14
0x18
0x1C
0x20
0x24
Doc ID 018672 Rev 1
RM0082
DDR memory controller (MPMC)
Table 77.
Registers overview (continued)
Register name
MEM10_CTL
MEM11_CTL
MEM12_CTL
MEM13_CTL
Offset
0x28
0x2C
0x30
0x34
Mem. CTRL
core Reg.
Address
Type(1)
Parameter(s)
0x0A
RW
RD
RW
RW
RTT_0
OUT_OF_RANGE_TYPE
ODT_WR_MAP_CS1
ODT_WR_MAP_CS0
0x0B
RW
RW
RW
RW
AHB0_R_PRIORITY
AHB0_PORT_ORDERING
ADDR_PINS
RTT_PAD_TERMINATION
0x0C
RW
RW
RW
RW
AHB1_W_PRIORITY
AHB1_R_PRIORITY
AHB1_PORT_ORDERING
AHB0_W_PRIORITY
0x0D
RW
RW
RW
RW
AHB3_PORT_ORDERING
AHB2_W_PRIORITY
AHB2_R_PRIORITY
AHB2_PORT_ORDERING
AHB4_R_PRIORITY
AHB4_PORT_ORDERING
AHB3_W_PRIORITY
AHB3_R_PRIORITY
MEM14_CTL
0x38
0x0E
RW
RW
RW
RW
MEM15_CTL
0x3C
0x0F
RW
AHB4_W_PRIORITY
MEM16_CTL
0x40
0x10
-
This register intentionally blank.
0x11
RW
RD
RW
RW
TCKE
OUT_OF_RANGE_SOURCE_ID
COLUMN_SIZE
CASLAT
0x12
RW
RW
RW
TRTP
TRRD
TEMRS
0x13
RW
RW
RW
RW
WRLAT
WEIGHTED_ROUND_ROBIN_WEIGHT_SH
ARING
TWTR
TWR_INT
0x14
RW
RW
RW
RW
AHB0_PRIORITY2_RELATIVE_PRIORITY
AHB0_PRIORITY1_RELATIVE_PRIORITY
AHB0_PRIORITY0_RELATIVE_PRIORITY
AGE_COUNT
MEM17_CTL
MEM18_CTL
MEM19_CTL
MEM20_CTL
0x44
0x48
0x4C
0x50
Doc ID 018672 Rev 1
151/844
DDR memory controller (MPMC)
Table 77.
Registers overview (continued)
Register name
MEM21_CTL
MEM22_CTL
MEM23_CTL
MEM24_CTL
MEM25_CTL
MEM26_CTL
MEM27_CTL
MEM28_CTL
152/844
RM0082
Offset
0x54
0x58
0x5C
0x60
0x64
0x68
0x6C
0x70
Mem. CTRL
core Reg.
Address
Type(1)
Parameter(s)
0x15
RW
RW
RW
WR
AHB0_PRIORITY6_RELATIVE_PRIORITY
AHB0_PRIORITY5_RELATIVE_PRIORITY
AHB0_PRIORITY4_RELATIVE_PRIORITY
AHB0_PRIORITY3_RELATIVE_PRIORITY
0x16
RW
RW
RW
RW
AHB1_PRIORITY2_RELATIVE_PRIORITY
AHB1_PRIORITY1_RELATIVE_PRIORITY
AHB1_PRIORITY0_RELATIVE_PRIORITY
AHB0_PRIORITY7_RELATIVE_PRIORITY
0x17
RW
RW
RW
RW
AHB1_PRIORITY6_RELATIVE_PRIORITY
AHB1_PRIORITY5_RELATIVE_PRIORITY
AHB1_PRIORITY4_RELATIVE_PRIORITY
AHB1_PRIORITY3_RELATIVE_PRIORITY
0x18
RW
RW
RW
RW
AHB2_PRIORITY2_RELATIVE_PRIORITY
AHB2_PRIORITY1_RELATIVE_PRIORITY
AHB2_PRIORITY0_RELATIVE_PRIORITY
AHB1_PRIORITY7_RELATIVE_PRIORITY
0x19
RW
RW
RW
RW
AHB2_PRIORITY6_RELATIVE_PRIORITY
AHB2_PRIORITY5_RELATIVE_PRIORITY
AHB2_PRIORITY4_RELATIVE_PRIORITY
AHB2_PRIORITY3_RELATIVE_PRIORITY
0x1A
RW
RW
RW
RW
AHB3_PRIORITY2_RELATIVE_PRIORITY
AHB3_PRIORITY1_RELATIVE_PRIORITY
AHB3_PRIORITY0_RELATIVE_PRIORITY
AHB2_PRIORITY7_RELATIVE_PRIORITY
0x1B
RW
RW
RW
RW
AHB3_PRIORITY6_RELATIVE_PRIORITY
AHB3_PRIORITY5_RELATIVE_PRIORITY
AHB3_PRIORITY4_RELATIVE_PRIORITY
AHB3_PRIORITY3_RELATIVE_PRIORITY
0x1C
RW
RW
RW
RW
AHB4_PRIORITY2_RELATIVE_PRIORITY
AHB4_PRIORITY1_RELATIVE_PRIORITY
AHB4_PRIORITY0_RELATIVE_PRIORITY
AHB3_PRIORITY7_RELATIVE_PRIORITY
AHB4_PRIORITY6_RELATIVE_PRIORITY
AHB4_PRIORITY5_RELATIVE_PRIORITY
AHB4_PRIORITY4_RELATIVE_PRIORITY
AHB4_PRIORITY3_RELATIVE_PRIORITY
MEM29_CTL
0x74
0x1D
RW
RW
RW
RW
MEM30_CTL
0x78
0x1E
RW
AHB4_PRIORITY7_RELATIVE_PRIORITY
MEM31_CTL
0x7C
0x1F
-
This register intentionally blank.
MEM32_CTL
0x80
0x20
-
This register intentionally blank.
MEM33_CTL
0x84
0x21
-
This register intentionally blank.
Doc ID 018672 Rev 1
RM0082
DDR memory controller (MPMC)
Table 77.
Registers overview (continued)
Register name
Offset
Mem. CTRL
core Reg.
Address
Type(1)
Parameter(s)
MEM34_CTL
0x88
0x22
RW
RW
RW
CASLAT_LIN_GATE
CASLAT_LIN
APREBIT
0x23
RD
RD
RW
RW
MAX_ROW_REG
MAX_COL_REG
INITAREF
COMMAND_AGE_COUNT
0x24
RD
RW
RW
RW
WRR_PARAM_VALUE_ERR
TRP
TDAL
Q_FULLNESS
0x25
RW
RW
RW
WR
TFAW
OCD_ADJUST_PUP_CS_0
OCD_ADJUST_PDN_CS_0
INT_ACK
INT_STATUS
INT_MASK
TRC
TMRD
MEM35_CTL
MEM36_CTL
MEM37_CTL
0x8C
0x90
0x94
MEM38_CTL
0x98
0x26
RD
RW
RW
RW
MEM39_CTL
0x9C
0x27
RW
RW
DLL_DQS_DELAY_1
DLL_DQS_DELAY_0
MEM40_CTL
0xA0
0x28
RW
DQS_OUT_SHIFT
MEM41_CTL
0xA4
0x29
RW
WR_DQS_SHIFT
MEM42_CTL
0xA8
0x2A
RW
RW
RW
TRFC
TRCD_INT
TRAS_MIN
MEM43_CTL
0xAC
0x2B
RW
RW
AHB1_PRIORITY_RELAX
AHB0_PRIORITY_RELAX
MEM44_CTL
0xB0
0x2C
RW
RW
AHB3_PRIORITY_RELAX
AHB2_PRIORITY_RELAX
MEM45_CTL
0xB4
0x2D
RW
AHB4_PRIORITY_RELAX
MEM46_CTL
0xB8
0x2E
RD
OUT_OF_RANGE_LENGTH
MEM47_CTL
0xBC
0x2F
RW
RW
AHB0_WRCNT
AHB0_RDCNT
MEM48_CTL
0xC0
0x30
RW
RW
AHB1_WRCNT
AHB1_RDCNT
MEM49_CTL
0xC4
0x31
RW
RW
AHB2_WRCNT
AHB2_RDCNT
Doc ID 018672 Rev 1
153/844
DDR memory controller (MPMC)
Table 77.
154/844
RM0082
Registers overview (continued)
Register name
Offset
Mem. CTRL
core Reg.
Address
Type(1)
Parameter(s)
MEM50_CTL
0xC8
0x32
RW
RW
AHB3_WRCNT
AHB3_RDCNT
MEM51_CTL
0xCC
0x33
RW
RW
AHB4_WRCNT
AHB4_RDCNT
MEM52_CTL
0xD0
0x34
-
This register intentionally blank.
MEM53_CTL
0xD4
0x35
-
This register intentionally blank.
MEM54_CTL
0xD8
0x36
RW
TREF
MEM55_CTL
0xDC
0x37
RW
EMRS3_DATA
MEM56_CTL
0xE0
0x38
RW
RW
TRAS_MAX
TDLL
MEM57_CTL
0xE4
0x39
RW
RW
TXSR
TXSNR
MEM58_CTL
0xE8
0x3A
RD
VERSION
MEM59_CTL
0xEC
0x3B
RW
TINIT
MEM60_CTL
0xF0
0x3C
RD
OUT_OF_RANGE_ADDR[31:0]
MEM61_CTL
0xF4
0x3D
RD
OUT_OF_RANGE_ADDR[33:32]
MEM62_CTL
0xF8
0x3E
-
This register intentionally blank.
MEM63_CTL
0xFC
0x3F
-
This register intentionally blank.
MEM64_CTL
0x100
0x40
-
This register intentionally blank.
MEM65_CTL
0x104
0x41
RW
DLL_DQS_DELAY_BYPASS_0
MEM66_CTL
0x108
0x42
RW
RW
DLL_INCREMENT
DLL_DQS_DELAY_BYPASS_1
MEM67_CTL
0x10C
0x43
RW
RD
DLL_START_POINT
DLL_LOCK
MEM68_CTL
0x110
0x44
RW
RW
WR_DQS_SHIFT_BYPASS
DQS_OUT_SHIFT_BYPASS
MEM69_CTL
0x114
0x45
-
This register intentionally blank.
MEM70_CTL
0x118
0x46
-
This register intentionally blank.
MEM71_CTL
0x11C
0x47
-
This register intentionally blank.
MEM72_CTL
0x120
0x48
-
This register intentionally blank.
MEM73_CTL
0x124
0x49
-
This register intentionally blank.
MEM74_CTL
0x128
0x4A
-
This register intentionally blank.
MEM75_CTL
0x12C
0x4B
-
This register intentionally blank.
MEM76_CTL
0x130
0x4C
-
This register intentionally blank.
MEM77_CTL
0x134
0x4D
-
This register intentionally blank.
Doc ID 018672 Rev 1
RM0082
DDR memory controller (MPMC)
Table 77.
Registers overview (continued)
Register name
Offset
Mem. CTRL
core Reg.
Address
Type(1)
Parameter(s)
MEM78_CTL
0x138
0x4E
-
This register intentionally blank.
MEM79_CTL
0x13C
0x4F
-
This register intentionally blank.
MEM80_CTL
0x140
0x50
-
This register intentionally blank.
MEM81_CTL
0x144
0x51
-
This register intentionally blank.
MEM82_CTL
0x148
0x52
-
This register intentionally blank.
MEM83_CTL
0x14C
0x53
-
This register intentionally blank.
MEM84_CTL
0x150
0x54
-
This register intentionally blank.
MEM85_CTL
0x154
0x55
-
This register intentionally blank.
MEM86_CTL
0x158
0x56
-
This register intentionally blank.
MEM87_CTL
0x15C
0x57
-
This register intentionally blank.
MEM88_CTL
0x160
0x58
-
This register intentionally blank.
MEM89_CTL
0x164
0x59
-
This register intentionally blank.
MEM90_CTL
0x168
0x5A
-
This register intentionally blank.
MEM91_CTL
0x16C
0x5B
-
This register intentionally blank.
MEM92_CTL
0x170
0x5C
-
This register intentionally blank.
MEM93_CTL
0x174
0x5D
-
This register intentionally blank.
MEM94_CTL
0x178
0x5E
-
This register intentionally blank.
MEM95_CTL
0x17C
0x5F
-
This register intentionally blank.
MEM96_CTL
0x180
0x60
-
This register intentionally blank.
MEM97_CTL
0x184
0x61
-
This register intentionally blank.
MEM98_CTL
0x188
0x62
RW
USER_DEF_REG_0
MEM99_CTL
0x18C
0x63
RW
USER_DEF_REG_1
0x64
RW
RW
RW
RW
ENABLE_QUICK_SREFRESH
DRIVE_DQ_DQS
BIG_ENDIAN_EN
ACTIVE_AGING
0x65
RW
RW
RW
RW
SWAP_EN
RD2RD_TURN
PWRUP_SREFRESH_EXIT
EN_LOWPOWER_MODE
LOWPOWER_AUTO_ENABLE
CKE_DELAY
LOWPOWER_REFRESH_ENABLE
TREF_ENABLE
EMRS1_DATA
LOWPOWER_CONTROL
MEM100_CTL
MEM101_CTL
0x190
0x194
MEM102_CTL
0x198
0x66
RW
RW
RW
RW
MEM103_CTL
0x19C
0x67
RW
RW
Doc ID 018672 Rev 1
155/844
DDR memory controller (MPMC)
Table 77.
RM0082
Registers overview (continued)
Register name
Offset
Mem. CTRL
core Reg.
Address
Type(1)
Parameter(s)
MEM104_CTL
0x1A0
0x68
RW
RW
EMRS2_DATA_1
EMRS2_DATA_0
MEM105_CTL
0x1A4
0x69
RW
RW
LOWPOWER_INTERNAL_CNT
LOWPOWER_EXTERNAL_CNT
MEM106_CTL
0x1A8
0x6A
RW
RW
LOWPOWER_REFRESH_HOLD
LOWPOWER_POWER_DOWN_CNT
MEM107_CTL
0x1AC
0x6B
RW
RW
TCPD
LOWPOWER_SELF_REFRESH_CNT
MEM108_CTL
0x1B0
0x6C
RW
TPDEX
1. Type refers to the writeability of the parameter.
RW=READ/WRITE.
RD=Read Only.
WR=Write Only.
RW=READ/WRITE, where one or more bits of the parameter have additional functionality and
require special handling.
Note:
For a comprehensive explanation of the meaning of parameters, please refer to
Section 10.14
10.13.4
Register description
10.13.5
MEM0_CTL register
.
Table 78.
156/844
MEM0_CTL register bit assignments
Bit
Name
Reset
value
Range
Description
[31:28]
-
-
-
Reserved. Read undefined. Write should be
zero.
[27:24]
AHB2_FIFO_TYPE
0x0
0x0-0x3
Clock domain correlation between port 2 and
Memory Controller core.
[23:20]
-
-
-
Reserved. Read undefined. Write should be
zero.
[19:16]
AHB1_FIFO_TYPE
0x0
0x0-0x3
Clock domain correlation between port 1 and
Memory Controller core.
[15:12]
-
-
-
Reserved. Read undefined. Write should be
zero.
[11:08]
AHB0_FIFO_TYPE
0x0
0x0-0x3
Clock domain correlation between port 0 and
Memory Controller core.
Doc ID 018672 Rev 1
RM0082
DDR memory controller (MPMC)
Table 78.
10.13.6
MEM0_CTL register bit assignments (continued)
Bit
Name
Reset
value
Range
Description
[07:04]
-
-
-
Reserved. Read undefined. Write should be
zero.
[03:00]
ADDR_CMP_EN
0x0
0x0-0x1
Enable address collision detection for CMD
queue placement logic.
MEM1_CTL register
Table 79.
10.13.7
MEM1_CTL register bit assignments
Bit
Name
Reset
value
Range
Description
[31:10]
-
-
-
Reserved. Read undefined. Write should be
zero.
[09:08]
AHB4_FIFO_TYPE
0x0
0x0-0x3
Clock domain correlation between port 4 and
Memory Controller core.
[07:02]
-
-
-
Reserved. Read undefined. Write should be
zero.
[01:00]
AHB3_FIFO_TYPE
0x0
0x0-0x1
Clock domain correlation between port 3 and
Memory Controller core.
MEM2_CTL register
Table 80.
MEM2_CTL register bit assignments
Bit
Name
Reset
value
Range
Description
[31:25]
-
-
-
Reserved. Read undefined. Write should be
zero.
[24]
BANK_SPLI_EN
0x0
0x0-0x1
Enable bank splitting for CMD queue placement
logic.
[23:17]
-
-
-
Reserved. Read undefined. Write should be
zero.
[16]
AUTO_RFSH_MODE 0x0
0x0-0x1
Define autorefresh to occur at next burst or next
CMD boundary.
[15:09]
-
-
-
Reserved. Read undefined. Write should be
zero.
[08]
AREFRESH
0x0
0x0-0x1
Trigger autorefresh at boundary specified by
AUTO_RFSH_MODE. WRITE-ONLY
[07:01]
-
-
-
Reserved. Read undefined. Write should be
zero.
[00]
AP
0x0
0x0-0x1 Enable auto pre-charge mode of controller.
Doc ID 018672 Rev 1
157/844
DDR memory controller (MPMC)
10.13.8
MEM3_CTL register
Table 81.
10.13.9
MEM3_CTL register bit assignments
Bit
Name
Reset
value
Range
Description
[31:25]
-
-
-
Reserved. Read undefined. Write should be
zero.
[24]
DLL_BYPASS_MO
0x0
DE
0x0 - 0x1 Enable the DLL bypass feature of the controller.
[23:17]
-
-
-
Reserved. Read undefined. Write should be
zero.
[16]
DLLLOCK
0x0
0x0 - 0x1
Status of DLL lock coming out of master delay.
READ-ONLY
[15:09]
-
-
-
Reserved. Read undefined. Write should be
zero.
[08]
DDRII_DDRI_MOD
0x0
E
0x0 - 0x1
Define mode of controller as DDRI(mobile) or
DDRII.
[07:01]
-
-
-
Reserved. Read undefined. Write should be
zero.
[00]
CONCURRENTAP
0x0
0x0 - 0x1
Allow controller to issue CMDs to other banks
while a bank is in auto precharge.
MEM4_CTL register
Table 82.
158/844
RM0082
MEM4_CTL register bit assignments
Bit
Name
Reset
value
Range
Description
[31:25]
-
-
-
Reserved. Read undefined. Write should be
zero.
[24]
INTRPTAPBURST
0x0
0x0 - 0x1
Allow the controller to interrupt an auto precharge CMD with another CMD.
[23:17]
-
-
-
Reserved. Read undefined. Write should be
zero.
[16]
FAST_WRITE
0x0
0x0 - 0x1
Define when write CMDs are issued to DRAM
devices.
[15:09]
-
-
-
Reserved. Read undefined. Write should be
zero.
[08]
EIGHT_BANK_MO
0x0
DE
0x0 - 0x1 Number of banks on the DRAM(s).
[07:01]
-
-
-
[00]
DQS_N_EN
0x0
0x0 - 0x1 Set DQS pin as single-ended or differential.
Reserved. Read undefined. Write should be
zero.
Doc ID 018672 Rev 1
RM0082
DDR memory controller (MPMC)
10.13.10 MEM5_CTL register
Table 83.
MEM5_CTL register bit assignments
Bit
Name
Reset
Range
value
Description
[31:25]
-
-
-
Reserved. Read undefined. Write should be
zero.
[24]
ODT_ADD_TURN_C
0x0
LK_EN
0x0 0x1
Enable extra turn-around clock between back-toback READs/WRITEs to different chip selects.
[23:17]
-
-
-
Reserved. Read undefined. Write should be
zero.
[16]
NOCMDINIT
0x0
0x0 0x1
Disable DRAM CMDs until TDLL has expired
during initialization.
[15:09]
-
-
-
Reserved. Read undefined. Write should be
zero.
[08]
INTRPTWRITEA
0x0
0x0 0x1
Allow the controller to interrupt a combined write
CMD with auto pre-charge with another write
CMD.
[07:01]
-
-
-
Reserved. Read undefined. Write should be
zero.
[00]
INTRPTREADA
0x0
0x0 0x1
Allow the controller to interrupt a combined read
with auto precharge CMD with another read
CMD.
10.13.11 MEM6_CTL register
Table 84.
MEM6_CTL register bit assignments
Bit
Name
Reset
value
Range
Description
[31:25]
-
-
-
Reserved. Read undefined. Write should be
zero.
[24]
REDUC
0x0
0x0 - 0x1 Enable the half datapath feature of the controller.
[23:17]
-
-
-
[16]
PRIORITY_EN
0x0
0x0 - 0x1 Enable priority for CMD queue placement logic.
[15:09]
-
-
-
Reserved. Read undefined. Write should be
zero.
[08]
POWER_DOWN
0x0
0x0 - 0x1
Disable clock enable and set DRAMs in powerdown state.
[07:01]
-
-
-
Reserved. Read undefined. Write should be
zero.
[00]
PLACEMENT_EN
0x0
0x0 - 0x1 Enable placement logic for CMD queue.
Reserved. Read undefined. Write should be
zero.
Doc ID 018672 Rev 1
159/844
DDR memory controller (MPMC)
RM0082
10.13.12 MEM7_CTL register
Table 85.
MEM7_CTL register bit assignments
Bit
Name
Reset
value
Range
Description
[31:25]
-
-
-
Reserved. Read undefined. Write should be
zero.
[24]
START
0x0
0x0 - 0x1 Begin CMD processing in the controller.
[23:17]
-
-
-
[16]
SREFRESH
0x0
0x0 - 0x1 Place DRAMs in self-refresh mode.
[15:09]
-
-
-
Reserved. Read undefined. Write should be
zero.
[08]
SW_SAME_EN
0x0
0x0 - 0x1
Enable read/ write grouping for CMD queue
placement logic.
[07:01]
-
-
-
Reserved. Read undefined. Write should be
zero.
[00]
REG_DIMM_EN
0x0
0x0 - 0x1
Enable registered DIMM operation of the
controller.
Reserved. Read undefined. Write should be
zero.
10.13.13 MEM8_CTL register
Table 86.
160/844
MEM8_CTL register bit assignments
Bit
Name
Reset
value
Range
Description
[31:25]
-
-
-
Reserved. Read undefined. Write should be
zero.
[24]
WRITE_MODE_RE
0x0
G
0x0 - 0x1 Write EMRS data to the DRAMs. WRITE-ONLY
[23:17]
-
-
-
Reserved. Read undefined. Write should be
zero.
[16]
WRITE_INTRPT
0x0
0x0 - 0x1
Allow controller to interrupt write bursts to the
DRAMs with a read CMD.
[15:09]
-
-
-
Reserved. Read undefined. Write should be
zero.
[08]
WEIGHTED_ROU
ND_ROBIN_LATE
CNCY_CONTROL
0x0
0x0 - 0x1 Free-running or limited WRR latency counters.
[07:01]
-
-
-
Reserved. Read undefined. Write should be
zero.
[00]
TRAS_LOCKOUT
0x0
0x0 - 0x1
Allow the controller to execute auto pre-charge
CMDs before TRAS_MIN expires.
Doc ID 018672 Rev 1
RM0082
DDR memory controller (MPMC)
10.13.14 MEM9_CTL register
Table 87.
MEM9_CTL register bit assignments
Reset
value
Range
Description
-
-
Reserved. Read undefined. Write should be
zero.
[25:24] ODT_RD_MAP_CS1 0x0
0x0 - 0x3
ODT Chip Select 1 map for READs.
Determines which chip(s) will have
termination when a read occurs on chip 1.
[23:18] -
-
Reserved. Read undefined. Write should be
zero.
[17:16] ODT_RD_MAP_CS0 0x0
0x0 - 0x3
ODT Chip Select 0 map for READs.
Determines which chip(s) will have
termination when a read occurs on chip 0.
[15:10] -
-
-
Reserved. Read undefined. Write should be
zero.
[09:80] MAX_CS
0x2
0x0 - 0x2
Maximum number of chip selects available.
READ-ONLY
[07:02] -
-
-
Reserved. Read undefined. Write should be
zero.
[01:00] CS_MAP
0x0
0x0 - 0x3
Specify which chip selects are active.
Bit
Name
[31:26] -
-
10.13.15 MEM10_CTL register
Table 88.
MEM10_CTL register bit assignments
Reset
value
Range
Description
[31:26] -
-
-
Reserved. Read undefined. Write should be
zero.
[25:24] RTT_0
0x0
0x0 - 0x3
On-Die termination resistance setting for all
DRAM devices.
[23:18] -
-
-
Reserved. Read undefined. Write should be
zero.
[17:16] OUTOFRANGETYPE
0x0
0x0 - 0x3
Type of CMD that caused an Out-of-Range
interrupt. READ-ONLY
[15:10] -
-
-
Reserved. Read undefined. Write should be
zero.
[09:08] ODT_WR_MAP_CS1
0x0
ODT Chip Select 1 map for WRITEs.
0x0 - 0x3 Determines which chip(s) will have
termination when a write occurs on chip 1.
Bit
Name
Doc ID 018672 Rev 1
161/844
DDR memory controller (MPMC)
Table 88.
RM0082
MEM10_CTL register bit assignments (continued)
Reset
value
Range
Description
[07:02] -
-
-
Reserved. Read undefined. Write should be
zero.
[01:00] ODT_WR_MAP_CS0
0x0
ODT Chip Select 0 map for WRITEs.
0x0 - 0x3 Determines which chip(s) will have
termination when a write occurs on chip 0.
Bit
Name
10.13.16 MEM11_CTL register
Table 89.
MEM11_CTL register bit assignments
Reset
value
Range
Description
[31:27] -
-
-
Reserved. Read undefined. Write should
be zero.
[26:24] AHB0_R_PRIOTRITY
0x0
0x0 - 0x7 Priority of read CMDs from port 0.
[23:19] -
-
-
[18:16] AHB0_PORT_ORDERING
0x0
0x0 - 0x7 Reassigned port order for port 0.
[15:11] -
-
-
Reserved. Read undefined. Write should
be zero.
[10:08] ADDR_PINS
0x0
0x0 - 0x7
Difference between number of addr pins
available and number being used.
[07:02] -
-
-
Reserved. Read undefined. Write should
be zero.
[01:00] RTT_PAD_TERMINATION
0x0
0x0 - 0x3
Set termination resistance in controller
pads
Bit
Name
Reserved. Read undefined. Write should
be zero.
10.13.17 MEM12_CTL register
Table 90.
Reset
value
Range
Description
[31:27] -
-
-
Reserved. Read undefined. Write should be
zero.
[26:24] AHB1_W_PRIORITY
0x0
0x0 - 0x7 Priority of write commands from port 1.
[23:19] -
-
-
[18:16] AHB1_R_PRIORITY
0x0
0x0 - 0x7 Priority of read commands from port 1.
[15:11] -
-
-
Bit
162/844
MEM12_CTL register bit assignments
Name
Reserved. Read undefined. Write should be
zero.
Reserved. Read undefined. Write should be
zero.
Doc ID 018672 Rev 1
RM0082
DDR memory controller (MPMC)
Table 90.
MEM12_CTL register bit assignments (continued)
Bit
Name
Reset
value
Range
[10:08]
AHB1_PORT_ORDE
RING
0x0
0x0 - 0x7 Reassigned port order for port 1.
[07:03] -
-
-
[02:00] AHB0_W_PRIORITY
0x0
0x0 - 0x7 Priority of write commands from port 0.
Description
Reserved. Read undefined. Write should be
zero.
10.13.18 MEM13_CTL register
Table 91.
Bit
MEM13_CTL register bit assignments
Name
[31:27] -
Reset
value
Range
Description
-
-
Reserved. Read undefined. Write should
be zero.
[26:24] AHB3_PORT_ORDERING 0x0
0x0 - 0x7 Reassigned port order for port 3.
[23:19] -
-
-
[18:16] AHB2_W_PRIORITY
0x0
0x0 - 0x7 Priority of write commands from port 2.
[15:11] -
-
-
[10:08] AHB2_R_PRIORITY
0x0
0x0 - 0x7 Priority of read commands from port 2.
[07:03] -
-
-
[02:00] AHB2_PORT_ORDERING 0x0
Reserved. Read undefined. Write should
be zero.
Reserved. Read undefined. Write should
be zero.
Reserved. Read undefined. Write should
be zero.
0x0 - 0x7 Reassigned port order for port 2.
10.13.19 MEM14_CTL register
Table 92.
MEM14_CTL register bit assignments
Reset
value
Range
Description
[31:27] -
-
-
Reserved. Read undefined. Write should
be zero.
[26:24] AHB4_R_PRIORITY
0x0
0x0 - 0x7 Priority of read commands from port 4.
[23:19] -
-
-
Bit
Name
Reserved. Read undefined. Write should
be zero.
[18:16] AHB4_PORT_ORDERING 0x0
0x0 - 0x7 Reassigned port order for port 4.
[15:11] -
-
-
[10:08] AHB3_W_PRIORITY
0x0
0x0 - 0x7 Priority of write commands from port 3.
Doc ID 018672 Rev 1
Reserved. Read undefined. Write should
be zero.
163/844
DDR memory controller (MPMC)
Table 92.
RM0082
MEM14_CTL register bit assignments (continued)
Reset
value
Range
Description
[07:03] -
-
-
Reserved. Read undefined. Write should
be zero.
[02:00] AHB3_R_PRIORITY
0x0
0x0 - 0x7 Priority of read commands from port 3.
Bit
Name
10.13.20 MEM15_CTL register
Table 93.
Bit
MEM15_CTL register bit assignments
Name
[31:03] -
Reset
value
Range
Description
-
-
Reserved. Read undefined. Write should be
zero.
[02:00] AHB4_W_PRIORITY 0x0
0x0 - 0x7 Priority of write commands from port 4.
10.13.21 MEM16_CTL register
‘
Table 94.
Bit
MEM16_CTL register bit assignments
Name
[31:00] -
Reset
value
Range
Description
-
-
Reserved. Read undefined. Write should be
zero.
10.13.22 MEM17_CTL register
Table 95.
Reset
value
Range
Description
[31:27] -
-
-
Reserved. Read undefined. Write should be
zero.
[26:24] TCKE
0x0
0x0 - 0x7 Minimum CKE pulse width.
[23:19] -
-
-
Reserved. Read undefined. Write should be
zero.
0x0
0x0 - 0x7
Source ID of CMD that caused an Out-ofRange interrupt. READ-ONLY
[15:11] -
-
-
Reserved. Read undefined. Write should be
zero.
[10:08] COLUMN_SIZE
0x0
0x0 - 0x7
Difference between number of column pins
available and number being used.
Bit
[18:16]
164/844
MEM17_CTL register bit assignments
Name
OUT_OF_RANGE_S
OURCE_ID
Doc ID 018672 Rev 1
RM0082
DDR memory controller (MPMC)
Table 95.
MEM17_CTL register bit assignments (continued)
Reset
value
Range
Description
[07:03] -
-
-
Reserved. Read undefined. Write should be
zero.
[02:00] CAS_LATENCY
0x0
0x0 - 0x7
Encoded CAS latency sent to DRAMs during
initialization.
Bit
Name
10.13.23 MEM18_CTL register
Table 96.
MEM18_CTL register bit assignments
Reset
value
Range
Description
[31:27] -
-
-
Reserved. Read undefined. Write should be zero.
[26:24] TRTP
0x0
0x0 - 0x7 DRAM TRTP parameter in cycles.
[23:19] -
-
-
[18:16] TRRD
0x0
0x0 - 0x7 DRAM TRRD parameter in cycles.
[15:03] -
-
-
[02:00] TEMRS
0x0
0x0 - 0x7 DRAM TEMRS parameter in cycles.
Bit
Name
Reserved. Read undefined. Write should be zero.
Reserved. Read undefined. Write should be zero.
10.13.24 MEM19_CTL register
Table 97.
MEM19_CTL register bit assignments
Reset
value
Range
Description
[31:27] -
-
-
Reserved. Read undefined. Write should be zero.
[26:24] WRLAT
0x0
0x0 - 0x7 DRAM WRLAT parameter in cycles.
[23:18] -
-
-
Bit
Name
Reserved. Read undefined. Write should be zero.
WEIGHTED_ROU
[17:16] ND_ROBIN_WEIG 0x0
HT_SHARING
0x0 - 0x3 Per-port pair shared arbitration for WRR.
[15:11] -
-
-
[10:08] TWTR
0x0
0x0 - 0x7 DRAM TWTR parameter in cycles.
[07:03] -
-
-
[02:00] TWR_INT
0x0
0x0 - 0x7 DRAM TWR parameter in cycles.
Reserved. Read undefined. Write should be zero.
Reserved. Read undefined. Write should be zero.
Doc ID 018672 Rev 1
165/844
DDR memory controller (MPMC)
RM0082
10.13.25 MEM20_CTL register
Table 98.
Bit
MEM20_CTL register bit assignments
Name
[31:28] [27:24]
-
-
Reserved. Read undefined. Write should be
zero.
0x0 - 0xF
Relative priority of priority 2 CMDs from port
0.
-
Reserved. Read undefined. Write should be
zero.
0x0 - 0xF
Relative priority of priority 1 CMDs from port
0.
-
Reserved. Read undefined. Write should be
zero.
0x0 - 0xF
Relative priority of priority 0 CMDs from port
0.
-
AHB0_PRIORITY1_RE
0x0
LATIVE_PRIORITY
[15:12] [11:08]
Description
AHB0_PRIORITY2_RE
0x0
LATIVE_PRIORITY
[23:20] [19:16]
Reset
Range
value
-
AHB0_PRIORITY0_RE
0x0
LATIVE_PRIORITY
[07:06] -
-
-
Reserved. Read undefined. Write should be
zero.
[05:00] AGE_COUNT
0x0
0x0 - 0x3F
Initial value of master generate counter for
CMD aging.
10.13.26 MEM21_CTL register
Table 99.
Bit
Name
[31:28] [27:24]
166/844
-
-
Reserved. Read undefined. Write should be
zero.
0x0 - 0xF
Relative priority of priority 6 CMDs from port
0.
-
Reserved. Read undefined. Write should be
zero.
0x0 - 0xF
Relative priority of priority 5 CMDs from port
0.
-
Reserved. Read undefined. Write should be
zero.
0x0 - 0xF
Relative priority of priority 4 CMDs from port
0.
-
Reserved. Read undefined. Write should be
zero.
0x0 - 0xF
Relative priority of priority 3 CMDs from port
0.
-
-
AHB0_PRIORITY4_REL
0x0
ATIVE_PRIORITY
[07:04] [03:00]
Description
AHB0_PRIORITY5_REL
0x0
ATIVE_PRIORITY
[15:12] [11:08]
Reset
Range
value
AHB0_PRIORITY6_REL
0x0
ATIVE_PRIORITY
[23:20] [19:16]
MEM21_CTL register bit assignments
-
AHB0_PRIORITY3_REL
0x0
ATIVE_PRIORITY
Doc ID 018672 Rev 1
RM0082
DDR memory controller (MPMC)
10.13.27 MEM22_CTL register
Table 100. MEM22_CTL register bit assignments
Bit
Name
[31:28] [27:24]
-
Reserved. Read undefined. Write
should be zero.
0x0 - 0xF
Relative priority of priority 2 CMDs
from port 1.
-
Reserved. Read undefined. Write
should be zero.
0x0 - 0xF
Relative priority of priority 1 CMDs
from port 1.
-
Reserved. Read undefined. Write
should be zero.
0x0 - 0xF
Relative priority of priority 0 CMDs
from port 1.
-
Reserved. Read undefined. Write
should be zero.
0x0 - 0xF
Relative priority of priority 7 CMDs
from port 0.
AHB1_PRIORITY1_RELATIVE_
0x0
PRIORITY
-
AHB1_PRIORITY0_RELATIVE_
0x0
PRIORITY
[07:04] [03:00]
-
-
[15:12] [11:08]
Description
AHB1_PRIORITY2_RELATIVE_
0x0
PRIORITY
[23:20] [19:16]
Reset
Range
value
-
AHB0_PRIORITY7_RELATIVE_
0x0
PRIORITY
10.13.28 MEM23_CTL register
Table 101. MEM23_CTL register bit assignments
Bit
Name
[31:28] [27:24]
-
Reserved. Read undefined. Write should be
zero.
0x0 - 0xF
Relative priority of priority 6 CMDs from port
1.
-
Reserved. Read undefined. Write should be
zero.
0x0 - 0xF
Relative priority of priority 5 CMDs from port
1.
-
Reserved. Read undefined. Write should be
zero.
0x0 - 0xF
Relative priority of priority 4 CMDs from port
1.
-
Reserved. Read undefined. Write should be
zero.
0x0 - 0xF
Relative priority of priority 3 CMDs from port
1.
-
-
AHB1_PRIORITY6_REL
0x0
ATIVE_PRIORITY
[07:04] [03:00]
-
AHB1_PRIORITY6_REL
0x0
ATIVE_PRIORITY
[15:12] [11:08]
Description
AHB1_PRIORITY6_REL
0x0
ATIVE_PRIORITY
[23:20] [19:16]
Reset
Range
value
-
AHB1_PRIORITY3_REL
0x0
ATIVE_PRIORITY
Doc ID 018672 Rev 1
167/844
DDR memory controller (MPMC)
RM0082
10.13.29 MEM24_CTL register
Table 102. MEM24_CTL register bit assignments
Bit
Name
[31:28] [27:24]
AHB2_PRIORITY2_RE
LATIVE_PRIORITY
[23:20] [19:16]
AHB2_PRIORITY1_RE
LATIVE_PRIORITY
[15:12] [11:08]
AHB2_PRIORITY0_RE
LATIVE_PRIORITY
[07:04] [03:00]
AHB1_PRIORITY7_RE
LATIVE_PRIORITY
Reset
Range
value
Description
-
-
Reserved. Read undefined. Write should be
zero.
0x0
0x0 - 0xF
Relative priority of priority 2 CMDs from port
2.
-
-
Reserved. Read undefined. Write should be
zero.
0x0
0x0 - 0xF
Relative priority of priority 1 CMDs from port
2.
-
-
Reserved. Read undefined. Write should be
zero.
0x0
0x0 - 0xF
Relative priority of priority 0 CMDs from port
2.
-
-
Reserved. Read undefined. Write should be
zero.
0x0
0x0 - 0xF
Relative priority of priority 7 CMDs from port
1.
10.13.30 MEM25_CTL register
Table 103. MEM25_CTL register bit assignments
Bit
Name
[31:28] [27:24]
168/844
-
Reserved. Read undefined. Write should
be zero.
0x0 - 0xF
Relative priority of priority 6 CMDs from
port 2.
-
Reserved. Read undefined. Write should
be zero.
0x0 - 0xF
Relative priority of priority 5 CMDs from
port 2.
-
Reserved. Read undefined. Write should
be zero.
0x0 - 0xF
Relative priority of priority 4 CMDs from
port 2.
-
Reserved. Read undefined. Write should
be zero.
0x0 - 0xF
Relative priority of priority 3 CMDs from
port 2.
-
-
AHB2_PRIORITY6_RELA
0x0
TIVE_PRIORITY
[07:04] [03:00]
-
AHB2_PRIORITY6_RELA
0x0
TIVE_PRIORITY
[15:12] [11:08]
Description
AHB2_PRIORITY6_RELA
0x0
TIVE_PRIORITY
[23:20] [19:16]
Reset
Range
value
-
AHB2_PRIORITY3_RELA
0x0
TIVE_PRIORITY
Doc ID 018672 Rev 1
RM0082
DDR memory controller (MPMC)
10.13.31 MEM26_CTL register
T
Table 104. MEM26_CTL register bit assignments
Bit
Name
[31:28] [27:24]
-
Reserved. Read undefined. Write should be
zero.
0x0 - 0xF
Relative priority of priority 2 CMDs from port
3.
-
Reserved. Read undefined. Write should be
zero.
0x0 - 0xF
Relative priority of priority 1 CMDs from port
3.
-
Reserved. Read undefined. Write should be
zero.
0x0 - 0xF
Relative priority of priority 0 CMDs from port
3.
-
Reserved. Read undefined. Write should be
zero.
0x0 - 0xF
Relative priority of priority 7 CMDs from port
2.
-
-
AHB3_PRIORITY0_RE
0x0
LATIVE_PRIORITY
[07:04] [03:00]
-
AHB3_PRIORITY1_RE
0x0
LATIVE_PRIORITY
[15:12] [11:08]
Description
AHB3_PRIORITY2_RE
0x0
LATIVE_PRIORITY
[23:20] [19:16]
Reset
Range
value
-
AHB2_PRIORITY7_RE
0x0
LATIVE_PRIORITY
10.13.32 MEM27_CTL register
Table 105. MEM27_CTL register bit assignments
Bit
Name
[31:28] [27:24]
-
Reserved. Read undefined. Write should be
zero.
0x0 - 0xF
Relative priority of priority 6 CMDs from port
3.
-
Reserved. Read undefined. Write should be
zero.
0x0 - 0xF
Relative priority of priority 5 CMDs from port
3.
-
Reserved. Read undefined. Write should be
zero.
0x0 - 0xF
Relative priority of priority 4 CMDs from port
3.
-
Reserved. Read undefined. Write should be
zero.
0x0 - 0xF
Relative priority of priority 3 CMDs from port
3.
-
-
AHB3_PRIORITY6_RE
0x0
LATIVE_PRIORITY
[07:04] [03:00]
-
AHB3_PRIORITY6_RE
0x0
LATIVE_PRIORITY
[15:12] [11:08]
Description
AHB3_PRIORITY6_RE
0x0
LATIVE_PRIORITY
[23:20] [19:16]
Reset
Range
value
-
AHB3_PRIORITY3_RE
0x0
LATIVE_PRIORITY
Doc ID 018672 Rev 1
169/844
DDR memory controller (MPMC)
RM0082
10.13.33 MEM28_CTL register
Table 106. MEM28_CTL register bit assignments
Bit
Name
[31:28] [27:24]
-
Reserved. Read undefined. Write should be
zero.
0x0 - 0xF
Relative priority of priority 2 CMDs from port 4.
-
Reserved. Read undefined. Write should be
zero.
0x0 - 0xF
Relative priority of priority 1 CMDs from port 4.
-
Reserved. Read undefined. Write should be
zero.
0x0 - 0xF
Relative priority of priority 0 CMDs from port 4.
-
Reserved. Read undefined. Write should be
zero.
0x0 - 0xF
Relative priority of priority 7 CMDs from port 3.
-
-
AHB4_PRIORITY0_R
0x0
ELATIVE_PRIORITY
[07:04] [03:00]
-
AHB4_PRIORITY1_R
0x0
ELATIVE_PRIORITY
[15:12] [11:08]
Description
AHB4_PRIORITY2_R
0x0
ELATIVE_PRIORITY
[23:20] [19:16]
Reset
Range
value
-
AHB3_PRIORITY7_R
0x0
ELATIVE_PRIORITY
10.13.34 MEM29_CTL register
Table 107. MEM29_CTL register bit assignments
Bit
Name
[31:28] [27:24]
AHB4_PRIORITY6_REL
ATIVE_PRIORITY
[23:20] [19:16]
AHB4_PRIORITY6_REL
ATIVE_PRIORITY
[15:12] [11:08]
AHB4_PRIORITY6_REL
ATIVE_PRIORITY
[07:04] [03:00]
170/844
AHB4_PRIORITY3_REL
ATIVE_PRIORITY
Reset
Range
value
Description
-
-
Reserved. Read undefined. Write should be
zero.
0x0
0x0 - 0xF
Relative priority of priority 6 CMDs from port
4.
-
-
Reserved. Read undefined. Write should be
zero.
0x0
0x0 - 0xF
Relative priority of priority 5 CMDs from port
4.
-
-
Reserved. Read undefined. Write should be
zero.
0x0
0x0 - 0xF
Relative priority of priority 4 CMDs from port
4.
-
-
Reserved. Read undefined. Write should be
zero.
0x0
0x0 - 0xF
Relative priority of priority 3 CMDs from port
4.
Doc ID 018672 Rev 1
RM0082
DDR memory controller (MPMC)
10.13.35 MEM30_CTL register
Table 108. MEM30_CTL register bit assignments
Bit
Name
[31:04] [03:00]
AHB4_PRIORITY7_REL
ATIVE_PRIORITY
Reset
Range
value
Description
-
-
Reserved. Read undefined. Write should be
zero.
0x0
0x0 - 0xF
Relative priority of priority 7 CMDs from port
4.
10.13.36 MEM31_CTL/MEM32_CTL/MEM33_CTL register
Table 109. MEM31_CTL/MEM32_CTL/MEM33_CTL register bit assignments
Bit
Name
[31:00] -
Reset
Range
value
Description
-
Reserved. Read undefined. Write should be zero.
-
10.13.37 MEM34_CTL register
Table 110. MEM34_CTL register bit assignments
Reset
Range
value
Description
-
-
Reserved. Read undefined. Write should be
zero.
[27:24] CASLAT_LIN_GATE 0x0
0x0 - 0xF
Adjusts data capture gate open by half cycles.
[23:20] -
-
-
Reserved. Read undefined. Write should be
zero.
[19:16] CASLAT_LIN
0x0
0x0 - 0xF
Sets latency from read CMD send to data receive
from/to controller.
[15:12] -
-
-
Reserved. Read undefined. Write should be
zero.
[11:08] APREBIT
0x0
0x0 - 0xF
Location of the auto pre-charge bit in the DRAM
address.
[07:00] -
-
-
Reserved. Read undefined. Write should be
zero.
Bit
Name
[31:28] -
Doc ID 018672 Rev 1
171/844
DDR memory controller (MPMC)
RM0082
10.13.38 MEM35_CTL register
Table 111. MEM35_CTL register bit assignments
Reset
Range
value
Description
[31:28] -
-
-
Reserved. Read undefined. Write should be zero.
[27:24] MAX_ROW
0xF
0x0 - 0xF
Maximum width of memory addresses bus.
READ-ONLY
[23:20] -
-
-
Reserved. Read undefined. Write should be zero.
[19:16] MAX_COL
0xE
0x0 - 0xE
Maximum width of column address in DRAMs.
READ-ONLY
[15:12] -
-
-
Reserved. Read undefined. Write should be zero.
[11:08] INITAREF
0x0
0x0 - 0xF
Number of auto-refresh CMDs to execute during
DRAM initialization.
[07:06] -
-
-
Reserved. Read undefined. Write should be zero.
0x00
0x0 - 0x3F
Initial value of individual CMD aging counters for
CMD aging.
Bit
[05:00]
Name
COMMAND_AGE
_COUNT
10.13.39 MEM36_CTL register
Table 112. MEM36_CTL register bit assignments
Bit
Name
[31:28] [27:24]
Reset
Range
value
Description
-
-
Reserved. Read undefined. Write should be zero.
0x0 - 0xF
Errors/warnings related to the WRR parameters.
READ-ONLY
WRR_PARAM_VA
0x0
LUE_ERR
[23:20] -
-
-
Reserved. Read undefined. Write should be zero.
[19:16] TRP
0x0
0x0 - 0xF
DRAM TRP parameter in cycles.
[15:12] -
-
-
Reserved. Read undefined. Write should be zero.
[11:08] TDAL
0x0
0x0 - 0xF
DRAM TDAL parameter in cycles.
[07:04] -
-
-
Reserved. Read undefined. Write should be zero.
[03:00] Q_FULLNESS
0x0
0x0 - 0xF
Quantity that determines CMD queue full.
10.13.40 MEM37_CTL register
Table 113. MEM37_CTL register bit assignments
Reset
Range
value
Description
[31:29] -
-
-
Reserved. Read undefined. Write should be
zero.
[28:24] TFAW
0x0
0x0 - 0x1F DRAM TFAW parameter in cycles.
Bit
172/844
Name
Doc ID 018672 Rev 1
RM0082
DDR memory controller (MPMC)
Table 113. MEM37_CTL register bit assignments (continued)
Bit
Name
[23:21] [20:16]
Description
-
-
Reserved. Read undefined. Write should be
zero.
0x0 - 0x1F
OCD pull-up adjust setting for DRAMs for chip
select 0.
-
Reserved. Read undefined. Write should be
zero.
0x0 - 0x1F
OCD pull-down adjust setting for DRAMs for chip
select 0.
OCD_ADJUST_PUP
0x0
_CS0
[15:13] [12:08]
Reset
Range
value
-
OCD_ADJUST_PDN
0x0
_CS0
[07:06] -
-
-
Reserved. Read undefined. Write should be
zero.
[05:00] INT_ACK
0x0
0x0 - 0x3F
Clear mask of the INT_STATUS parameter.
WRITE-ONLY
10.13.41 MEM38_CTL register
Table 114. MEM38_CTL register bit assignments
Bit
Name
Reset
Range
value
Description
[31]
-
-
-
Reserved. Read undefined. Write should be zero.
[30:24] INT_STATUS
0x0
0x0 - 0x7F
Status of interrupt features in the controller.
READ-ONLY
[23]
-
-
Reserved. Read undefined. Write should be zero.
[22:16] INT_MASK
0x0
0x0 - 0x7F
Mask for controller_int signals from the
INT_STATUS parameter.
[15:13] -
-
-
Reserved. Read undefined. Write should be zero.
[12:08] TRC
0x0
0x0 - 0x1F DRAM TRC parameter in cycles.
[07:05] -
-
-
[04:00] TMRD
0x0
0x0 - 0x1F DRAM TMRD parameter in cycles.
-
Reserved. Read undefined. Write should be zero.
10.13.42 MEM39_CTL register
Table 115. MEM39_CTL register bit assignments
Bit
Name
[31:15] [14:08]
DLL_DQS_DELA
Y1
Reset
Range
value
Description
-
-
Reserved. Read undefined. Write should be zero.
0x0
0x0 - 0x7F
Fraction of a cycle to delay the dqs signal from the
DRAMs for dll_rd_dqs_slice 1 during READs.
Doc ID 018672 Rev 1
173/844
DDR memory controller (MPMC)
RM0082
Table 115. MEM39_CTL register bit assignments (continued)
Bit
Name
Reset
Range
value
Description
[07]
-
-
-
Reserved. Read undefined. Write should be zero.
[06:00]
DLL_DQS_DELA
0
0x0
0x0 - 0x7F
Fraction of a cycle to delay the dqs signal from the
DRAMs for dll_rd_dqs_slice 0 during READs.
10.13.43 MEM40_CTL register
Table 116. MEM40_CTL register bit assignments
Bit
Name
Reset
Range
value
Description
[31]
-
-
-
Reserved. Read undefined. Write should be zero.
[30:24]
DQS_OUT_
SHIFT
0x0
0x0 - 0x7F
Fraction of a cycle to delay the write dqs signal to the
DRAMs during WRITEs.
-
-
Reserved. Read undefined. Write should be zero.
[23:00] -
10.13.44 MEM41_CTL register
Table 117. MEM41_CTL register bit assignments
Reset
Range
value
Description
[31:23] -
-
-
Reserved. Read undefined. Write should be zero.
[22:16] WR_DQS_SHIFT
0x0
0x0 - 0x7F
Fraction of a cycle to delay the ddr_close signal in
the controller.
[15:00] -
-
-
Reserved. Read undefined. Write should be zero.
Bit
Name
10.13.45 MEM42_CTL register
Table 118. MEM42_CTL register bit assignments
Reset
Range
value
Description
[31:24] TRFC
0x0
0x0 - 0xFF
DRAM TRFC parameter in cycles.
[23:16] TRCD_INT
0x0
0x0 - 0xFF
DRAM TRCD parameter in cycles.
[15:08] TRAS_MIN
0x0
0x0 - 0xFF
DRAM TRAS_MIN parameter in cycles.
[07:00] -
-
-
Reserved. Read undefined. Write should be zero.
Bit
174/844
Name
Doc ID 018672 Rev 1
RM0082
DDR memory controller (MPMC)
10.13.46 MEM43_CTL register
Table 119. MEM43_CTL register bit assignments
Bit
Name
[31:26] [25:16]
Range
Description
-
-
Reserved. Read undefined. Write should be
zero.
0x000 - 0x3FF
Counter value to trigger priority relax on port
1.
-
Reserved. Read undefined. Write should be
zero.
0x000 - 0x3FF
Counter value to trigger priority relax on port
0.
AHB1_PRIORITY
0x000
_RELAX
[15:10] [09:00]
Reset
value
-
AHB0_PRIORITY
0x000
_RELAX
10.13.47 MEM44_CTL register
Table 120. MEM44_CTL register bit assignments
Bit
Name
[31:26] [25:16]
Range
Description
-
-
Reserved. Read undefined. Write should
be zero.
0x000 - 0x3FF
Counter value to trigger priority relax on
port 3.
-
Reserved. Read undefined. Write should
be zero.
0x000 - 0x3FF
Counter value to trigger priority relax on
port 2.
AHB3_PRIORITY_
0x000
RELAX
[15:10] [09:00]
Reset
value
-
AHB2_PRIORITY_
0x000
RELAX
10.13.48 MEM45_CTL register
Table 121. MEM45_CTL register bit assignments
Bit
Name
[31:10] [09:00]
AHB4_PRIORITY
_RELAX
Reset
value
Range
Description
-
-
Reserved. Read undefined. Write should be
zero.
0x000
0x000 - 0x3FF
Counter value to trigger priority relax on port
4.
Doc ID 018672 Rev 1
175/844
DDR memory controller (MPMC)
RM0082
10.13.49 MEM46_CTL register
Table 122. MEM46_CTL register bit assignments
Bit
Name
[31:26] [25:16]
Reset
value
Range
Description
-
-
Reserved. Read undefined. Write should be
zero.
0x000 - 0x3FF
Length of CMD that caused an Out-of-Range
interrupt. READ-ONLY
-
Reserved. Read undefined. Write should be
zero.
OUT_OF_RANGE
0x000
_LENGTH
[15:00] -
-
10.13.50 MEM47_CTL register
Table 123. MEM47_CTL register bit assignments
Reset
value
Range
Description
-
-
Reserved. Read undefined. Write should be
zero.
[25:16] AHB0_WRCNT 0x000
0x000 - 0x7FF
Number of bytes for an INCR WRITE CMD on
port 0.
[15:11] -
-
-
Reserved. Read undefined. Write should be
zero.
[10:00] AHB0_RDCNT
0x000
0x000 - 0x7FF
Number of bytes for an INCR READ CMD on
port 0.
Bit
Name
[31:26] -
10.13.51 MEM48_CTL register
Table 124. MEM48_CTL register bit assignments
176/844
Bit
Name
Reset
value
Range
Description
[31:26]
-
-
-
Reserved. Read undefined. Write should be
zero.
[25:16]
AHB1_WRCNT
0x000
0x000 - 0x7FF
Number of bytes for an INCR WRITE CMD
on port 1.
[15:11]
-
-
-
Reserved. Read undefined. Write should be
zero.
[10:00]
AHB1_RDCNT
0x000
0x000 - 0x7FF
Number of bytes for an INCR READ CMD on
port 1.
Doc ID 018672 Rev 1
RM0082
DDR memory controller (MPMC)
10.13.52 MEM49_CTL register
Table 125. MEM49_CTL register bit assignments
Reset
value
Range
Description
-
-
Reserved. Read undefined. Write should be
zero.
[25:16] AHB2_WRCNT 0x000
0x000 - 0x7FF
Number of bytes for an INCR WRITE CMD on
port 2.
[15:11] -
-
-
Reserved. Read undefined. Write should be
zero.
[10:00] AHB2_RDCNT
0x000
0x000 - 0x7FF
Number of bytes for an INCR READ CMD on
port 2.
Bit
Name
[31:26] -
10.13.53 MEM50_CTL register
Table 126. MEM50_CTL register bit assignments
Reset
value
Range
Description
[31:26] -
-
-
Reserved. Read undefined. Write should be
zero.
[25:16] AHB3_WRCNT
0x000
0x000 - 0x7FF
Number of bytes for an INCR WRITE CMD on
port 3.
[15:11] -
-
-
Reserved. Read undefined. Write should be
zero.
[10:00] AHB3_RDCNT
0x000
0x000 - 0x7FF
Number of bytes for an INCR READ CMD on
port 3.
Bit
Name
10.13.54 MEM51_CTL register
Table 127. MEM51_CTL register bit assignments
Reset
value
Range
Description
[31:26] -
-
-
Reserved. Read undefined. Write should be
zero.
[25:16] AHB4_WRCNT
0x000
0x000 - 0x7FF
Number of bytes for an INCR WRITE CMD on
port 4.
[15:11] -
-
-
Reserved. Read undefined. Write should be
zero.
[10:00] AHB4_RDCNT
0x000
0x000 - 0x7FF
Number of bytes for an INCR READ CMD on
port 4.
Bit
Name
Doc ID 018672 Rev 1
177/844
DDR memory controller (MPMC)
RM0082
10.13.55 MEM52_CTL/MEM53_CTL register
Table 128. MEM52_CTL/MEM53_CTL register bit assignments
Bit
Name
[31:00] -
Reset
value
Range
Description
-
-
Reserved. Read undefined. Write should be
zero.
10.13.56 MEM54_CTL register
Table 129. MEM54_CTL register bit assignments
Reset
value
Range
Description
[31:14] -
-
-
Reserved. Read undefined. Write should be
zero.
[13:00] TREF
0x0000
0x0000 - 0x3FFF DRAM TREF parameter in cycles.
Bit
Name
10.13.57 MEM55_CTL register
Table 130. MEM55_CTL register bit assignments
Bit
Name
[31:15] [14:00]
Reset
value
Range
Description
-
-
Reserved. Read undefined. Write should be
zero.
0x0000 0x7FFF
EMRS3 data.
EMRS3_DA
0x0000
TA
10.13.58 MEM56_CTL register
Table 131. MEM56_CTL register bit assignments
Reset
value
Range
Description
[31:16] TRAS_MAX
0x0000
0x0000 - 0xFFFF
DRAM TRAS_MAX parameter in cycles.
[15:00] TDLL
0x0000
0x0000 - 0xFFFF
DRAM TDLL parameter in cycles.
Bit
Name
10.13.59 MEM57_CTL register
Table 132. MEM57_CTL register bit assignments
Reset
value
Range
Description
[31:16] TXSR
0x0000
0x0000 - 0xFFFF
DRAM TXSR parameter in cycles.
[15:00] TXSNR
0x0000
0x0000 - 0xFFFF
DRAM TXSNR parameter in cycles.
Bit
178/844
Name
Doc ID 018672 Rev 1
RM0082
DDR memory controller (MPMC)
10.13.60 MEM58_CTL register
Table 133. MEM58_CTL register bit assignments
Reset
value
Range
Description
[31:16] -
-
-
Reserved. Read undefined. Write should be
zero.
[15:00] VERSION
0x2041
-
Controller version number. READ-ONLY
Bit
Name
10.13.61 MEM59_CTL register
Table 134. MEM59_CTL register bit assignments
Reset
value
Range
Description
[31:24] -
-
-
Reserved. Read undefined. Write should be
zero.
[23:00] TINIT
0x000000
0x0 - 0xFFFFFF
DRAM TINIT parameter in cycles.
Bit
Name
10.13.62 MEM60_CTL register
Table 135. MEM60_CTL register bit assignments
Bit
Name
[31:00] out_rng_addr
Reset value
0x0000.0000
Range
Description
0x0 - 0xFFFF.FFFF
Lower portion of address of
CMD that caused an Out-ofRange interrupt.
READ-ONLY
10.13.63 MEM61_CTL register
Table 136. MEM61_CTL register bit assignments
Reset
value
Range
Description
[31:02] -
-
-
Reserved. Read undefined. Write should
be zero.
[01:00] out_rng_addr
0x0
0x0 - 0x3
Upper portion of address of CMD that
caused an Out-of-Range interrupt.
READ-ONLY
Bit
Name
Doc ID 018672 Rev 1
179/844
DDR memory controller (MPMC)
RM0082
10.13.64 MEM62_CTL/MEM63_CTL/MEM64_CTL register
Table 137. MEM62_CTL/MEM63_CTL/MEM64_CTL register bit assignments
Bit
Name
[31:00] -
Reset
Range
value
Description
-
Reserved. Read undefined. Write should be zero.
-
10.13.65 MEM65_CTL register
Table 138. MEM65_CTL register bit assignments
Bit
Name
[31:26] -
[25:16]
dll_dqs_dly_byp
s0
[15:00] -
Reset
Range
value
Description
-
-
Reserved. Read undefined. Write should be
zero.
0x0
Number of delay elements to include in the dqs
0x1 - 0x3FF signal from the DRAMs for dll_rd_dqs_slice 0
during READs when DLL is being bypassed.
-
-
Reserved. Read undefined. Write should be
zero.
10.13.66 MEM66_CTL register
Table 139. MEM66_CTL register bit assignments
Reset
Range
value
Description
[31:26] -
-
-
Reserved. Read undefined. Write should be
zero.
[25:16] dll_increment
0x0
0x1 - 0x3FF
Number of elements to add to DLL_START_P
OINT when searching for lock.
[15:10] -
-
-
Reserved. Read undefined. Write should be
zero.
[09:00] dll_dqs_dly_byps1
0x0
Number of delay elements to include in the dqs
0x1 - 0x3FF signal from the DRAMs for dll_rd_dqs_slice
1during READs when DLL is being bypassed.
Bit
Name
10.13.67 MEM67_CTL register
Table 140. MEM67_CTL register bit assignments
Reset
Range
value
Description
[31:26] -
-
-
Reserved. Read undefined. Write should be zero.
[25:16] dll_start_point
0x0
0x1 - 0x3FF
Initial delay count when searching for lock in master
DLL.
Bit
180/844
Name
Doc ID 018672 Rev 1
RM0082
DDR memory controller (MPMC)
Table 140. MEM67_CTL register bit assignments (continued)
Reset
Range
value
Description
[15:10] -
-
-
Reserved. Read undefined. Write should be zero.
[09:00] dll_lock
0x0
0x1 - 0x3FF
Number of delay elements in master DLL lock.
READ ONLY
Bit
Name
10.13.68 MEM68_CTL register
Table 141. MEM68_CTL register bit assignments
Reset
Range
value
Description
[31:26] -
-
-
Reserved. Read undefined. Write should be
zero.
[25:16] wr_dqs_shft_byps
0x0
Number of delay elements to include in the
0x1 - 0x3FF ddr_close signal in the controller when the DLL
is being bypassed.
[15:10] -
-
-
[09:00] dqs_out_shft_byps
0x0
Number of delay elements to include in the write
0x1 - 0x3FF dqs signal to the DRAMs during WRITEs when
the DLL is being bypassed.
Bit
Name
Reserved. Read undefined. Write should be
zero.
10.13.69 MEM[69-97]_CTL register
Table 142. MEM[69-97]_CTL register bit assignments
Bit
Name
[31:00] -
Reset
Range
value
Description
-
Reserved. Read undefined. Write should be zero.
-
10.13.70 MEM[98-99]_CTL register
Table 143. MEM[98-99]_CTL register bit assignments
Bit
Name
Reset
Range
value
[31:00] user_def_reg(x) 0x0
Note:
0x0 - 0xFFFF_FFFF
Description
User defined register.
Only the USER_DEF_REG(0) bit 0 is used in SPEAr300. All the other bits are reserved.
Doc ID 018672 Rev 1
181/844
DDR memory controller (MPMC)
RM0082
10.13.71 MEM100_CTL register
Table 144. MEM100_CTL register bit assignments
Bit
Name
[31:25] [24]
Reset
Range
value
Description
-
-
Reserved. Read undefined. Write should be
zero.
0x0 - 0x1
Allow user to interrupt memory initialization to
enter self refresh mode.
enable_quick_sref
0x0
resh
[23:17] -
-
-
Reserved. Read undefined. Write should be
zero.
[16]
0x0
0x0 - 0x1
Sets DQ/DQS output enable behavior when
controller is idle.
-
-
Reserved. Read undefined. Write should be
zero.
0x0
0x0 - 0x1
Set byte ordering as little endian or big endian.
[07:01] -
-
-
Reserved. Read undefined. Write should be
zero.
[00]
0x0
0x0 - 0x1
Enable command aging in the command queue.
drive_dq_dqs
[15:09] [08]
big_endian_enabl
e
active_aging
10.13.72 MEM101_CTL register
Table 145. MEM101_CTL register bit assignments
Reset
Range
value
Description
[31:25] -
-
-
Reserved. Read undefined. Write should be
zero.
[24]
0x0
0x0 - 0x1
Enable command swapping logic in execution
unit.
[23:17] -
-
-
Reserved. Read undefined. Write should be
zero.
[16]
0x0
0x0 - 0x1
Enable insertion of addition turn around clock
for back to back READs to different css.
[15:09] -
-
-
Reserved. Read undefined. Write should be
zero.
[08]
0x0
0x0 - 0x1
Allow powerup via self-refresh instead of full
memory initialization.
[07:01] -
-
-
Reserved. Read undefined. Write should be
zero.
[00]
0x0
0x0 - 0x1
Enable low power mode in controller.
Bit
182/844
Name
swap_enable
rd2rd_turn
pwrup_srefresh_exit
en_lowpower_mode
Doc ID 018672 Rev 1
RM0082
DDR memory controller (MPMC)
10.13.73 MEM102_CTL register
Table 146. MEM102_CTL register bit assignments
Bit
Name
[31:29] [28:24]
Reset
Range
value
Description
-
-
Reserved. Read undefined. Write should be
zero.
0x0 - 0x1F
Enables automatic entry into the low power
mode on idle.
lowpower_auto_enab
0x0
le
[23:19] -
-
-
Reserved. Read undefined. Write should be
zero.
[18:16] cke_delay
0x0
0x0 - 0x7
Additional cycles to delay CKE for status
reporting.
[15:10] -
-
-
Reserved. Read undefined. Write should be
zero.
0x0 - 0x3
Enable refreshes during power down.
[09:08]
lowpower_refresh_en
0x0
able
[07:01] -
-
-
Reserved. Read undefined. Write should be
zero.
[00]
0x0
0x0 - 0x1
Issue self refresh CMDs to the DRAMs every
TREF cycles.
tref_enable
10.13.74 MEM103_CTL register
Table 147. MEM103_CTL register bit assignments
Reset
Range
value
Description
[31:23] -
-
-
Reserved. Read undefined. Write should be
zero.
[22:08] emrs1_data
0x0
0x0 - 0x7FFF
EMRS1 data.
[07:05] -
-
-
Reserved. Read undefined. Write should be
zero.
[04:00] lowpower_control
0x0
0x0 - 0x1F
Controls entry into the low power modes.
Bit
Name
10.13.75 MEM104_CTL register
Table 148. MEM104_CTL register bit assignments
Reset
value
Range
Description
[31:15] -
-
-
Reserved. Read undefined. Write
should be zero.
[30;16] emrs2_data1
0x0000
0x0000 - 0x7FFF
EMRS2 data for chips select 1.
Bit
Name
Doc ID 018672 Rev 1
183/844
DDR memory controller (MPMC)
RM0082
Table 148. MEM104_CTL register bit assignments (continued)
Bit
Name
Reset
value
Range
Description
[15]
-
-
-
Reserved. Read undefined. Write
should be zero.
0x0000
0x0000 - 0x7FFF
EMRS2 data for chip select 0.
[14:00] emrs2_data0
10.13.76 MEM105_CTL register
Table 149. MEM105_CTL register bit assignments
Reset
Range
value
Description
0x0
0x0 - 0xFFFF
Counts idle cycles to self refresh with memory
and controller clk gating.
[15:00] lowpower_ext_cnt 0x0
0x0 - 0xFFFF
Counts idle cycles to self refresh with memory
clock gating.
Bit
Name
[31:16] lowpower_int_cnt
10.13.77 MEM106_CTL register
Table 150. MEM106_CTL register bit assignments
Reset
Range
value
Description
[31:16] lowpower_rfsh_hold
0x0
0x0 - 0xFFFF
Re-Sync counter for DLL in Clock Gate
Mode.
[15:00] lowpower_pwdwn_cnt
0x0
0x0 - 0xFFFF Counts idle cycles to memory powerdown.
Bit
Name
10.13.78 MEM107_CTL register
Table 151. MEM107_CTL register bit assignments
Reset
Range
value
Description
[31:16] tcpd
0x0
0x0 - 0xFFFF
DRAM TCPD parameter in cycles.
[15:00] lowpower_srfsh_cnt
0x0
0x0 - 0xFFFF
Counts idle cycles to memory self refresh.
Bit
Name
10.13.79 MEM108_CTL register
Table 152. MEM108_CTL register bit assignments
Reset
Range
value
Description
[31:16] Reserved
-
-
Reserved. Read undefined. Write should be zero.
[15:00] TPDEX
0x0
0x0 - 0xFFFF
DRAM TPDEX parameter in cycles.
Bit
184/844
Name
Doc ID 018672 Rev 1
RM0082
DDR memory controller (MPMC)
10.14
Summary of memory controller parameters
Note:
The table below gives a description of the parameters referred to throughout this chapter. To
fully understand the concepts related to each parameter, please refer to the relevant
sections of the document.
Table 153. Memory controller parameters
Parameter
Description
AGING[0]
Enables aging of commands in the command queue when using the
placement logic to fill the command queue.
The total number of cycles required to decrement the priority value on a
command by one is the product of the values in the age_count and
command_age_count parameters.
1'b0 - Disabled
1'b1 - Enabled
addr_cmp_en [0]
Enables address collision/data coherency detection as a condition
when using the placement logic to fill the command queue.
1'b0 - Disabled
1'b1 - Enabled
addr_pins [2:0]
Defines the difference between the maximum number of address pins
configured (15) and the actual number of pins being used. The user
address is automatically shifted so that the user address space is
mapped contiguously into the memory map based on the value of this
parameter. For details, please refer to Section 10.9 on page 142.
age_count [5:0]
Holds the initial value of the master aging-rate counter. When using the
placement logic to fill the command queue, the command aging
counters will be decremented one each time the master aging-rate
counter counts down age_count cycles.
ahbX_fifo_type_reg [1:0]
Sets the correlation of the clock domains between AHB port X and the
Memory Controller core clock.
2'b00 - Asynchronous
2'b01 - 2:1 Reserved
2'b10 - 1:2 Port: Core Pseudo-Synchronous
2'b11 - Synchronous
ahbX_port_ordering [2:0]
Used in weighted round-robin arbitration to modify the order than the
ports are scanned when multiple commands are at the same priority
level and have the same relative priorities.
ahbX_priority_relax [9:0]
Holds the counter value for AHB port X at which the priority relax
condition is triggered in weighted round robin arbitration.
ahbX_priorityY_relative_pri Holds the relative priority of AHB port X for priority Y commands in
ority [3:0]
weighted round robin arbitration.
ahbX_r_priority [2:0]
Sets the priority of READ commands from AHB port X. A value of 0 is
the highest priority.
Doc ID 018672 Rev 1
185/844
DDR memory controller (MPMC)
RM0082
Table 153. Memory controller parameters (continued)
186/844
Parameter
Description
ahbX_rdcnt [10:0]
Holds the number of bytes to be responded to AHB port X after an
INCR READ AHB command. The AHB logic will subdivide an INCR
request into Memory Controller core commands of the size of this
parameter. The logic will continue requesting bursts of this size as soon
as the previous request has been received by the AHB port. If the INCR
command is terminated on an unnatural boundary, the logic will discard
the unnecessary words.
The value defined in this parameter should be a multiple of the number
of bytes in the AHB port width. Clearing this parameter will cause the
port to issue commands of 0 length to the Memory Controller core,
which the core interprets as the pre-configured value of 1024 bytes.
ahbX_w_priority [2:0]
Sets the priority of WRITE commands from AHB port X. A value of 0 is
the highest priority.
ahbX_wrcnt [10:0]
Holds the number of bytes to send to the Memory Controller core from
AHB port X for an INCR WRITE AHB command. The AHB logic will
subdivide an INCR request into Memory Controller core commands of
the size of this parameter. The logic will continue sending bursts of this
size as the previous request has been transmitted by the AHB port. If
the INCR command is terminated on an unnatural boundary, the logic
will discard the unnecessary words.
The value defined in this parameter should be a multiple of the number
of bytes in the AHB port width. Clearing this parameter will cause the
port to issue commands of 0 length to the Memory Controller core,
which the core interprets as the pre-configured value of 1024 bytes.
ap [0]
Enables auto pre-charge mode for DRAM devices.(1)
'b0 - Auto pre-charge mode disabled. Memory banks will stay open until
another request requires this bank, the maximum open time (tras_max)
has elapsed, or a refresh command closes all the banks.
'b1 - Auto pre-charge mode enabled. All READ and WRITE
transactions must be terminated by an auto pre-charge command.
If a transaction consists of multiple READ or write bursts, only the last
command is issued with an auto pre-charge.
aprebit [3:0]
Defines the location of the auto pre-charge bit in the DRAM address in
decimal encoding.(1)
arefresh [0]
Begins an automatic refresh to the DRAM devices based on the setting
of the auto_refresh_mode parameter. If there are any open banks when
this parameter is set, the Memory Controller will automatically close
these banks before issuing the auto-refresh command. This parameter
will always read back 'b0.
1'b0 - No action
1'b1 - Issue refresh to the DRAM devices
Doc ID 018672 Rev 1
RM0082
DDR memory controller (MPMC)
Table 153. Memory controller parameters (continued)
Parameter
Description
auto_refresh_mode [0]
Sets the mode to be performed as the automatic refresh will occur. If
auto_refresh_mode is set and a refresh is required to memory, the
Memory Controller will either delay this refresh until the end of the
current transaction has been reached (if the transaction is fully
contained inside a single page), or until the current transaction hits the
end of the current page.
1'b0 - Issue refresh on the next DRAM burst boundary, even if the
current command is not complete.
1'b1 - Issue refresh on the next command boundary.
bank_split_en [0]
Enables bank splitting as a condition when using the placement logic to
fill the command queue.
1'b0 - Disabled
1'b1 - Enabled
big_endian_en [0]
Selects the byte ordering for Memory Controllers with programmable
endian setting.
1'b0 - Little Endian
1'b1 - Big Endian
caslat [2:0]
Sets the CAS latency encoding that the memory uses. The binary value
of this parameter is dependent on the memory device, since the same
caslat value may have different meanings to different memories. This
will be programmed into the DRAM devices at initialization. The CAS
encoding will be specified in the DRAM spec sheet, and should
correspond to the caslat_lin parameter.
caslat_lin [3:0]
Sets the CAS latency linear value as half-cycles expressed increments
number.
This sets an internal adjustment for the delay since the READ
command is sent from the Memory Controller until data will be received
back. The timing window inside which the data is captured is a fixed
length. The caslat_lin parameter adjusts the start of this data capture
window.
Not all linear values are supported by every memory devices: please
refer to the specification for the memory devices being actually used.
4'b0000 - 4'b0001 - Reserved
4'b0010 -1 cycle
4'b0011 - 1.5 cycles
4'b0100 - 2 cycles
4'b0101 - 2.5 cycles
4'b0110 - 3 cycles
4'b0111 - 3.5 cycles
4'b1000 - 4 cycles
4'b1001 - 4.5 cycles
4'b1010 - 5 cycles
4'b1011 - 5.5 cycles
4'b1100 - 6 cycles
4'b1101 - 6.5 cycles
4'b1110 - 7 cycles
4'b1111 - 7.5 cycles
Doc ID 018672 Rev 1
187/844
DDR memory controller (MPMC)
RM0082
Table 153. Memory controller parameters (continued)
Parameter
Description
caslat_lin_gate [3:0]
Adjusts the data capture gate open time by half-cycle expressed
increments number.
This parameter is set differently than caslat_lin one whether there are
fixed offsets in the flight path between the memories and the Memory
Controller for clock gating. When caslat_lin_gate is a larger value than
caslat_lin, the data capture window will become shorter. A
caslat_lin_gate value smaller than caslat_lin may have no effect on the
data capture window, depending on the fixed offsets in the device and
the board.
4'b0000 - 4’b0001 - Reserved
4'b0010 - 1 cycle
4'b0011 - 1.5 cycles
4'b0100 - 2 cycles
4'b0101 - 2.5 cycles
4'b0110 - 3 cycles
4'b0111 - 3.5 cycles
4'b1000 - 4 cycles
4'b1001 - 4.5 cycles
4'b1010 - 5 cycles
4'b1011 - 5.5 cycles
4'b1100 - 6 cycles
4'b1101 - 6.5 cycles
4'b1110 - 7 cycles
4'b1111 - 7.5 cycles
cke_delay [2:0]
Sets the number of additional cycles of delay to include in the CKE
signal cke_status for status reporting. The default delay is 0 cycles.
column_size [2:0]
Shows the difference between the maximum column width available
(14) and the actual number of column pins being used. The user
address is automatically shifted so that its space is mapped
contiguously into the memory map based on the value of this
parameter. For details, refer to Section 10.9 on page 142.
Holds the initial value of the command aging counters associated with
each command in the command queue. When using the placement
command_age_count [5:0] logic to fill the command queue, the command aging counters
decrement one each time the master aging-rate counter counts down
age_count cycles.
concurrentap [0]
188/844
Enables concurrent auto pre-charge. Some DRAM devices do not allow
one bank to be auto pre-charged while another bank is reading or
writing. The JEDEC standard allows concurrent auto pre-charge. Set
this parameter for the DRAM device being used.
1'b0 - Concurrent auto pre-charge disabled.
1'b1 - Concurrent auto pre-charge enabled.
Doc ID 018672 Rev 1
RM0082
DDR memory controller (MPMC)
Table 153. Memory controller parameters (continued)
Parameter
Description
cs_map [1:0]
Sets the mask that determines which chip select pins are active, with
each bit representing a different chip select. The user address chip
select field will be mapped into the active chip selects indicated by this
parameter in ascending order from lowest to highest. This allows the
Memory Controller to map the entire contiguous user address into any
group of chip selects. Bit 0 of this parameter corresponds to chip select
[0], bit 1 corresponds to chip select [1], etc.
The number of chip selects, i.e. the number of bits set to 1 in this
parameter, must be a power of 2.
ddrii_sdram_mode [0]
Selects between the DDR1(Mobile) and DDR2 modes of operation.(2)
1'b0 - DDR1(mobile) mode
1'b1 - DDR2 mode
dll_bypass_mode [0]
Defines the behavior of the DLL bypass logic and establishes which set
of delay parameters will be used.
When dll_bypass_mode is set to 'b0, the values programmed in the
dll_dqs_delay_X, dqs_out_shift, and wr_dqs_shift are used. These
parameters add fractional increments of the clock to the specified lines.
When dll_bypass_mode is set to 'b1, the values programmed into the
dll_dqs_delay_bypass_X, dqs_out_shift_bypass, and
wr_dqs_shift_bypass are used. These parameters specify the actual
number of delay elements added to each of the lines. If the total delay
time programmed into the delay parameters exceeds the number of
delay elements in the delay chain, the delay will be set to the maximum
number of delay elements in the delay chain.
1'b0 - Normal operational mode.
1'b1 - Bypass the DLL master delay line.
dll_dqs_delay_X [6:0]
Sets the delay for the read_dqs signal from the DDR SDRAM devices
for dll_rd_dqs_slice X. This delay is used center the edges of the
read_dqs signal so that the READ data will be captured in the middle of
the valid window in the I/O logic.
Each increment of this parameter adds a delay of 1/128 of the system
clock. The same delay will be added to the read_dqs signal for each
byte of the READ data. (3)
dll_dqs_delay_bypass_X
[9:0]
Sets the delay for the read_dqs signal from the DDR SDRAM devices
for dll_rd_dqs_slice X for READs when the DLL is being bypassed. This
delay is used to center the edges of the read_dqs signal so that the
READ data will be captured in the middle of the valid window in the I/O
logic.
The value programmed into this parameter sets the actual number of
delay elements in the read_dqs line. The same delay will be added to
the read_dqs signal for each byte of the READ data. If the total delay
time programmed exceeds the number of delay elements in the delay
chain, the delay will be set internally to the maximum number of delay
elements available.(4)
dll_increment [9:0]
Defines the number of delay elements to recursively increment the
dll_start_point parameter with when searching for lock.
Doc ID 018672 Rev 1
189/844
DDR memory controller (MPMC)
RM0082
Table 153. Memory controller parameters (continued)
Parameter
Description
dll_lock [9:0]
Shows the actual number of delay elements used to capture one full
clock cycle. This parameter is automatically updated every time a
refresh operation is performed. This parameter is read-only.
dll_start_point [9:0]
Sets the number of delay elements to place in the master delay line to
start searching for lock in master DLL.
dlllockreg [0]
DLL lock/unlock. This parameter is read-only.
dqs_n_en [0]
Enables differential data strobe signals from the DRAM.
1'b0 - Single-ended DQS signal from the DRAM.
1'b1 - Differential DQS signal from the DRAM.
dqs_out_shift [6:0]
Sets the delay for the clk_dqs_out signal of the ddr_close to ensure
correct data capture in the I/O logic. Each increment of this parameter
adds a delay of 1/128 of the system clock. (5)
Sets the delay for the clk_dqs_out signal of the ddr_close when the DLL
is being bypassed. This is used to ensure correct data capture in the
I/O logic.
dqs_out_shift_bypass [9:0] The value programmed into this parameter sets the actual number of
delay elements in the clk_dqs_out line. If the total delay time
programmed exceeds the number of delay elements in the delay chain,
the delay will be set internally to the maximum number of delay
elements available. (6)
190/844
drive_dq_dqs [0]
Selects whether the DQ output enables and DQS output enables will be
driven active when the Memory Controller is in idle state.
1'b0 - Leave the output enables de-asserted when idle.
1'b1 - Drive the output enables active when idle.
eight_bank_mode [0].
Reports that the memory devices have eight banks.
1'b0 - Memory devices have 4 banks.
1'b1 - Memory devices have 8 banks
emrs1_data [14:0]
Holds the EMRS1 data written during DDRII initialization. The contents
of this parameter will be programmed into the DRAM at initialization or
when the write_modereg parameter is set to 1'b1. Consult the DRAM
specification for the correct settings of this parameter.
emrs2_data_X [14:0]
Holds the EMRS2 data written during DDRII initialization for chip select
X. The contents of this parameter will be programmed into the DRAM at
initialization or when the write_modereg parameter is set to 1'b1.
Consult the DRAM specification for the correct settings for this
parameter.
emrs3_data [14:0]
Holds the EMRS3 data written during DDRII initialization. The contents
of this parameter will be programmed into the DRAM at initialization or
when the write_modereg parameter is set to 1'b1. Consult the DRAM
specification for the correct settings for this parameter.
en_lowpower_mode [0]
Enables the mobile mode of the Memory Controller. (7)
1'b0 - Disabled
1'b1 - Enabled
Doc ID 018672 Rev 1
RM0082
DDR memory controller (MPMC)
Table 153. Memory controller parameters (continued)
Parameter
Description
enable_quick_srefresh [0]
When this bit is set, the memory initialization sequence will be
interrupted and self-refresh mode will be entered.
1'b0 - Continue memory initialization.
1'b1 - Interrupts memory initialization and enter self-refresh mode.
fast_write [0]
Controls the mode and timing the WRITE commands are issued toward
the DRAM devices.
1'b0 - The Memory Controller will issue a WRITE command to the
DRAM devices as it has received enough data for one DRAM burst. In
this mode, WRITE data can be sent in any cycle relative to the WRITE
command. This mode also allows multi-word WRITE command data to
arrive in non-sequential cycles.
1'b1 - The Memory Controller will issue a WRITE command to the
DRAM devices after the first word of the WRITE data is received by the
Memory Controller. The first word can be sent at any time relative to the
WRITE command. In this mode, multi-word WRITE command data
must be available to the Memory Controller in sequential cycles.
initaref [3:0]
Defines the number of auto-refresh commands needed by the DRAM
devices to satisfy the initialization sequence.
int_ack [5:0]
Sets the clearing of the int_status parameter.
If any of the int_ack bits are set to 'b1 the corresponding bit in the
int_status parameter will be set to 'b0. Any int_ack bits set to 1'b0 does
not affect the corresponding bit in the int_status parameter. This
parameter will always read back as “0”.
int_mask [6:0]
Active-high mask bits that control the value of the Memory controller_int
signal on the Memory Controller interface. This mask is inverted and
then logically AND'ed with the outputs of the int_status parameter.
int_status [6:0]
Reports the status of all possible interrupts generated by the Memory
Controller. The MSB is the result of a logical OR of all the lower bits.
This parameter is read-only.
The int_status bits correspond to these interrupts:
Bit 0 - A single access outside the defined PHYSICAL memory space
detected.
Bit 1 - Multiple accesses outside the defined PHYSICAL memory space
detected.
Bit 2 - DRAM initialization complete.
Bit 3 - Address cross page boundary detected.
Bit 4 - Both DDR2 and Mobile modes have been enabled.
Bit 5 - DLL unlock condition detected.
Bit 6 - Logical OR of all other bits.
intrptapburst [0]
Controls whether an interruption of an auto pre-charge command, by
another command for a different bank, is allowed.
If enabled, the current operation will be interrupted.
However, the bank will be pre-charged as if the current operation were
allowed to continue.
1'b0 - Interrupt Disable.
1'b1 - Interrupt Enable.
Doc ID 018672 Rev 1
191/844
DDR memory controller (MPMC)
RM0082
Table 153. Memory controller parameters (continued)
192/844
Parameter
Description
intrptreada [0]
Controls whether an interruption of a combined READ with auto precharge command, by another READ command toward the same bank
before the current READ command has been completed, is allowed.
1'b0 - Interrupt Disable.
1'b1 - Interrupt Enable.
intrptwritea [0]
Controls whether an interruption of a combined WRITE with auto precharge command, by another READ or WRITE command toward the
same bank before the current WRITE command has been completed,
is allowed.
1'b0 - Interrupt Disable.
1'b1 - Interrupt Enable.
Lowpower_auto_enable
[4:0]
Sets automatic entry into the low power modes for the Memory
Controller.
Bit 0 - Controls memory self-refresh with memory and controller clock
gating mode (Mode 5).
Bit 1 - Controls memory self-refresh with memory clock gating mode
(Mode 4).
Bit 2 - Controls memory self-refresh mode (Mode 3).
Bit 3 - Controls memory power-down with memory clock gating mode
(Mode 2).
Bit 4 - Controls memory power-down mode (Mode 1).
For every bit:
1'b0 - Automatic entry into this mode is disabled. The user may enter
this mode manually by setting the associated lowpower_control bit.
1this parameter is set to ''b1 - Automatic entry into this mode is
enabled. The mode will be entered automatically when the proper
counters expire, and only if the associated lowpower_control bit is set.
Please refer to Section 10.7 on page 135 for more details.
lowpower_control [4:0]
Controls the individual low power modes of the device.
Bit 0 - Controls memory self-refresh with memory and controller clock
gating mode (Mode 5).
Bit 1 - Controls memory self-refresh with memory clock gating mode
(Mode 4).
Bit 2 - Controls memory self-refresh mode (Mode 3).
Bit 3 - Controls memory power-down with memory clock gating mode
(Mode 2).
Bit 4 - Controls memory power-down mode (Mode 1).
For every bit:
1'b0 - Disabled.
1'b1 - Enabled.
Please refer to Section 10.7 on page 135 for more details.
lowpower_external_cnt
[15:0]
Counts the number of idle cycles before memory self-refresh with
memory clock gating low power mode.
Please refer to Section 10.7 on page 135 for more details.
Doc ID 018672 Rev 1
RM0082
DDR memory controller (MPMC)
Table 153. Memory controller parameters (continued)
Parameter
Description
lowpower_internal_cnt
[15:0]
Counts the number of idle cycles before memory self-refresh with
memory and controller clock gating low power mode.
Please refer to Section 10.7 on page 135 for more details.
Counts the number of idle cycles before either memory power-down or
lowpower_power_down_cn power-down with memory clock gating low power mode.
t [15:0]
Please refer to Section 10.7 on page 135 for more details.
lowpower_refresh_enable
[1:0]
Sets whether refreshes will occur while the Memory Controller is in any
of the low power modes.
1'b0 - Refreshes still occur
1'b1 - Refreshes do not occur
Please refer to Section 10.7 on page 135 for more details.
lowpower_refresh_hold
[15:0]
Sets the number of cycles that the Memory Controller will wait before
attempting to re-lock the DLL when using the controller clock gating
mode low power mode. This counter will ONLY be used in this mode,
the deepest low power mode.
When this counter expires, the DLL will be un-gated for at least 16
cycles during which the DLL will attempt to re-lock. After 16 cycles have
elapsed and the DLL has locked, the DLL controller clock will be gated
again and the counter will reset to this value. If the DLL requires more
than 16 cycles to re-lock, the un-gated time will be longer.
Please refer to Section 10.7 on page 135 for more details.
Counts the number of cycles to the next memory self-refresh low power
lowpower_self_refresh_cnt mode.
[15:0]
Please refer to Section 10.7 on page 135 for more details.
max_col_reg [3:0]
Shows the maximum width of column address in the DRAM devices.
This value can be used to set the column_size parameter. This
parameter is read-only.
column_size = max_col_reg - <number of column bits in memory
device>.
max_cs_reg [1:0]
Defines the maximum number of chip selects for the Memory Controller
as the log2 of the number of chip selects.
max_row_reg [3:0]
Shows the maximum width of the memory address bus (number of row
bits) for the Memory Controller. This value can be used to set the
addr_pins parameter. This parameter is read-only.
addr_pins = max_row_reg - <number of row bits in memory device>.
no_cmd_init [0]
Disables DRAM commands until DLL initialization is complete and tdll
has expired.
1'b0 - Issue only REF and PRE commands during DLL initialization of
the DRAM devices.
1'b1 - Do not issue any type of command during DLL initialization of the
DRAM devices.
ocd_adjust_pdn_cs [4:0]
Sets the off-chip driver (OCD) pull-down adjustment settings for the
DRAM devices. The Memory Controller will issue OCD adjust
commands to the DRAM devices during power up.
Bits 3:0 - Number of OCD adjust commands to be issued.
Bit 4 - Increment(1) or decrement(0) OCD settings.
Doc ID 018672 Rev 1
193/844
DDR memory controller (MPMC)
RM0082
Table 153. Memory controller parameters (continued)
194/844
Parameter
Description
ocd_adjust_pup_cs [4:0]
Sets the off-chip driver (OCD) pull-up adjustment settings for the DRAM
devices. The Memory Controller will issue OCD adjust commands to
the DRAM devices during power up.
Bits 3:0 - Number of OCD adjust commands to be issued.
Bit 4 - Increment(1) or decrement(0) OCD settings.
odt_add_turn_clk_en [0]
Adds a turn-around clock between back-to-back READs or back-toback WRITEs to different chip selects. The additional clock may be
needed at higher clock frequencies.
The “turn off” and “turn on” time of termination resistors are not
scalable. At higher clock frequencies, it is possible that these times may
overlap, resulting in two active resistors while the DQS line is still active.
This could compromise the signal integrity of the DQS signal. The
additional clock prevents this overlap.
1'b0 - No additional clocking required.
1'b1 - Additional clock added for back-to-back READs or back-to-back
WRITEs that occur to different banks.
odt_rd_map_csX [1:0]
Sets up which (if any) chip(s) will have their ODT termination active
while a READ occurs on chip select X.(8)
i.e. Since that the system consists of 2 chip selects if the
odt_rd_map_cs0 is set to ‘b10, then when CS0 is performing a READ,
CS1 will have active ODT termination.
Bit 0 - If set to ‘b1 CS0 will have active ODT termination when chip
select X us performing a READ.
Bit 1 - If set to ‘b1 CS1 will have active ODT termination when chip
select X is performing a READ.
odt_wr_map_csX [1:0]
Sets up which (if any) chip(s) will have their ODT termination active
while a WRITE occurs on chip select X.(9)
i.e. Since that the system consists of 2 chip selects, if the
odt_wr_map_cs0 is set to ‘b10, then when CS0 is performing a WRITW,
CS1 will have active ODT termination.
Bit 0 = CS0 will have active ODT termination when chip select X is
performing a WRITE.
Bit 1 = CS1 will have active ODT termination when chip select X is
performing a WRITE.
out_of_range_addr [33:0]
Holds the address of the command that has begotten an out-of-range
interrupt request to the memory devices. This parameter is read-only.
For more information on out-of-range address checking, refer to
Section 10.8 on page 140.
out_of_range_length [9:0]
Holds the length of the command that has begotten an out-of-range
interrupt request to the memory devices. This parameter is read-only.
For more information on out-of-range address checking, refer to
Section 10.8 on page 140.
out_of_range_source_id
[2:0]
Holds the Source ID of the command that has begotten an out-of-range
interrupt request to the memory devices. This parameter is read-only.
For more information on out-of-range address checking, refer to
Section 10.8 on page 140.
Doc ID 018672 Rev 1
RM0082
DDR memory controller (MPMC)
Table 153. Memory controller parameters (continued)
Parameter
Description
out_of_range_type [1:0]
Holds the type of command that caused an out-of-range interrupt
request to the memory devices. This parameter is read-only.
For more information on out-of-range address checking, refer to
Section 10.8 on page 140.
placement_en [0]
Enables using the placement logic to fill the command queue.
1‘b0 - Placement logic is disabled. The command queue is a straight
FIFO.
1‘b1 - Placement logic is enabled. The command queue will be filled
according to the placement logic factors.
power_down [0]
When this parameter is set to 1'b1, the Memory Controller will complete
processing of the current burst for the current transaction (if any), issue
a pre-charge all command and then disable the clock enable signal to
the DRAM devices. Any subsequent commands in the command queue
will be suspended until this parameter is set to 1'b0.
1'b0 - Enable full power state.
1'b1 - Disable the clock enable and power down the Memory Controller.
priority_en [0]
Controls priority as a condition when using the placement logic to fill the
command queue.
1'b0 - Disabled
1'b1 - Enabled
pwrup_srefresh_exit [0]
Controls controller to exit power-down mode by executing a self-refresh
instead of the full memory initialization.
1'b0 - Disabled
1'b1 - Enabled
q_fullness [3:0]
Defines quantity of data that will be considered full for the command
queue.
rd2rd_turn [0]
Adds an additional clock between back-to-back READ operations to
different chip selects. The extra clock is required for mobile DDR
devices where:
tac_max > (period/2+tac_min)
Without this additional clock, the first READ may drive DQS out at
tac_max and the second READ may drive DQS out at tac_min,
resulting in a contention on the DQS line.
1'b0 - Disabled
1'b1 - Enabled
reduc [0]
Controls the width of the memory datapath. When enabled, the upper
half of the memory buses (DQ, DQS and DM) are unused and relevant
data only exists in the lower half of the buses. This parameter expands
the Memory Controller for use with memory devices of the configured
width or half of the configured width.
For more information on half datapath mode, refer to Section 10.8 on
page 140.
1'b0 - Standard operation using full memory bus.
1'b1 - Memory datapath width is half of the maximum size.
Doc ID 018672 Rev 1
195/844
DDR memory controller (MPMC)
RM0082
Table 153. Memory controller parameters (continued)
196/844
Parameter
Description
reg_dimm_enable [0]
Enables registered DIMM operations to control the address and
command pipeline of the Memory Controller.
1'b0 - Normal operation
1'b1 - Enable registered DIMM operation.
rtt_0 [1:0]
Defines the On-Die termination resistance for all DRAM devices. The
Memory Controller can not be set for different termination values for
each chip select.
2'b00 - Termination Disabled
2'b01 - 75 Ohm
2'b10 - 150 Ohm
2'b11 - Reserved
rtt_pad_termination [1:0]
Sets the termination resistance in the Memory Controller pads. The
Memory Controller decodes this information and sets the
param_75_ohm_sel output signal accordingly. The param_75_ohm_sel
signal will be asserted if this parameter is set to 'b01 and de-asserted
otherwise. This parameter also disables the output signal tsel, an
active-high, dynamic signal which is used in the pads to enable
termination on READs. If this parameter is set to 2'b00, the tsel signal
will be held low.
2'b00 = Termination Disabled
2'b01 = 75 Ohm
2'b10 = 150 Ohm
2'b11 = Reserved
rw_same_en [0]
Enables READ/WRITE grouping as a condition when using the
placement logic to fill the command queue.
1'b0 - Disabled
1'b1 - Enabled
srefresh [0]
When this parameter is set to 1'b1, the DRAM device(s) will be placed
in self-refresh mode. For this, the current burst for the current
transaction (if any) will complete, all banks will be closed, the selfrefresh command will be issued to the DRAM, and the clock enable
signal will be de-asserted. The system will remain in self-refresh mode
until this parameter is set to 1'b0. The DRAM devices will return to
normal operating mode after the self-refresh exit time (txsr) of the
device and any DLL initialization time for the DRAM is reached. The
Memory Controller will resume processing of the commands from the
break point.
This parameter will be updated with an assertion of the srefresh_enter
pin, regardless of the behavior on the register interface. To disable selfrefresh again after a srefresh_enter pin assertion, the user will need to
clear the parameter to 1'b0.
1'b0 - Disable self-refresh mode.
1'b1 - Begin self-refresh of the DRAM devices.
Doc ID 018672 Rev 1
RM0082
DDR memory controller (MPMC)
Table 153. Memory controller parameters (continued)
Parameter
Description
start [0]
With this parameter set to 'b0, the Memory Controller will not issue any
command to the DRAM devices or respond to any signal activity except
for reading and writing parameters.
Once this parameter is set to 'b1, the Memory Controller will respond to
inputs from the device. When set, the Memory Controller begins its
initialization routine. When the interrupt bit in the int_status parameter
associated with completed initialization is set, the user may begin to
submit transactions.
1'b0 - Controller is not in active mode.
1'b1 - Begin active mode for the Memory Controller.
swap_en [0]
Enables swapping of the active command for a new higher-priority
command when using the placement logic.
1’b0 - Disabled
1’b1 - Enabled
tcke [2:0]
Defines the minimum CKE pulse width, in cycles.
tcpd [15:0]
Defines the clock enable to pre-charge delay time for the DRAM
devices, in cycles.
tdal [3:0]
Defines the auto pre-charge WRITE recovery time when auto precharge is enabled (ap is set), in cycles. This is defined internally as tRP
(pre-charge time)+auto pre-charge WRITE recovery time.
Not all memories use this parameter. If tDAL is defined in the memory
specification, then program this parameter to the specified value. If the
memory does not specify a tDAL time, then this parameter should be
set to tWR+tRP.
If this parameter is set to of 0x0 the Memory Controller will not function
properly when auto pre-charge is enabled.
tdll [15:0]
Defines the DRAM DLL lock time, in cycles.
temrs [2:0]
Defines the DRAM extended mode parameter set time, in cycles.
tfaw [4:0]
Defines the DRAM tFAW parameter, in cycles.
tinit [23:0]
Defines the DRAM initialization time, in cycles.
tmrd [4:0]
Defines the DRAM mode register set command time, in cycles.
tpdex [15:0]
Defines the DRAM power-down exit command period, in cycles.
tras_lockout [0]
Defines the tRAS lockout setting for the DRAM device. tRAS lockout
allows the Memory Controller to execute auto pre-charge commands
before the tras_min parameter has expired.
1’b0 - tRAS lockout not supported by memory device.
1’b1 - tRAS lockout supported by memory device.
tras_max [15:0]
Defines the DRAM maximum row active time, in cycles.
tras_min [7:0]
Defines the DRAM minimum row activate time, in cycles.
trc [4:0]
Defines the DRAM period between active commands for the same
bank, in cycles.
trcd_int [7:0]
Defines the DRAM RAS to CAS delay, in cycles
Doc ID 018672 Rev 1
197/844
DDR memory controller (MPMC)
RM0082
Table 153. Memory controller parameters (continued)
Parameter
Description
tref [13:0]
Defines the DRAM cycles between refresh commands.
Please refer to Section 10.8 on page 140 to have more details.
tref_enable [0]
Enables internal refresh commands. If command refresh mode is
configured, then refresh commands will be issued based on the internal
tref counter and any refresh commands sent through the command
interface.
1'b0 - Internal refresh commands disabled.
1'b1 - Internal refresh commands enabled.
trfc [7:0]
Defines the DRAM refresh command time, in cycles.
Please refer to Section 10.8 on page 140 to have more details.
trp [3:0]
Defines the DRAM pre-charge command time, in cycles.
trrd [2:0]
Defines the DRAM activate to activate delay for different banks, in
cycles.
trtp [2:0]
Defines the DRAM tRTP (READ to pre-charge time) parameter, in
cycles.
twr_int [2:0]
Defines the DRAM WRITE recovery time, in cycles.
twtr [2:0]
Sets the number of cycles needed to switch from a WRITE to a READ
operation, as requested by the DDR SDRAM specification.
txsnr [15:0]
Defines the DRAM tXSNR parameter, in cycles.
txsr [15:0]
Defines the DRAM self-refresh exit time, in cycles.
user_def_reg_0 [31:0]
Bit[31:1] - Reserved
Bit[0] - Controls READ data retime:
1'b0 = Read data retime in circuit
1'b1 = Read data retime is bypassed
For more information on the READ data retime function, please refer to
Section 10.8.4 on page 142.
user_def_reg_1 [31:0]
This register is not used in the device and should be considered as
reserved.
version [15:0]
Holds the Memory Controller version number for this controller. This
parameter is read-only For the actual silicon revision (XX,YY) the
controller revision is 0x2041
Controls the weighted round-robin latency option.
weighted_round_robin_late 1'b0 - Counters only count when their port has a command waiting to
ncy _control [0]
be processed.
1'b1 - Counters are always running.
Reports that the port pair is tied together in arbitration decisions during
weighted round-robin arbitration. Bit 0 represents ports 0 and 1, bit 1
weighted_round_robin_wei represents ports 2 and 3, etc. Bit setting is as follows:
ght _sharing [1:0]
1'b0 - The represented ports are treated independently in arbitration.
1'b1- The represented ports are tied together for arbitration.
198/844
Doc ID 018672 Rev 1
RM0082
DDR memory controller (MPMC)
Table 153. Memory controller parameters (continued)
Parameter
Description
wr_dqs_shift [6:0]
Sets the delay for the ddr_close signal to ensure correct data capture in
the I/O logic.
Each increment of this parameter adds a delay of 1/128 of the system
clock. The same delay will be added to the clk_dqs_out signal for each
slice.(10)
wr_dqs_shift_bypass [9:0]
Sets the delay for the ddr_close signal when the DLL is being
bypassed. This is used to ensure correct data capture in the I/O logic
The value programmed into this parameter sets the actual number of
delay elements in the ddr_close line. If the total delay time programmed
exceeds the number of delay elements in the delay chain, the delay will
be set internally to the maximum number of delay elements available.
(11)
write_modereg [0]
Supplies the EMRS data for each chip select to allow individual chips to
set masked refreshing. When this parameter is set to 1'b1, the mode
parameter(s) [EMRS register] within the DRAM devices will be written.
Each subsequent write_modereg setting will write the EMRS register of
the next chip select. This parameter will always read back as 1'b0.
The mode registers are automatically written at initialization of the
Memory Controller. There is no need to initiate a mode register WRITE
after setting the start parameter in the Memory Controller unless some
value in these registers needs to be changed after initialization. (12)
writeinterp [0]
Defines whether the Memory Controller can interrupt a WRITE burst
with a READ command. Some memory devices do not allow this
functionality.
1'b0 - The device does not support READ commands interrupting
WRITE commands.
1'b1 - The device does support READ commands interrupting WRITE
commands.
wrlat [2:0]
Defines the WRITE latency since the WRITE command is issued until
the time the WRITE data is presented to the DRAM devices, in cycles.
wrr_param_value_err [3:0]
Shows the weighted round-robin arbitration errors/warnings. This
parameter is read-only.
Bit 0 - The port ordering parameters do not all contain unique values.
Bit 1 - Any of the relative priority parameters have been programmed
with a zero value.
Bit 2 - The relative priority values for any of the ports paired through the
weighted_round_robin_weight_sharing parameter are not identical.
Bit 3 - The port ordering parameter values for paired ports is not
sequential.
1. For this parameter and the following ones involving pre-charge concepts, please refer to Bank Splitting.
This parameter may not be modified after the start parameter has been asserted.
2. SPEAR™ Memory Controller does not support the MOBILE feature in DDR2 mode. Therefore, setting this
bit in conjunction with the MOBILE mode enable bit (en_lowpower_mode) will cause an interrupt.
3. These parameters must be static during normal operation.
4. These parameters must be static during normal operation. While these parameters default to 0x0, the
minimum valid value is 0x1. The user should program these parameters to a non-zero value during
initialization
5. This parameter must be static during normal operation.
Doc ID 018672 Rev 1
199/844
DDR memory controller (MPMC)
RM0082
6. This parameter must be static during normal operation. While this parameter defaults to 0x0, the minimum
valid value is 0x1. The user should program this parameter to a non-zero value during initialization.
7. SPEAR™ Memory Controller does not support the MOBILE feature in DDR2 mode. Therefore, setting this
bit in conjunction with the DDR2 mode enable bit (ddrii_sdram_mode) will cause an interrupt.
8. Only one chip select (and therefore 1 bit) may be set at any time.
9. Only one chip select (and therefore 1 bit) may be set at any time.
10. This parameter must be static during normal operation.
11. This parameter must be static during normal operation.While this parameter defaults to 0x0, The minimum
valid value is 0x1. The user must program this parameter to a non-zero value during initialization.
12. This parameter may not be changed when the memory is in power-down mode (when the CKE input is deasserted).
200/844
Doc ID 018672 Rev 1
RM0082
11
Clock & reset system
Clock & reset system
The Clock system block is able to generate all clocks necessary at the chip. The main
clocks, at default operative frequency, are:
●
CPU_CLK @ 333 MHz for the CPUs. (1)
●
HCLK @ 166 MHz for AHB Bus and AHB peripherals. (1)
●
PCLK @ 83 MHz for APB Bus and APB peripherals. (1)
●
DDR_CLK @ 100-333 MHz for DDR memory interface. (2)
●
Clock @ 12 MHz, 30 MHz, 48 MHz.(3)
The above frequencies are the maximum allowed values. All these clocks are generated by
three PLLs.
PLL1 and PLL2 sources are fully programmable through dedicated registers.
See the sections from Section 12.4.5: PLL 1/2_CTR registers in the Chapter 12:
Miscellaneous registers (Misc).
The PLLs input reference clocks can be chosen between (see Section 12.4.8:
PLL_CLK_CFG register)
●
24 MHz oscillator or PL_CLK(4) pad for PLL1
●
24 MHz oscillator or PL_CLK(3) pad for PLL2
At reset the 24 MHz source is selected.
To reduce the electromagnetic emission both PLL1 and PLL2 can be programmed to work in
dithered mode.
When the dithered mode is enabled the PLL output clock is modulated and the frequency
assumes a triangular shape. In this way the clock power spectrum is spread on a small
range (programmable) of frequencies decreasing the emission power peak.
This method replaces the other traditional methods of E.M.I. reduction, as filtering, ferrite
beads, chokes, adding power layers and ground planes to PCBs, metal shielding etc.,
allowing sensible cost saving for customers.
PLL1 and PLL2 can work in three operating modes:
●
Normal Mode (Dither-Off Mode): the PLL behaves as a normal PLL
●
Fractional-N Synthesis Mode: with this mode it is possible to select VCO frequencies
that aren't integer multiples of the reference frequency.
●
Dither-On Mode (double side modulation): in this mode a the triangular wave is added
to the VCO frequency.
●
Dither-On Mode (single side modulation): it is similar to double side modulation but the
modulation is only subtracting from the main frequency.
For further information see PLL registers in Chapter 12: Miscellaneous registers (Misc).
PLL3 is used to generate the USB controller clocks and it can't be configured through
registers.
1. This frequency is based on the PLL1.
2. This frequency is typically based on the PLL2.
3. This frequency is typically based on the PLL3.
Doc ID 018672 Rev 1
201/844
Clock & reset system
11.1
RM0082
Clock generation scheme
Figure 13. Clock generation scheme
Min 333 MHz
CPU_CLK
DIV1/
DIV2/
DIV3
PLL1
DIV1/
DIV2/
DIV3
24MHz
333 MHz
PLL2
OSC
11.1.1
Min 83 MHz
PCLK
DDR_CLK
CLK12MHz
CLK30MHz
CLK48MHz
PLL3
32.768KHz
Min 166 MHz
HCLK
CLK32MHz
RTC
Jitter at PLL output clock
The three clocks outgoing from the PLLs have a jitter that can be calculated using the
formula contained in the figure below.
Table 154. Jitter at PLL output clock
Jitter
Due to
Supply
Jitter Type Noise
(Peak)
Jitter Due
to Device Total Jitter (Peak
Noise (I
to Peak)
Sigma)
Total Jitter at PLL Output Clock @ 333
MHz Input @ 24 MHz N@3
A*
B
+/-(A + N * B)**
A*
B
+/-(A + 3 * B)**
30 ps
0.06% of
output
time
period
+/-(A + N * B)
30 ps
1.8 ps
+/-35.4 ps
Cycle to
30 ps
Cycle Jitter
0.12% of
output
time
period
+/- (A + N * B)
30 ps
3.6 ps
+/- 40.8 ps
Single
Period
Jitter
*The jitter specification holds true only up to 50mV noise (peak to peak) on power supply.
**Depending on the requirements of the application, please refer to the following table for
estimating the value of N.
The peak to peak jitter is a statistical effect. If a large number of samples (of the clock jitter)
are measured the values will usually hold to a normal distribution. The interpretation of peak
to peak jitter depends upon the effects of the jitter.
202/844
Doc ID 018672 Rev 1
RM0082
Clock & reset system
The B parameter (random jitter) is the value of one sigma of this normal distribution, while A
parameter is the deterministic jitter.
Single period jitter can be defined as the difference of the Tmax and Tmin, where Tmax is
maximum time period of the CLOCK and Tmin is the minimum time period of the CLOCK.
Cycle-to-cycle jitter is the cycle time variation between adjacent cycles over a random
sample of adjacent clock cycle pairs.
11.2
Clock distribution scheme
11.2.1
Processor clock
Figure 14. Processor clock
External Crystal (24MHz)
CPU_CLK
PLL1 (up to 333MHz)
HCLK
RTC Crystal (32.768KHz)
Frequency Selector
(From Misc Registers)
Source Clock Selector
(From Sys Controller)
According to the state machine (see Chapter 14: BS_System controller for full detail) the
CPU clock can be derived from the following sources:
●
External crystal (24 MHz)
●
PLL1 (up to 333 MHz)
●
RTC crystal (32.768 kHz)
By various setting inside the miscellaneous registers is possible to define the frequency of
the PLL1 and also the ratio between the CPU clock and the BUS (HCLK) clock.
11.2.2
DDR controller clock
Figure 15. DDR Controller Clock
CLK_PLL1
CLK_PLL2
Memory Controller
Clock
DLL Mem.
Ctrl
DDR_CLK
HCLK
CLK Selector
(From MISC Registers)
Doc ID 018672 Rev 1
203/844
Clock & reset system
RM0082
The Memory controller use the HCLK to synchronize the internal bus access and the other
clock, that can be chosen from PLL1 or PLL2 (Misc register setting), is used on the external
memory Interface. Two clock domains can be synchronous or asynchronous. In example we
can have the CPU running at 333 MHz and the HCLK bus running at 166 MHz but having
the external DDR memory running at 266 MHz to reduce the board cost. In this example the
PLL1 will provide the clock to all the internal blocks (CPU and bus) while PLL2 will provide
the frequency to the external memory. Having the two clock domain asynchronous offer
more flexibility in the system definition but also add some more latency due to the
resynchronization stages.
11.2.3
Bus clocks
Through the misc CORE_CLK_CFG, PRPH_CLK_CFG register is possible to define the
ratio between the CPU clock and its HCLK, the ratio between the AHB and the APB clock,
and also the source for the peripheral clock. Typically (default value) this is derived from the
fixed frequency of 48 MHz avoiding any setting problem when the bus clock change value
because of different system state or because of different PLL setting. Some other register
offer also the possibility to enable or disable the clock for each peripheral allowing a
sophisticated power management.
11.2.4
Configurable logic clock
The RAS block contains SDIO, Telecom, FSMC and CLCD IPs that are working at AHB
frequency. Keyboard and ARM GPIO blocks are working with APB clock frequency.
Figure 16. RAS block diagram
HCLK
ClkR_48MHz
HCLK
CLCD
SDIO
ClkR_48MHz
HCLK
RAS_R_GPIOCLK_in[3]
FSMC
HCLK
RAS_R_GPIO_in[40]
ClkR_Pll2
TELECOM
(Camera)
TELECOM
(Voice)
KEYBOARD
ClkR_Synt2
ClkR_Synt3
I2S
ARM GPIO
Clk_Osci1
RAS_R_GPIO_in[35]
204/844
ClkR_48MHz
Doc ID 018672 Rev 1
PCLK
PCLK
RM0082
Clock & reset system
Figure 17. I2S clock schematic
SPEAR BISC CLOCK I2S
‘0’
DIV15-0
RAS-R-GPIO_in[40]
ClkR_30MHz
ClkR_Gpio4
DIV_CPT
(16bit)
ClkR_Gpio4
ClkR-Synt(2)
bypass
Isrc2-0
Internal clock
RAS-R-GPIO_in[40]
I2S_CLK
Pin
tck2
clock
M/S
inv
TDM int_clk
TDM lint_clk
M/S
Invint intsel
Clko0-1
Int_I2S_CLK to I2S interface
Figure 18. Telecom clock schematic
SPEAR BISC CLOCK INT_CLK
‘0’
DIV15-0
RAS-R-GPIO_in[35]
DIV_CPT
(16bit)
ClkR_30MHz
ClkR_Gpio4
ClkR_Gpio4
ClkR-Synt(3)
bypass
Isrc2-0
CLK pin
RAS-R-GPIO_in[35]
ACT
tck2
inv
M/S
Int_CLK
‘0’
ClkR_Gpio1
Clko1-0
‘0’
ClkR_Gpio2
lint_CLK
Internal_clock
Clko1-0
ClkR_Gpio3
‘0’
ClkR-Pll2
MIIC1-0 ClkR-Synt(3)
11.2.5
Clock synthesizer
Clock synthesizer is a digital signal generator. It is used to perform a fractional clock divider.
Giving an input clock with frequency Fin and two integers X (synt_xdiv field of programming
register) and Y (synt_xdiv field), it generates a new clock with frequency
Doc ID 018672 Rev 1
205/844
Clock & reset system
RM0082
With X Y/2, if the post divider is enabled (synt_clkout_sel field is cleared); while
X⎞
⎛
Fout 1 = ⎜ Fin ∗ ⎟ / 2
Y ⎠
⎝
With X Y/2, if post divider is disable (synt_clkout_sel field is set).
X⎞
⎛
Fout 2 = ⎜ Fin ∗ ⎟
Y ⎠
⎝
Clock synthesizer is based on Y-modulo counter incremented by X. After reset the counter
value is zero and it increments of X every input clock cycle. If N is the number of input clock
cycle the output is high when:
The counter loads the value Y-NX a clock cycle after that it is verified the previous condition,
N ∗X ≥Y
the output become low and the process iterates again. If Y is a multiple of X
N=
Y
X
is a constant and the output period is
Tout = Tin ∗ N = Tin ∗
Y
X
The output frequency is given by formula.
When Y/X is not an integer value the output period swings between N and N+1 times the
input clock period, with N the integer part of Y/X.
This means that the maximum period drift is of one input clock period.
E.g:
With Fout= 40 MHz, Fin= 333 MHz the synthesizer parameters using are:
X=40 and Y=333
This means that the output clock period is on average: Tout = 8.325 * Tin.
The output period will be 8 or 9 times the input clock period:
Tout = 8 * 3 = 24 ns and Tout = 9 * 3 = 27 ns
The maximum output period drift is 27-25 =2 ns.
Since the output clock is high for one input clock cycle the duty cycle is:
⎛X⎞
DC (%) = ⎜ ⎟ ⋅100
⎝Y ⎠
If the post divider by two is enabled the D.C. is 50%; in this case the output frequency is
given by.
206/844
Doc ID 018672 Rev 1
RM0082
Clock & reset system
It can be shown that the period drift in this case is twice the input clock period.
To program the synthesizer please refer to paragraph Section 12.4.15: Auxiliary clock
synthesizer registers in the Miscellaneous registers (MISC) chapter.Main oscillator
11.2.6
Crystal connection
Figure 19. Main Crystal Connection
Xi
24MHz
Xo
VDD2.5V
Note:
The value of the capacitors depend on the type of the selected crystal. As an example, in
STM reference board we have chosen RAKON, P/N Xtal003325 24 MHz oscillator, the value
of the capacitors is 33pF.
11.3
RTC oscillator
11.3.1
Crystal connection
Figure 20. RTC crystal connection
Xi
32.768KHz
Xo
GND
Note:
The value of the capacitors depend on the type of the selected crystal. As an example, in
STM reference board we have chosen Fox Electronics, P/N NC26LF-327 32.768 kHz
oscillator, the value of the capacitors is 15pF.
Doc ID 018672 Rev 1
207/844
Miscellaneous registers (Misc)
12
RM0082
Miscellaneous registers (Misc)
The miscellaneous block is an array of registers which manages the SoC main configuration
schemes and controls all basic device functionalities; the top view is given in the next figure.
Figure 21. Top view of miscellaneous registers
Reg #0
Reg #1
Status
APB I/F
Control
APB
Commands
Reg #n
Miscellaneous Registers
12.1
Signal description
The next table shows the APB system interface
Table 155. APB interface signals
APB interface signals
208/844
Signal
Type
Description
Apb_clk
In
APB port clock.
Apb_resetn
In
APB Input reset.
Apb_addr(31:0)
In
APB Address bus.
Apb_sel
In
APB select.
Apb_enable
In
APB strobe signal.
Apb_write
In
APB write signal.
Apb_wdata(31:0)
In
APB write data bus.
Apb_rdata(31:0)
Out
APB read data bus.
Doc ID 018672 Rev 1
RM0082
12.2
Miscellaneous registers (Misc)
Overview features
Miscellaneous register is organized in two distinct register regions: local and global register
spaces.
●
●
Local space: it's a private registers region assigned in order to ensure the right
operability of the platform avoiding the register over assignment. The below region
controls:
–
SoC application schemes definition.
–
Platform configuration parameters.
Global space: it's a general registers area used to share common functionalities
among embedded processor inside the chip. The region controls:
–
12.3
Programmable logic (RAS) configuration.
–
Global command and status events.
–
Optional processor mail box data.
Register address map
Two different register address maps are provided for local and global register spaces which
are split into two 32Kbyte sub-region associated with the processor. The local sub-regions
are singularly assigned at different physical register regions, while all the global sub-regions
are alias of a unique physical region as detailed in the next table.
Table 156. Miscellaneous register main memory map
Miscellaneous register main memory map
Local Space
Processor
Number
Proc-1
Global Space
Region 1-2
Offset address
range
Region-1
0x0.0000 – 0x0.7FFF Alias-1
Doc ID 018672 Rev 1
Region-1
Offset address
range
0x0.8000 – 0x0.FFFF
209/844
Miscellaneous registers (Misc)
RM0082
12.4
Miscellaneous register local space
12.4.1
Overview
The local register space controls the following functionalities:●
●
SoC main configuration
–
Functional mode (up to 7 configuration are allowed):
–
Normal operating mode.
–
Debug mode: enable and control the processors embedded trace module and
Embedded ICE diagnostic functionalities.
–
Test manufacture mode.
Clock definition and control:
–
Source clock definition.
–
Setting operating frequency.
–
Clock gating control.
–
Auxiliary clock configuration.
●
Soft reset control.
●
Platform basic configuration parameters:
●
–
Switch matrix arbitration protocol and priority definition.
–
DMA channel assignment scheme.
–
USB2 Pays setting parameter.
Special configuration parameters:
–
12.4.2
Compensation pad parameters.
–
Fast IO pad configuration parameters.
–
SSTL pad basic functionality
–
Wake up configuration type.
●
Functional memory BIST execution control.
●
Diagnostic error detection.
Miscellaneous register local space address map
Next table shows the miscellaneous register map.
Table 157. Miscellaneous local space registers overview
Misc. Local Space Register Map
Register Name
210/844
Base Address: 0xFCA8.0000
Region-1 Offset
Region-2 Offset
0x0.0000
0x1.0000
Type
SOC_CFG_CTR
0x000
RO
DIAG_CFG_CTR
0x004
R/W
PLL1_CTR
0x008
R/W
PLL1_FRQ
0x00C
R/W
PLL1_MOD
0x010
R/W
Doc ID 018672 Rev 1
RM0082
Miscellaneous registers (Misc)
Table 157. Miscellaneous local space registers overview (continued)
Misc. Local Space Register Map
Register Name
Base Address: 0xFCA8.0000
Region-1 Offset
Region-2 Offset
0x0.0000
0x1.0000
Type
PLL2_CTR
0x014
R/W
PLL2_FRQ
0x018
R/W
PLL2_MOD
0x01C
R/W
PLL_CLK_CFG
0x020
R/W
CORE_CLK_CFG
0x024
R/W
PRPH_CLK_CFG
0x028
R/W
PERIP1_CLK_ENB
0x02C
R/W
Reserved
0x030
-
RAS_CLK_ENB
0x034
R/W
PERIP1_SOF_RST
0x038
R/W
Reserved
0x03C
-
RAS_SOF_RST
0x040
R/W
PRSC1_CLK_CFG
0x044
R/W
PRSC2_CLK_CFG
0x048
R/W
PRSC3_CLK_CFG
0x04C
R/W
AMEM_CFG_CTRL
0x050
R/W
Reserved
0x054
Reserved
0x058
Reserved
0x05C
IRDA_CLK_SYNT_CFG
0x060
R/W
UART0_CLK_SYNT_CFG
0x064
R/W
MAC_CLK_SYNT_CFG
0x068
R/W
RAS_CLK_SYNT1_CFG
0x06C
R/W
RAS_CLK_SYNT2_CFG
0x070
R/W
RAS_CLK_SYNT3_CFG
0x074
R/W
RAS_CLK_SYNT4_CFG
0x078
R/W
ICM1_ARB_CFG
0x07C
R/W
ICM2_ARB_CFG
0x080
R/W
ICM3_ARB_CFG
0x084
R/W
ICM4_ARB_CFG
0x088
R/W
ICM5_ARB_CFG
0x08C
R/W
ICM6_ARB_CFG
0x090
R/W
ICM7_ARB_CFG
0x094
R/W
Doc ID 018672 Rev 1
211/844
Miscellaneous registers (Misc)
RM0082
Table 157. Miscellaneous local space registers overview (continued)
Misc. Local Space Register Map
Register Name
212/844
Base Address: 0xFCA8.0000
Region-1 Offset
Region-2 Offset
0x0.0000
0x1.0000
Type
ICM8_ARB_CFG
0x098
R/W
ICM9_ARB_CFG
0x09C
R/W
DMA_CHN_CFG
0x0A0
R/W
USB2_PHY_CFG
0x0A4
R/W
MAC_CFG_CTR
0x0A8
R/W
Reserved
0x0AC
Reserved
0x0B0
Reserved
0x0B4
Reserved
0x0B8
Reserved
0x0BC
Reserved
0x0C0
Reserved
0x0C4
Reserved
0x0C8
Reserved
0x0CC
Reserved
0x0D0
Reserved
0x0D4
Reserved
0x0D8
Reserved
0x0DC
POWERDOWN_CFG_CTR
0x0E0
R/W
COMPSSTL_1V8_CFG
0x0E4
R/W
Reserved
0x0E8
COMPCOR_3V3_CG
0x0EC
R/W
DDR_PAD
0x0F0
R/W
BIST1_CFG_CTR
0x0F4
R/W
BIST2_CFG_CTR
0x0F8
R/W
BIST3_CFG_CTR
0x0FC
R/W
BIST4_CFG_CTR
0x100
R/W
Reserved
0x104
R/W
BIST1_STS_RES
0x108
R/W
BIST2_STS_RES
0x10C
R/W
BIST3_STS_RES
0x110
R/W
BIST4_STS_RES
0x114
R/W
Reserved
0x118
Doc ID 018672 Rev 1
R/W
0xC0
R/W
R/W
0x0D0
R/W
RM0082
Miscellaneous registers (Misc)
Table 157. Miscellaneous local space registers overview (continued)
Misc. Local Space Register Map
Register Name
12.4.3
Base Address: 0xFCA8.0000
Region-1 Offset
Region-2 Offset
0x0.0000
0x1.0000
Type
SYSERR_CFG_CTR
0x11C
R/W
USB0_TUN_PRM
0x120
R/W
USB_TUN_PRM
0x124
R/W
USB2_TUN_PRM
0x128
R/W
Reserved[1]
0x12C
R/W
PLGPIO0_PAD_PRG
0x130
R/W
PLGPIO1_PAD_PRG
0x134
R/W
PLGPIO2_PAD_PRG
0x138
R/W
PLGPIO3_PAD_PRG
0x13C
R/W
PLGPIO4_PAD_PRG
0x140
R/W
Reserved[32448]
0x144
0x7FFC
SoC_CFG_CTR register
The SOC_CFG_CTR is a RO register which handles both functional and test manufacture
SoC basic configuration type. The register bit assignments is given in the next table.
Table 158. SoC_CFG_CTR register bit assignments
SoC Functional Configuration Type
0x000
Bit
Name
Reset
Value
Description
[31:20]
RFU
-
Reserved for future use (Write don’t care - Read return
zeros).
[19]
boot_sel
-
Reserved for future use (Write don’t care - Read return
zeros).
[18:06]
Fixed Value
13’h880
Fixed Value
Doc ID 018672 Rev 1
213/844
Miscellaneous registers (Misc)
RM0082
Table 158. SoC_CFG_CTR register bit assignments (continued)
SoC Functional Configuration Type
Bit
Name
Reset
Value
0x000
Description
SoC operating mode; this field reflects the Test(4:0) signal
values which configure the ASIC main operating modes:
Functional (ref. SoC Functional configuration type Table)
Test manufacture (ref. SoC Test configuration Table)
SoC Functional Configuration Type
Soc-cfg
[05:00]
214/844
SoC_cfg
-
Name
Description
X00000
Dyn_cfg0_0
Default configuration, I/O
standard features (ARM
internal debug resources
disabled)
X000001
Dyn_cfg0_1
Same as Dyn_cfg0_0 but
ARM JTAG connected with
main JTAG interface
X00010
Dyn_cfg0_2
Same as Dyn_cfg0_1 but
ETM Interface (Single and
double
packet
mode)
multiplexed
with
programmable PL_GPIOs
[73:97]
X00100
Dyn_cfg1_0
UART and TIMER ports
available
on
PLGPIO
[37:50]
X00101
Dyn_cfg1_1
Same as Dyn_cfg1_0 but
ARM JTAG connected with
main JTAG interface
X00110
Dyn_cfg1_2
Same as Dyn_cfg1_1 but
ETM Interface (Single and
double
packet
mode)
multiplexed
with
programmable PL_GPIOs
[73:97]
X01000
Dyn_cfg2_0
Ethernet ports disabled
from PLGPIO [27:10]
Doc ID 018672 Rev 1
RM0082
Miscellaneous registers (Misc)
Table 158. SoC_CFG_CTR register bit assignments (continued)
SoC Functional Configuration Type
Bit
Name
Reset
Value
0x000
Description
Dyn_cfg2_1
Same as Dyn_cfg2_0 but
ARM JTAG connected with
main JTAG interface
X01010
Dyn_cfg2_2
Same as Dyn_cfg2_1 but
ETM Interface (Single &
double
packet
mode)
multiplexed
with
programmable PL_GPIOs
[73:97]
X01100
Dyn_cfg3_0
UART,
TIMER,
ETHERNET, I2C and FIrDA
ports shared with [50:0]
X01101
Dyn_cfg3_1
Same as Dyn_cfg3_0 but
ARM JTAG connected with
main JTAG interface
Dyn_cfg3_2
Same as Dyn_cfg3_1 but
ETM Interface (Single and
double
packet
mode)
multiplexed
with
programmable PL_GPIOs
[73:97]
X01001
X01110
[05:00]
SoC_cfg
SoC Test Configuration Type
SoC Cfg
Name
X10000
BSD
Boundary Scan
X10001
TOP_ATPG
Scan ATPG activities on
SoC
X10010
RAS_ATPG
Scan ATPG activities on
programmable logic
X10011
BIST_MEM
BIST
mode
involving
internal RAMs/ROM
X10100
Analog Test:
PLLs
USBBIST_PLL
OSCIs
_O SCI_ADC
ADC
USB2PHY
X10101
BIST_DLL
DLL BIST mode
X10110
USB_phy
USB Phy tests
Doc ID 018672 Rev 1
Description
215/844
Miscellaneous registers (Misc)
12.4.4
RM0082
DIAG_CFG_CTR register
The DIAG_CFG_CTR is an R/W register which configures the embedded processors ETM9
(Embedded Trace Module) and Embedded ICE-RT (TAP base debug support) diagnostic
functionalities. The register bit assignments is given in the next table.
Table 159. DIAG_CFG_CTR register bit assignments
DIAG_CFG_CTR Register
216/844
0x004
Bit
Name
Reset
Value
Description
[31:16]
RFU
-
Reserved for future use (Write don’t care - Read return
zeros).
[15]
debug_freez 1’h0
Enable freeze condition when processor enters in debug
mode.
[14:12]
RFU
-
Reserved for future use (Write don’t care - Read return zeros)
[11]
sys_error
-
SoC internal error (RO); reflects SYSERR_CFG_CTR bit(2)
value; it’s active when an internal error is detected (further
details can be found into the SYSERR_CFG_CTR register
description
1’b0: No error pending.
1’b1: Active SoC internal error event.
[10:06]
RFU
-
Reserved for future use (Write don’t care - Read return
zeros).
Doc ID 018672 Rev 1
RM0082
Miscellaneous registers (Misc)
Table 159. DIAG_CFG_CTR register bit assignments (continued)
DIAG_CFG_CTR Register
Bit
Name
0x004
Reset
Value
Description
SPEAr300 debug configuration (RO); this field is directly
reflects the Test (1:0) signals value and it’s used to configure
the internal processor Embedded ICE-RT (JTAG port) and
ETM debugging features as detailed in the next table.
SoC Processor debug cfg6 Configuration Table
[05:04]
SOC_dbg6
SoC-Cfg
Name
Description
2’b00
Dyn_cfg0/1/2/
3_0
Normal mode (ARM
internal debug resources
disable)
2’b10
Dyn_cfg0/1/2/
3_1
JTAG1 (ARM JTAG port):
connected with main JTAG
Interface
2’b01
Dyn_cfg0/1/2/
3_2
ETM1 (ARM ETM):
interface (single & double
packets mode) multiplexed
with programmable
PL_GPIO (38:14) signals
(ref. ETM Dbg6 signal.
assessment tab)
JTAG1: connected with
main JTAG Interface.
2’b11
RFU
Reserved for future use.
-
ETM Dbg6 Signal Assignment Table
Standard IOs
Alternative IOs
PL_GPIO(97)
ARM1_TRCCLK
PL_GPIO(96)
ARM1_TRCPKTA(0)
PL_GPIO(95)
ARM1_TRCPKTA(1)
PL_GPIO(94)
ARM1_TRCPKTA(2)
PL_GPIO(93)
ARM1_TRCPKTA(3)
PL_GPIO(92)
ARM1_TRCPKTB(0)
PL_GPIO(91)
ARM1_TRCPKTB(1)
PL_GPIO(90)
ARM1_TRCPKTB(2)
PL_GPIO(89)
ARM1_TRCPKTB(3)
PL_GPIO(88)
ARM1_TRCSYNCA
Doc ID 018672 Rev 1
217/844
Miscellaneous registers (Misc)
RM0082
Table 159. DIAG_CFG_CTR register bit assignments (continued)
DIAG_CFG_CTR Register
Bit
[05:04]
[03:00]
12.4.5
Name
SOC_dbg6
RFU
0x004
Reset
Value
-
-
Description
PL_GPIO(87)
ARM1_TRCSYNCB
PL_GPIO(86)
ARM1_PIPSTATA(0)
PL_GPIO(85)
ARM1_PIPSTATA(1)
PL_GPIO(84)
ARM1_PIPSTATA(2)
PL_GPIO(83)
ARM1_PIPSTATB(0)
PL_GPIO(82)
ARM1_PIPSTATB(1)
PL_GPIO(81)
ARM1_PIPSTATB(2)
PL_GPIO(80)
ARM1_TRCPKTA(4)
PL_GPIO(79)
ARM1_TRCPKTA(5)
PL_GPIO(78)
ARM1_TRCPKTA(6)
PL_GPIO(77)
ARM1_TRCPKTA(7)
PL_GPIO(76)
ARM1_TRCPKTB(4)
PL_GPIO(75)
ARM1_TRCPKTB(5)
PL_GPIO(74)
ARM1_TRCPKTB(6)
PL_GPIO(73)
ARM1_TRCPKTB(7)
PL_GPIO(86)
ARM1_PIPSTATA(0)
PL_GPIO(85)
ARM1_PIPSTATA(1)
PL_GPIO(84)
ARM1_PIPSTATA(2)
PL_GPIO(83)
ARM1_PIPSTATB(0)
PL_GPIO(82)
ARM1_PIPSTATB(1)
PL_GPIO(81)
ARM1_PIPSTATB(2)
PL_GPIO(80)
ARM1_TRCPKTA(4)
PL_GPIO(79)
ARM1_TRCPKTA(5)
PL_GPIO(78)
ARM1_TRCPKTA(6)
PL_GPIO(77)
ARM1_TRCPKTA(7)
PL_GPIO(76)
ARM1_TRCPKTB(4)
PL_GPIO(75)
ARM1_TRCPKTB(5)
PL_GPIO(74)
ARM1_TRCPKTB(6)
PL_GPIO(73)
ARM1_TRCPKTB(7)
Reserved for future use (Write don’t care - Read return
zeros).
PLL 1/2_CTR registers
The PLL1/2_CTR are R/W registers which configure the operating mode of the main PLLs.
218/844
Doc ID 018672 Rev 1
RM0082
Miscellaneous registers (Misc)
PLL programming sequence
After reset both PLLs must be firstly configured in normal mode waiting for the PLL lock valid
status, than these can be optionally reconfigured in dithered mode through an additional
specific programming sequence.
Two different output frequency equations are provided for the above PLL operating mode:
●
PLL Normal Mode:
●
PLL Dithered or fractional-N mode
2 × M [ 158 ] F in
F out = -------------------------- × ------P
N
2
2 × M F in
F out = ------------------- × ------256XN 2 P
.
Table 160. PLL 1/2_CTR register bit assignments
PLL_CTR Register
0x008
PLL2_CTR
0x014
Bit
Name
Reset
Value
Description
[31:09]
RFU
-
Reserved for future use (Write don’t care - Read return zeros).
PLL Main Configuration Table
[08:03]
[02]
pll_control1
pll_enable
6’h0
1’h0
Control Bit
Description
Pll_control1(8)
1’b0
1’b1
External feedback enable:
Internal feedback
External feedback (dithered mode)
Pll_control(7:6)
2’b00
2’b01
1X
Sigma Delta Order:
1st Order
2nd Order
N.A. (not applicable for current silicon
version)
Pll_control1(5:4)
2’b00
2’b01
2’b10
2’b11
Dither mode:
Normal mode (non dithered)
Fractional-N
Dithering (double side modulation)
Dithering (single side modulation)
Pll_control1(3)
1’b0
1’b1
PLL sample program parameters:
No action.
Sample program parameters (.)
Enable PLL:
1’b0: Disable PLL (power-down mode).
1’b1: Enable PLL
Doc ID 018672 Rev 1
219/844
Miscellaneous registers (Misc)
RM0082
Table 160. PLL 1/2_CTR register bit assignments (continued)
PLL_CTR Register
0x008
PLL2_CTR
0x014
Bit
Name
Reset
Value
Description
[01]
pll_resetn
1’h0
PLL soft reset command:
1’b0: PLL active reset command.
1’b1: PLL reset enable.
1’h0
PLL Lock Status (RO); field meaningful when PLL is configured
in normal mode:
1’b0: PLL unlock status.
1’b1: PLL lock active status.
[00]
12.4.6
pll_lock
PLL1/2_FRQ registers
The PLL1/2_FRQ are R/W registers used to configure the PLL VCO frequency operating
mode. The register bit assignments is given in the next table.
Table 161. PLL1/2_FRQ register bit assignments
PLL1_FRQ Register
0x00C
PLL2_FRQ
0x018
Bit
Name
Reset
Value
Description
M[15:0]: PLL feedback divisor values; when PLL is
configured in normal mode only M[15:8] upper byte is
considered.
Two different equations are provided for the VCO frequency
definition which must be programmed within range from 200
MHz min. to 800 MHz max as detailed below:
PLL Normal mode configuration
[31:16]
pll_fbkdiv_M
16’h
A600
(.)
f VCD = 2 • f ref • M [ 15 ;8 ]
M[15:8] can assume the following range of values:
4 < M < 17
with 200 < fVCD < 800 MHz; fref24 MHz.
PLL dithered or fractional-N mode configurations:
2 • f ref
f VCD = ----------------- • M
256
[15:0] can assume the following range of values:
1066 < M < 4266
with 200 < fVCD < 800 MHz; fref24 MHz.
[15:11]
220/844
RFU
-
Reserved for future use (Write don’t care - Read return
zeros).
Doc ID 018672 Rev 1
RM0082
Miscellaneous registers (Misc)
Table 161. PLL1/2_FRQ register bit assignments (continued)
PLL1_FRQ Register
0x00C
PLL2_FRQ
0x018
Bit
Name
Reset
Value
Description
Post divider (P) table
P(2:0): PLL post-divisor values in 1:32 in 2’powers (ref. Post
Divider table)
[10:08]
pll_postdiv_P 3’h1
Pdiv2
Pdiv1
Pdiv0
Division factor
0
0
0
1
0
0
1
2
0
1
0
4
0
1
1
8
1
0
0
16
1
0
1
32
1
1
0
32
1
1
1
32
N(7:0): PLL pre-divisor programmable value from 1 to 255
(ref. Pre-divisor table)
The reference clock fref should be within the range below:
1MHz < = fre ( f < =
40Mhz )
The reference clock value is given from the following
formula:
f osci
f ref = ---------N
[07:00]
12.4.7
pll_prediv_N
8’h0C
Pre-divider (N) table
div
7
div
6
div
5
div
4
div
3
div 2
div 1
div 0
Div fact.
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
1
1
0
0
0
0
0
0
1
0
2
~
~
~
~
~
~
~
~
~
1
1
1
1
1
1
1
0
254
1
1
1
1
1
1
1
1
255
PLL1/2_MOD registers
The PLL1/2_MOD is R/W registers which configure the dithering modulation parameters.
The register bit assignments is given in the next table.
Doc ID 018672 Rev 1
221/844
Miscellaneous registers (Misc)
RM0082
Table 162. PLL1/2_MOD register bit assignments
PLL1_MOD Register
0x010
PLL2_MOD
0x01C
Bit
Name
Reset
Value
Description
[31:29]
RFU
-
Reserved for future use (Write don’t care - Read return
zeros).
MP(12:0) PLL modulation wave parameters:
Modulation rate fmod depends from reference clock fref;
and modulation period mp as detailed in the next formula
:
f ref ( KHz )
f mod ( KHz ) = -------------------4 • mp
[28:16]
pll_modperiod
13’h0
Example: If fref = 24000 kHz and fmod = 100 kHz the
modulation period register will be mp=60.
Any changes in the reference clock results in changes in
the modulation frequency.
The maximum modulation frequency that can pass
through the filter is 100 kHz.
SR(15:0) PLL slope modulation wave parameters:
The slope modulation rate reflects the modulation-depth
(md) in respect to the nominal frequency of the undithered clock as shown in the next formula:
17
2
- • md • f VCD • f mod
sr = ------2
f ref
[15:00]
pll_slope
16’h0
Where sr in the actual value of the slope register.
Example: If md=2.5% and fVCD = 576 MHz and fmod = 100
kHz with fref = 24 MHz, (using the simplified formula) it
results:
8
2
sr = -------- • md • M
mp
256 • 0 • 025 • 3072
sr = ------------------------------------------------------ = 327 = 0 × 0147
60
12.4.8
PLL_CLK_CFG register
The PLL_CLK_CFG is an R/W register used to configure the input source clock for all the
internal PLLs. The register bit assignments is given in the next table.
222/844
Doc ID 018672 Rev 1
RM0082
Miscellaneous registers (Misc)
Table 163. PLL_CLK_CFG register bit assignments
PLL_CLK_CFG Register
0x020
Bit
Name
Reset
Value
Description
[31]
RFU
-
Reserved for future use (Write don’t care - Read return
zeros).
MPMC memory controller DDR_CLK configuration.
[30:28]
[27]
mctr_clk_sel
RFU
3’b000
Synch mode: core clock provided from PLL1:
1:1
for DDRCORE_CLK the reference frequency
is HCLK. DDR_CLK = HCLK.
3’b001
Synch mode: core clock provided from PLL1:
2:1
for DDRCORE_CLK the reference frequency
is 2x HCLK. DDR_CLK = 2 x HCLK.
Note: Ratio 2:1 must also be be set in the
ahbX_fifo_type_reg parameter (see
Table 151 in Section 11)
3’b010
Reserved for future use.
3’b011
Asynch mode: core clock provided from
PLL2
>1:1 (clock up to 333 MHz).
<1:1 (clock range 100 - 166 MHz).
3’b1XX
Reserved for future use.
3’h0
Reserved for future use (Write don’t care - Read return
zeros).
-
Auxiliary PLL2 source clock configuration
[26-24]
[23]
pll2_clk_sel
RFU
3’h0
-
Control
Bit
Description
3’b000
24 MHz Oscillator (default mode)
3’b001
Programmable PL_CLK (3) signal.
3’b010
Reserved for future use
3’b011
Reserved for future use.
3’b1XX
Reserved for future use.
Reserved for future use (Write don’t care - Read return
zeros.)
Doc ID 018672 Rev 1
223/844
Miscellaneous registers (Misc)
RM0082
Table 163. PLL_CLK_CFG register bit assignments (continued)
PLL_CLK_CFG Register
Bit
Name
0x020
Reset
Value
Description
Main PLL1 source clock configuration table
[22:20]
[19]
[18]
[17]
mem_dll_lock
usb_pll_lock
sys_pll2_lock
3’h0
Description
3’b000
24 MHz Oscillator (default mode)
3’b001
Programmable PL_CLK (4) signal.
3’b01X
Reserved for future use.
3’b1XX
Reserved for future use.
-
Memory DLL lock; this field reflects the current value of
memory controller DLL lock signal (RO):
1’b0: DLL unlock status (for interrupt capability ref.
SYSERR_CFG_CTR register description).
1’b1: DLL active lock.
-
USB PLL3 llock; this field reflects the current value of
USB PLL3 llock signal (RO):
1’b0: USB PLL3 unlock status (for interrupt capability ref.
SYSERR_CFG_CTR register description).
1’b1: PLL3 active lock.
-
Auxillary System PLL2 lock; this field reflects the current
value of System PLL2 lock signal (RO):
1’b0: PLL2 unlock status (for interrupt capability ref.
SYSERR_CFG_CTR register description).
1’b1: Pll2 active lock.
This field should be ignored when PLL2 is programmed
in dithering mode.
[16]
sys_pll1_lock
-
Main System PLL1 lock; this field reflects the current
value of the System PLL1 lock signal (RO):
1’b0: PLL1 unlock status (for interrupt capability ref.
SYSERR_CFG_CTR register description).
1’b1: Pll1 active lock.
This field should be ignored when PLL1is programmed in
dithering mode.
[15:03]
RFU
-
Reserved for future use (Write don’t care - Read return
zeros).
1’h0
Enable USB PLL3 clock output probing; this functionality
is used to check the internal PLL3 clock integrity:
1’b0: Disable clock probing (normal mode).
1’b1: PLL3 clock out (48 MHz) multiplexed on
basGPIO(2) signal.
[02]
224/844
pll1_clk_sel
Control
Bit
pll3_enb_clkout
Doc ID 018672 Rev 1
RM0082
Miscellaneous registers (Misc)
Table 163. PLL_CLK_CFG register bit assignments (continued)
PLL_CLK_CFG Register
Bit
[01]
[00]
12.4.9
Name
pll2_enb_clkout
pll1_enb_clkout
0x020
Reset
Value
Description
1’h0
Enable PLL2 clock output probing; this functionality is
used to check the internal PLL2 clock integrity:
1’b0: Disable clock probing (normal mode).
1’b1: PLL2 clock out (clk1 x 1/8) multiplexed on
basGPIO(1) signal.
1’h0
Enable PLL1 clock output probing; this functionality is
used to check the internal PLL1 clock integrity:
1’b0: Disable clock probing (normal mode).
1’b1: PLL1 clock out (clk1 x 1/8) multiplexed on
basGPIO(0) signal
CORE_CLK_CFG register
The CORE_CLK_CFG is an R/W register used to configure the internal platform clock
domains. The register bit assignments is given in the next table.
Table 164. CORE_CLK_CFG register bit assignments
CORE_CLK_CFG Register
0x024
Bit
Name
Reset
Value
Description
[31:22]
RFU
-
Reserved for future use (Write don’t care - Read return
zeros).
OSCI24 divider config. table
[21:20]
[19]
Osci24_div-ratio
Osci24_div_en
Control bit Ratio
Description
2’b00
1:2
24 MHz to divider out ratio.
2’b01
1:4
24 MHz to divider out ratio.
2’b10
1:16
24 MHz to divider out ratio.
2’b11
1:32
24 MHz to divider out ratio.
2’h0
1’h0
When set the 24 MHz Oscillator clock, used in SLOW
and DOZE mode for the AMBA subsystem, is divided by
a prescaler. The prescaler division factor can be set
through osci24_div_ratio field.
[18]
ras_synt34_clks
el
1’h0
Current field selects the RAS clock synthesizer Synt-3
and Synt-4 input source clock (ref. Auxiliary clock
synthesizer register description):
1’b0: Clock synthesizer input freq. Fin = PLL1 output
clock (333 MHz).
1’b1: Clock synthesizer input freq. Fin = PLL2 output
clock (programmable value)
[17:12]
RFU
-
Reserved for future use (Write don’t care - Read return
zeros).
Doc ID 018672 Rev 1
225/844
Miscellaneous registers (Misc)
RM0082
Table 164. CORE_CLK_CFG register bit assignments (continued)
CORE_CLK_CFG Register
Bit
Name
0x024
Reset
Value
Description
PLL1_clkout to HCLK clock ratio definition (ref. next
table)
PLL1_clkout to HCLK configuration table
[11:10]
hclk_divsel
2’h0
Control bit Ratio
Description
2’b00
1:1
Hclk to Pll1_clkout ratio.
2’b01
1:2
Hclk to Pll1_clkout ratio.
2’b10
1:3
Hclk to Pll1_clkout ratio.
2’b11
1:4
Hclk to Pll1_clkout ratio.
Low speed subsystem PCLK clock ratio divider (ref. next
table)
HCLK to PCLK clock ratio configuration table
[09:08]
12.4.10
pclk_ratio_lwsp
2’h0
Control bit Ratio
Description
2’b00
1:1
Hclk to Pclk clock ratio.
2’b01
1:2
Hclk to Pclk clock ratio.
2’b10
1:3
Hclk to Pclk clock ratio.
2’b11
1:4
Hclk to Pclk clock ratio.
[07:06]
RFU
-
Reserved for future use (Write don’t care - Read return
zeros).
[05:04]
pclk_ratio_basc
2’h0
Basic subsystem PCLK clock ratio divider (ref. HCLK to
PCLK clock ratio configuration table)
[03:02]
RFU
-
Reserved for future use (Write don’t care - Read return
zeros).
[01:00]
pclk_ratio_arm1
2’h0
ARM subsystem PCLK clock ratio divider (ref. HCLK to
PCLK clock ratio configuration table).
PRPH_CLK_CFG register
The PRPH_CLK_CFG is an R/W register used to configure the peripheral source clock
definition. The register bit assignments is given in next table.
226/844
Doc ID 018672 Rev 1
RM0082
Miscellaneous registers (Misc)
Table 165. PRPH_CLK_CFG register bit assignments
PRPH_CLK_CFG Register
0x028
Bit
Name
Reset
Value
Description
[31:18]
RFU
-
Reserved for future use (Write don’t care - Read return
zeros)
[17]
gptmr3_freez
1’h0
General purpose timer-3 clock enable
1’b0: enable clock
1;’b1: disable clock
[16]
gptmr2_freez
1’h0
General purpose timer-2 clock enable
1’b0: enable clock
1;’b1: disable clock
[15:14]
RFU
-
Reserved for future use (Write don’t care - Read return
zeros).
[13]
gptmr1_freez
1’h0
General purpose time-1 clock enable
1’b0: enable clock
1;’b1: disable clock
[12]
gptrmr3_clksel
1’h0
GPT3 General purpose timer 3 source clock selection
1’b0: 48 MHz (default clock)
1’b1: Clock prescaler (PRSC3_CLK_CFG)n
[11]
gptmr2_clksel
1’h0
GPT2 General purpose timer 2 source clock selection
1’b0: 48 MHz (default clock)
1’b1: Clock prescaler (PRSC2_CLK_CFG)
[10:09]
RFU
-
Reserved for future use (Write don’t care - Read return
zeros).
[08]
gptmr1_clksel
1’h0
GPT1 General purpose timer 1 source clock selection
1’b0: 48 MHz (default clock)
1’b1: Clock prescaler (PRSC1_CLK_CFG).
1’h1
Real Time Clock enable.
1’b0: RTC clock enable (to be enabled to set 32 kHz as
the input clock source in DOZE mode).
1’b1: Disable RTC clock (disable 32 kHz as the input
clock source in DOZE mode)
2’h0
IrDA source clock selection
2’b00: 48 MHz (default clock)
2’b01: IrDA clock synthesizer Section 12.4.15: Auxiliary
clock synthesizer registers
2’b10: External PL_CLK (3) signal.
2’b11: Reserved.
1’h0
UART0 source clock selection
1’b0: 48 MHz (default clock)
1’b1:UART0 Clock Synthesizer Section 12.4.15: Auxiliary
clock synthesizer registers
[07]
[06:05]
[04]
rtc_disable
irda_clksel
uart_clksel
Doc ID 018672 Rev 1
227/844
Miscellaneous registers (Misc)
RM0082
Table 165. PRPH_CLK_CFG register bit assignments (continued)
PRPH_CLK_CFG Register
Bit
Name
Reset
Value
Description
[03:02]
RFU
-
Reserved for future use (Write don’t care - Read return
zeros).
1’h1
Enable PLL1 timer: this functionality replace PLL lock
signals and it's used to control the switch transition from
slow to normal operating mode when System controller
PLL1 timeout event expires:
1’b0: Disable PLL1 timer functionality.
1’b1: Enable PLL1 timer switching transition; set from
Processor to switch into the normal operating frequency
either after the initialization sequence complete or to
restore the normal operating condition from a dynamic
power down sequence (power save).
1’h0
Enable Xtal timer: this functionality enables an auxiliary
timer to control the switch transition from doze to slow
operating mode when system controller Xtal timeout
event expires:
1’b0: Disable Xtal timer functionality: the switch transition
is controlled from macro-oscillator clock enable signal.
1’b1: Enable Xtal timer; set from Processor to ensure the
oscillator output clock stable before to enter in slow
operating mode.
[01]
[00]
12.4.11
0x028
plltimeen
xtaltimeen
PERIP1_CLK_ENB register
The PERIP1_CLK_ENB is an R/W register which controls the peripheral clock enable
functionality. The register bit assignments is given in the next table.
Table 166. PERIP1_CLK_ENB register bit assignments
PERIP1_CLK_ENB Register
228/844
0x02C
Bit
Name
Reset
Value
Description
[31]
C3_clock_enb
1’h1
1’b0: Disable C3 clock
1’b1: Enable C3 clock
[30]
RFU
-
Reserved for future use (Write don’t care - Read return zeros).
[29]
ddr_core_enb
1’h1
DDR memory controller core clock enable; functionality asserted
setting ‘0’ the PERIPH1_CLK_ENB[27] after a previous write
with PERIPH1_CLK_ENB[29,27]=01:
1’b0: Disable DDR core clock gating functionality.
1’b1: Enable DDR core clock gating functionality.
[28]
RFU
-
Reserved for future use (Write don’t care - Read return zeros)
Doc ID 018672 Rev 1
RM0082
Miscellaneous registers (Misc)
Table 166. PERIP1_CLK_ENB register bit assignments (continued)
PERIP1_CLK_ENB Register
Bit
Name
0x02C
Reset
Value
Description
[27]
ddr_clkenb
1’h1
1’b0: Disable DDR memory controller core clock.
1’b1: Enable DDR memory controller core clock.
Note: Command allowed when ddr_core_enb bit is active high.
[26]
usbh_clock
1’h1
1'b0: Used to disable USB ehci host reset.
1'b1: Used to enable USB ehci host reset.
[25]
usbh1_clkenb
1’h0
1’b0: Disable USB host clock.
1’b1: Enable USB host clock.
[24]
usbdev_clkenb 1’h0
1’b0: Disable USB device clock.
1’b1: Enable USB device clock.
[23]
MAC_clkenb
1’h0
1’b0: Disable MAC Ethernet clock.
1’b1: Enable MAC Ethernet clock.
[22]
RFU
-
Reserved for future use (Write don’t care - Read return zeros).
[21]
smi_clkenb
1’h1
1’b0: Disable serial Flash controller clock.
1’b1: Enable serial Flash controller clock.
[20]
rom_clkenb
1’h1
1’b0: Disable ROM controller clock.
1’b1: Enable ROM controller clock.
[19]
DMA_clkenb
1’h0
1’b0: Disable DMA controller clock.
1’b1: Enable DMA controller clock.
[18]
GPIO_clkenb
1’h0
1’b0: Disable GPIO clock.
1’b1: Enable GPIO clock.
[17]
rtc_clkenb
1’h0
1’b0: Disable real time controller clock.
1’b1: Enable real time controller clock.
[16]
RFU
-
-
[15]
adc_clkenb
1’h0
1’b0: Disable ADC controller clock.
1’b1: Enable ADC controller clock.
[14:13] RFU
-
Reserved for future use (Write don’t care - Read return zeros).
[12]
GPT3 clkenb
1’h0
1’b0: Disable GPT 3 of basic subsystem clock.
1’b1: Enable GPT 3 of basic subsystem clock.
[11]
GPT2 clkenb
1’h0
1’b0: Disable GPT 2 of basic subsystem clock.
1’b1: Enable GPT 2 of basic subsystem clock.
[10]
firda_clkenb
1’h0
1’b0: Disable IrDA clock.
1’b1: Enable IrDA clock.
[09]
RFU
[08]
jpeg_clkenb
1’h0
1’b0: Disable JPEG codec clock.
1’b1: Enable JPEG codec clock.
Doc ID 018672 Rev 1
229/844
Miscellaneous registers (Misc)
RM0082
Table 166. PERIP1_CLK_ENB register bit assignments (continued)
PERIP1_CLK_ENB Register
Bit
Name
Reset
Value
Description
[07]
i2c_clkenb
1’h0
1’b0: Disable I2C clock.
1’b1: Enable I2C clock.
[06]
RFU
-
Reserved for future use (Write don’t care - Read return zeros).
[05]
ssp_clkenb
1’h0
1’b0: Disable SPI clock.
1’b1: Enable SPI clock.
[04]
RFU
-
Reserved for future use (Write don’t care - Read return zeros).
[03]
uart_clkenb
1’h1
1’b0: Disable UART0 clock.
1’b1: Enable UART0 clock.
[02]
RFU
[01]
arm_clkenb
[00]
12.4.12
0x02C
arm_enb
Reserved for future use
1’h1
1’b0: Disable ARM subsystem clock.
1’b1: Enable ARM subsystem clock.
Note: Command allowed when arm_enb bit is active high.
1’h0
ARM clock enable; functionality asserted setting ‘0’ the
PERIPH1_CLK_ENB[1] after a previous write with
PERIPH1_CLK_ENB[1,0]=01:
1’b0: Disable ARM clock gating functionality.
1’b1: Enable ARM clock gating functionality.
RAS_CLK_ENB register
The RAS_CLK_ENB is an R/W register which controls the internal programmable logic
clock enable functionality. The register bit assignments are given in the next table.
Table 167. RAS_CLK_ENB register bit assignments
RAS_CLK_ENB Register
230/844
0x034
Bit
Name
Reset
Value
Description
[31:16]
reserved
-
Reserved for future use (Write don’t care - Read return
zeros).
[15]
pl_gpck4_clkenb
1’h0
1’b0: Disable PL_CLK(4) external clock signal.
1’b1: Enable PL_CLK(4) external clock signal.
[14]
pl_gpck3_clkenb
1’h0
1’b0: Disable PL_CLK(3) external clock signal.
1’b1: Enable PL_CLK(3) external clock signal.
[13]
pl_gpck2_clkenb
1’h0
1’b0: Disable PL_CLK(2) external clock signal.
1’b1: Enable PL_CLK(2) external clock signal.
[12]
pl_gpck1_clkenb
1’h0
1’b0: Disable PL_CLK(1) external clock signal.
1’b1: Enable PL_CLK(1) external clock signal.
Doc ID 018672 Rev 1
RM0082
Miscellaneous registers (Misc)
Table 167. RAS_CLK_ENB register bit assignments (continued)
RAS_CLK_ENB Register
12.4.13
0x034
Bit
Name
Reset
Value
Description
[11]
ras_synt4_clkenb
1’h0
1’b0: Disable internal synthesizer-4 source clock.
1’b1: Enable internal synthesizer-4 source clock.
[10]
ras_synt3_clkenb
1’h0
1’b0: Disable internal synthesizer-3 source clock.
1’b1: Enable internal synthesizer-3 source clock.
[09]
ras_synt2_clkenb
1’h0
1’b0: Disable internal synthesizer-2 source clock.
1’b1: Enable internal synthesizer-2 source clock.
[08]
ras_synt1_clkenb
1’h0
1’b0: Disable internal synthesizer-1 source clock.
1’b1: Enable internal synthesizer-1 source clock.
[07]
pll2_clkenb
1’h0
1’b0: Disable PLL2 source clock.
1’b1: Enable PLL2 source clock.
[06]
RFU
[05]
clk48M_clkenb
1’h0
1’b0: Disable 48 MHz internal source clock.
1’b1: Enable 48 MHz internal source clock.
[04]
Clk24M_clkenb
1’h0
1’b0: Disable 24 MHz external source clock signal.
1’b1: Enable 24 MHz external source clock signal.
[03]
clk32K_clkenb
1’h0
1’b0: Disable 32 kHz external source clock signal.
1’b1: Enable 32 kHz external source clock signal.
[02]
pclkappl_clkenb
1’h0
1’b0: Disable internal PCLK (APB application Subsystem)
source clock.
1’b1: Enable internal PCLK (APB application Subsystem)
source clock.
[01]
pll1_clkenb
1’h0
1’b0: Disable PLL1 source clock.
1’b1: Enable PLL1 source clock.
[00]
hclk_clkenb
1’h0
1’b0: Disable internal AHB HCLK source clock.
1’b1: Enable internal AHB HCLK source clock.
PRSC1/2/3_CLK_CFG register
The PRSC1/2/3_CLK_CFG are three RW registers used to configure the timer pre scalar
frequencies. The output frequency is given from the following expressions:
F in
F out = ------------------------------------------(N + 1)
2
× (M + 1)
with M < 4096, N < 16; Fin = (PLL1 out frequency) 333 MHz. Fout Max 83 MHz.
The register bit assignments is detailed in the next table.
Doc ID 018672 Rev 1
231/844
Miscellaneous registers (Misc)
RM0082
Table 168. PRSC1/2/3_CLK_CFG register bit assignments
12.4.14
PRSC1_CLK_CFG Register
0x044
PRSC2_CLK_CFG
0x048
PRSC3_CLK_CFG
0x04C
Bit
Name
Reset
Value
Description
[31:16]
RFU
-
Reserved for future use (Write don’t care - Read return
zeros).
[15:12]
presc_n
4’h0
N (3:0) constant factor division value: N < 16.
[11:00]
presc_m
12’h0
M (11:0) constant division value: M < 4096.
AMEM_CFG_CTRL register
The AMEM_CFG_CTRL is an R/W register which configures and controls the
asynchronous/synchronous memory port-1 source clock definition.
The output frequency originated from the x/y clock synthesizer is given from the next
equation:
X
F out = ⎛ Fin × ----⎞ ⁄ 2
⎝
Y⎠
with Y < 256; X < Y/2; Fin = (ref. amem_synt_enb source clock definition).
The register bit assignments is detailed in the next table.
Table 169. AMEM_CFG_CTRL register bit assignments
AMEM_CFG_CTRL Register
Bit
Name
Reset
Value
Description
[31:24]
amem_xdiv
8’h0
X(7:0) clock synthesizer constant division: X < Y/2.
[23:16]
amem_ydiv
8’h0
Y(7:0) clock synthesizer constant division: Y<256.
[15]
amem_rst
1’h0
Memory port-1 soft reset command:
1’b0: Disable soft reset.
1’b1: Active soft reset command.
[14:05]
RFU
-
Reserved for future use (Write don’t care - Read return
zeros).
1’h0
Enable memory port-1 clock synthesizer:
1’b0: Disable memory clock synthesizer; memory clock is
provided in agree with the amem_clksel source clock
definitions.
1’b1: Enable memory clock synthesizer; memory clock is
provided from clock synthesizer logic (ref. amen Fout
equation)
[04]
232/844
0x050
amem_synt_enb
Doc ID 018672 Rev 1
RM0082
Miscellaneous registers (Misc)
Table 169. AMEM_CFG_CTRL register bit assignments (continued)
AMEM_CFG_CTRL Register
Bit
0x050
Reset
Value
Name
Description
Memory port-1 source clock definition (ref. next table)
Memory port2 source clock configuration table
[03:01]
[00]
12.4.15
amem_clk_sel
amem_clk_enb
3’h0
Control Bit
Description
3’b000
HCLK (synchronous operating mode) (.)
3’b001
PLL1(clock synthesizer should be enable).
3’b010
PLL2 (clock synthesizer should be enable).
3’b011
Ras_clk (programmable logic output
clock).
Note: This clock bypass the memory
clock synthesizer logic.
3’b100-111
Reserved (RFU)
Memory port-1 clock gating functionality:
1’b0: Disable memory clock.
1’b1: Enable memory clock.
1’h0
Auxiliary clock synthesizer registers
The Auxiliary clock synthesizers are a group of R/W registers which provide an auxiliary
source clock for some internal target devices: IrDA, UART, MII, and the RAS IPs.
If y is integer multiple of x, the clock generated will have less jitter.
The output frequency originated from every clock synthesizer is given from the following
equations:
X
F out 1 = ⎛⎝ Fin × ----⎞⎠ ⁄ 2
Y
X
F out 2 = ⎛⎝ Fin × ----⎞⎠
Y
with Y < 4096; X < Y/2; Fin = (ref. Clock synthesizer input frequency table)
For further details, please refer to Chapter 11: Clock & reset system .
The clock synthesizer input frequency is detailed in the next table:
Table 170. Clock Synthesizer input frequency
Clock synthesizer input frequency
Clock synthesizer
Src. Clk1 PLL1 Src. Clk2 PLL2 Description
IRDA
*
Clock provided from Pll1_clkout
UART
*
Clock provided from Pll1_clkout
MAC
*
Doc ID 018672 Rev 1
Programmable source clock (Ref.
MAC_CFG_REG register description).
233/844
Miscellaneous registers (Misc)
RM0082
Table 170. Clock Synthesizer input frequency (continued)
Clock synthesizer input frequency
Clock synthesizer
Src. Clk1 PLL1 Src. Clk2 PLL2 Description
RAS1
*
Clock provided from Pll1_clkout
RAS2
*
Clock provided from Pll1_clkout
RAS3
*
*
Source clock selected from
‘ras_synt34_clksel’ register field
RAS4
*
*
Source clock selected from
‘ras_synt34_clksel’ register field
The register bit assignments is given in the next table.
Table 171. Auxiliary clock synthesizer register bit assignments
Reserved
0x054 to 0x05C
IRDA_CLK_SYNT_CFG
0x060
UART0_CLK_SYNT_CFG
0x064
MAC_CLK_SYNT_CFG
0x068
RAS_CLK_SYNT1_CFG
0x06C
RAS_CLK_SYNT2_CFG
0x070
RAS_CLK_SYNT3_CFG
0x074
0x078
RAS_CLK_SYNT4_CFG
Bit
Name
Reset
Value
Description
[31]
synt_clk_enb
1’h0
Enable clock synthesizer functionality (.)
1’b0: Disable clock synthesizer.
1’b1: Enable clock synthesizer.
[30]
synt_clkout_sel 1’h0
Output Clock Synthesizer selection:
1’b0: Output frequency derived from Fout 1 equation.
1’b1: Output frequency derived from Fout2 equation.
[29:28]
RFU
-
Reserved for future use (Write don’t care - Read return
zeros).
[27:16]
synt_xdiv
12’h0
X_(11:0) clock synthesizer constant division: X<Y/2
[15:12]
RFU
-
Reserved for future use (Write don’t care - Read return
zeros).
[11:00]
synt_ydiv
12’h0
Y_(11:0) clock synthesizer constant division: Y < 4096
12.4.16
Soft reset control
12.4.17
PERIP1_SOF_RST register
The PERIP1_SOF_RST is an R/W register used to control the peripheral soft reset
functionality. The register bit assignments is given in the next table.
234/844
Doc ID 018672 Rev 1
RM0082
Miscellaneous registers (Misc)
Table 172. PERIP1_SOF_RST register bit assignments
PERIP1_SOF_RST Register
0x038
Bit
Name
Reset
Value
Description
[31]
C3_reset
1’h1
1’b0: Disable C3 reset.
1’b1: Active C3 reset.
[30]
RFU
-
-
[29]
ddr_core_enbr 1’h0
DDR memory controller reset enable; functionality asserted setting
‘0’ the PERIPH1_LOC_RST [27] after a previous write with
PERIPH1_LOC_RST [29,27]=11:
1’b0: Disable DDR core soft reset command.
1’b1: Enable DDR core soft reset command.
[28]
ram_swrst
1’h1
1’b0: Disable Basic subsystem RAM reset.
1’b1: Active Basic subsystem RAM reset command.
[27]
ddr_swrst
1’h0
1’b0: Disable DDR core controller reset.
1’b1: Active DDR core controller reset.
Note: Command allowed when ddr_core_enbr bit is active high.
[26]
usbh1_ehci_s
wrst
1’h1
1’b0: Disable USB ehci host reset.
1’b1: Active USB ehci host reset.
[25]
usbh1_ohci_s
wrst
1’h1
1’b0: Disable USB ohci host reset.
1’b1: Active USB ohci host reset.
[24]
usbdev_swrst
1’h1
1’b0: Disable USB device reset.
1’b1: Active USB device reset.
[23]
MAC_swrst
1’h1
1’b0: Disable MAC Ethernet reset.
1’b1: Active MAC Ethernet reset.
[22]
RFU
1’h1
Reserved for future use (Write don’t care - Read return zeros).
[21]
smi_swrst
1’h0
1’b0: Disable serial Flash controller reset.
1’b1: Active serial Flash controller reset.
[20]
rom_swrst
1’h0
1’b0: Disable ROM controller reset.
1’b1: Active ROM controller reset.
[19]
DMA_swrst
1’h1
1’b0: Disable DMA controller reset.
1’b1: Active DMA controller reset.
[18]
gpio_swrst
1’h1
1’b0: Disable GPIO reset.
1’b1: Active GPIO reset.
[17]
rtc_swrst
1’h1
1’b0: Disable real time controller reset.
1’b1: Active real time controller reset.
[16]
RFU
[15]
adc_swrst
1’h1
1’b0: Disable ADC controller reset.
1’b1: Active ADC controller reset.
[14]
RFU
1’h1
Reserved for future use (Write don’t care - Read return zeros).
[13]
RFU
Reserved for future use.
Reserved for future use.
Doc ID 018672 Rev 1
235/844
Miscellaneous registers (Misc)
RM0082
Table 172. PERIP1_SOF_RST register bit assignments (continued)
PERIP1_SOF_RST Register
Bit
Name
Reset
Value
Description
[12]
gptm3_swrst
1’h1
1’b0: Disable general purpose timer-3 reset.
1’b1: Active general purpose timer-3 reset.
[11]
gptm2_swrst
1’h1
1’b0: Disable general purpose timer-2 reset.
1’b1: Active general purpose timer-2 reset.
[10]
firda_swrst
1’h1
1’b0: Disable irda reset.
1’b1: Active irda reset.
[09]
RFU
-
Reserved for future use (Write don’t care - Read return zeros).
[08]
jpeg_swrst
1’h1
1’b0: Disable JPEG codec reset.
1’b1: Active JPEG codec reset.
[07]
i2c_swrst
1’h1
1’b0: Disable I2C reset.
1’b1: Active I2C reset.
[06]
RFU
[05]
ssp_swrst
1’h1
1’b0: Disable SPI reset.
1’b1: Active SPI reset.
[04]
RFU
1’h1
Reserved for future use (Write don’t care - Read return zeros).
[03]
uart_swrst
1’h0
1’b0: Disable UART reset.
1’b1: Active UART reset.
[02]
RFU
1’h1
Reserved for future use (Write don’t care - Read return zeros).
[01]
arm1_swrst
1’h0
1’b0: Disable ARM subsystem reset.
1’b1: Active ARM subsystem reset
Note: Command allowed when arm1_enbr bit is active high.
1’h0
Arm1 reset enable; functionality asserted setting ‘0’ the
PERIPH1_LOC_RST[1] after a previous write with
PERIPH1_LOC_RST [1,0]=11:
1’b0: Disable ARM soft reset command.
1’b1: Enable ARM soft reset command.
[00]
12.4.18
0x038
arm1_enbr
Reserved for future use.
RAS_SOF_RST register
The RAS_SOF_RST is an R/W register which controls the internal programmable logic soft
reset functionality. The register bit assignments is given in the next table.
236/844
Doc ID 018672 Rev 1
RM0082
Miscellaneous registers (Misc)
Table 173. RAS_SOF_RST register bit assignments
RAS_SOF_RST Register
Bit
Name
[31:16
RFU
]
0x040
Reset
Value
Description
-
Reserved for future use (Write don’t care - Read return zeros).
[15]
pl_gpck4_swrst 1’h1
1’b0: Disable reset command.
1’b1: Active reset command.
[14]
pl_gpck3_swrst 1’h1
1’b0: Disable reset command.
1’b1: Active reset command.
[13]
pl_gpck2_swrst 1’h1
1’b0: Disable reset command.
1’b1: Active reset command.
[12]
pl_gpck1_swrst 1’h1
1’b0: Disable reset command.
1’b1: Active reset command.
[11]
ras_synt4_swr
st
1’h1
1’b0: Disable reset command.
1’b1: Active reset command.
[10]
ras_synt3_swr
st
1’h1
1’b0: Disable reset command.
1’b1: Active reset command.
[09]
ras_synt2_swr
st
1’h1
1’b0: Disable reset command.
1’b1: Active reset command.
[08]
ras_synt1_swr
st
1’h1
1’b0: Disable reset command.
1’b1: Active reset command.
[07]
pll2_swrst
1’h1
1’b0: Disable reset command.
1’b1: Active reset command.
[06]
clk125M_swrst 1’h1
This bit is always 1 since GBIT Ethernet is not supported
[05]
clk48M_swrst
1’h1
1’b0: Disable reset command.
1’b1: Active reset command.
[04]
Clk24M_swrst
1’h1
1’b0: Disable reset command.
1’b1: Active reset command.
[03]
Clk32K_swrst
1’h1
1’b0: Disable reset command.
1’b1: Active reset command.
[02]
pclkappl_swrst
1’h1
1’b0: Disable reset command.
1’b1: Active reset command.
[01]
pll1_swrst
1’h1
1’b0: Disable reset command.
1’b1: Active reset command.
[00]
hclk_swrst
1’h1
1’b0: Disable reset command.
1’b1: Active reset command.
Doc ID 018672 Rev 1
237/844
Miscellaneous registers (Misc)
RM0082
12.4.19
SoC configuration basic parameters
12.4.20
ICM1-8_ARB_CFG register
The ICM1-8_ARB_CFG is a group of R/W registers which configure the embedded
interconnection matrix arbitration protocol and the priority level of each masters; the next
table shows the relations from all ICMs and their correspondent logic domains.
Table 174. Interconnection matrix
Interconnection Matrix
ICM properties
Logic domain
ICM number
ICM Master number
ICM-1
3
Low speed subsystem
ICM-2
3
Application subsystem
ICM-3
2
Basic subsystem
ICM-4
2
High speed subsystem
ICM-5
2
Memory controller port-2
ICM-6
2
RAS_F port
ICM-7
4
Memory controller port-3
ICM-8
2
Memory controller port-4
The register bit assignments is given in the next table.
Table 175. ICM 1-9_ARB_CFG register bit assignments
ICM1_ARB_CFG Register
0x07C
ICM2_ARB_CFG
0x080
ICM3_ARB_CFG
0x084
ICM4_ARB_CFG
0x088
ICM5_ARB_CFG
0x08C
ICM6_ARB_CFG
0x090
ICM7_ARB_CFG
0x094
ICM8_ARB_CFG
0x098
Bit
238/844
Name
Reset Value
Description
1’h0
Interconnect matrix arbitration Protocol definition:
1’b0: Fixed priority arbitration type; the arbitration
policy is done in agree with the priority level
definition of each master (level 0 is the highest
priority).
1’b1: Round robin arbitration type.
[31]
mtx_arb_type
[30:28]
mxt_rndrb_pry
3’h0
_lyr
This field specifies the priority starting level (from o
to 7) used from round robin arbitration protocol.
This field is not relevant in case of fixed arbitration
scheme.
Doc ID 018672 Rev 1
RM0082
Miscellaneous registers (Misc)
Table 175. ICM 1-9_ARB_CFG register bit assignments (continued)
ICM1_ARB_CFG Register
0x07C
ICM2_ARB_CFG
0x080
ICM3_ARB_CFG
0x084
ICM4_ARB_CFG
0x088
ICM5_ARB_CFG
0x08C
ICM6_ARB_CFG
0x090
ICM7_ARB_CFG
0x094
ICM8_ARB_CFG
0x098
Bit
Name
Reset Value
Description
[27:24]
RFU
-
Reserved for future use (Write don’t care - Read
return zeros)
[23:21]
mtx_fix_pry_lyr
3’h0
7
Reserved field not applicable for current silicon
version.
[20:18]
mtx_fix_pry_lyr
3’h0
6
Reserved field not applicable for current silicon
version.
[17:15]
mtx_fix_pry_lyr
3’h0
5
Reserved field not applicable for current silicon
version.
[14:12]
mtx_fix_pry_lyr
3’h0
4
Reserved field not applicable for current silicon
version.
[11:09]
mtx_fix_pry_lyr
3’h0
3
Master layer-3 fixed priority number level (from 0 to
7). This field is relevant only for ICM7_ARB_CFG
registers. (ref. Fixed priority number level definition
table). (.)
[08:06]
mtx_fix_pry_lyr
3’h0
2
Master layer-1 fixed priority number level (from 0 to
7) (ref. Fixed priority number level definition table).
(.)
[05:03]
mtx_fix_pry_lyr
3’h0
1
Master layer-1 fixed priority number level (from 0 to
7) (ref. Fixed priority number level definition table).
(.)
Doc ID 018672 Rev 1
239/844
Miscellaneous registers (Misc)
RM0082
Table 175. ICM 1-9_ARB_CFG register bit assignments (continued)
ICM1_ARB_CFG Register
0x07C
ICM2_ARB_CFG
0x080
ICM3_ARB_CFG
0x084
ICM4_ARB_CFG
0x088
ICM5_ARB_CFG
0x08C
ICM6_ARB_CFG
0x090
ICM7_ARB_CFG
0x094
ICM8_ARB_CFG
0x098
Bit
Name
Reset Value
Description
Master layer-0 fixed priority number level (from 0 to
7); (ref. next table). (.)
Fixed priority level definition table
[02:00]
Note:
mtx_fix_pry_lyr
3’h0
0
Control Bit
Description
3’b000
Priority level 0
(highest)
3’b001
Priority level 1
3’b010
Priority level 2
3’b011
Priority level 3
3’b100
Priority level 4
3’b101
Priority level 5
3’b110
Priority level 6
3’b111
Priority level 7
(lowest)
1
Field ignored in case of round-robin arbitration type.
2
In case more masters share the same priority level the lowest master number is granted.
12.4.21
DMA_CHN_CFG register
The DMA_CHN_CFG is an R/W register which configures the DMA channels assignment
scheme among different requester agents. Two basic assignment schemes are supported
for current silicon version:
●
DMA_Sch_0: Core logic domain
●
DMA_Sch_1: RAS domain
The register bit assignment is given in the next table.
240/844
Doc ID 018672 Rev 1
RM0082
Miscellaneous registers (Misc)
Table 176. DMA_CHN_CFG register bit assignment
DMA_CHN_CFG Register
Bit
Name
0x0A0
Reset
Value
Description
DMA channel configuration scheme: this field configures
each DMA channel assignment. Please refer to Table 588:
RAS DMA configuration for the Sch_1 channel
assignments.(the configuration value ‘10’ and ‘11’ are
reserved and not applicable for current silicon version).
12.4.22
CHAN
(Sch_0)00
(Sch_1)01
[31:30]
dma_cfg_chan 15
2’h0
15
FROM_JPEG
RAS_7 Tx
[29:28]
dma_cfg_chan 14
2’h0
14
TO_JPEG
RAS_7 Rx
[27:26]
dma_cfg_chan 13
2’h0
13
ADC
RAS_6 Tx
[25:24]
dma_cfg_chan 12
2’h0
12
IrDA Rx/Tx
RAS_6 Rx
2C
[23:22]
dma_cfg_chan 11
2’h0
11
I
Tx
RAS_5 Tx
[21:20]
dma_cfg_chan 10
2’h0
10
I2C Rx
RAS_5 Rx
[19:18]
dma_cfg_chan 09
2’h0
09
SSP0_Tx
RAS_4 Tx
[17:16]
dma_cfg_chan 08
2’h0
08
SSP0_Rx
RAS_4 Rx
[15:14]
dma_cfg_chan 07
2’h0
07
Reserved
RAS_3 Tx
[13:12]
dma_cfg_chan 06
2’h0
06
Reserved
RAS_3 Rx
[11:10]
dma_cfg_chan 05
2’h0
05
Reserved
RAS_2 Tx
[09:08]
dma_cfg_chan 04
2’h0
04
Reserved
RAS_2 Rx
[07:06]
dma_cfg_chan 03
2’h0
03
UART0 Tx
RAS_1 Tx
[05:04]
dma_cfg_chan 02
2’h0
02
UART0 Rx
RAS_1 Rx
[03:02]
dma_cfg_chan 01
2’h0
01
Reserved
RAS_0 Tx
[01:00]
dma_cfg_chan 00
2’h0
00
Reserved
RAS_0 Rx
USB2_PHY_CFG register
The USB2_PHY_CFG is a R/W register which configures the USB2 triple Phy Basic
parameters. The register bit assignments is given in the next table.
Doc ID 018672 Rev 1
241/844
Miscellaneous registers (Misc)
RM0082
Table 177. USB2_PHY_CFG register bit assignments
USB2_PHY_CFG Register
Bit
Name
Reset Value
Description
[31:04]
RFU
-
Reserved for future use.
[03]
usbh_overcur
1’h0
USB host over-current: enable USB controller to enter
in power down state when an electrical overcurrent
condition is detected on the corresponding USB bus:
To check
1’b0: Disable functionality
1’b1: Enable over-current detection functionality.
[02:01]
RFU
-
Reserved for future use.
1’h0
This bit controls the state of PLL blocks when in
Suspend mode
1’b0: PLL blocks powered up during Suspend mode
1’b1: PLL blocks powered down during Suspend mode
[00]
12.4.23
0x0A4
PLL_pwdn
MAC_CFG_CTR register
The MAC_CFG_CTR is an R/W register which configures the MAC Ethernet internal source
clock. The register bit assignments is given in the next table.
Table 178. MAC_CFG_CTR register bit assignments
MAC_CFG_CTR Register
0x0A8
Bit
Name
Reset Value
Description
[31:05]
RFU
-
Reserved for future use (Write don’t care - Read
return zeros).
1’h0
MAC GMII/MII clock synthesizer enable:
1’b0: Disable MAC clock synthesizer: GMII/MII
clock is provided in agree with the MAC_clk_sel
source clock definitions.
1’b1: Enable MAC clock synthesizer: GMII/MII
clock is provided from clock synthesizer logic
(ref. MAC_CLK_SYNT_CFG register
description).(1)
[04]
MAC_synt_enb
MAC internal source clock definition(1)
MII source clock definition table
[03:02]
242/844
MAC_clk_sel
2’h0
Control
Bit
Source
clock
Description
2’b00
External
MII_txclk25’ signal
2’b01
Internal
PLL2 output clock
2’b10
External
24 MHz oscillator
2’b11
-
Reserved
Doc ID 018672 Rev 1
RM0082
Miscellaneous registers (Misc)
Table 178. MAC_CFG_CTR register bit assignments (continued)
MAC_CFG_CTR Register
0x0A8
Bit
Name
Reset Value
Description
[01]
RFU
-
Reserved for future use (Write don’t care - Read
return zeros)
1’h0
MII normal/reverse mode configuration type:
1’b0: MII normal mode (external Eth. PHY
connection): both Txclk and Rxclk bidirectional
signals are configured with input direction and
the MII clocks are provided from the external
Phy.
1’b1: MII reverse mode (MII to MII direct
connection): both Txclk and RXclk bidirectional
signals are configured with output direction and
the MII clock are provided from the internal
logic.
[00]
mili_reverse
1. MII frequency definition should be compliant with IEEE-803.3 std: MII Txclk/Rxclk 25/2.5 MHz.
12.4.24
Special configuration parameters
12.4.25
Powerdown_CFG_CTR register
The POWERDOWN_CFG_CTR is an R/W register which configures the interrupt wakeup
type used in conjunction with the dynamic power down functionality. The register bit
assignments is given in the next table.
Table 179. Powerdown_CFG_CTR register bit assignments
Powerdown_CFG_CTR Register
Bit
Name
Reset
Value
[31:01]
RFU
-
[00]
wakeup_fiq_enb
1’h0
0x0E0
Description
Reserved for future use (Write don’t care - Read return zeros)
Wakeup interrupt type (Firq/Irq) definition; this field selects the
interrupt type detected from processor-1 to restore the normal
operating frequency from the power down state (switch from
sleep to doze/low speed operating mode):
1’b0: Irq interrupt type: the peripheral interrupt requests lines
are also used as a wakeup source event increasing the overall
interrupt latency time.
1’b1: Firq interrupt type: single global interrupt request line
which ensure both fast recovery time from power down state
and the best peripheral interrupt response time since the
wakeup SW interrupt service routine is centralized.
The wakeup interrupt vector is defined in the processor-1
interrupt table line-15.(1)
1. IRQ interrupt type should be masked before to enter in sleep mode,
Doc ID 018672 Rev 1
243/844
Miscellaneous registers (Misc)
12.4.26
RM0082
COMPSSTL_1V8_CFG/DDR_2V5_COMPENSATION register
The COMPSSTL_1V8_CFG/DDR_2V5_COMPENSATION is R/W registers which configure
the internal SSTL compensation cells parameters. The register bit assignments is given in
the next table.
Table 180. COMPSSTL_1V8_CFG/DDR_2V5_COMPENSATION register bit
assignments
COMPSSTL_1V8_CFG Register
12.4.27
0x0E4
Bit
Name
Reset Value Description
[31]
TQ
1’h0
It enables IDDq mode.
[30:24]
rasrc
7'h78
Writing code compensation parameter: field sampled from
the compensation macro-cell during Read operating mode
command (ref. Compensation cell operating mode table).
[23]
RFU
-
Reserved for future use (Write don’t care - Read return zeros)
[22:16]
nasrc
-
Read code compensation parameter (RO); this field is
qualified from ‘sts_ok’ active high.
[15:05]
RFU
-
Reserved for future use (Write don’t care - Read return
zeros).
[04]
COMPOK
1’h0
Valid code compensation (RO); field actives high in normal
mode when the measured code is available on the
compensation bus nasrc.
[03]
accurate
1’h1
Compensation cell internal/external reference resistance
definition:
1’b0: Internal reference resistor
1’b1: External reference resistor: used to improve the
accuracy of compensation code value.
[02]
freeze
1’h0
Freeze command: when high freezes the current calculated
value of compensation bus.
[01]
comptq
1’h0
Compensation cell internal command parameter (ref.
Compensation cell operating mode table)
[00]
compen
1’h0
Compensation cell internal command parameter (ref.
Compensation cell operating mode table).
COMPCOR_3V3_CFG register
The COMPCOR_3V3_CFG is a R/W register which configures the internal CORE
compensation cell parameters. The register bit assignments is given in the next table.
244/844
Doc ID 018672 Rev 1
RM0082
Miscellaneous registers (Misc)
Table 181. COMPCOR_3V3_CFG register bit assignments
COMPCOR_3V3_CFG Register
12.4.28
0x0EC
Bit
Name
Reset Value
Description
[31]
TQ
1’h0
It enables IDDq mode.
[30:24]
RASRC
7'h78
Writing code compensation parameter sample from the
compensation macro-cell during Read operating mode
(ref. Compensation cell operating mode table).
[23]
RFU
-
Reserved for future use (Write don’t care - Read return
zeros).
[16:22]
NASRC
7'h0
Copy of the code on compensation bus (Note that bit 30
of RASRC is mapped on bit 16 and so on)
[15:05]
RFU
-
Reserved for future use (Write don’t care - Read return
zeros).
[04]
COMPOK
1’h0
Valid code compensation (RO); field actives high in
normal mode when the measured code is available on
the compensation bus nasrc.
[03]
ACCURATE
1’h0
Compensation cell internal/external reference
resistance definition:
1’b0: Internal reference resistor
1’b1: External reference resistor: used to improve the
accuracy of compensation code value.
[02]
FREEZE
1’h0
Freeze command: when high freezes the current
calculated value of compensation bus.
[01]
COMPTQ
1’h1
Compensation cell internal command parameter (ref.
Compensation cell operating mode table)
[00]
COM PEN
1’h0
It selects macro_cell operating modes.
DDR_PAD register
The DDR_PAD is a R/W register which configures the SSTL pad internal parameters.The
register bit assignments is given in the next table.
Table 182. DDR_PAD register bit assignments
DDR_PAD Register
0x0F0
Bit
Name
Reset
Value
Description
[31:19]
RFU
-
Reserved for future use (Write don’t care - Read return
zeros).
[18:15]
DDR_SW-mode[3:0]
4’h0
When ‘0110’ the selection of DDR2/DDR (Low power)
is decided by SW. In all other cases, the selection is
decided by the value of DDR2_EN pad.
Doc ID 018672 Rev 1
245/844
Miscellaneous registers (Misc)
RM0082
Table 182. DDR_PAD register bit assignments (continued)
DDR_PAD Register
Bit
[14]
Name
DDR_EN_PAD
0x0F0
Reset
Value
Description
-
It contains the value decided in the external pad
DDR2_EN to select DDR (Low Power) or DDR2 (RO)
1’b0: DDR2
1’b1: DDR Low Power
[13]
REFSSTL
1’h1
Internal/External SSTL common reference voltage
definition:
1’b0: Internal reference voltage
1’b1: External reference voltage to be applied on
DDR_MEM_REF signal
[12]
GATE_OPEN_mode
1’h1
It selects the internal (1) or external (0) gate open
mode. It is connected to stp_asic IP.
[11]
RFU
-
Reserved for future use (Write don’t care - Read return
zeros).
[10]
ENZI
1’h0
Input buffer enable. Active low, connected to ENZI of
all the pads.
[09]
DQS_PDN_sel
1’h1
DQS Pull down. It is connected to PDCLK of SSTL
differential pads.
[08]
DQS_PU_sel
1’h0
DQS pull up, it is connected to PUCLK of SSTL
different pads.
[07]
CLK_PDN_sel
1’h1
Programmable CLK Pull down functionality connected
with both PDCLK and PCLKB signals of SSTL
different pads (ref. Pull-up/down configuration table)
[06]
CLK_PU_sel
1’h0
Programmable CLK Pull up functionality connected
with both PUCLK and PUCLKB signal of SSTL
different pads (ref. Pull-up/down configuration table)
Enable active Pull Down for SE SSTL pads (ref. next
table)
Pull/up down configuration table
[05]
[04]
246/844
PDN_sel
PU-sel
1’h1
1’h0
Pull-up
Pull-Down
Description
0
1
Pull-up/down not
actives
1
1
Active pull-up
0
0
Active pull-down
1
0
Forbidden
Pull up activation for SE SSTL pads (ref. Pull-up/down
configuration table)
Doc ID 018672 Rev 1
RM0082
Miscellaneous registers (Misc)
Table 182. DDR_PAD register bit assignments (continued)
DDR_PAD Register
Bit
0x0F0
Name
Reset
Value
Description
SSTL pad drive strength mode: the overall drive
strength picture is detailed here below.
1’b0: Strong drive strength.
1’b1: Weak drive strength.
This bit changes the output impedance of the pad.
[03]
S_W_mode
1’h1
[02]
PROG_a
1’h0
[01]
PROG_b
1’h1
[00]
DDR_LOW_POWER_
1’h0
DDR2_mode
12.4.29
Memory BIST execution control
12.4.30
BIST1_CFG_CTR register
Combination of these bits selects the speed of
operation of PAD, 00->200 MHz, 01->266 MHz, 10>333 MHz, 11->Prohibited.
It selects DDR2(0) or DDR low power (1) mode.
The BIST1_CFG_CTR is an R/W register which configures and controls the internal core
memory BIST execution at the functional speed. The register bit assignments is given in the
next table.
Table 183. BIST1_CFG_CTR register bit assignments
BIST1_CFG_CTR Register
0x0F4
Bit
Name
Reset
Value
Description
[31]
bist1_res_rst
1’h0
Reset status register result (BIST1_STS_RES):
1’b0: Disable reset status.
1’b1: Active reset status.
[30:29}
RFU
-
Reserved for future use (Write don’t care - Read return zeros)
[28]
bist1_rst
1’h0
Reset BIST engine collar:
1’b0: Disable reset.
1’b1: Active reset.
Doc ID 018672 Rev 1
247/844
Miscellaneous registers (Misc)
RM0082
Table 183. BIST1_CFG_CTR register bit assignments (continued)
BIST1_CFG_CTR Register
Bit
Name
0x0F4
Reset
Value
Description
Memory BIST interface command: command code and BIST
engine actions are detailed in the next table
Memory Bist Command Table
[23:15]
248/844
RFU
-
Debug
Iddq
1’h0
1’h0
1’h0
1’h0
Ret
bist1-tm
bist1_debug
bist1_ret
bist1_iddq
Tm
[27]
[26]
[25]
[24]
Peripherals
Rbacktx
Bist command
0
0
1
0
0
Run BIST
0
0
0
0
1
Scan collar
0
1
0
0
0
Read 0 retention test
0
1
0
0
1
Read 1 retention test
0
0
0
1
0
Iddq fill 0
0
0
0
1
1
Iddq fill 0
0
0
1
1
0
Stable mode
0
0
0
0
0
Transparent mode
Rbact reserved command.
Doc ID 018672 Rev 1
RM0082
Miscellaneous registers (Misc)
Table 183. BIST1_CFG_CTR register bit assignments (continued)
BIST1_CFG_CTR Register
Bit
Name
0x0F4
Reset
Value
Description
15’h0
Run BIST execution command (ref. Memory BIST command):
1’b0: Disable BIST command
1’b1: Run BIST command: memory BIST execution can be done
either in single or group mode (ref. next table)
Run BIST command table
[14:00]
12.4.31
rbact1
(14:00)
Rbact
Memory cut
Peripherals
[14]
ST_DPHS_2048X32m8_Lb
Low speed shrd men
[13]
ST_DPHD_96X128m4_b
(HWACC)
Application subssystem (HWACC)
[12]
ST_SPREG_384X12m4_L
JPEG HUFFENC
[11]
ST_SPREG_416X8m4_L
JPEG DHTMEM
[10]
ST_SPREG_256X8m4_L
JPEG QMEM
[09]
ST_SPREG_96X11m4_L
JPEG ZIGRAM_2
[08]
ST_SPREG_96X11m4_L
JPEG ZIGRAM_1
[07]
ST_DPHD_96X11m4_L
JPEG DCTRAM
[06]
ST_DPREG16X32m2_b
JPEG CTRL TX Fifo
[05]
ST_DPREG_16X32m2
JPEG CTRL RX Fifo
[04]
ST_DPREG_1024X35m4
Mac_rxfifo
[03]
ST_DPREG_512X35m4
Mac_txfifo
[02]
ST_DPHS_1024X36m8_L
Usb_device
[01]
RFU (not used)
[00]
ST_DPHD_256X32m4_L
Usb_host
BIST2_CFG_CTR register
The BIST2_CFG_CTR is an R/W register which configures and controls the RAS sub-group
memory BIST execution at the functional speed. The register bit assignments is given in the
next table.
Doc ID 018672 Rev 1
249/844
Miscellaneous registers (Misc)
RM0082
Table 184. BIST2_CFG_CTR register bit assignments
BIST2_CFG_CTR Register
0x0F8
Bit
Name
Reset
Value
Description
[31]
bist2_res_rst
1’h0
Reset status register result (BIST2_STS_RES)
1’b0: Disable reset
1’b1: Active reset
[30:29]
RFU
-
Reserved for future use (Write don’t care - Read return
zeros).
[28]
bist2_rst
1’h0
Reset BIST engine collar:
1’b0: Disable reset.
1’b1: Active reset
[27]
[26]
[25]
[24]
bist2_tm
bist2_debug
bist2_ret
bist2_iddq
1’h0
1’h0
1’h0
1’h0
Memory BIST interface command: command code and
BIST engine actions are detailed in the Memory BIST
Command Table
[23:04]
RFU
Run BIST execution command (ref. Memory BIST
command):
1’b0: Disable BIST command.
1’b1: Run BIST command: memory BIST execution can be
done either in single or group mode (ref. next table)
Run BIST command table
[03:00]
12.4.32
rbact2(03:00)
4’h0
Rbact
Memory Cut
Peripherals
[03]
ST_SPREG_2048 RAS Local Data
X32m8_Lb
Buffer-0
[02]
ST_DPHS_1024X RAS Local Data
32m8_Lb
Buffer - 1
[01]
ST_DPHD_128X8 RAS HWACC
m4_L
Data Buffer
[00]
ST_DPHD_96X12 RAS HWACC
8m4_b (RAS)
Data Descriptor
BIST3_CFG_CTR register
The BIST3_CFG_CTR is an R/W register which configures and controls the RAS-2 subgroup memory BIST execution at the functional speed. The register bit assignments is given
in the next table.
250/844
Doc ID 018672 Rev 1
RM0082
Miscellaneous registers (Misc)
Table 185. BIST3_CFG_CTR register bit assignments
BIST3_CFG_CTR Register
0x0FC
Bit
Name
Reset Value
Description
[31]
bist3_res_rst
1’h0
Reset status register result (BIST3_STS_RES)
1’b0: Disable reset
1’b1: Active reset.
[30:29]
RFU
-
Reserved for future use (Write don’t care - Read
return zeros).
[28]
bist3_rst
1’h0
Reset BIST engine collar:
1’b0: Disable reset.
1’b1: Active reset.
[27]
[26]
[25]
[24]
bist3_tm
bist3_debug
bist3_ret
bist3_iddq
1’h0
1’h0
1’h0
1’h0
Memory BIST interface command:command
code and BIST engine actions are detailed in the
Memory Bist Command Table
[23:03]
RFU
Run BIST execution command (ref. Memory BIST
command):
1’b0: Disable BIST command.
1’b1: Run BIST command: memory BIST
execution can be done either in single or group
mode (ref. next table)
Run BIST command table
[02:00]
12.4.33
rbact3(02:00)
3’h0
Rbact
Memory Cut
Peripherals
[02]
ST_SPHDL_2
048X8m16
RAS Local
Data Buffer - 2
[01]
RAS Local
ST_SPREG_1
Data Buffer 024X32m4_Lb
3_0
[00]
ST_SPREG_5
12X32m4_Lb
RAS Local
Data Buffer 3_1
BIST4_CFG_CTR register
The BIST4_CFG_CTR is an R/W register which configures and controls the ARM internal
memory BIST execution at the functional speed. The register bit assignments is given in the
next table.
Doc ID 018672 Rev 1
251/844
Miscellaneous registers (Misc)
RM0082
Table 186. BIST4_CFG_CTR register bit assignments
BIST4_CFG_CTR Register
0x100
Bit
Name
Reset Value
Description
[31]
bist4_res_rst
1’h0
Reset status register result (BIST4_STS_RES):
1’b0: Disable reset
1’b1: Active reset
[30:29]
RFU
-
Reserved for future use (Write don’t care - Read return
zeros).
[28]
bist4_rst
1’h0
Reset BIST engine collar.
1’b0: Disable reset.
1’b1: Active reset.
[27]
[26]
[25]
[24]
bist4_tm
bist4_debug
bist4_ret
bist4_iddq
1’h0
1’h0
1’h0
1’h0
Memory BIST interface command:command code and
BIST engine actions are detailed in the Memory BIST
Command Table
[23:08]
RFU
Run BIST execution command (ref. Memory BIST
command):
1’b0: Disable BIST command.
1’b1: Run BIST command execution.
[07:00]
12.4.34
rbact4
8’h0
RBACT
Memory Cut
[00]
A926CM_rbact_dcache
[01]
A926CM_rbact_dcache
[02]
A926CM_rbact_dtag
[03]
A926CM_rbact_dvalid
[04]
A926CM_rbact_icache
[05]
A926CM_rbact_itag
[06]
A926CM_rbact_ivalid
[07]
A926CM_rbact_mmu
BIST1_STS_RES register
The BIST1_STS_RES is an RO register which returns the functional BIST execution results
for the internal core memory group. The register bit assignments is given in the next table.
252/844
Doc ID 018672 Rev 1
RM0082
Miscellaneous registers (Misc)
Table 187. BIST1_STS_RES register bit assignments
BIST1_STS_RES Register
0x108
Bit
Name
Reset
Value
Description
[31]
bist1_end
-
End memory BIST 1 execution:
1’b0: BIST execution pending.
1’b1: End memory BIST execution.
[30:24]
RFU
-
Reserved for future use (Write don’t care - Read return zeros).
[23:15]
RFU
-
Reserved for BIST bad extension field.
BIST execution result (BIST bad signal status):
1’b0: BIST execution ok.
1’b1: BIST execution fails (ref. next table)
Run BIST status table
[14:00]
bbad1(14:00)
Rbact
Memory cut
[14]
ST_DPHS_2048X3
Low speed shrd mem
2m8_Lb
[13]
ST_DPHD_96X128 Application subsystem
m4_b (HWACC)
(HWACC)
[12]
ST_SPREG_384X1
JPEG HUFFENC
2m4_L
[11]
ST_SPREG_416X8
JPEG DHTMEM
m4_L
[10]
ST_SPREG_256X8
JPEG QMEM
m4_L
[09]
ST_SPREG_96X11
JPEG ZIGRAM_2
m4_L
[08]
ST_SPREG_96X11
JPEG ZIGRAM_1
m4_L
[07]
ST_DPHD_64X15
m4_L
JPEG DCTRAM
[06]
ST_DPREG_16X3
2m2_b
JPEG CTRL TX Fifo
[05]
ST_DPREG_16X3
2m2
JPEG CTRL RX Fifo
[04]
ST_DPREG_1024
X35m4
Mac_rxfifo
[03]
ST_DPREG_512X
35m4
Mac_txfifo
[02]
ST_DPHS_1024X3
Usb_device
6m8_L
[01]
RFU (not used)
[00]
ST_DPHD_256X32
Usb_host
m4_L
-
Doc ID 018672 Rev 1
Peripherals
253/844
Miscellaneous registers (Misc)
12.4.35
RM0082
BIST2_STS_RES register
The BIST2_STS_RES in an RO register which returns the functional BIST execution results
for the RAS-1 memory sub-group. The register bit assignments is given in the next table.
Table 188. BIST2_STS_RES register bit assignments
BIST2_STS_RES Register
254/844
0x10C
Bit
Name
Reset
Value
Description
[31]
bist2_end
-
End memory BIST2 execution:
1’b0: BIST execution pending
1’b1: End memory BIST execution.
[30:24]
RFU
-
Reserved for future use (Write don’t care - Read return
zeros).
[23:15]
RFU
-
Reserved for BIST bad extension field.
Doc ID 018672 Rev 1
RM0082
Miscellaneous registers (Misc)
Table 188. BIST2_STS_RES register bit assignments (continued)
BIST2_STS_RES Register
Bit
Name
0x10C
Reset
Value
Description
BIST execution result (BIST bad signal status):
1’b0: BIST execution ok.
1’b1: BIST execution fails (ref. next table)
Bist failure table
[14:00]
12.4.36
bbad2(14:00)
Bbad
Memory Cut
[14]
ST_SPREG_2048
Ras buf. Sp4Kx8_2
x32m8_Lb
[13]
ST_SPREG_2048
Ras buf. Sp8Kx8_1
x32m8_Lb
[12]
ST_DPHS_1024x
32m8_Lb
Ras buf. Sp4Kx8_4
[11]
ST_DPHS_1024x
32m8_Lb
Ras buf. Sp4Kx8_3
[10]
ST_DPHS_1024x
32m8_Lb
Ras buf. Dp4Kx8_2
[09]
ST_DPHS_1024x
32m8_Lb
Ras buf. Dp4Kx8_1
[08]
ST_DPHD_128x8
Ras hwacc.SpDp128x8_8
m4_L
[07]
ST_DPHD_128x8
Ras hwacc.SpDp128x8_7
m4_L
[06]
ST_DPHD_128x8
Ras hwacc.SpDp128x8_6
m4_L
[05]
ST_DPHD_128x8
Ras hwacc.SpDp128x8_5
m4_L
[04]
ST_DPHD_128x8
Ras hwacc.SpDp128x8_4
m4_L
[03]
ST_DPHD_128x8
Ras hwacc.SpDp128x8_3
m4_L
[02]
ST_DPHD_128x8
Ras hwacc.SpDp128x8_2
m4_L
[01]
ST_DPHD_128x8
Ras hwacc.SpDp128x8_1
m4_L
[00]
ST_DPHD_96x12
Ras hwdescr.Dp96x128
8m4_b
-
Peripherals
BIST3_STS_RES register
The BIST3_STS_RES is an RO register which returns the functional BIST execution results
for the RAS-2 memory sub-group. The register bit assignments is given in the next table.
Doc ID 018672 Rev 1
255/844
Miscellaneous registers (Misc)
RM0082
Table 189. BIST3_STS_RES register bit assignments
BIST3_STS_RES Register
0x110
Bit
Name
Reset
Value
Description
[31]
bist3_end
-
End memory BIST3 execution:
1’b0: BIST execution pending
1’b1: End memory BIST execution.
[30:14]
RFU
-
Reserved for future use (Write don’t care - Read return
zeros).
BIST execution result (BIST bad signal status):
1’b0: Bist execution ok.
1’b1: Bist execution fails (ref. next table)
Bist failure table
[13:00]
256/844
bbad3(13:00)
-
Bbad
Memory Cut
[13]
ST_SPHDL_2048
Ras buf. Sp2Kx8_8
x8m16
[12]
ST_SPHDL_2048
Ras buf. Sp2Kx8_7
x8m16
[11]
ST_SPHDL_2048
Ras buf. Sp2Kx8_6
x8m16
[10]
ST_SPHDL_2048
Ras buf. Sp2Kx8_5
x8m16
[09]
ST_SPHDL_2048
Ras buf. Sp2Kx8_4
x8m16
[08]
ST_SPHDL_2048
Ras buf. Sp2Kx8_3
x8m16
[07]
ST_SPHDL_2048
Ras buf. Sp2Kx8_2
x8m16
[06]
ST_SPHDL_2048
Ras buf. Sp2Kx8_1
x8m16
[05]
ST_SPREG_1024
Ras buf. Sp4Kx8_2
x32m4_Lb
[04]
ST_SPREG_1024
Ras buf. Sp4Kx8_1
x32m4_Lb
[03]
ST_SPREG_512x
Ras buf. Sp2Kx8_4
32m4_Lb
[02]
ST_SPREG_512x
Ras buf. Sp2Kx8_3
32m4_Lb
[01]
ST_SPREG_512x
Ras buf. Sp2Kx8_2
32m4_Lb
[00]
ST_SPREG_512x
Ras buf. Sp2Kx8_1
32m4_Lb
Doc ID 018672 Rev 1
Peripherals
RM0082
12.4.37
Miscellaneous registers (Misc)
BIST4_STS_RES register
The BIST4_STS_RES is an RO register which returns the functional BIST execution results
for the ARM internal memory pool. The register bit assignments is given in the next table
Table 190. BIST4_STS_RES register bit assignments
BIST4_STS_RES Register
0x114
Bit
Name
Reset
Value
Description
[31]
bist4_end
-
End memory BIST4 execution:
1’b0: BIST execution pending
1’b1: End memory BIST execution.
[30:24]
RFU
-
Reserved for future use (Write don’t care - Read return zeros).
[23:14]
RFU
-
Reserved for BIST bad extension field
Doc ID 018672 Rev 1
257/844
Miscellaneous registers (Misc)
RM0082
Table 190. BIST4_STS_RES register bit assignments (continued)
BIST4_STS_RES Register
Bit
Name
0x114
Reset
Value
Description
BIST execution result (BIST bad signal status):
1’b0: BIST execution ok
1’b1: BIST execution fails (ref. next table)
Bist failure table
[13:00]
12.4.38
bbad4(13:00)
-
Bbad
Memory Cut
Peripherals
[13]
ARM_SPREG_1024x3
2m8_
Arm ddata Sp1Kx32_4
[12]
ARM_SPREG_1024x3
2m8_b
Arm ddata Sp1Kx32_3
[11]
ARM_SPREG_1024x3
2m8_b
Arm ddata Sp1Kx32_2
[10]
ARM_SPREG_1024x3
2m8_b
Arm ddata Sp1Kx32_1
[09]
ARM_SPREG_256x88
m2_b
Arm dtag Sp256Kx22
[08]
ARM_SPREG_32x24m
Arm dcvalid Sp32x24
2_L
[07]
ARM_SPREG_128x8m
Arm dcdirty Sp128x8
4_bL
[06]
ARM_SPREG_1024x3
2m8
Arm iicdata Sp1kx32_4
[05]
ARM_SPREG_1024x3
2m8
Arm iicdata Sp1kx32_3
[04]
ARM_SPREG_1024x3
2m8
Arm iicdata Sp1kx32_2
[03]
ARM_SPREG_1024x3
2m8
Arm icdata Sp1Kx32_1
[02]
ARM_SPREG_128x88
m2_b
Arm itag Sp128x88
[01]
ARM_SPREG_32x24m
Arm ivalid Sp32x24
2_L
[00]
ARM_SPREG_32x112
m2_b
Arm mmu Sp32x112
BIST5_RSLT_REG register (Reserved)
The BIST5_RSLT_REG is an RO register which returns the functional BIST execution
results for the ARM internal memory pool. The register bit assignments is given in the next
table.
258/844
Doc ID 018672 Rev 1
RM0082
Miscellaneous registers (Misc)
Table 191. BIST5_RSLT_REG register bit assignments
BIST5_RSLT_REG Register
0x118
Bit
Name
Reset
Value
Description
[31]
bist5_end
-
end memory BIST5 execution:
1’b0: BIST execution pending
1’b1: end memory BIST execution.
[30:24]
RFU
-
reserved for future use (write don’t care - read return zeros).
[23:20]
RFU
-
reserved for BIST bad extension field
BIST execution result (BIST bad signal status):
1’b0: BIST execution ok
1’b1: BIST execution fails (ref. next table)
Bist failure table
[19:00]
bbad4(19:00)
-
Bbad
Memory Cut
Peripherals
[19]
SPUHD1024x32m8_b
Arm ddata Sp1Kx32_3
[18]
SPUHD1024x32m8_b
Arm ddata Sp1Kx32_2
[17]
SPUHD1024x32m8_b
Arm ddata Sp1Kx32_1
[16]
SPUHD1024x32m8_b
Arm ddata Sp1Kx32_0
[15]
SP_64KUHD_256x22m4
Arm dtag Sp256Kx22_3
[14]
SP_64KUHD_256x22m4
Arm dtag Sp256Kx22_2
[13]
SP_64KUHD_256x22m4
Arm dtag Sp256Kx22_1
[12]
SP_64KUHD_256x22m4
Arm dtag Sp256Kx22_0
[11]
SPUHD1024x32m8
Arm idata Sp1Kx32_3
[10]
SPUHD1024x32m8
Arm idata Sp1Kx32_2
[09]
SPUHD1024x32m8
Arm idata Sp1Kx32_1
[08]
SPUHD1024x32m8
Arm idata Sp1Kx32_0
[07]
SP_64KUHD_128x22m4
Arm itag Sp128Kx22_3
[06]
SP_64KUHD_128x22m4
Arm itag Sp128Kx22_3
[05]
SP_64KUHD_128x22m4
Arm itag Sp128Kx22_3
[04]
SP_64KUHD_128x22m4
Arm itag Sp128Kx22_3
[03]
SP_64KUHD_32x24m2
Arm dvalid Sp32Kx24
[02]
SP_64KUHD_128x8m2_b Arm ddirty Sp128Kx8
[01]
SP_64KUHD_32x24m2
[00]
SP_64KUHD_32x112m2_
ARM MMU Sp32x112
b
Doc ID 018672 Rev 1
Arm ivalid Sp32Kx24
259/844
Miscellaneous registers (Misc)
RM0082
12.4.39
Diagnostic functionality
12.4.40
SYSERR_CFG_CTR register
The SYSERR_CFG_CTR is an R/W register which configures the SoC internal error
detections. The register bit assignments is detailed in the next table.
Table 192. SYSERR_CFG_CTR register bit assignments
SYSERR_CFG_CTR Register
Bit
Name
Reset
Value
Description
[31:29]
RFU
-
Reserved for future use (Write don’t care - Read return
zeros).
1’h0
DMA transfer error (RO); detection enable through
‘DMA_err_enb’ register field set high:
1’b0: No error pending.
1’b1: Active DMA transfer error; asserted when DMA master
transaction receives an error response type (for further detail
ref. DMA Chapter)
1’h0
Memory transaction error (RO); detection enable through
'mem_err_enb' register field set high:
1’b0: No error pending.
1’b1: Memory transfer error; asserted from memory
controller when one of the following error event is active:
A single access outside the defined PHYSICAL memory
space.
Multiple accesses outside the defined PHYSI-CAL memory
space.
DRAM initialization completes (no error event).
Address cross page boundary.
DLL unlock event.
[28]
[27]
DMA_err
Mem_err
[26]
[25]
[24]
usbh2_err
usbh1_err
usbdv_err
1’h0
1’h0
1’h0
USB2 PHY receiver error (RO); detection enable through
'usb_err_enb' register field set high:
1’b0: No error pending.
1’b1: USB2 PHY 'rxerror'; asserted when one of the
following error events is active:
Bit stuff errors during FS receive operation.
Elasticity buffer overrun/under run.
Alignment error; EOP not on a byte boundary.
[23]
RFU
-
Reserved for future use (Write don’t care - Read return
zeros).
1’h0
Processors watch dog timeout error (RO); detection enable
through 'wdg_err_enb' bit set high:
1’b0: No error pending.
1’b1: Active watches dog timeout error; asserted when the
arms watch dog timer expires (the ARM watch dog
functionality is supplied from Basic subsystem Timer1).
[22]
260/844
0x11C
arm1_wdg_err
Doc ID 018672 Rev 1
RM0082
Miscellaneous registers (Misc)
Table 192. SYSERR_CFG_CTR register bit assignments (continued)
SYSERR_CFG_CTR Register
0x11C
Bit
Name
Reset
Value
Description
[21:16]
RFU
-
Reserved for future use (Write don’t care - Read return
zeros).
[15]
[14]
[13]
[12]
mem_dll_err
usb_pll_err
sys_pll2_err
sys_pll1_er
1’h0
1’h0
1’h0
1’h0
PLL/DLL unlock error (RO); detection enable through
'pll_err_enb' register field set high:
1’b0: No error pending.
1’b1: Pll/Dll unlock error.
[11]
RFU
-
Reserved for future use (Write don’t care - Read return
zeros)
[10]
DMA_err_enb
1’h0
Enable DMA transfer error interrupt detection:
1’b0: Disable error detection.
1’b1: Enable error detection.
[09]
mem_err_enb
1’h0
Enable Memory transfer error interrupt detection:
1’b0: Disable error detection.
1’b1: Enable error detection.
[08]
usb_err_enb
1’h0
Enable USB2 PHY receive error interrupt detection:
1’b0: Disable error detection.
1’b1: Enable error detection.
[07]
RFU
-
[06]
wdg_err_enb
1’h0
Enable Watch dog timeout error interrupt detection:
1’b0: Disable error detection.
1’b1: Enable error detection.
[05]
RFU
-
Reserved for future use (Write don’t care - Read return
zeros).
[04]
pll_err_enb
1’h0
Enable PLL/DLL unlock error interrupt detection:
1’b0: Disable error detection.
1’b1: Enable error detection.
[03]
RFU
-
Reserved for future use (Write don’t care - Read return
zeros).
[02]
int_error
1’h0
SYS_ERROR interrupt request (RO): enabled when
'int_error_enb' is high:
1’b0: No error interrupts pending.
1’b1: Active error interrupt: this bit is the logic or of all
enabled error interrupt events.
[01]
int_error_rst
1’h0
Reset error interrupt request:
1’b0: No action.
1’b1: Reset all active error interrupt requests.
1’h0
Enable SYS_ERROR interrupt event:
1’b0: Disable error interrupt assertion.
1’b1: Enable error interrupt assertion.
[00]
int_error_enb
Doc ID 018672 Rev 1
261/844
Miscellaneous registers (Misc)
12.4.41
RM0082
USB_TUN_PRM register
To enable adjusting various USB 2.0 specification-related characteristics, the USB 2.0
nanoPHY provides top level parameter override bits. The USB 2.0 nanoPHY is designed to
a default setting of these bits, and you are not expected to have to change these bits from
their default setting.
These override bits are not intended for per-part centering or dynamic centering. However,
there might be circumstances that require bit settings that are different than the default. If a
change is required, statically set these bits to the same value for all product parts. Statistical
analysis of the USB 2.0 nanoPHY's silicon characterization will determine whether any of
these bits require a different setting other than the default.
Table 193. USB_TUN_PRM register bit assignments
USB0/1/2_TUN_PRM
12.4.42
0x120/4/8
Bit
Name
Reset
Value
Description
[31:18]
RFU
-
Reserved for future use (Write don’t care - Read
return zeros)
[17:15]
COMPDISTUNE[02:00]
3’h4
COMPDISTUNE
[14:12]
SQRXTUNE[2:0]
3'h3
SQRXTUNE
[11:08]
TXFSLSTUNE[3:0]
4'h3
TXFSLSTUNE
[07:04]
TXVREFTUNE[3:0]
4'h8
TXVREFTUNE
[03]
TXPREEMPHASISTUNE
1’h0
TXPREEMPHASISTUNE
[02:01]
TXHSXVTUNE[1:0]
2'h3
TXHSXVTUNE
[00]
TXRISETUNE
1’h0
TXRISETUNE
PLGPIOn_PAD_PRG Registers
These five registers are used to program FAST IO pad's Drive strength, Pull up, pull down
status and Slew parameters. Depending upon the value of the above parameters following
tables govern their behaviour.
Table 194. Drive selection
262/844
DRV[0]
DRV[1]
OUTPUT DRIVE
0
0
4mA
0
1
6mA
1
0
8mA
1
1
12mA
Doc ID 018672 Rev 1
RM0082
Miscellaneous registers (Misc)
Table 195. Pull Up and Pull Down Selection
PUP
PDN
Comment
0
0
Not Allowed
0
1
Pull-Up Activated
1
0
Pull-Down Activated
1
1
Pull-Up/Pull-Down deactivated
Table 196. Slew selection
SL
Slew level
0
Nominal
1
Fast
In general for programming purposes the slew and drive strength of Four pads are shared
by a bit as specified in table below with some exception as specified in the table. For Pull Up
and Pull down same rule follows but with some exception as specified below in the tables.
Table 197. PLGPIO0_PAD_PRG register bit assignments
PLGPIO0_PAD_PRG
0x130
Bit
Name
Reset Value
Description
[31]
PDN_UART
1’h0
Pull down control for UART (Pads 2,3)
[30]
PUP_UART
1’h1
Pull up control for UART (Pads 2,3)
[29]
PDN_5
1’h1
Pull down control for pads 20,21,22,23
[28]
PUP_5
1’h0
Pull up control for pads 20,21,22,23
[27:26]
DRV_5[1:0]
2’h0
Drive strength control for pads 20,21,22,23
[25]
SLEW_5
1'h0
Slew control for pads 20,21,22,23
[24]
PDN_4
1’h1
Pull down control for pads 16,17,18,19
[23]
PUP_4
1’h0
Pull up control for pads 16,17,18,19
[22:21]
DRV[1:0]
2’h0
Drive strength control for pads 16,17,18,19
[20]
SLEW_4
1’h0
Slew control for pads 16,17,18,19
[19]
PDN_3
1’h1
Pull down control for pads 12,13,14,15
[18]
PUP_3
1’h0
Pull up control for pads 12,13,14,15
[17:16]
DRV_3[1:0]
2’h0
Drive strength control for pads 12,13,14,15
[15]
SLEW_3
1’h0
Slew control for pads 12,13,14,15
[14]
PDN_2
1’h1
Pull down control for pads 8,9
[13]
PUP_2
1’h0
Pull Up control for pads 8,9
[12:11]
DRV_2[1:0]
2’h0
Drive Strength control for pads 8,9,10,11
[10]
SLEW_2
1’h0
Slew control for pads 8,9,10,11
[09]
PDN_1
1’h1
Pull Down control for pads 6,7
Doc ID 018672 Rev 1
263/844
Miscellaneous registers (Misc)
RM0082
Table 197. PLGPIO0_PAD_PRG register bit assignments (continued)
PLGPIO0_PAD_PRG
0x130
Bit
Name
Reset Value
Description
[08]
PUP_1
1’h0
Pull up control for pads 6,7
[07:06]
DRV_1[1:0]
2’h0
Drive strength control for pads 4,5,6,7
[05]
SLEW_1
1’h0
Slew control for pads 4,5,6,7
[04]
PDN_0
1’h1
Pull Down Control for pads 0,1
[03]
PUP_0
1’h0
Pull Up control for pads 0,1
[02:01]
DRV_0[1:0]
2’h0
Drive strength control for pads 0,1,2,3
[00]
SLEW_0
1’h0
Slew control for pads 0,1,2,3
Table 198. PLGPIO1_PAD_PRG register bit assignments
PLGPIO1_PAD_PRG
264/844
0x134
Bit
Name
Reset Value
Description
[31]
PDN_I2C
1’h1
Pull down control for I2C (Pads 4,5)
[30]
PUP_12C
1’h0
Pull up control for I2C (Pads 4,5)
[29]
PDN_11
1’h1
Pull down control for pads 45, 46, 47
[28]
PUP_11
1’h0
Pull up control for pads 45,46,47
[27:26]
DRV_11[1:0]
2’h0
Drive strength control for pads 44,45,46,47
[25]
SLEW_11
1’h0
Slew control for pads 44,45,46,47
[24]
PDN_10
1’h0
Pull down control for pads 40,41,42,43,44
[23]
PUP_10
1’h1
Pull up control for pads 40,41,42,43,44
[22:21]
DRV_10[1:0]
2’h0
Drive strength control for pads 40,41,42,43
[20]
SLEW_10
1’h0
Slew control for pads 40,41,42,43
[19]
PDN_9
1’h0
Pull down control for pads 37,38,39
[18]
PUP_9
1’h1
Pull up control for pads 37,38,39
[17:16]
DRV_9[1:0]
2’h0
Drive strength control for pads 36,37,38,39
[15]
SLEW_9
1’h0
Slew control for pads 36,37,38,39
[14]
PDN_8
1’h1
Pull down control for pads 32,33,34,35,36
[13]
PUP_8
1’h0
Pull up control for pads 32,33,34,35,36
[12:11]
DRV_8[1:0]
2’h0
Drive strength control for pads 32,33,34,35
[10]
SLEW_8
1’h0
Slew control for pads 32,33,34,35
[09]
PDN_7
1’h1
Pull down control for pads 28,29,30,31
[08]
PUP_7
1’h0
Pull up control for pads 28,29,30,31
[07:06]
DRV_7[1:0]
2’h0
Drive strength control for pads 28,29,30,31
[05]
SLEW_7
1’h0
Slew control for pads 28,29,30,31
Doc ID 018672 Rev 1
RM0082
Miscellaneous registers (Misc)
Table 198. PLGPIO1_PAD_PRG register bit assignments (continued)
PLGPIO1_PAD_PRG
0x134
Bit
Name
Reset Value
Description
[04]
PDN_6
1’h1
Pull down control for pads 24,25,26,27
[03]
PUP_6
1’h0
Pull Up control for pads 24,25,26,27
[02:01]
DRV_6[1:0]
2’h0
Drive Strength control for pads 24,25,26,27
[00]
SLEW_6
1’h0
Slew control for pads 24, 25,26,27
Table 199. PLGPIO2_PAD_PRG register bit assignments
PLGPIO2_PAD_PRG
0x138
Bit
Name
Reset
Value
Description
[31]
PDN_ETHERNET
1’h0
Pull down control for Ethernet (Pads 10,11)
[30]
PUP_ETHERNET
1’h1
Pull up control for Ethernet (Pads 10,11)
[29]
PDN_17
1’h1
Pull down control for pads 68,69,70,71
[28]
PUP_17
1’h0
Pull up control for pads 68,69,70,71
[27:26]
DRV_17[1:0]
2’h0
Drive strength control for pads 68,69,70,71
[25]
SLEW_17
1’h0
Slew control for pads 68,69,70,71
[24]
PDN_16
1’h1
Pull down control for pads 64,65,66,67
[23]
PUP_16
1’h0
Pull up control for pads 64,65,66,67
[22:21]
DRV_16[:0]
2’h0
Drive strength control for pads 64,65,66,67
[20]
SLEW_16
1’h0
Slew control for pads 64,65,66,67
[19]
PDN_15
1’h1
Pull down control for pads 60,61,62,63
[18]
PUP_15
1’h0
Pull up control for pads 60,61,62,63
[17:16]
DRV_15[1:0]
2’h0
Drive strength control for pads 60,61,62,63
[15]
SLEW_15
1’h0
Slew control for pads 60,61,62,63
[14]
PDN_14
1’h1
Pull down control for pads 56,57,58,59
[13]
PUP_14
1’h0
Pull up control for pads 56,57,58,59
[12:11]
DRV_14[1:0]
2’h0
Drive strength control for pads 56,57,58,59
[10]
SLEW_14
1’h0
Slew control for pads 56,57,58,59
[09]
PDN_13
1’h1
Pull down control for pads 52,53,54,55
[08]
PUP_13
1’h0
Pull up control for pads 52,53,54,55
[07:06]
DRV_13[1:0]
2’h0
Drive strength control for pads 52,53,54,55
[05]
SLEW_13
1’h0
Slew control for pads 52,53,54,55
[04]
PDN_12
1’h1
Pull Down control for pads 48,49,50,51
[03]
PUP_12
1’h0
Pull Up control for pads 48,49,50,51
Doc ID 018672 Rev 1
265/844
Miscellaneous registers (Misc)
RM0082
Table 199. PLGPIO2_PAD_PRG register bit assignments
PLGPIO2_PAD_PRG
0x138
Bit
Name
Reset
Value
Description
[02:01]
DRV_12[1:0]
2’h0
Drive Strength control for pads48,49,50,51
[00]
SLEW_12
1’h0
Slew control for pads 48,49,50,51
Table 200. PLGPIO3_PAD_PRG register bit assignments
PLGPIO3_PAD_PRG
266/844
0x13C
Bit
Name
Reset
Value
Description
[31:30]
RFU
-
Reserved for future use (Read return zeros)
[29]
PDN_23
1’h1
Pull down control for pads 92,93,94,95
[28]
PUP_23
1’h0
Pull up control for pads 92,93,94,95
[27:26]
DRV_23[1:0]
2’h0
Drive strength control for pads 92,93,94,95
[25]
SLEW_23
1’h0
Slew control for pads 92,93,94,95
[24]
PDN_22
1’h1
Pull down control for pads 88,89,90,91
[23]
PUP_22
1’h0
Pull up control for pads 88,89,90,91
[22:21]
DRV_22[1:0]
2’h0
Drive strength control for pads 88,89,90,91
[20]
SLEW_22
1’h0
Slew control for pads 88,89,90,91
[19]
PDN_21
1’h1
Pull down control for pads 84,85,86,87
[18]
PUP_21
1’h0
Pull up control for pads 84,85,86,87
[17:16]
DRV_21[1:0]
2’h0
Drive strength control for pads 84,85,86,87
[15]
SLEW_21
1’h0
Slew control for pads 84,85,86,87
[14]
PDN_20
1’h1
Pull down control for pads 80,81,82,83
[13]
PUP_20
1’h0
Pull up control for pads 80,81,82,83
[12:11]
DRV_20[1:0]
2’h0
Drive strength control for pads 80,81,82,83
[10]
SLEW_20
1’h0
Slew control for pads 80,81,82,83
[09]
PDN_19
1’h1
Pull down control for pads 76,77,78,79
[08]
PUP_19
1’h0
Pull up control for pads 76,77,78,79
[07:06]
DRV_19[1:0]
2’h0
Drive strength control for pads 76,77,78,79
[05]
SLEW_19
1’h0
Slew control for pads 76,77,78,79
[04]
PDN_18
1’h1
Pull Down control for pads 72,73,74,75
[03]
PUP_18
1’h0
Pull Up control for pads 72,73,74,75
[02:01]
DRV_18[1:0]
2’h0
Drive Strength control for pads 72,73,74,75
[00]
SLEW_18
1’h0
Slew control for pads 72,73,74,75
Doc ID 018672 Rev 1
RM0082
Miscellaneous registers (Misc)
Table 201. PLGPIO4_PAD_PRG register bit assignments
PLGPIO4_PAD_PRG
0x140
Bit
Name
Reset
Value
Description
[31:25]
RFU
-
Reserved for future use (Read return zeros)
[24]
PDN_CLK4
1’h1
Pull down control for pads CLK4
[23]
PUP_CLK4
1’h0
Pull up control for pads CLK4
[22:21]
DRV_CLK4[1:0]
2’h0
Drive strength control for pads CLK4
[20]
SLEW_CLK4
1’h0
Slew control for pads CLK4
[19]
PDN_CLK3
1’h1
Pull down control for pads CLK3
[18]
PUP_CLK3
1’h0
Pull up control for pads CLK3
[17:16]
DRV_CLK3[1:0]
2’h0
Drive strength control for pads CLK3
[15]
SLEW_CLK3
1’h0
Slew control for pads CLK3
[14]
PDN_CLK2
1’h1
Pull down control for pads CLK2
[13]
PUP_CLK2
1’h0
Pull up control for pads CLK2
[12:11]
DRV_CLK2[1:0]
2’h0
Drive strength control for pads CLK2
[10]
SLEW_CLK2
1’h0
Slew control for pads CLK2
[09]
PDN_CLK1
1’h1
Pull down control for pads CLK1
[08]
PUP_CLK1
1’h0
Pull up control for pads CLK1
[07:06]
DRV_CLK1[1:0]
2’h0
Drive strength control for pads CLK1
[05]
SLEW_CLK1
1’h0
Slew control for pads CLK1 & pads 96,97
[04]
PDN_24
1’h1
Pull Down control for pads 96,97
[03]
PUP_24
1’h0
Pull up control for pads 96,97
[02:01]
DRV_24[1:0]
2’h0
Drive Strength control for pads 96,97
[00]
RFU
Reserved for future purpose
12.5
Miscellaneous register global space
12.5.1
Overview
The global space controls the following functionalities:
●
●
General purpose input signals:
–
General status/command interface received from programmable logic.
–
Registered input mail box data.
General purpose output signals:
–
General output command interface.
–
Programmable logic configuration extension.
–
Registered output mail box data.
Doc ID 018672 Rev 1
267/844
Miscellaneous registers (Misc)
12.5.2
RM0082
Miscellaneous register global space address map
Next table shows the miscellaneous global register map.
Table 202. Miscellaneous global space registers overview
Miscellaneous Global Space Register Map
Register Name
Base Address: 0xFCA8.0000
Alias-1 Offset
Alias-2 Offset
0x0.8000
0x1.8000
Type
Register Displacement (single region)
12.5.3
RAS_GPP1_IN
0x00
R/W
RAS_GPP2_IN
0x04
R/W
RAS_GPP1_OUT
0x08
R/W
RAS_GPP2_OUT
0x0C
R/W
RAS_GPP_EXT_IN
0x10
R/W
RAS_GPP_EXT_OUT
0x14
R/W
Reserved
0x18
R/W
Reserved
0x1C
R/W
RAS1/2_GPP_INP register
The RAS1/2_GPP_INP is a group of RO general purpose input registers used to pass
different kind of information from the reconfigurable logic array toward the internal core logic.
The register bit assignments is detailed in the next two tables.
Table 203. RAS_GPP1_IN register bit assignments
RAS_GPP1_IN Register
0x000
Bit
Name
Reset
Value
Description
[31:00]
gpp1_in[31:00]
-
General purpose input register (RO) which return the
current value of the programmable logic GPP_INP
(31:00) signals.
Table 204. RAS_GPP2_IN register bit assignments
RAS_GPP2_IN Register
268/844
0x004
Bit
Name
Reset
Value
Description
[31:00]
gpp2_in[31:00]
-
General purpose input register (RO) which return the
current value of the programmable logic GPP_INP
(63:32) signals.
Doc ID 018672 Rev 1
RM0082
Miscellaneous registers (Misc)
Table 205. RAS_GPP_EXT_IN register bit assignments
RAS_GPP_EXT_IN Register
12.5.4
0x010
Bit
Name
Reset
Value
Description
[07:00]
Gpp_ext_in[07:00]
-
General purpose input register (RO) which return
the current value of the programmable logic signals.
RAS1/2_GPP_OUT register
The RAS1/2_GPP_OUT are a group of R/W general purpose output registers used to pass
different kind of data/command from the internal core logic to reconfigurable logic array. The
register bit assignments is given in the next two tables.
Table 206. RAS_GPP1_OUT register bit assignments
RAS_GPP1_OUT Register
Bit
[31:00]
Name
gpp1_out[31:00]
0x008
Reset
Value
Description
32’h0
General purpose output register direct controls the
programmable logic GPP_OUT(31:00) signals
1’b0: Force the corresponding bit signal low.
1’b1: Force the corresponding bit signal high.
General purpose output command field.
Table 207. RAS_GPP2_OUT register bit assignments
RAS_GPP2_OUT Register
Bit
[31:00]
Name
gpp2_out[31:00]
0x00C
Reset
Value
Description
32’h0
General purpose output register direct controls the
programmable logic GPP_OUT(63:32) signals
1’b0: Force the corresponding bit signal low.
1’b1: Force the corresponding bit signal high.
General purpose output command field.
Table 208. RAS_GPP_EXT_OUT register bit assignments
RAS_GPP_EXT_OUT Register
Bit
[07:00]
Name
0x014
Reset
Value
Gpp_ext_out[07:00] 7’h0
Description
General purpose output register direct controls the
programmable logic GPP_EXT_OUT(07:00) signals
1’b0: Force the corresponding bit signal low.
1’b1: Force the corresponding bit signal high.
General purpose output command field.
Doc ID 018672 Rev 1
269/844
LS_Synchronous serial peripheral (SSP)
RM0082
13
LS_Synchronous serial peripheral (SSP)
13.1
Overview
Within its low speed connectivity, the device provides one ARM PrimeCell® synchronous
serial port (SSP) block that offers a master or slave interface to enables synchronous serial
communication with slave or master peripherals
Main features of the SSP are:
13.2
●
Master or slave operation.
●
Programmable clock bit rate and prescale.
●
Separate transmit and receive first-in, first-out memory buffers, 16 bits wide, 8 locations
deep.
●
Programmable choice of interface operation, SPI, Microwire, or TI synchronous serial.
●
Programmable data frame size from 4 to 16 bits.
●
Independent masking of transmit FIFO, receive FIFO, and receive overrun interrupts.
●
Internal loopback test mode available.
●
Support for direct memory access (DMA).
Block diagram
Figure 22 shows the block diagram of SPI controller.
Figure 22. SPI block diagram
Tx FIFO
(16x8)
AMBA APB
I/F
IRQ
Transmit/
Receive
logic
SPI BUS
Rx FIFO
(16x8)
PCLK
Register
Block
Clock
Prescaler
DMA
interface
270/844
FIFO Status
And
Interrupt
Generation
Doc ID 018672 Rev 1
RM0082
13.3
LS_Synchronous serial peripheral (SSP)
Signal interfaces
The SSP directly interfaces with the signals summarized in Table 209
Table 209. SSP signal interface
Group
Signal name
Direction
Size (bit) Description
CLK
Input
1
Main SSP clock input.
nRST
Input
1
SSP reset signal.
TXINTR
Output
1
Transmit FIFO service request interrupt.
RXINTR
Output
1
Receive FIFO service request interrupt.
RORINTR
Output
1
Receive overrun interrupt.
RTINTR
Output
1
Receive timeout interrupt.
INTR
Output
1
SSP interrupt. This interrupt is an OR of the
four individual interrupts TXINTR, RXINTR,
RORINTR and RTINTR.
TXDMASREQ Output
1
Transmit DMA single request.
TXDMABREQ Output
1
Transmit DMA burst request.
RXDMASREQ Output
1
Receive DMA single request.
RXDMABREQ Output
1
Receive DMA burst request.
TXDMACLR
Input
1
DMA request clear. Asserted by DMA
controller to clear the transmit request
signal.
RXDMACLR
Input
1
DMA request clear. Asserted by DMA
controller to clear the receive request signal.
FSSOUT
Output
SSP frame or slave select (master mode).
CLKOUT
Output
SSP clock output (Master mode).
TXD
Output
Transmit data output.
Output
Output enable signal.
FSSIN
Input
SSP frame input (slave mode).
CLKIN
Input
SSP clock input (slave mode).
RXD
Input
Receive data input.
-
Input/Output -
See AMBA Specification.
Global
Interrupts
DMA
Interface
PAD control OE
APB Slave
13.4
Main functions description
13.4.1
APB slave interface
The AMBA APB interface generates read and write decodes for accesses to status and
control registers, and transmit and receive FIFO memories.
The AMBA APB is a local secondary bus that provides a low-power extension to the higher
bandwidth AMBA advanced high-performance bus (AHB) within the AMBA system
Doc ID 018672 Rev 1
271/844
LS_Synchronous serial peripheral (SSP)
RM0082
hierarchy. The AMBA APB groups narrow-bus peripherals to avoid loading the system bus
and provides an interface using memory-mapped registers, which are accessed under
programmed control.
13.4.2
Register block
The register block stores data written or to be read across the AMBA APB interface.
13.4.3
Clock prescaler
When configured as a master, an internal prescaler, comprising two free-running reloadable serially linked counters, is used to provide the serial output clock CLKOUT.
You can program the clock prescaler, through the SSPCPSR register, to divide CLK by a
factor of 2 to 254 in steps of two. By not utilizing the least significant bit of the SSPCPSR
register, division by an odd number is not possible and this ensures a symmetrical (equal
mark space ratio) clock is generated.
The output of the prescaler is further divided by a factor of 1 to 256, through the
programming of the SSPCR0 control register, to give the final master output clock CLKOUT.
13.4.4
Transmit FIFO
The common transmit FIFO is a 16 bit wide, 8-locations deep, first-in, first-out memory
buffer. CPU data written across the AMBA APB interface are stored in the buffer until read
out by the transmit logic.
When configured as a master or a slave parallel data is written into the transmit FIFO prior
to serial conversion and transmission to the attached slave or master respectively, through
the SSPTXD pin.
13.4.5
Receive FIFO
The common receive FIFO is a 16 bit wide, 8-locations deep, first-in, first-out memory buffer.
Received data from the serial interface are stored in the buffer until read out by the CPU
across the AMBA APB interface.
When configured as a master or slave, serial data received through the SSPRXD pin is
registered prior to parallel loading into the attached slave or master receive FIFO
respectively.
13.4.6
Transmit and receive logic
When configured as a master, the clock to the attached slaves is derived from a divided
down version of CLK through the prescaler operations described previously. The master
transmit logic successively reads a value from its transmit FIFO and performs parallel to
serial conversion on it. Then the serial data stream and frame control signal, synchronized
to CLKOUT, are output through the TXD pin to the attached slaves. The master receive logic
performs serial to parallel conversion on the incoming synchronous SSPRXD data stream,
extracting and storing values into its receive FIFO, for subsequent reading through the APB
interface.
When configured as a slave, the SSPCLKIN clock is provided by an attached master and
used to time its transmission and reception sequences. The slave transmit logic, under
control of the master clock, successively reads a value from its transmit FIFO, performs
272/844
Doc ID 018672 Rev 1
RM0082
LS_Synchronous serial peripheral (SSP)
parallel to serial conversion, then output the serial data stream and frame control signal
through the slave SSPTXD pin. The slave receive logic performs serial to parallel conversion
on the incoming SSPRXD data stream, extracting and storing values into its receive FIFO,
for subsequent reading through the APB interface.
13.4.7
Interrupt generation logic
The PrimeCell SSP generates four individual maskable, active HIGH interrupts.
A combined interrupt output is also generated as an OR function of the individual interrupt
requests.
You can use the single combined interrupt with a system interrupt controller that provides
another level of masking on a per-peripheral basis. This allows use of modular device
drivers that always know where to find the interrupt source control register bits.
The individual interrupt requests could also be used with a system interrupt controller that
provides masking for the outputs of each peripheral. In this way, a global interrupt controller
service routine would be able to read the entire set of sources from one wide register in the
system interrupt controller. This is attractive where the time to read from the peripheral
registers is significant compared to the CPU clock speed in a real-time system.
The peripheral supports both the above methods.
The transmit and receive dynamic data-flow interrupts, TXINTR and RXINTR, are separated
from the status interrupts so that data can be read or written in response to the FIFO trigger
levels.
13.4.8
DMA interface
This block manages the DMA interface. It can work in single transfer mode or in burst
transfer mode.
Refer to the Chapter 19: BS_DMA controller to have more detail on this Interface.
13.4.9
Synchronizing registers and logic
The SSP supports both asynchronous and synchronous operation of the clocks, PCLK and
SSPCLK. Synchronization registers and hand shaking logic have been implemented, and
are active at all times. This has a minimal impact on performance or area. Synchronization
of control signals is performed on both directions of data flow, which is from the PCLK to the
SSPCLK domain and from the SSPCLK to the PCLK domain.
13.5
SSP operation
In the following sections are described the operation of the SSP block.
13.5.1
Configuring the SSP
Following reset, the SSP logic is disabled and must be configured when in this state.
Doc ID 018672 Rev 1
273/844
LS_Synchronous serial peripheral (SSP)
RM0082
Control registers SSPCR0 and SSPCR1 need to be programmed to configure the peripheral
as a master or slave operating under one of the following protocols:
●
Motorola SPI
●
Texas Instruments SSI
●
National Semiconductor.
The bit rate, derived from the APB clock (PCLK), requires the programming of the clock
prescale register SSPCPSR. (Refer to the miscellaneous registers description for the PCLK
frequency).
Defining the chip select
Four chip select lines are available to verify the real availability of the external signal but only
one can be operational at time. The selection of the active one is done using the upper two
GPIO lines. The FSSOUT will be connected to the external CSx according to the Table 210
Table 210. External CS selection
13.5.2
GPIO[7]
GPIO[6]
CSx
0
0
CS1
0
1
CS2
1
0
CS3
1
1
CS4
Enable SSP operation
You can either prime the transmit FIFO, by writing up to eight 16 bit values when the SSP is
disabled, or allow the transmit FIFO service request to interrupt the CPU. Once enabled,
transmission or reception of data begins on the transmit (SSPTXD) and receive (SSPRXD)
pins.
Clock ratios
There is a constraint on the ratio of the frequencies of PCLK to SSPCLK. The frequency of
SSPCLK must be less than or equal to that of PCLK. This ensures that control signals from
the SSPCLK domain to the PCLK domain are certain to get synchronized before one frame
duration:
FSSPCLK <= FPCLK
In the slave mode of operation, the SSPCLKIN signal from the external master is double
synchronized and then delayed to detect an edge. It takes three SSPCLKs to detect an edge
on SSPCLKIN. SSPTXD has less setup time to the falling edge of SSPCLKIN on which the
master is sampling the line. The setup and hold times on SSPRXD with reference to
SSPCLKIN must be more conservative to ensure that it is at the right value when the actual
sampling occurs within the SSPMS. To ensure correct device operation, SSPCLK must be at
least 12 times faster than the maximum expected frequency of SSPCLKIN.
The frequency selected for SSPCLK must accommodate the desired range of bit clock
rates. The ratio of minimum SSPCLK frequency to SSPCLKOUT maximum frequency in the
case of the slave mode is 12 and for the master mode it is two.
274/844
Doc ID 018672 Rev 1
RM0082
LS_Synchronous serial peripheral (SSP)
To generate a maximum bit rate of 1.8432 Mbps in the Master mode, the frequency of
SSPCLK must be at least 3.6864 MHz. With an SSPCLK frequency of 3.6864 MHz, the
SSPCPSR register has to be programmed with a value of two and the SCR[7:0] field in the
SSPCR0 register needs to be programmed as zero.
To work with a maximum bit rate of 1.8432 Mbps in the slave mode, the frequency of
SSPCLK must be at least 22.12 MHz. With an SSPCLK frequency of 22.12 MHz, the
SSPCPSR register can be programmed with a value of 12 and the SCR[7:0] field in the
SSPCR0 register can be programmed as zero. Similarly the ratio of SSPCLK maximum
frequency to SSPCLKOUT minimum frequency is 254 x 256.
The minimum frequency of SSPCLK is governed by the following equations, both of which
have to be satisfied:
●
FSSPCLK(min) => 2 x FSSPCLKOUT(max) [for master mode]
●
FSSPCLK(min) => 12 x FSSPCLKIN(max) [for slave mode].
The maximum frequency of SSPCLK is governed by the following equations, both of which
have to be satisfied:
13.5.3
●
FSSPCLK(max) <= 254 x 256 x FSSPCLKOUT(min) [for master mode]
●
FSSPCLK(max) <= 254 x 256 x FSSPCLKIN(min) [for slave mode]
Programming the SSPCR0 control register
The SSPCR0 register is used to:
●
Program the serial clock rate
●
Select one of the three protocols
●
Select the data word size (where applicable).
The Serial Clock Rate (SCR) value, in conjunction with the SSPCPSR clock prescale divisor
value (CPSDVSR), is used to derive the SSP transmit and receive bit rate from the external
SSPCLK.
The frame format is programmed through the FRF bits and the data word size through the
DSS bits.
Bit phase and polarity, applicable to Motorola SPI format only, are programmed through the
SPH and SPO bits.
13.5.4
Programming the SSPCR1 control register
The SSPCR1 register is used to:
●
Select master or slave mode
●
Enable a loop back test feature
●
Enable the SSP peripheral.
To configure the SSP as a master, clear the SSPCR1 register master or slave selection bit
(MS) to 0, which is the default value on reset.
Setting the SSPCR1 register MS bit to 1 configures the SSP as a slave. When configured as
a slave, enabling or disabling of the SSP SSPTXD signal is provided through the SSPCR1
slave mode SSPTXD output disable bit (SOD). This can be used in some multi-slave
environments where masters might parallel broadcast.
Doc ID 018672 Rev 1
275/844
LS_Synchronous serial peripheral (SSP)
RM0082
To enable the operation of the PrimeCell SSP set the Synchronous Serial Port Enable (SSE)
bit to 1.
Bit rate generation
Dividing down the input clock SSPCLK derives the serial bit rate. The clock is first divided by
an even prescale value CPSDVSR from 2 to 254, which is programmed in SSPCPSR. The
clock is further divided by a value from 1 to 256, which is 1 + SCR, where SCR is the value
programmed in SSPCR0.
The frequency of the output signal bit clock SSPCLKOUT is:
( FSSPCLK )
SSPCLKOUT = --------------------------------------------------------------[ CPSDVR ⋅ ( 1 + SCR ) ]
For example, if SSPCLK is 3.6864 MHz, and CPSDVSR = 2, then SSPCLKOUT has a
frequency range from 7.2 kHz to 1.8432 MHz.
13.5.5
Frame format
Each data frame is between 4 and 16 bits long depending on the size of data programmed,
and is transmitted starting with the MSB. There are three basic frame types that can be
selected:
●
Texas Instruments synchronous serial
●
Motorola SPI
●
National semiconductor microwire.
For all three formats, the serial clock (SSPCLKOUT) is held inactive while the SSP is idle,
and transitions at the programmed frequency only during active transmission or reception of
data. The idle state of SSPCLKOUT is utilized to provide a receive timeout indication that
occurs when the receive FIFO still contains data after a timeout period.
For Motorola SPI and National Semiconductor Microwire frame formats, the serial frame
(SSPFSSOUT) pin is active LOW, and is asserted (pulled down) during the entire
transmission of the frame.
For Texas Instruments synchronous serial frame format, the SSPFSSOUT pin is pulsed for
one serial clock period starting at its rising edge, prior to the transmission of each frame. For
this frame format, both the SSP and the off-chip slave device drive their output data on the
rising edge of SSPCLKOUT, and latch data from the other device on the falling edge.
Unlike the full-duplex transmission of the other two frame formats, the National
Semiconductor Microwire format uses a special master-slave messaging technique, which
operates at half-duplex. In this mode, when a frame begins, an 8 bit control message is
transmitted to the off-chip slave. During this transmission no incoming data is received by
the SSP. After the message has been sent, the off-chip slave decodes it and, after waiting
one serial clock after the last bit of the 8 bit control message has been sent, responds with
the requested data. The returned data can be 4 to 16 bits in length, making the total frame
length anywhere from 13 to 25 bits.
276/844
Doc ID 018672 Rev 1
RM0082
LS_Synchronous serial peripheral (SSP)
13.6
Programming model
13.6.1
External pin connections
Table 211. External pin connection
13.6.2
Signal
Ball
CLK
C2
MOSI
B2
MISO
B1
CS1
D3
CS2
E8
CS3
D8
CS4
C8
Register map
The SSP can be fully configured by programming its registers which can be accessed
through the APB slave interface at the following base address:
Table 212. SSP registers summary
Name
Offset Type
Width Reset
(bit)
value
Description
SSPCR0
0x000
R/W
16
16’h0
Control register 0
SSPCR1
0x004
R/W
4
4’h0
Control register 1
SSPDR
0x008
R/W
16
-
Receive FIFO (read) and transmit FIFO (write)
data register
SSPSR
0x00C RO
5
5’h3
Status register
SSPCPSR
0x010
R/W
8
8’h0
Clock prescale register
SSPIMSC
0x014
R/W
4
4’h0
Interrupt mask set and clear register
SSPRIS
0x018
RO
4
4’h8
Raw interrupt status register
SSPMIS
0x01C RO
4
4’h0
Masked interrupt status register
SSPICR
0x020
WO
4
4’h0
Interrupt clear register
SSPDMACR
0x024
R/W
2
2’h0
DMA control register
Reserved
0x028
to
0xFDC
-
-
Reserved
SSPPeriphID0
0xFE0 RO
8
8’h22
Peripheral identification register bits 7:0
SSPPeriphID1
0xFE4 RO
8
8’h10
Peripheral identification register bits 15:8
SSPPheriphID2 0xFE8 RO
8
8’h4
Peripheral identification register bits 23:16
SSPPheriphID3 0xFEC RO
8
8’h0
Peripheral identification register bits 31:24
Doc ID 018672 Rev 1
277/844
LS_Synchronous serial peripheral (SSP)
RM0082
Table 212. SSP registers summary (continued)
Name
Offset Type
Width Reset
(bit)
value
Description
SSPCellID0
0xFF0 RO
8
8’hD
PrimeCell identification register bits 7:0
SSPCellID1
0xFF4 RO
8
8’hF0
PrimeCell identification register bits 15:8
SSPCellID2
0xFF8 RO
8
8’h5
PrimeCell identification register bits 23:16
SSPCellID3
0xFFC RO
8
8’hB1
PrimeCell identification register bits 31:24
13.6.3
Register description
13.6.4
SSPCR0 register
SSPCR0 is control register 0 and contains five bit fields that control various functions within
the SSP.
Table 213. SSPCR0 register bit assignments
Bit
Type
Description
[15:08]
SCR
R/W
Serial clock rate. The value SCR is used to generate the transmit and
receive bit rate of the SSP.
The bit rate is:
PCLK
CPSDVR * (1 + SPR)
Where CPSDVSR is an even value from 2 to 254, programmed through
the SSPCPSR register and SCR is a value from 0 to 255.
[07]
SPH
R/W
CLKOUT phase (applicable to Motorola SPI frame format only). See
Motorola SPI frame format on page xxx
[06]
SPO
R/W
CLKOUT polarity (applicable to Motorola SPI frame format only). See
Motorola SPI frame format on page
R/W
Frame format:
2’b00 = Motorola SPI frame format
2’b01 = TI synchronous serial frame format
2’b10 = National microwire frame format
2’b11 = Reserved, undefined operation
R/W
Data size select:
4’b0000 = Reserved, undefined operation
4’b0001 = Reserved, undefined operation
4’b0010 = Reserved, undefined operation
4’b0011 = 4 bit data
4’b0100 = 5 bit data
…….
4’b1110 = 15 bit data
4’b1111 = 16 bit data
[05:04]
[03:00]
278/844
Name
FRF
DSS
Doc ID 018672 Rev 1
RM0082
13.6.5
LS_Synchronous serial peripheral (SSP)
SSPCR1 register
SSPCR1 is the control register 1 and contains four different bit fields, which control various
functions within the SSP.
Table 214. SSPCR1 register bit assignments
Bit
Name Type
[15:04] -
[03]
-
Reserved. Read unpredictable, should be written as 0
R/W
Slave-mode output disable. This bit is relevant only in the slave mode
(MS=1). In multiple-slave systems, it is possible for an SSP master to
broadcast a message to all slaves in the system while ensuring that only
one slave drives data onto its serial output line. In such systems the RXD
lines from multiple slaves could be tied together.
To operate in such systems, the SOD bit can be set if the SSP slave is not
supposed to drive the SSPTXD line.
1’b0 = SSP can drive the TXD output in slave mode.
1’b1 = SSP must not drive the TXD output in slave mode.
[02]
MS
R/W
Master or slave mode select. This bit can be modified only when the SSP is
disabled (SSE=0):
1’b0 = device configured as master (default)
1’b1 = device configured as slave.
[01]
SSE
R/W
Synchronous serial port enable:
1’b0 = SSP operation disabled
1’b1 = SSP operation enabled.
R/W
Loop back mode:
1’b0 = Normal serial port operation enabled
1’b1 = Output of transmit serial shifter is connected to input of receive serial
shifter internally.
[00]
13.6.6
SOD
Description
LBM
SSPDR register
SSPDR is the data register and is 16 bits wide. When SSPDR is read, the entry in the
receive FIFO (pointed to by the current FIFO read pointer) is accessed. As data values are
removed by the PrimeCell SSP receive logic from the incoming data frame, they are placed
into the entry in the receive FIFO (pointed to by the current FIFO write pointer).
When SSPDR is written to, the entry in the transmit FIFO (pointed to by the write pointer), is
written to. Data values are removed from the transmit FIFO one value at a time by the
transmit logic. It is loaded into the transmit serial shifter, then serially shifted out onto the
SSPTXD pin at the programmed bit rate.
When a data size of less than 16 bits is selected, the user must right-justify data written to
the transmit FIFO. The transmit logic ignores the unused bits. Received data less than 16
bits is automatically right-justified in the receive buffer.
When the PrimeCell SSP is programmed for National Microwire frame format, the default
size for transmit data is eight bits (the most significant byte is ignored). The receive data size
is controlled by the programmer. The transmit FIFO and the receive FIFO are not cleared
even when SSE is set to zero. This allows the software to fill the transmit FIFO before
enabling the PrimeCell SSP. Table 215 shows the bit assignments for SSPDR.
Doc ID 018672 Rev 1
279/844
LS_Synchronous serial peripheral (SSP)
RM0082
Table 215. SSPDR register bit assignments
Bit
Name
[15:00] DATA
13.6.7
Type
Description
R/W
Transmit/receive FIFO:
Read = Receive FIFO
Write = Transmit FIFO
You must right justify data when the SSP is programmed for a data size
that is less then 16 bits. Unused bits are ignored by transmit logic. The
receive logic automatically right justifies.
SSPSR register
SSPSR is a read only register that contains bits that indicates the FIFO fill status and the
SSP busy status.
Table 216. SSPSR register bit assignments
13.6.8
Bit
Name
Type
Description
[15:05]
-
-
Reserved, read unpredictable, should be written as 0
[04]
BSY
RO
SSP busy flag:
1’b0 = SSP is idle
1’b1 = SSP is currently transmitting or receiving a frame
[03]
RFF
RO
Receive FIFO Full:
1’b0 = receive FIFO is not full
1’b1 = Receive FIFO is full
[02]
RNE
RO
Receive FIFO not empty:
1’b0 = Receive FIFO is empty
1’b1 = receive FIFO is not empty
[01]
TNF
RO
Transmit FIFO not full:
1’b0 = Transmit FIFO is full
1’b1 = transmit FIFO is not full
[00]
TFE
RO
Transmit FIFO empty:
1’b0 = Transmit FIFO is not empty
1’b1 = transmit FIFO is empty
SSPCPSR register
SSPCPSR is the clock prescale register and specifies the division factor by which the input
SSPCLK must be internally divided before further use.
The value programmed into this register must be an even number between 2 to 254. The
least significant bit of the programmed number is hard-coded to zero. If an odd number is
written to this register, data read back from this register has the least significant bit as zero.
The SSPCPSR bit assignments are given in Table 217.
280/844
Doc ID 018672 Rev 1
RM0082
LS_Synchronous serial peripheral (SSP)
Table 217. SSPCPSR register bit assignments
Bit
Name
[15:08] -
Type
Description
-
Reserved, read unpredictable, must be written as 0.
[07:00] CPSDVSR R/W
13.6.9
Clock prescale divisor. Must be an even number from 2 to 254,
depending on the frequency of SSPCLK. The least significant bit
always returns zero on reads.
SSPIMSC register
The SSPIMSC register is the interrupt mask set or clear register. It is a read/write register.
On a read this register gives the current value of the mask on the relevant interrupt. A write
of 1 to the particular bit sets the mask, enabling the interrupt to be read. A write of 0 clears
the corresponding mask. All the bits are cleared to 0 when reset. The SSPIMSC bit
assignments are given in Table 218.
Table 218. SSPIMSC register bit assignments
13.6.10
Bit
Name
Type
Description
[15:04]
-
-
Reserved, read as 0, do not modify.
[03]
TXIM
R/W
Transmit FIFO interrupt mask:
1’b0 = Tx FIFO half empty or less condition interrupt is masked.
1’b1 = Tx FIFO half empty or less condition interrupt is not masked
[02]
RXIM
R/W
Receive FIFO interrupt mask:
1’b0 = Rx FIFO half full or less condition interrupt is masked
1’b1 = Rx FIFO half full or less condition interrupt is not masked.
[01]
RTIM
R/W
Receive timeout interrupt mask:
1’b0 = Rx FIFO not empty and no read prior to timeout period interrupt is
masked
1’b1= Rx FIFO not empty and no read prior to timeout period interrupt is
not masked.
[00]
RORI
M
R/W
Receive overrun interrupt mask:
1’b0 = Rx FIFO written to while full condition interrupt is masked
1’b1= Rx FIFO written to while full condition interrupt is not masked.
SSPRIS register
The SSPRIS register is the raw interrupt status register. It is a read-only register. On a read
this register gives the current raw status value of the corresponding interrupt prior to
masking. A write has no effect. The SSPRIS bit assignments are given in Table 219.
Table 219. SSPRIS register bit assignments
Bit
Name
Type
Description
[15:04] -
-
Reserved, read as 0, do not modify.
[03]
RO
Gives the raw interrupt state (prior to masking) of the SSPTXINTR
interrupt
TXRIS
Doc ID 018672 Rev 1
281/844
LS_Synchronous serial peripheral (SSP)
RM0082
Table 219. SSPRIS register bit assignments (continued)
13.6.11
Bit
Name
Type
Description
[02]
RXRIS
RO
Gives the raw interrupt state (prior to masking) of the SSPRXINTR
interrupt
[01]
RTRIS
RO
Gives the raw interrupt state (prior to masking) of the SSPRTINTR
interrupt
[00]
RORRIS RO
Gives the raw interrupt state (prior to masking) of the SSPRORINTR
interrupt
SSPMIS Register
The SSPMIS register is the masked interrupt status register. It is a read-only register. On a
read this register gives the current masked status value of the corresponding interrupt. A
write has no effect. The SSPMIS bit assignments are given in Table 220.
Table 220. SSPMIS register bit assignments
Bit
Name
[15:04] -
13.6.12
Type
Description
-
Reserved, read as 0, do not modify
[03]
TXMIS RO
Gives the transmit FIFO masked interrupt state (after masking) of the
SSPTXINTR interrupt.
[02]
RXMIS RO
Gives the transmit FIFO masked interrupt state (after masking) of the
SSPRXINTR interrupt.
[01]
RTMIS RO
Gives the transmit FIFO masked interrupt state (after masking) of the
SSPRTINTR interrupt.
[00]
RORM
RO
IS
Gives the transmit FIFO masked interrupt state (after masking) of the
SSPRORINTR interrupt.
SSPICR register
The SSPICR register is the interrupt clear register and is write-only. On a write of 1, the
corresponding interrupt is cleared. A write of 0 has no effect. The SSPICR bit assignments
are given in Table 221.
Table 221. SSPICR register bit assignments
Bit
13.6.13
Name
Type
Description
[15:02] -
-
Reserved, read as 0, do not modify.
[01]
RTIC
WO
Clear the SSPRTINTR interrupt.
[00]
RORIC
WO
Clear the SSPRORINTR interrupt.
SSPDMACR register
The SSPDMACR register is the DMA control register. It is a read/write register. All the bits
are cleared to 0 on reset. The SSPDMACR bit assignments are given in Table 222.
282/844
Doc ID 018672 Rev 1
RM0082
LS_Synchronous serial peripheral (SSP)
Table 222. SSPDMACR register bit assignments
13.6.14
Bit
Name
Type
Description
[15:02]
-
-
Reserved, read as 0, do not modify.
[01]
TXDMAEn
R/W
If this bit is set to 1, DMA for the transmit FIFO is enabled.
[00]
RXDMAEn
R/W
If this bit is set to 1, DMA for the receive FIFO is enabled.
PHERIPHID0 register
Table 223. PHERIPHID0 register bit assignments
13.6.15
Bit
Name
Type
Description
[31:08]
-
-
Reserved, read as zero
[07:00]
PartNumber0 RO
These bits read back as 0x22
PHERIPHID1 register
Table 224. PHERIPHID1 register bit assignment
13.6.16
Bit
Name
Type
Description
[31:08]
-
-
Reserved, read as zero
[07:04]
Designer0
RO
These bits read back as 0x1
[03:00]
PartNumber1 RO
These bits read back as 0x0
PHERIPHID2 register
Table 225. PHERIPHID2 register bit assignments
13.6.17
Bit
Name
Type
Description
[31:08]
-
-
Reserved, read as zero
[07:04]
Revision
RO
These bits read back as 0x0
[03:00]
Designer1
RO
These bits read back as 0x4
PHERIPHID3 register
Table 226. PHERIPHID3 register bit assignments
Bit
Name
Type
Description
[31:08]
-
-
Reserved, read as zero
[07:00]
Configuration
RO
These bits read back as 0x00
Doc ID 018672 Rev 1
283/844
LS_Synchronous serial peripheral (SSP)
13.6.18
RM0082
PCELLID0 register
Table 227. PCELLID0 register bit assignments
13.6.19
Bit
Name
Type
Description
[31:08]
-
-
Reserved, read as zero
[07:00]
PCELLID0
RO
These bits read back as 0x0D
PCELLID1 register
Table 228. PCELLID1 register bit assignment
13.6.20
Bit
Name
Type
Description
[31:08]
-
-
Reserved, read as zero
[07:00]
PCELLID1
RO
These bits read back as 0xF0
PCELLID2 register
Table 229. PCELLID2 register bit assignment
13.6.21
Bit
Name
Type
Description
[31:08]
-
-
Reserved, read as zero
[07:00]
PCELLID2
RO
These bits read back as 0x05
PCELLID3 register
Table 230. PCELLID3 register bit assignment
13.7
Bit
Name
Type
Description
[31:08]
-
-
Reserved, read as zero
[07:00]
PCELLID3
RO
These bits read back as 0xB1
Interrupts
There are five interrupts generated by the SSP. Four of these are individual, maskable,
active HIGH interrupts:
●
SSPRXINTR - SSP receive FIFO service interrupt request.
●
SSPTXINTR - SSP transmit FIFO service interrupt request.
●
SSPRORINTR - SSP receive overrun interrupt request
●
SSPRTINTR - SSP time out interrupt request.
The fifth is a combined single interrupt SSPINTR.
You can mask each of the four individual maskable interrupts by setting the appropriate bits
in the SSPIMSC register. Setting the appropriate mask bit HIGH enables the interrupt.
284/844
Doc ID 018672 Rev 1
RM0082
LS_Synchronous serial peripheral (SSP)
Provision of the individual outputs as well as a combined interrupt output, allows use of
either a global interrupt service routine, or modular device drivers to handle interrupts.
The transmit and receive dynamic dataflow interrupts SSPTXINTR and SSPRXINTR have
been separated from the status interrupts, so that data can be read or written in response to
just the FIFO trigger levels.
The status of the individual interrupt sources can be read from SSPRIS and SSPMIS
registers.
13.7.1
SSPRXINTR
The receive interrupt is asserted when there is four or more valid entries in the receive FIFO.
13.7.2
SSPTXINTR
The transmit interrupt is asserted when there are four or less valid entries in the transmit
FIFO. The transmitter interrupt SSPTXINTR is not qualified with the SSP enable signal,
which allows operation in one of two ways. Data can be written to the transmit FIFO prior to
enabling the PrimeCell SSP and the interrupts. Alternatively, the SSP and interrupts can be
enabled so that data can be written to the transmit FIFO by an interrupt service routine.
13.7.3
SSPRORINTR
The receive overrun interrupt SSPORINTR is asserted when the FIFO is already full and an
additional data frame is received, causing an overrun of the FIFO. Data is over-written in the
receive shift register, but not the FIFO.
13.7.4
SSPRTINTR
The receive timeout interrupt is asserted when the receive FIFO is not empty and the SSP
has remained idle for a fixed 32 bit period. This mechanism ensures that the user is aware
that data is still present in the receive FIFO and requires servicing. This interrupt is
deasserted if the receive FIFO becomes empty by subsequent reads, or if new data is
received on SSPRXD. It can also be cleared by writing to the RTIC bit in the SSPICR
register.
13.7.5
SSPINTR
The interrupts are also combined into a single output SSPINTR, that is an OR function of
the individual masked sources. You can connect this output to the system interrupt controller
to provide another level of masking on an individual per-peripheral basis. The combined
SSP interrupt is asserted if any of the four individual interrupts above are asserted and
enabled.
Doc ID 018672 Rev 1
285/844
BS_System controller
RM0082
14
BS_System controller
14.1
Overview
Within its Basic Subsystem, the device provides a System Controller, which is used to
supply an interface to control the operation of the overall system.
Main features of the System Controller are listed below:
286/844
●
Provides a system mode control state machine
●
Integrates crystal and PLL control
●
Defines the system response to interrupts
●
Implements soft reset generation
●
Generates Watchdog module clock enable
Doc ID 018672 Rev 1
RM0082
14.2
BS_System controller
Block diagram
Figure 23. System controller block diagram
Clock and reset
inputs
nPOR
SCLK
PRESETn
PENABLE
PSEL
APB interface
PWRITE
PRDATA[31:0]
PWDATA[31:0]
PADDR[11:2]
PLLON
PLL oscillator
control and status
PLLSW
PLLTIMEEN
XTALON
Crystal oscillator
control and status
XTALSW
PLLEN
PLLRQSW
PLLFREQCTRL[31:0]
XTALEN
XTALRQSW
XTALTIMEEN
PERIPHCLKEN[31:0]
Clock control and
status
PERIPHCLKSTAT[31:0]
HCLKDIVSEL[2:0]
PERIPHCTRL0[31:0]
PERIPHCTRL1[31:0]
REDCLK
SLEEPMODE
TIMCLK
WDEN
TIMERCLKEN0
TIMERCLKEN1
TIMERCLKEN2
TIMERCLKEN3
WDCLKEN
SYSSTAT[31:0]
REMAPSTAT
System control
and status
nIRQ
STANDBYWFI
nFIQ
REMAPCLEAR
SOFTRESREQ
SYSMODE[3:0]
SYSID[31:0]
SCANENABLE
SCANINSCLK
Scan test interface
14.3
Main function description
14.3.1
System mode control
SCANOUTSCLK
Here there is a description of how the system controller changes between modes: DOZE,
SLEEP, SLOW and NORMAL.
Doc ID 018672 Rev 1
287/844
BS_System controller
RM0082
The state machine is controlled using three mode control bits (ModeCtrl[2:0]) in the system
control register (SCCTRL), which define the required system operating mode. The mode
control bits control the modes:
●
1xx If the most significant bit (MSB) is set then the system moves into NORMAL mode.
●
01x If the MSB is not set and the next MSB is set then the system moves into SLOW
mode.
●
001 If only the least significant bit (LSB) is set then the system moves into DOZE mode.
●
000 If none of the mode control bits are set the system moves into SLEEP mode.
When the required operating mode has been defined in the system mode control register
the system mode control state machine moves to the required operating mode without
further software interaction.
The current system mode is output on the SYSMODE[3:0] bus and can also be read back by
the processor using the ModeStatus bit in the SCCTRL register.
If the nPOR input is activated, the state machine and the required operating mode in the
system control register are set to DOZE. If the PRESETn input is activated, the system
mode control state machine does not change mode but the required operating mode is set
to DOZE in the system control register.
SLEEP mode
During this mode the system clocks, HCLK and CLK, are disabled and the System
Controller clock SCLK is driven from a low speed oscillator (nominally 32 768 Hz). When
either a FIQ or an IRQ interrupt is activated (through the VIC) the system moves into the
DOZE mode. Additionally, the required operating mode in the system control register
automatically changes from SLEEP to DOZE.
DOZE mode
During this mode the system clocks, HCLK and CLK, and the System Controller clock SCLK
are driven from the output of crystal oscillator (24 MHz) or low frequency oscillator (32 kHz).
The System Controller moves into SLEEP mode from DOZE mode only when none of the
mode control bits are set and the processor is in Wait-for-interrupt state. If SLOW mode or
NORMAL mode is required the system moves into the XTAL control transition state to
initialize the crystal oscillator.
SLOW mode
During this mode, both the system clocks and the System Controller clock are driven from
the output of the crystal oscillator.
If NORMAL mode is required, the system moves into the “PLL control” transition state. If
neither the SLOW nor the NORMAL mode control bits are set, the system moves into the
“Switch from XTAL” transition state.
NORMAL mode
In NORMAL mode, both the system clocks and the System Controller clock are driven from
the output of PLL.
If the NORMAL mode control bit is not set, then the system moves into the “Switch from
PLL” transition state.
288/844
Doc ID 018672 Rev 1
RM0082
BS_System controller
XTAL control transition state, XTAL CTL
XTAL control transition state is used to initialize the crystal oscillator. While in this state, both
the system clocks and the System Controller clock are driven from a low-frequency
oscillator.
The system moves into the Switch to XTAL transition state when the crystal oscillator output
is stable. This is indicated when either the XTAL timeout defined in the XTAL control register
expires (when the XTALTIMEEN input is valid) or by the XTALON input being set to logic ‘1’.
Switch to XTAL transition state, SW TO XTAL
Switch to XTAL transition state is used to initiate the switching of the system clock source
from the slow speed oscillator to the crystal oscillator. The system moves into the SLOW
mode when the XTALSW input is set to logic ‘1’, to indicate that the clock switching is
complete.
Switch from XTAL transition state (SW from XTAL)
The “Switch from XTAL” transition state is entered when moving from SLOW to DOZE mode.
It is used to initiate the switching of the system clock source from the crystal oscillator to the
low speed oscillator. The system moves into the DOZE mode when the XTALSW input is set
to PLL control transition state (PLL CTL)
The “PLL control” transition state is used to initialize the PLL. While in this state, both the
system clocks and the System Controller clock are driven by the output of the crystal
oscillator.
The system moves then into the “Switch to PLL” transition state when the PLL timeout
defined in the PLL control register (SCPLLCTRL register) expires (when the PLLTIMEEN
input is invalid) and if the PLLON input is set to logic1.
Switch to PLL transition state (SW to PLL)
The “Switch to PLL” transition state is used to initiate the switching of the system clock
source from the crystal oscillator to the PLL output.
The system moves then into the NORMAL mode when the PLLSW input is set to logic ‘1’ to
indicate that the clock switching is complete.
Switch from PLL transition state (SW from PLL)
The “Switch from PLL” transition state is entered when moving from NORMAL to SLOW
mode. It is used to initiate the switching of the clock sources from the PLL to the crystal
oscillator output.
The system moves then into the SLOW mode when the PLLSW input is set to logic ‘0’ to
indicate that the clock switching is complete.
Doc ID 018672 Rev 1
289/844
BS_System controller
14.3.2
RM0082
System control state machine
Figure 24. System mode control state machine
PLLSW
NORMAL
NORMAL
SW to
PLL
PLLON ||(PLLTIMEEN && PLL Timeout)
SW From
PLL
PLL
CTL
PLL SW
NORMAL
SLOW
XTAL SW
SLOW&NORMAL
SW to
XTAL
XTALON ||(XTALTIMEEN && XTAL Timeout)
XTAL
CTL
nPOR
SLOW |
NORMAL
SW From
XTAL
XTALSW
DOZE
DOZE&SLOW&NORMAL
&STANDBYWFI
IRQ | FIQ
SLEEP
Crystal oscillator and PLL control
The system control state machine (Section 14.3.2: System control state machine) can also
be used to control the crystal oscillator and the PLL.
Nevertheless, software can be used to override control of the crystal and PLL by using the
crystal control register (SCXTALCTRL, Section 14.4.7) and the PLL control register
(SCPLLCTRL).
PLL frequency control
To define the frequency of the clock generated from the PLL, the system controller provides
a PLL frequency control register (SCPLLFCTRL, Section 14.3.5).
290/844
Doc ID 018672 Rev 1
RM0082
14.3.3
BS_System controller
Interrupt response mode
To enable the best possible response to interrupts, the present mode bits can be override in
the system control register after an interrupt has been generated. This enables, for example,
the state machine to move from the DOZE to the NORMAL mode after an interrupt.
The interrupt response functionality is controlled by the interrupt mode control register
(SCIMCTRL, Section 14.4.5), which defines if the functionality has been enabled, the mode
of operation that is required following an interrupt, what type of interrupt is permitted to
enable the interrupt response mode, an interrupt mode status bit and clear mechanism.
Note:
It is not possible for the interrupt response mode to slow the system operating speed, for
example, changing mode from NORMAL to SLOW.
The interrupt response mode is cleared by writing a 1‘b0 to the interrupt mode control
register SCIMCTRL. Following a power-on reset, the interrupt response mode is disabled.
14.3.4
Reset control
The reset control is used to request a soft reset to be generated by asserting the
SOFTRESREQ output for a single SCLK cycle when any value is written to the reset status
register.
14.3.5
Core clock control
To enable the software to control the relative frequency of the core clock (CLK) and the bus
clock (HCLK), the system controller provides access to the HCLKDIVSEL[2:0] output
through the system control register (namely the 3 bit field HCLKDivSel of the SCCTRL
register, Section 14.4.3).
These output signals are intended for use by the clock generation logic to control the
generation of the CLK/HCLK clock source and the HCLKEN input. To prevent spurious
change of the CLK/HCLK clock ratio, the HCLKDIVSEL output is only allowed to change
when the system mode control state machine is in a stable state, that is, the actual system
mode matches the required system mode.
14.3.6
Watchdog module clock enable generation
Enable signals are generated by the system controller to allow the watchdog module to be
clocked at a rate that is independent of the system clock SCLK. In particular, the enable
signals are generated by sampling a free-running, constant frequency input clock and
generating an active high pulse for a single SCLK clock cycle on each rising edge of the
input clock.
The supported module enable signals are:
●
WDCLKEN for the watchdog module clock enable.
The enable signal for the watchdog module is generated from the REFCLK input, as defined
in the system control register (SCCTRL, Section 14.4.3).
Additionally, to enable the watchdog module to be clocked directly at the system clock rate, it
is also possible to selectively force the enable outputs high. The watchdog clock enable
output can be forced inactive by deasserting the WDEN input (for example, the WDEN input
can be used to disable the watchdog timer when the processor core is in a debug state).
Doc ID 018672 Rev 1
291/844
BS_System controller
RM0082
14.4
Programming model
14.4.1
Register map
The system controller can be fully configured by programming its registers which can be
accessed at the base address 0xFCA0_0000
System controller registers can be logically arranged in two main groups:
Note:
●
Control and status registers, CSRs (listed in Table 231), for system controller
configuration,
●
Identification registers (listed in Table 232), namely twelve 8 bit RO registers (which can
be treated as three 32 bit registers) reporting system information and system controllerspecific information. Refer to ARM technical documentation for further details.
In addition to reserved locations within the CSRs address space (Table 231), offset
addresses from 0xF00 to 0xFDC are reserved for test purposes. All these locations must not
be used during normal operation.
Table 231. System controller control and status registers summary
Name
Width
[bit](1)
Offset
Type
Reset
value
(2)
Description
SCCTRL
0x000
24
RW
24’h000009 System control
SCSYSSTAT
0x004
32
RW
-
System status
SCIMCTRL
0x008
8
RW
8’h00
Interrupt mode control
SCIMSTAT
0x00C
1
RW
1’h0
Interrupt mode status
SCXTALCTRL
0x010
19
RW
19’h0
Crystal control
SCPLLCTRL
0x014
28
RW
28’h0
PLL control
-
0x018 to 0xEDC
-
-
-
Reserved
1. This value represents the actual number of used bits, being reserved the others to 32.
2.
Table 232. System controller identification registers summary
Name
Offset
Width[bit]
Type
Reset Value
SCSYSID0
0xEE0
8
RO
8’h00
SCSYSID1
0xEE4
8
RO
8’h00
SCSYSID2
0xEE8
8
RO
-
SCSYSID3
0xEEC
8
RO
-
-
0xEF0 to
0xEFC
-
-
-
Description
System identification
292/844
Doc ID 018672 Rev 1
Reserved
RM0082
BS_System controller
Table 232. System controller identification registers summary (continued)
Name
Offset
Width[bit]
Type
Reset Value
SCPeriphID0
0xFE0
8
RO
8’h10
SCPeriphID1
0xFE4
8
RO
8’h18
SCPeriphID2
0xFE8
8
RO
8’h04
SCPeriphID3
0xFEC
8
RO
8’h00
SCPCellID0
0xFF0
8
RO
8’h0D
SCPCellID1
0xFF4
8
RO
8’hF0
SCPCellID2
0xFF8
8
RO
8’h05
SCPCellID3
0xFFC
8
RO
8’hB1
Description
Peripheral identification
Identification Registes
14.4.2
Register description
14.4.3
SCCTRL register
The SCCTRL (control) is a RW register which is used to define the required operation of the
system controller. The SCCTRL bit assignments are given in Table 233.
Table 233. SCCTRL register bit assignments
Bit
Name
Reset
value
Description
[31:24]
Reserved
-
Read: undefined. Write: should be zero
[23]
WDogEnOv
1’h0
Watchdog enable override
This bit allows to control the watchdog enable output
signal (Section 14.3.6), according to the encoding:
1‘b0 = Derived from REFCLK clock source, as
defined in Section 14.3.6
1‘b1 = Forced high
[22:21]
Reserved
-
Read: undefined. Write: should be zero
[20]
TimerEn2Ov
1’h0
Timer enable 2, override
[19]
TimerEn2Sel
1’h0
Timer enable 2, timing reference select
1’h0
Timer enable 1, override
If set, this bit forces high the timer enable output
signal. Otherwise (bit cleared), the enable output
signal follows the rules defined in Section 14.3.6
[18]
TimerEn1Ov
[17]
TimerEn1Sel
1’h0
[16]
TimerEn0Ov
1’h0
Timer enable 1, timing reference select
This bit allows to select the reference clock for the
timer enable signals (Section 14.3.6), according to
the encoding:
1‘b0 = REFCLK
1‘b1 = TIMCLK
Timer enable 0, override
Doc ID 018672 Rev 1
293/844
BS_System controller
RM0082
Table 233. SCCTRL register bit assignments (continued)
Bit
Name
Reset
value
Description
[15]
TimerEn0Sel
1’h0
Timer enable 0, timing reference select
[14:12]
HCLKDivSel
3’h0
Control the HCLKDIVSEL output
[11:10]
Reserved
-
Read: undefined. Write: should be zero
[09]
RemapStat
1’h0
Remap status
This bit is used to return the value of the
REMAPSTAT input.
[08]
RemapClear
1’h0
Remap clear request
This bit is used to control the REMAPCLEAR output.
Setting this bit indicates that the memory remap will
be cleared.
[07]
Reserved
-
Read: undefined. Write: should be zero
4’h01
Mode status bitsThis 4 bit field returns the current
operation mode as defined by the system controller
state machine (Section 14.3.1: System mode
control), according to the encoding:
4‘b0000 = SLEEP
4‘b0001 = DOZE (reser value)
4‘b0010 = SLOW
4‘b0011 = XTAL CTL
4‘b0100 = NORMAL
4‘b0101 = Not used
4‘b0110 = PLL CTL
4‘b0111 = Not used
4‘b1000 = Not used
4‘b1001 = SW from XTAL
4‘b1010 = SW from PLL
4‘b1011 = SW to XTAL
4‘b1100 = Not used
4‘b1101 = Not used
4‘b1110 = SW to PLL
4‘b1111 = Not used
3’h01
Mode control bits
This 3 bit field defines the required operation mode
(Section 14.3.1: System mode control), according to
the encoding (x is don’t care):
3‘b000 = SLEEP
3‘b001 = DOZE (reset value)
3‘b01x = SLOW
3‘b1xx = NORMAL
[06:03]
[02:00]
14.4.4
ModeStatus
ModeCtrl
SCSYSSTAT register
Writing any value to the SCSYSSTAT (system status) 32 bit RW register causes the
SOFTRESREQ output (soft reset request) to pulse high for a single clock cycle.
294/844
Doc ID 018672 Rev 1
RM0082
14.4.5
BS_System controller
SCIMCTRL register
The SCIMCTRL (interrupt mode control) is a RW register which is used to enable and
control the operation of the system controller when an interrupt has been generated. The
SCIMCTRL bit assignments are given in Table 234.
Table 234. SCIMCTRL register bit assignments
Bit
Name
Reset
value
Description
[31:08]
Reserved
-
Read: undefined. Write: should be zero
[07]
InMdType
1’h0
Interrupt mode type
This bit is used to define which type of interrupt can
cause the system to enter interrupt mode, according
to the encoding:
1‘b0 = FIQ
1‘b1 = FIQ and IRQ
[06:04]
Reserved
-
Read: undefined. Write should be zero.
[03:01]
ItMdCtrl
3’h0
Interrupt mode control bits
This 3 bit field defines the slowest operating mode
that must be requested when in interrupt mode.
1’h0
Interrupt mode enable
This bit is used to enable the interrupt mode,
according to the encoding:
1‘b0 = Disabled
1‘b1 = Entered when an interrupt becomes active
[00]
14.4.6
ItMdEn
SCIMSTAT register
The SCIMSTAT (interrupt mode status) is a RW register which is used to monitor and control
the system controller interrupt mode. The SCIMSTAT bit assignments are given in
Table 235.
Table 235. SCIMSTAT register bit assignments
Bit
Name
Reset
value
Description
[31:01]
Reserved
-
Read: undefined. Write: should be zero
1’h0
Interrupt mode status
This bit is used to enable the interrupt mode,
according to the encoding:
1‘b0 = Not active.
1‘b1 = Active.
This bit can be directly written to enable software
control of the interrupt mode logic.
[00]
Note:
ItMdStat
The interrupt mode must be cleared manually when the interrupt service routine has
completed executing.
Doc ID 018672 Rev 1
295/844
BS_System controller
14.4.7
RM0082
SCXTALCTRL register
The SCXTALCTRL (crystal control) is a RW register which is used to directly control the
crystal oscillator used to generate the system clock SCLK in both SLOW and NORMAL
mode (Section 14.3.1: System mode control). The SCXTALCTRL bit assignments are given
in Table 236.
Table 236. SCXTALCTRL register bit assignments
Bit
Name
Type
Reset
value
Description
[31:19]
Reserved
-
-
Read: undefined. Write: should be zero
[18:03]
XtalTime
RW
16’h0
Crystal timeout count
This value is used to define the number of
slow speed oscillator cycles permitted for the
crystal oscillator output to settle after being
enabled. The timeout is given by: 65536 –
XtalTime.
[02]
XtalStat
RO
1’h0
Crystal status bit
This RO bit returns the value on the XTALON
input signal.
1’h0
Crystal enable bit
This bit is used to directly control the
XTALEN output when the crystal control
override is enabled (XtalOver bit set to ‘b1 in
this register).
1’h0
Crystal control override
If set, this bit enables the crystal control
signals (from system controller) to be placed
under direct software control, rather than
being controlled by the system mode control
state machine.
[01]
[00]
14.4.8
XtalEn
XtalOver
RW
RW
SCPLLCTRL register
The SCPLLCTRL (PLL Control) is a RW register which allows the system controller to
directly control the PLL. The SCPLLCTRL bit assignments are given in Table 237.
Table 237. SCPLLCTRL register bit assignments
Bit
Name
Type
Reset
value
Description
[31:28]
Reserved
-
-
Read: undefined. Write: should be zero
[27:03]
296/844
PllTime
RW
25’h0
Doc ID 018672 Rev 1
PLL timeout count
This value is used to define the number of
crystal oscillator cycles permitted for the PLL
output to settle after being enabled.The
timeout value is given by: 33554432 –
PllTime.
RM0082
BS_System controller
Table 237. SCPLLCTRL register bit assignments (continued)
Bit
Name
Type
Reset
value
Description
[02]
PllStat
RO
1’h0
PLL status bit
This RO bit returns the value on the PLLON
input signal.
1’h0
PLL enable bit
This bit is used to directly control the PLLEN
output when the PLL control override is
enabled (PllOver bit set to ‘b1 in this
register).
1’h0
PLL control override
If set, this bit enables the PLL control signals
(from the system controller) to be placed
under direct software control, rather than
being controlled by the system mode control
state machine.
[01]
[00]
PllEn
PllOver
RW
RW
Doc ID 018672 Rev 1
297/844
BS_Serial memory interface
RM0082
15
BS_Serial memory interface
15.1
Overview
SPEAr300 provides a serial memory interface (SMI), acting as an AHB slave interface (32,
16 or 8 bit) to SPI-compatible off-chip memories. SMI allows the CPU to use these serial
memories for both data storage and code execution.
Main features of SMI are:
●
15.2
Supports a group of SPI-compatible Flash and EEPROM devices, namely:
–
STMicroelectronics M25Pxxx, M45Pxxx,
–
STMicroelectronics M95xxx, except M95040, M95020 and M95010,
–
ATMEL AT25Fxx,
–
YMC Y25Fxx,
–
SST SST25LFxx.
●
Acts always as a SPI master and up to 2 SPI slave memory devices are supported
(through as many chip select signals), with up to 16 MB address space each.
●
The SMI clock signal (SMICLK) is generated by SMI and input to all slaves.
●
SMICLK can be up to 50 MHz in fast read mode (or 20 MHz in normal mode), and it
can be controlled by a programmable 7 bits prescaler allowing then 127 different clock
frequencies.
Block diagram
Figure 25 shows the block diagram of SMI.
SMI consists of two main functions which are detailed in the following sections:
298/844
●
The Clock Prescaler (Section 15.3.1).
●
The Data Processing and Control (Section 15.3.2).
Doc ID 018672 Rev 1
RM0082
BS_Serial memory interface
Figure 25. SMI block diagram
SMI Clock
Prescaler
(1 to 127)
AMBA AHB Bus
SMI Data processing
and Control
Clock
Data,
command
Bank select
SPICompatible
Memories
Transmit Register
AHB Slave
Interface
Control and
Status Register
Receive Register/
Status Regsiter
15.3
Main functions description
15.3.1
Clock prescaler
Data,
Status
The SMI clock prescaler block allows to set-up the memory clock SMI_CK using the AHB
clock HCLK, as detailed in Section 15.6.
15.3.2
Data processing and control
The SMI data processing and control block represents the logic controlling the transfer of
data between SPI-compatible off-chip memory and AHB bus. Transfer rules through both
AHB-to-SMI and SMI-to-memory interfaces. Different data transfer mode between SPIcompatible off-chip memory and AHB bus are detailed in Section 15.5.
AHB-to-SMI interface
Acting as an AHB slave interface, the SMI is accessed by AHB master through AHB bus.
The following rules apply to this interface:
●
Endianness is fixed to little-endian.
●
SPLIT / RETRY responses from AHB slave (that is., the SMI) are not supported.
●
Size of data transfers to external serial memories can be byte, half-word or word (that
is, 8, 16 or 32 bit).
●
Size of data transfers to SMI registers must be 32 bits.
●
Read requests: all types of BURST defined by AHB protocol are supported (single,
wrapping and incrementing). Please note that wrapping bursts take more time than
incrementing bursts, as there is a break in the address increment.
Doc ID 018672 Rev 1
299/844
BS_Serial memory interface
Note:
RM0082
If EEPROMs are used instead of Flash memories, a read request address should be
(ADDRESS + 1), being ADDRESS the actual target address to be read.
●
Write requests: wrapping bursts are not supported, causing an ERROR response on
HRESP sent back by SMI to AHB master.
●
Bursts must not cross bank boundaries.
●
In case of BUSY transfer, the SMI is held until BUSY is inactive.
SMI-to-MEMORY interface
Acting as a SPI master, the SMI supports a synchronous full-duplex data link with its up to 2
SPI slaves (that is, the serial memory devices).
It follows that each SPI slave must agree with the communication protocol fixed by SMI in
terms of clock polarity (CPOL) and clock phase (CPHA), specifically CPOL = 1 and CPHA =
1 (that is, clock idles high and data are shifted in and out on the rising edge of the clock).
Prior to any operation involving a SPI-compatible off-chip memory device, the related SPI
slave must be selected by SMI (through chip select), then a 1-byte instruction must be sent
by SMI to the selected memory. The set of instructions supported by SMI is given in
Table 238.
Table 238. SMI supported instruction
15.4
Opcode
Description
8’h03
Read data bytes.
8’h0B
Read data bytes at high speed.
8’h05
Read status register.
8’h06
Write enable.
8’h02
Page program.
8’hAB
Release from deep power-down.
Operation modes
SMI is allowed to run in two distinct operation modes:
15.4.1
●
Hardware mode (detailed in Section 15.4.1), clearing the SW bit in the SMI_CR1
register, Section 15.8.3.
●
Software mode (detailed in Section 15.4.2), setting the SW bit in the SMI_CR1 register.
Moreover, in both operation modes SMI can work:
●
Either in normal mode, clearing the FAST bit in the SMI_CR1 register, with a frequency
up to 20 MHz (19 MHz at power-on).
●
Or in fast mode, setting the FAST bit in the SMI_CR1 register, with a frequency ranging
from 20 MHz to 50 MHz.
Hardware mode
Hardware mode is intended to allow SMI to perform read/write requests from any AHB
master, which can directly access the external serial memory.
300/844
Doc ID 018672 Rev 1
RM0082
BS_Serial memory interface
In particular, external serial memory is mapped in AHB address space as shown in
Figure 26,
Figure 26. External SPI memory map in AHB address space
0xF9FF_FFFF
CS1
0xF9FF_FFFF
0xF900_0000
External Serial
M em ory Space
0xF800_0000
0xF8FF_FFFF
CS0
0xF800_0000
In this mode, both the transmit register SMI_TR (Section 15.8.6) and the receive register
SMI_RR (Section 15.8.7) must not be accessed. They are actually in charge of the SMI
state machine to communicate with the selected external memory device, whenever an AHB
master reads or writes an address into the memory.
At power-on reset, the SMI operates in hardware mode (allowing then boot phase from
external memory, as explained in Section 15.7).
15.4.2
Software mode
Software mode is intended to allow any AHB master to access external serial memory by
programming the internal SMI registers and reading them for memory replies. In this mode,
direct transfer to/from external memory – that is, bypassing SMI registers - are not permitted
to an AHB master.
In particular, software mode is used both to transfer any data or commands from transmit
register (SMI_TR, Section 15.8.6) to external serial memory, and to read data directly in the
receive register (SMI_RR, Section 15.8.7). The transfer actually starts setting the dedicated
SEND bit in the SMI_CR2 register (Section 15.8.4).
Besides in software mode, application code being executed by the CPU cannot be fetched
from external memory, because incompatibility between software and hardware mode. The
code must be either hosted by internal memory or previously loaded from external memory
while SMI is in hardware mode.
For example, software mode is used to erase Flash memories before writing. Indeed,
memory erasing cannot be performed in Hardware mode due to incompatibilities in Flash
devices from different vendors.
15.5
Data transfers
15.5.1
Read request
A read request from an AHB master to external SPI memory is served only if SMI is in
hardware mode, and write burst mode is not enabled (Section 15.5.3). Otherwise, an error
flag is set (ERF1 flag in the SMI_SR register, Section 15.8.5) and an ERROR response is
sent back to the AHB master.
Doc ID 018672 Rev 1
301/844
BS_Serial memory interface
RM0082
When a read request occurs in normal mode (that is, frequency up to 20 MHz), the SMI
sends the following data sequence to the bank selected by the AHB address bits [24.25].
●
Read data bytes instruction opcode (8’h03)
●
3- or 2-byte address (depending on the ADD_LENGTH bit of SMI_CR1 register,
Section 15.8.3) from the MSB to the LSB,
●
Then, clock is sent to the memory until the end of burst requested by the AHB master.
In contrast, when a read request occurs in fast mode (that is, frequency ranging from 20
MHz to 50 MHz), the following sequence is sent:
●
Read data bytes at high speed instruction opcode (8’h0B),
●
3- or 2-byte address (depending on the ADD_LENGTH bit of SMI_CR1 register,
Section 15.8.3) from the MSB to the LSB,
●
1 dummy byte (8’h00),
●
Then, clock is sent to the memory until the end of burst requested by the AHB master.
The external memory bank remains selected as long as
●
There is no external memory address jump,
●
No new commands are sent to the SMI (such as write enable request, read status
register command set, software mode or write burst mode, write request, bank disable,
prescaler configuration change),
●
No memory access error occurs.
Note:
The memory bank also remains selected when the address rolls over from 0x00FF_FFFF to
0x0000.0000 within the same bank.
15.5.2
Write request
A write request from AHB master to external SPI memory is served only if SMI is in
Hardware mode, otherwise an error flag is set (ERF1 flag in the SMI_SR register,
Section 15.8.5). Wrapping bursts are not allowed as long as external SPI memories don’t
support them, and an ERROR response is sent back to the AHB master.
When a write request occurs, this request is forwarded to external memory only if both
following conditions are fulfilled:
●
Note:
At first, selected bank is in Write mode (corresponding bit in WM field of SMI_SR
register is flagged). Otherwise, a dedicated error flag is set (the ERF2 flag in the
SMI_SR register) and an ERROR response is sent back to the AHB master.
To enable write mode, select the memory bank using the BS bits in the SMI_CR2 register
(Section 15.8.4), and then set the WEN bit in the SMI_CR1 register (Section 15.8.3).
●
Then, no write in progress. The WIP bit of external memory status register in the
SMI_SR register (bit [0]) must be cleared (see Section 15.8.5). If this condition is not
met, AHB is stalled until WIP = 1‘b0.
When the 2 conditions above are met, the following data sequence is sent to the bank
selected by AHB address bits [24-25]:
302/844
●
Page program instruction opcode (8’h02,Table 238),
●
3- or 2-byte address (depending on the ADD_LENGTH bit of SMI_CR1 register,
Section 15.8.3) from the MSB to the LSB,
●
Then, all data bytes (from bit 7 to bit 0) are transferred, starting with address given in
previous step and incrementing it to the last depending on the size of the Write request.
Doc ID 018672 Rev 1
RM0082
BS_Serial memory interface
After a Write request has been sent, the WM bit in SMI_SR register is cleared and the read
status register instruction (opcode 8’h05, Table 238) is automatically sent to this bank until
no write in progress (WIP =1‘b0).
Note:
15.5.3
1
Write capability must be used only if write in progress / busy bit of the external memory
status register is located in bit 0. Otherwise the system will become locked.
2
When memory programming is finished, the WCF bit in the SMI_SR register is set and an
interrupt is generated if the enabling WCIE bit in the SMI_CR1 register is set.
3
In order to send a Write request to a bank other than the one under programming, the
software must wait for WIP = 1‘b1, otherwise the error ERF2 would be generated due to non
incrementing address. The bank under programming phase must not be disabled in order to
write to another one.
Write burst mode
Write burst mode (WBM bit set in SMI_CR1 register, Section 15.8.3) enables to keep
selected the external SPI memory after an AHB write request (see above). In this case, the
next AHB write request should point to the next incremented address and should have the
same size (byte, half-word or word). Otherwise, an error flag is set (ERF2 flag in the
SMI_SR register, Section 15.8.5) and an ERROR response is sent back to the AHB master.
Note:
A memory access error (ERF1 or ERF2) results in both release of chip select and start of
the external memory page program.
Disabling the write burst mode (that is, clearing the WBM bit in SMI_CR1 register), the next
incrementing AHB write request should be sent to external memory if it occurs before the
end of the previous serial transfer. Otherwise, an error flag is set (ERF2 flag in the SMI_SR
register) and an ERROR response is sent back to the AHB master.
Consequently, it is mandatory to enable write burst mode in order to perform several Write
requests which are not sent in the same AHB incrementing burst. If WBM is cleared and no
other write request occurs, the external memory selection is released after sending the data
and the external memory page program cycle starts.
Note:
Read requests to external memory are not allowed in write burst mode, otherwise an error
flag is set (ERF1 flag in the SMI_SR register) and an ERROR response is sent back to the
AHB master.
The external SPI memory is released by either disabling write burst mode (clearing WBM
bit) or disabling the bank, and the external memory page program cycle starts. If bank is
enabled, read status register instruction is automatically sent to this bank until WIP = 1‘b0.
(see Section 15.8.5
15.5.4
Read while write mode
If a read request occurs for the bank which is in programming phase, the AHB bus is stalled
until no write in progress (WIP = 1‘b0). (please refer to Section 15.8.5 for major detail on
WIP bit).
If a read request occurs for another bank, the read status register sequence is stopped, then
the read request is served and, finally, the read status register sequence is sent again to the
memory bank being programmed.
It follows that during a read while write, the selected external SPI memory is released after
the read command, in order to send the read status register sequence.
Doc ID 018672 Rev 1
303/844
BS_Serial memory interface
15.5.5
RM0082
Erase and write status register
In case of serial Flash, an erase may be necessary before writing. Due to incompatibility
between different serial Flash vendors, erase and write status register can be done only in
software mode.
It is mandatory to send previously the write enable instruction through Software mode only
(that is, setting the WEN bit in SMI_CR2 register, Section 15.8.4), in order to avoid
corruption of the WM bit in the SMI_SR register (Section 15.8.5). Indeed, the end of either
internal Flash erase or write status register cannot be checked by hardware mode,
preventing generation of write complete interrupt. On the other hand, WIP bit can be
checked by continuously sending a read status register command.
15.6
Timings
The memory clock (SMI_CK) is generated by SMI through its programmable prescaler unit
(Section 15.3.1), as depicted in Figure 25.
The incoming AHB bus frequency fAHB (HCLK signal) is divided by the value stored in
the PRESC field of SMI_CR1 register (Section 15.8.3), resulting in the SMI clock frequency
fSMI_CK:
●
fSMI_CK = fAHB / (PRESC value)
that is,
●
tSMI_CK = tAHB * (PRESC value)
being tSMI_CK and tAHB the clock period of the SMI clock and the AHB bus, respectively.
Note:
If PRESC is an even value, high time and low time of SMI clock are both equal to half a
tSMI_CK. In contrast, in case PRESC is an odd value:
tSMI_CK, high= [(PRESC - 1) / 2]
tSMI_CK, low = [(PRESC + 1) / 2]
15.6.1
Latencies
Assuming that SMI is not busy by now, the nominal latency for a 32 bit single read to a nonincrementing serial Flash address, is:
●
●
73 tAHB maximum, if PRESC = 1 (that is, tAHB = tSMI_CK).
(68 tSMI_CK + 5 tAHB) maximum, if PRESC > 1 (that is, tAHB ≠ tSMI_CK, and specifically
tSMI_CK > tAHB),
taking into account up to 9 clock periods in addition to 64 clock periods required to both
send command to serial Flash memory (1-byte opcode + 3-bytes address) and receive back
32 bits.
●
Besides, under the same assumption, the nominal latency for a 32 bit single write to a
non-incrementing serial Flash address is:
●
5 tAHB maximum, if PRESC = 1 (that is, tAHB = tSMI_CK).
●
(2 tSMI_CK + 3 tAHB) maximum, if PRESC > 1 (that is, tAHB ≠ tSMI_CK, and specifically
tSMI_CK > tAHB).
In case of AHB read burst transfers, the maximum latency for all transfers after the first is the
same as data size, that is (32 tSMI_CK) for a word transfer, (16 tSMI_CK) for a half-word and (8
304/844
Doc ID 018672 Rev 1
RM0082
BS_Serial memory interface
tSMI_CK) for a byte, because of no mandatory extra commands (instruction opcode and
address).
Moreover, for AHB write burst transfers, the maximum latency for the 2nd transfer is (data
size + opcode + address bytes)
whereas, it is the same as data size for following transfers.
15.7
●
However, nominal latency can be increased by:
●
SMI transfer on going (read, write, read status register command or write enable
command),
●
Deselect time programming (field TCS in SMI_CR1 register), which adds (TCS + 1) ·
SMI_CK periods,
●
Busy / Idle transfer on AHB bus,
●
Fast Read (Section 15.5.1) which adds 1 dummy byte,
●
Hold programming (field HOLD in SMI_CR1 register, Section 15.8.3),
●
Boot delay time (Section 15.7),
●
Frequency change,
●
Programming on-going.
How to boot from external memory
The device allows an external boot from a serial Flash only located at bank0 (which is
enabled after power-on reset). During the boot phase, the following instructions sequence is
automatically sent to bank0:
Note:
●
Release from deep power-down (opcode 8’hAB, Table 238), in order to be able to boot
on this bank even if it was in deep power-down mode.
●
29 µs delay to ensure bank0 is successfully released.
●
Read status register (opcode 8’h05), in order to check that bank0 is neither in write nor
in erase cycle.
●
Read data bytes (opcode 8’h03) at memory start location (that is, 32’h0) with a 19 MHz
clock frequency.
1
All memory banks other than bank0 are disabled at reset and they must be enabled by
setting dedicated BE bits in SMI_CR1 register (Section 15.8.3) before they can be
accessed.
2
If an AHB request occurs while either the WEN bit or the RSR bit (both in SMI_CR2 register,
Section 15.8.4) is set, the on-going command is first finished before the request from AHB is
sent to the memory.
Doc ID 018672 Rev 1
305/844
BS_Serial memory interface
RM0082
15.8
Programming model
15.8.1
External pin connection
Table 239. External pin connection
Signal
Ball
SMI_DATAIN
M13
SMI_DATAOUT
M14
SMI_CLK
N17
SMI_CS_0
M15
SMI_CS_1
M16
The SMI can be fully configured by programming a set of 32 bit wide registers (listed in
Table 240) which can be accessed at the base address 0xFC00_0000
Note:
All transfer to and from these registers must be 32 bit wide only. Any attempt to access with
a different size will result an ERROR response.
Table 240. SMI registers summary
Name
Offset
Reset value
Description
SMI_CR1
0x000
32’h51
SMI control register 1.
SMI_CR2
0x004
32’h0
SMI control register 2.
SMI_SR
0x008
32’h0
SMI status register.
SMI_TR
0x00C
32’h0
SMI transmit register.
SMI_RR
0x010
32’h0
SMI receive register.
15.8.2
Register description
15.8.3
SMI_CR1 register
The SMI_CR1 (control register 1) is a RW register which is able (together with coupled
SMI_CR2, Section 15.8.4) to configure the behavior of SMI. The SMI_CR1 bit assignments
are given in Table 241.
Table 241. SMI_CR1 register bit assignments
Name
[31:30]
Reserved -
[29]
306/844
Reset
value
Bit
WBM
1’h0
Type
Description
-
Read: undefined. Write: should be zero.
RW
Write burst mode.
Setting this bit, the write burst mode is enabled and
selected external memory device remains active after an
AHB write request. In contrast (bit cleared, default),
selected memory device is released.
Doc ID 018672 Rev 1
RM0082
BS_Serial memory interface
Table 241. SMI_CR1 register bit assignments (continued)
Bit
[28]
Name
SW
Reset
value
1’h0
Type
Description
RW
Software mode.
Setting this bit, the software operation mode of SMI is
enabled (Section 15.4), otherwise (bit cleared, default), the
hardware operation mode is enabled.
[27:26]
ADD_LE
NGTH
2’h0
RW
Address length.
This is a 2 bit field where each bit is associated to a specific
external memory bank, specifically the LSB (bit [24]) refers
to bank0. In particular, each bit states the length of the
address following the instruction opcode issued by SMI to
the relevant bank, according to encoding:
1‘b0 = 3 bytes (default)
1‘b1 = 2 bytes (for EEPROM compliance)
[25:24]
-
-
-
Not Used
RW
Clock hold period selection.
This 8 bit field states the hold period (where SMI_CK is
stopped while chip select remains active) between bytes as
an integer number of SMI_CK periods (tSMI_CK,
Section 15.6).
RW
Fast read mode.
This bit provides for mode selection during reading
operation. As specified in Section 15.4, setting this bit a
clock frequency up to 50 MHz is available, otherwise (bit
cleared) it is reduced to 20 MHz.
RW
Prescaler value.
This 7 bit field allows to set the prescaler value used to
generate the SMI_CK clock by adjusting the AHB bus
fequency, as detailed in Section 15.6.
Note: The SMI_CK frequency is actually changed after the
completion of ongoing transfer.
RW
Deselect time.
This 4 bit field enables to configure the deselect time, that is
the minimum interval lasting between release of chip select
signal and next selection. That is, chip select signal
remains released (not selected) for at least (TCS + 1)
SMI_CK clock periods.
Actual deselect time at power-on reset depends on TCS
reset value (4’h5) and it is limited by the SMI_CK frequency
at power-on reset, that is 19 MHz, resulting in tSMI_CK =
52.6 ns. It follows that, at reset, tcs = (5+1) · 52.6 ns = 316
ns.
Note: FAST and TCS fields must be written at the same
time as PRESC. All these values are taken into account
after the completion of the ongoing transfer. Any check of
the consistency among these three values has to be done
by software.
[23:16]
[15]
[14:08]
[07:04]
HOLD
FAST
PRESC
TCS
8’h0
1’h0
7’h0
4’h5
Doc ID 018672 Rev 1
307/844
BS_Serial memory interface
RM0082
Table 241. SMI_CR1 register bit assignments (continued)
Bit
15.8.4
Name
Reset
value
Type
Description
[03:02]
Not used
[01:00]
Bank enable.
This is a 2 bit field where each bit is associated to a specific
external memory bank, specifically the LSB (bit [0]) refers to
bank0. Setting a bit, the relevant memory bank is enabled.
At power-on reset, all banks are disabled except bank0
(reset value 0x1) to allow booting from external memory, as
explained in Section 15.7.
Note: If any AHB master makes a request on a disabled
bank (relevant bit cleared in BE field), an ERROR response
is sent back to AHB master. In contrast, write enable, read
status register and send commands are not sent if the bank
is disabled, without any error message.
BE
2’h1
RW
SMI_CR2 register
The SMI_CR2 (Control register 2) is a RW register which is able (together with coupled
SMI_CR1, Section 15.8.3) to configure the behavior of SMI. The SMI_CR2 bit assignments
are given in Table 242.
Table 242. SMI_CR2 register bit assignments
Bit
Name
Reset
value
Type
Description
[31:14]
Reserved
-
-
Read: undefined. Write: should be zero.
RW
Bank select.
This 2 bit field allows to select the external memory bank,
according to encoding:
2‘b00 = Bank0
2‘b01 = Bank1
2‘b10 = Not Implemented
2‘b11 = Not Implemented
Note: Only one bank can be accessed at a time, and the
BS value is latched at the beginning of transfer.
RW
Write enable command.
Setting this bit, a write enable command is sent to the
memory bank selected by the BS field. The WEN bit is
then directly cleared by hardware as soon as the write
enable command has been successfully sent. A write of
1‘b0 has no effect.
Note: The WEN bit must be used in software mode to
send either a write or an erase command.
[13:12]
[11]
308/844
BS
WEN
2’h0
1’h0
Doc ID 018672 Rev 1
RM0082
BS_Serial memory interface
Table 242. SMI_CR2 register bit assignments (continued)
Bit
[10]
[09]
[08]
Name
RSR
WCIE
TFIE
Reset
value
1’h0
1’h0
1’h0
Description
RW
Read status register command.
Setting this bit, a read status register command is sent to
the memory bank selected by the BS field. Result from
memory is then loaded into the SMSR field of SMI_SR
register (Section 15.8.5). The RSR bit is then directly
cleared by hardware as soon as the read status register
command has been successfully completed. A write of
1‘b0 has no effect.
RW
Write complete interrupt enable.
Setting this bit, it allows to enable the issue of an interrupt
request when write complete event occurs. This event also
results in setting the write complete flag (WCF) in the
SMI_SR register (Section 15.8.5).
RW
Transfer finished interrupt enable
Setting this bit, it allows to enable the issue of an interrupt
request when software transfer complete event occurs.
This event also results in setting the transfer finished flag
(TFF) in the SMI_SR register (Section 15.8.5).
RW
Send command.
Setting this bit, the transfer to external memory starts
according to data format defined by both REC_LENGTH
and TRA_LENGTH fields of this register. A write of 1‘b0
has no effect.
Note: The WEN bit can be set by software (only if Software
mode is enabled), and it is cleared by hardware only.
[07]
SEND
[06:04]
REC_LEN
GTH
3’h0
RW
Reception length.
This 3 bit field is used to specify the number of bytes to be
received from external memory, following a send
command (setting SEND bit).
[03]
Reserved
-
-
Read: undefined. Write: should be zero.
RW
Transmission length.
This 3 bit field is used to specify the number of bytes to be
transmitted to external memory, following a send
command (setting SEND bit).
Note: The REC_LENGTH and TRA_LENGTH fields must
be set by software, and their values are latched at the
beginning of software transfer.
[02:00]
TRA_LEN
GTH
1’h0
Type
3’h0
Note:
Interrupt request issued (IRQ9), will be the OR of the events enabled by WCIE and TFIE
fields (See the Section 8.4: Interrupt connection table in the VIC chapter).
15.8.5
SMI_SR register
The SMI_SR (Status register) is a RO register which allows to retrieve the current status of
SMI. The SMI_SR bit assignments are given in Table 243.
Doc ID 018672 Rev 1
309/844
BS_Serial memory interface
RM0082
Table 243. SMI_SR register bit assignments
Bit
Name
Reset
value
Type
Description
[31:16]
Reserved
-
-
Read: undefined.
[15:14]
WM
2’h0
RO
Write mode for selected bank.
This 2 bit field report the write mode (Section 15.5.2) status
for the four supported memory banks. Each bit is associated
to a single bank (specifically the LSB, bit [12], refers to
Bank0). A bit is set in case related bank is in write mode,
that is, when a write enable command – opcode 8’h06 – is
sent to the relevant memory bank. Note: The WM field is not
cleared by instructions sent in software mode.
[13:12]
-
-
-
Not Used.
RO
Error flag 1: forbidden access.
This bit is used to issue error flags concerning access to
external memory. Specifically, if set ERF1 marks forbidden
access to memory, that is: read/write access requested on
disabled bank, read/write access requested in software
mode, or read requests in write burst mode (bit WBM set in
SMI_CR1 register, Section 15.8.3).
RO
Error flag 2: forbidden Write request.
This bit is used to issue error flags concerning access to
external memory. Specifically, if set ERF2 marks specific
forbidden write request, that is: write requests when out of
write mode (bit WM cleared in this register for relevant
bank), size changed between two consecutive write
requests, or address is not incremented. Note: Setting
either ERF1 or ERF2, an ERROR response is sent back to
AHB master on HRESP.
RO
Write complete flag.
This bit is set in case of write completion, that is when the
WIP bit of SMSR is set to 1‘b0 (stating the end of
programming). After a write instruction, a read status
register command (opcode 8’h05) is performed by
hardware.
[11]
[10]
[09]
310/844
ERF1
ERF2
WCF
1’h0
1’h0
1’h0
Doc ID 018672 Rev 1
RM0082
BS_Serial memory interface
Table 243. SMI_SR register bit assignments (continued)
Bit
[08]
[07:00]
15.8.6
Name
TFF
Reset
value
1’h0
SMSR
8’h0
Type
Description
RO
Transfer finished flag.
This bit is set when transfer with external memory is
completed, that is after REC_LENGTH and TRA_LENGTH
bytes (set in SMI_CR2 register, Section 15.8.4) have been
received and transmitted, respectively. Besides, TFF is set
when either the read status register (bit RSR in SMI_CR2)
or the write enable (bit WEN in SMI_CR2) commands are
finished.
RO
Memory device status register.
This 8 bit field is used to store a copy of the external
memory status register. This field is updated in 2 distinct
ways: at first, when the RSR bit in SMI_CR2 register is set
(SMSR is updated after the RSR sequence), and after a
write request to a memory bank (SMSR is updated until the
write cycle is finished, that is when bit [0] of this field is
cleared).
Note: This field is refreshed every 8 SMI_CLK periods.
SMI_TR register
The SMI_TR is the transmit register which is used by SMI to send either data or commands
to external serial memory. In particular, SMI_TR is a 8 bit barrel shifter, where byte0 is sent
first and then 8 bits are shifted before sending byte1 and so on. The SMI_TR bit
assignments are given in Table 244.
This register can be written in software mode only (bit SW set in SMI_CR1 register,
Section 15.8.3), and when actual transfer is not yet started (bit SEND cleared in SMI_CR2
register, Section 15.8.4).
Note:
The SMI_TR is also used in hardware mode, but its content is not kept entering in this
mode.
Table 244. SMI_TR register bit assignments
Bit
Name
Reset value
[31:24]
Byte3
8’h00
[23:16]
Byte2
8’h00
[15:08]
Byte1
8’h00
[07:00]
Byte0
8’h00
Description
Transmit register (8 bit barrel shifter).
15.8.7
SMI_RR register
The SMI_RR is the receive register which is used by SMI to receive data from external serial
memory. Received bytes from external memory are first placed in byte0, then in other next
fields of SMI_RR until byte3. The SMI_RR bit assignments are given in Table 245.
Doc ID 018672 Rev 1
311/844
BS_Serial memory interface
RM0082
This register must be read in software mode (bit SW set in SMI_CR1 register,
Section 15.8.3) after transfer is finished (bit TFF set in SMI_SR register, Table 243),
otherwise the register content is not valid.
Note:
The SMI_RR is also used in Hardware mode, but its content is not kept entering in this
mode.
Table 245. SMI_RR register bit assignments
Bit
Name
Reset value
[31:24]
Byte3
8’h00
[23:16]
Byte2
8’h00
[15:08]
Byte1
8’h00
[07:00]
Byte0
8’h00
Description
Receive register.
312/844
Doc ID 018672 Rev 1
RM0082
BS_Watchdog timer
16
BS_Watchdog timer
16.1
Overview
Within its basic subsystem, the device provides an ARM watchdog module. It consists of a
32 bit down counter with a programmable time-out interval that has the capability to
generate an interrupt and a reset signal on timing out. The watchdog module is intended to
be used to apply a reset to a system in the event of a software failure.
Main features of the Watchdog module are:
16.2
●
32 bit down counter with a programmable time-out interval.
●
Separate watchdog clock with its clock enable for flexible control of the time-out
interval.
●
Interrupt output generation on time-out.
●
Reset signal generation on time-out, if the interrupt from the previous time-out remains
unserviced by software.
●
Lock register to protect registers from being altered by runaway software.
●
Identification registers that uniquely identify the watchdog module. These can be used
by software to automatically configure itself.
●
An APB slave allowing access to all registers.
Block diagram
Figure 27 shows a simplified block diagram of the watchdog module.
Figure 27. Watchdog module block diagram
Free Running
Counter
AMBA APB Interface
AMBA APB
Signals
ID Registers
Lock Register
Integration Test Register
Load Register Control Register
32-bit down counter
WDOGCLK
Value Register
WDOGCLKEN
Interrupt and
Reset generation
WDOGINT
WDOGRES
WDOGRESn
Raw Interrupt Status Register
Masked Interrupt Status Register
Interrupt Clear Register
Doc ID 018672 Rev 1
313/844
BS_Watchdog timer
RM0082
16.3
Main functions description
16.3.1
AMBA APB interface
The AMBA APB interface block provides an APB slave which allows to accesses to all
registers in the watchdog module.
In particular, the lock register (WdogLock, Section 16.5.9) controls the enabling of write
accesses to all the other registers in order to ensure software cannot unintentionally disable
the watchdog module operation.
16.3.2
Free running counter
The free running counter block contains the 32 bit down counter functionality (including
related registers, Section 16.5.2), and the logic to generate the interrupt and reset signal
outputs.
The counter and the interrupt/reset logic are clocked independently, as detailed in
Section 16.4 on page 314.
16.4
Clock signals
The watchdog module uses two different input clocks:
●
The clock of the APB bus (PCLK signal), which is used to clock the Watchdog module
registers through APB bus.
●
The external WDOGCLK signal which, in conjunction with its clock enable,
WGDOGCLKEN, is used to clock the Watchdog module counter and its associated
interrupt and reset generation logic. In particular, the watchdog counter only
decrements on a rising edge of WDOGCLK when WDOGCLKEN is HIGH.
The following constraints must be observed in the relationship between the two clocks:
●
The rising edge of WDOGCLK must be synchronous and balanced with the rising edge
of PCLK,
●
The WDOGCLK frequency cannot be greater than the PCLK frequency.
From the constraints above and depending on the relationship between WDOGCLK and
WDOGCLKEN, the watchdog module counter is decremented on different ways
summarized in Table 246.
Table 246. Watchdog module counter decremented
Clocks
WDOGCLKEN Behaviour
HIGH
The counter is decremented on every WDOGCLK edge
Pulsed
The counter is decremented on every second
WDOGCLK rising edge
HIGH
The counter is decremented on every WDOGCLK rising
edge
Pulsed
The counter is decremented on every second
WDOGCLK rising edge
WDOGCLK equals PCLK
WDOGCLK less than
PCLK
314/844
Doc ID 018672 Rev 1
RM0082
BS_Watchdog timer
16.5
Programming model
16.5.1
Register map
The watchdog module can be fully configured by programming its 32 bit wide registers
which can be accessed at the base address 0xFC88_0000. Watchdog registers can be
logically arranged in two main groups:
●
control and status registers (listed in Table 247), which allow to control the Watchdog
module configuration and to get its status.
●
identification registers (listed in Table 248), namely eight 8 bit RO registers reporting
watchdog module-specific information (part number, revision number and so on). Refer
to ARM technical documentation for further details.
Table 247. Watchdog control and status registers summary
Name
Offset
Type
Reset value
Description
WdogLoad
0x00
RW
32’hFFFFFFFF Load register
WdogValue
0x04
RO
32’hFFFFFFFF Value register
WdogControl
0x08
RW
32’h0
Control register
WdogIntClr
0x0C
WO
-
Interrupt clear register
WdogRIS
0x10
RO
32’h0
Raw interrupt status register
WdogMIS
0x14
RO
32’h0
Masked interrupt status register
-
0x0018 to 0xBFC -
-
Reserved
WdogLock
0xC00
RW
32’h0
Lock register
-
0xC04 to 0xEFC
-
-
Reserved
-
0xF00
-
-
Reserved (for test purpose only)
-
0xF04
-
-
Reserved (for test purpose only)
-
0xF08-0xFDC
-
-
Reserved
Table 248. Watchdog identification registers summary
Name
Offset
Width Type
Reset value
WdogPeriphID0 0xFE0
8
RO
8’h05
WdogPeriphID1 0xFE4
8
RO
8’h18
WdogPeriphID2 0xFE8
8
RO
8’h14
WdogPeriphID3 0xFEC
8
RO
8’h00
WdogPCellID0
0xFF0
8
RO
8’h0D
WdogPCellID1
0xFF4
8
RO
8’hF0
WdogPCellID2
0xFF8
8
RO
8’h05
WdogPCellID3
0xFFC
8
RO
8’hB1
Description
Peripheral identification registers
Identification registers
Doc ID 018672 Rev 1
315/844
BS_Watchdog timer
RM0082
16.5.2
Register description
16.5.3
WdogLoad register
The WdogLoad is a RW register that contains the value from which the counter is to
decrement. When this register is written to, the counter is immediately restarted from the
new value. The minimum valid value for WdogLoad is 32’h1.
Note:
16.5.4
1
If WdogLoad is set to 32’h0 then an interrupt is generated immediately.
2
The WdogLoad register must be programmed with the desired time-out interval before the
watchdog module is enabled (by setting the INTEN bit of the WdogControl register,
Section 16.5.5).
WdogValue register
The WdogValue is a RO register that gives the current value of the decrementing counter.
16.5.5
WdogControl register
The WdogControl is a RW register which allows the software to control the watchdog
module. The WdogControl register bit assignments are given in Table 249.
Table 249. WdogControl register bit assignments
Bit
Name
Reset value
Description
[31:02]
Reserved
-
Read: undefined. Write: should be zero.
1’h0
Enable watchdog module reset output.
This bit acts as a mask for the reset output of the watchdog
module: it is set to enable the reset, and it is cleared to
disable the reset.
Note: If enabled (RESEN set to 1‘b1), the reset output is
asserted if the interrupt (raised when the counter reaches
zero) is not cleared by software (writing any value to
WdogIntClr register, Section 16.5.6) before the counter next
reaches zero. After reset, the counter stops.
1’h0
Enable the interrupt event.
Setting this bit, the counter and the interrupt are enabled. In
this case, the counter is re-loaded with the WdogLoad
register value and it starts to decrement according to
behaviour detailed in Section 16.4. When the counter
reaches zero an interrupt is generated.
Clearing this bit, the counter and the interrupt are disabled.
[01]
[00]
16.5.6
RESEN
INTEN
WdogIntClr register
A write of any value to the WO WdogIntClr (interrupt clear) register clears the watchdog
module interrupt. Then the counter is re-loaded with the value in the WdogLoad register and
another count down sequence starts.
316/844
Doc ID 018672 Rev 1
RM0082
16.5.7
BS_Watchdog timer
WdogRIS register
The WdogRIS (raw interrupt status) is a RO register indicates the raw interrupt status from
the counter (before masking by WdogControl register). The WdogRIS bit assignments are
given in Table 250.
Table 250. WdogRIS register bit assignments
16.5.8
Bit
Name
Reset value
Description
[31:01]
Reserved
-
Read: undefined.
[00]
WDOGRIS 1’h0
If set, it indicates that an interrupt has been raised by the
Watchdog counter reaching zero.
WdogMIS register
The WdogMIS (masked interrupt status) is a RO register indicates the masked interrupt
status from the counter (after masking by the Wdogcontrol register). The WdogMIS bit
assignments are given in Table 251.
Table 251. WdogMIS register bit assignments
Bit
Name
Reset value
Description
[31:01]
Reserved
-
Read: undefined.
1’h0
Masked interrupt status.
The value of this bit is the logical AND of the raw interrupt
status (WDOGRIS bit of the WdogRIS register) with the
INTEN bit of the WdogControl register.,It is the same value
that is passed to the interrupt output of the Watchdog
module.
[00]
16.5.9
WDOGMIS
WdogLock register
The WdogLock is a RW register allows to enable/disable write-access to all other registers.
This is to prevent software from disabling the Watchdog module operation. The WdogLock
bit assignments are given in Table 252.
Table 252. WdogLock register bit assignments
Bit
Name
Reset value
Description
[31:01]
WDOGLOCK 32’h0
Write access enable.
Writing 32‘h1ACCE551 to this register enables write
access to all other registers. Writing any other value
disables write access to all other registers.
A read from this register returns the lock status rather than
the actual value:
32‘h00000000 = Write access to all others registers is
enabled (not locked).
32‘h00000001 = Write access to all others registers is
disabled (locked).
[00]
Reserved
Read: undefined.
-
Doc ID 018672 Rev 1
317/844
BS_General purpose timers
RM0082
17
BS_General purpose timers
17.1
Overview
SPEAr300 provides three general purpose timers (GPTs) acting as APB slaves (one local
timer in the CPU subsystem and two other timers in the basic subsystem).
Each GPT consists of 2 channels, each one made up of a programmable 16 bit counter and
a dedicated 8 bit timer clock prescaler. The programmable 8 bit prescaler performs a clock
division by 1 up to 256, and different input frequencies can be chosen through SPEAr300
configuration registers (so we can synthesize, for instance, a frequency range from 3.96 Hz
to 48 MHz).
Enabling a GPT (setting the ENABLE bit in TIMER_CONTROL register, Section 17.2.4), its
counter is firstly cleared and then it starts incrementing. When the counter reaches a pre-set
compare value (in TIMER_COMPARE register, Section 17.2.6), two different modes of
operation are available (setting the MODE bit in TIMER_CONTROL register,
Section 17.2.4):
●
Auto-reload mode, an interrupt source is activated, the counter is automatically cleared
and then it restarts incrementing.
●
Single-shot mode, an interrupt source is activated, the counter is stopped and the GPT
is disabled.
●
Capture Mode, which is used for measurement of input timing signals. when a rising
transition occurs at the CPTRx(x=1,2), the actual counter value is stored into the rising
edge capture register and a dedicated interrupt source is activated. In the same way,
when a falling edge transition occurs at the CPTRx (=1,2) actual counter value is
stored into the falling edge capture register and an other interrupt source is also
activated. The processor can read the value stored in the two capture registers and
compute the duration of the rising to falling edge (or vice versa) time interval.
17.2
Programming model
17.2.1
External pin connection
Table 253. External pin connection
318/844
Subsystem
Basic address Signals
Ball
Usage
Note
CPU
0xF000_0000
-
-
Not available
-
Doc ID 018672 Rev 1
RM0082
BS_General purpose timers
Table 253. External pin connection (continued)
Subsystem
Basic address Signals
Ball
TMR_CL
E9
K1
TMR_CL
A10
K2
0xFC80_0000
TMR_CP
C10
TR1
TMR_CP
B11
TR2
Basic
TMR_CL
B10
K3
TMR_CL
A11
K4
0xFCB0_0000
TMR_CP
C11
TR3
TMR_CP
A12
TR4
Usage
Note
Output signal which toggles
TIMER generates an interrupt.
(OUTPUT generated for both
TIMER/CAPTURE MODE)
These Input pins are used to
receive the signals for which
the measurement of timing is
done. (Used only in CAPTURE See PL_GPIO
Sharing
MODE)
Schemes to
verify the
Output signal which toggles
TIMER generates an interrupt. availability
(OUTPUT generated for both
TIMER/CAPTURE MODE)
These Input pins are used to
receive the signals for which
the measurement of timing is
done. (Used only in CAPTURE
MODE)
Figure 28. GPT block diagram
MT_INT1
TIMER_CLK
TMR_CLK1
CLK
RESETn
PADDr[8:2]
PSEL
MT_INT2
PENABLE
PWRITE
PRDATA[15:0]
GPT
TMR_CLK2
PWDATA[15:0]
TMR_CPTR1
TMR_CPTR2
Doc ID 018672 Rev 1
319/844
BS_General purpose timers
RM0082
Table 254. GPT interface signal description
Pin Name
17.2.2
Type
Source/Destination
Description
CLK
In
Clock root
APB system (bus) clock. This clock
times all the bus transfers.
Synchronous logic inside the GPT id
rising edge clock triggered.
RESETn
In
Reset block
Synchronous reset of the GPT, all
internal registers are cleared when this
input is driven low.
PADDR[8:2]
In
APB Bridge
Standard APB address bus.
PSEL
In
APB Bridge
Standard APB psel signal.
PENABLE
In
APB Bridge
Standard APB penable signal.
PWRITE
In
APB Bridge
Standard APB write signal.
PRDATA [15:0]
Out
APB Bridge
Standard APB prdata signal.
PWDATA[15:0]
In
APB Bridge
Standard APB pwdata signal.
TIMER_CLK
In
Clock root
Timer clock (Refer to Bit 11 & 12 in
Table 218: SSPIMSC register bit
assignments).
TMR_CPAT1
In
External Pin
Asynchronous signal provided for the
measurement of timing signals in
Timer1.
TMR_CAPT2
In
External Pin
Asynchronous signal provided for the
measurement of timing signals in
Timer2.
MT_INT1
Out
Interrupt Controller
Active low interrupt to Interrupt Control
block from Timer1.
TMR_CLK
Out
Interrupt Controller
Clock which toggles each time the
MT_INT1 goes active.
MT_INT2
Out
Interrupt Controller
Active low Interrupt to Interrupt Control
block from Timer2.
TMR_CLK
Out
Interrupt Controller
Clock which toggles each time the
MT_INT2 goes active.
Register map
Programming a set of 16 bit wide registers can configure each GPT. The registers of the
three GPTs are mapped in memory by couples, namely:
●
The local timer in the CPU subsystems, which can be accessed at the base address
0xF000_0000.
●
The two timers in the basic subsystem, which can be accessed at the base addresses
0xFC80_0000 and 0xFCB0_0000.
The registers are same for both the couples of GPTs and are listed in Table 255.
Section 17.2.3 describes the registers of a generic GPT.
320/844
Doc ID 018672 Rev 1
RM0082
BS_General purpose timers
Table 255. Couple of GPTs registers summary
Name
Offset
Type
Reset
Value
Description
TIMER_CONTROL1
0x0080
RW
16’h0000
Control register of 1st timer in the
couple (GPT0 or GPT2).
TIMER_STATUS_INT_ACK1 0x0084
RW
16’h0000
Status register of 1st timer.
TIMER_COMPARE1
0x0088
RW
16’hFFFF
Compare register of 1st timer.
TIMER_COUNT1
0x008C RO
16’h0000
Count register of 1st timer.
TIMER_REDG_CAPT1
0x0090
RO
16’h0000
Rising edge capture register of 1st
timer.
TIMER_FEDG_CAPT1
0x0094
RO
16’h0000
Falling edge capture register of 1st
timer.
TIMER_CONTROL2
0x0100
RW
16’h0000
Control register of 2nd timer in the
couple (GPT1 or GPT3).
TIMER_STATUS_INT_ACK2 0x0104
RW
16’h0000
Status register of 2nd timer.
TIMER_COMPARE2
0x0108
RW
16’hFFFF
Compare register of 2nd timer.
TIMER_COUNT2
0x010C RO
16’h0000
Count register of 2nd timer.
TIMER_REDG_CAPT2
0x0110
RO
16’h0000
Rising edge capture register of 2nd
timer.
TIMER_FEDG_CAPT2
0x0114
RO
16’h0000
Falling edge capture register of 2nd
timer.
17.2.3
Register description
17.2.4
Timer_control register
The Timer_Control register bit assignments are given in Table 256.
Table 256. Timer_Control register bit assignments
Bit
Name
Reset value
Description
[15:11]
Reserved
-
Read: undefined. Write: should be zero.
[10]
REDGE_INT
1’h0
If set, it enables interruption on a rising edge capture.
[09]
FEDGE_INT
1’h0
If set, it enables interruption on a falling edge capture.
[08]
MATCH_INT
1’h0
If set, it enables interruption when comparator matches.
2’h0
Capture mode.
This 2 bit field indicates the mode of capture, according to
encoding.
2‘b00 = No capture.
2‘b01 = Capture in rising edge.
2‘b10 = Capture in falling edge.
2‘b11 = Capture in bit edges.
[07:06]
CAPTURE
Doc ID 018672 Rev 1
321/844
BS_General purpose timers
RM0082
Table 256. Timer_Control register bit assignments (continued)
Bit
[05]
Name
ENABLE
Reset value
Description
1’h0
Timer enable.
Setting this bit, the GPT is enabled. Once enabled, an
initialization phase is performed before starting to count,
and capture registers (TIMER_REDG_CAPT and
TIMER_FEDG_CAPT) and counter register
(TIMER_COUNT) are cleared.
Clearing this bit, the GPT is disabled, and capture as well
as counter registers are frozen. After reset the GPT is
disabled and all interrupt sources are masked.
[04]
MODE
1’h0
Operation mode.
This bit allows to select the operation mode of the GPT,
according to encoding.
1‘b0 = Auto-reload mode.
1‘b1 =Single-shot.
[03:00]
PRESCALER
4’h0
Prescaler configuration.
This 4 bit field controls the prescaler configuration,
according to encoding.
Table 257. PRESCALER configuration
Value
Division Scale
Frequency [MHz] Resolution [ns]
Max time [ms]
4‘b0000
1
66.5
15.04
0.971
4‘b0001
2
33.25
30.08
1.971
4‘b0010
4
16.625
60.15
3.942
4‘b0011
8
8.313
120.30
7.884
4‘b0100
16
4.156
240.20
15.768
4‘b0101
32
2.078
481.20
31.538
4‘b0110
64
1.039
962.41
63.071
4‘b0111
128
0.520
1924.81
126.143
4‘b1000
256
0.260
3849.62
252.285
4‘b1001 to
4‘b1111
Not allowed
Not allowed
Not allowed
Not allowed
Note:
This table just illustrates the use of prescaler and its different value on a particular Input
Frequency. The table in this shows the value with 66.5 MHz as Timer clock.Timer Max
period = (65536 xTimer Resolution).
17.2.5
TIMER_STATUS_INT_ACK register
The TIMER_STATUS_INT_ACK (Status and Interrupt Acknowledge Timer) is a RW register
which indicates the raw interrupt sources status, prior to any masking. The
TIMER_STATUS_INT_ACK bit assignments are given in Table 258.
322/844
Doc ID 018672 Rev 1
RM0082
BS_General purpose timers
Table 258. TIMER_STATUS_INT_ACK register bit assignments
Bit
Name
Reset value Description
[15:03]
Reserved
13’h0
Read undefined. Write: should be zero.
1’h0
Rising edge capture.
Reading this bit as 1‘b1, it means that a rising edge has
been detected on the capture input and an interrupt is
raised.
Writing 1‘b1, the interrupt source is cleared, whereas there
is no effect when writing 1‘b0.
1’h0
Falling edge capture.
Reading this bit as 1‘b1, it means that a falling edge has
been detected on the capture input and an interrupt is
raised.
Writing 1‘b1, the interrupt source is cleared, whereas there
is no effect when writing 1‘b0.
1’h0
Match status.
Reading this bit as 1‘b1, it means that a match has occurred
in the compare unit and an interrupt is raised.
Writing 1‘b1, the interrupt source is cleared, whereas there
is no effect when writing 1‘b0.
[02]
[01]
[00]
REDGE
FEDGE
MATCH
Note:
Independently by the timer activity, pending interruptions remain active until they have been
acknowledged (writing a 1‘b1 in the relevant bit) and they are not automatically deactivated
when the timer is disabled or enabled. It is therefore strongly recommended to acknowledge
all active interrupt sources before enabling a timer.
17.2.6
TIMER_COMPARE register
The TIMER_COMPARE is a RW register allows the software to program the timer period.
The TIMER_COMPARE bit assignments are given in Table 259.
Table 259. TIMER_COMPARE register bit assignments
Bit
Name
Reset value
Description
[15:00]
COMPARE_VALUE
16’hFFFF
Compare value.
The COMPARE_VALUE is expressed as an integer number of clock periods (where the
input clock of the timer is the output of the prescaler) ranging from the 16’h0001 minimum
value to the 16’hFFFF maximum value (default, to be intended as free-running timer in autoreload mode). When the counter reaches the COMPARE_VALUE, the GPT behaves
depending on the operation mode (auto-reload or single-shot).
Note:
1
In auto-reload mode, when the counter reaches the COMPARE_VALUE, it is cleared and
restarts:
TIMER_PERIOD = (COMPARE_VALUE - 1) x COUNTER_PERIOD + 2 TIMER_CLOCK
periods.
2
COUNTER_PERIOD is the period of the timer’s input clock (i.e. the prescaler’s output).
Doc ID 018672 Rev 1
323/844
BS_General purpose timers
17.2.7
RM0082
TIMER_COUNT register
The TIMER_COUNT is a RO register indicates the current counter value. The
TIMER_COUNT bit assignments are given in Table 260.
Table 260. TIMER_COUNT register bit assignments
17.2.8
Bit
Name
Reset value Description
[15:00]
CONT_VALUE
16’h0000
Current counter value.
TIMER_REDG_CAPT register
The TIMER_REDG_CAPT (timer rising edge capture) is a RO register which is used to
store the current value of the timer counter when a rising edge occurs. When a capture has
occurred, the REDGE bit is set in the TIMER_STATUS_INT_ACK register (Section 17.2.5)
and the corresponding interrupt, if enabled (REDGE_INT bit set to 1‘b1 in
TIMER_CONTROL register, Section 17.2.4), is raised.
The TIMER_REDG_CAPT bit assignments are given in Table 261.
Table 261. TIMER_REDG_CAPT register bit assignments
Reset
value
Bit
Name
[15:00]
COUNT_VALUE_REDGE 16’h0000
Description
Current value of timer when a rising edge occurs
Note:
In the interrupt service routine, the capture register must be read before the next capture
event occurs: if not the current capture value will be overwritten by the next one.
17.2.9
TIMER_FEDG_CAPT register
The TIMER_FEDG_CAPT (timer falling edge capture) is a RO register which is used to
store the current value of the counter when a falling edge occurs. When a capture has
occurred, the FEDGE bit is set in the TIMER_STATUS_INT_ACK register (Section 17.2.5)
and the corresponding interrupt, if enabled (FEDGE_INT bit set to 1‘b1 in
TIMER_CONTROL register, Section 17.2.4), is raised. The TIMER_FEDG_CAPT bit
assignments are given in Table 262.
Table 262. TIMER_FEDG_CAPT register bit assignments
Note:
324/844
Bit
Name
Reset
value
Description
[15:00]
CONT_VALUE_FEDGE
16’h0000
Current value of timer when a falling edge occurs
In the interrupt service routine, the capture register must be read before the next capture
event occurs: if not the current capture value will be overwritten by the next one.
Doc ID 018672 Rev 1
RM0082
BS_General purpose input/output (GPIO)
18
BS_General purpose input/output (GPIO)
18.1
Overview
Within its Basic Subsystem, SPEAr300 provides a General Purpose Input/Output (GPIO)
providing 6 programmable inputs or outputs. Each input/output can be controlled through an
APB interface.
Main features of the GPIO are:
●
Six individually programmable input/output pins (default to input at reset)
●
2x GPIO dedicated for SPI chip select
●
An APB slave acting as control interface
●
Programmable interrupt generation capability on any number of pins.
●
Bit masking in both read and write operation through address lines.
18.2
Functional description
18.2.1
Block diagram
Figure 29 shows the block diagram of GPIO.
Figure 29. GPIO block diagram
Enable lines
Input/
Output
Multiplexor
Output Data
Input Data
AMBA APB Interface
Interrupt Detection
logic
18.2.2
Signal interfaces
The GPIO directly interfaces with the signals summarized in Table 263: GPIO signal
interface. A functional diagram of these signal interfaces is given in Figure 30.
Table 263. GPIO signal interface
Group
External
(to chip pads)
Signal name
Direction
Size
(bit)
Description
nGPEN
Output
6
Output pad enable signal (active low).
GPOUT
Output
6
Output pad data signal driver.
GPIN
Input
6
Input data from chip pad.
Doc ID 018672 Rev 1
325/844
BS_General purpose input/output (GPIO)
RM0082
Table 263. GPIO signal interface (continued)
Group
Interrupt
(on-chip)
APB Slave
Signal name
Direction
Size
(bit)
Description
GPIOMIS
Output
6
Masked interrupt signals, to interrupt
controller.
GPIOINTR
Output
1
Combined OR version of GPIOMIS, to
interrupt controller.
-
Input/Output -
See AMBA specification.
AMBA APB Bus
Figure 30. GPIO signal interfaces diagram
SPI CS Selector
APB Slave
GPIO
External(To Chip PAD)
Interrupt (On chip)
18.3
Main functions description
18.3.1
APB slave interface
The APB slave interface block allows to connect the GPIO to the AMBA APB bus.
In particular, the APB Slave Interface properly decodes read and write command on APB
bus providing access to GPIO internal registers (data, data direction, mode control and
interrupt). Moreover, these registers are memory-mapped in the APB Slave Interface.
18.3.2
Interrupt detection logic
The interrupt detection logic is the GPIO block which allow to generate mask-programmable
interrupts based on either the signal level or the transitional value (edge) of any of GPIO
lines.
As depicted in Figure 29, this block interfaces with both the interrupt control registers
(Table 266) hosted by the APB slave and the input signals from pad (GPIN[5:0]).
Depending on registers configuration (see Section 18.4.2: Control interrupt generation for
details) and actual input signals features, a GPIO interrupt signal (GPIOINTR) is generated
by the Interrupt Detection Logic block as the OR combination of all the GPIO masked
interrupt lines.
The resulting combined GPIOINTR signal can be then used to indicate to an external
interrupt controller that an interrupt occurred in one or more of the GPIO lines. Additional
output signals (GPIOMIS[5:0]) are also generated by the interrupt detection logic block,
reflecting the status of each single masked interrupt lines. Provisional of individual outputs
as well as combined interrupt output allows to use either a global interrupt service routine
(trapping the GPIOINTR signal) or modular device drivers (looking at GPIOMIS[5:0]) to
handle GPIO interrupts.
326/844
Doc ID 018672 Rev 1
RM0082
18.3.3
BS_General purpose input/output (GPIO)
Mode control
Each GPIO line can be controlled through APB interface.
The data direction is controlled by the data direction register (GPIODIR, Section 18.5.3).
Data writing and reading are performed through APB interface, according to operation
detailed in Section 18.4.
18.4
How to
18.4.1
Read from and write to input/output lines
So that independent software drivers can set their GPIO bits without affecting any other pins
in a single write operation, the APB address bus (PADDR) is used as a mask on read/write
operations.
The GPIO data register (GPIODATA) effectively covers 64 locations in the address space,
that is the same register appears at 64 different locations (with offset ranging from 0x00 to
0xFC with respect to base address). To access these locations, the 6 bit subset of the APB
address bus is used, according to the following rules:
18.4.2
●
During a write operation to GPIODATA register: a data bit of the GPIODATA register is
altered only if the associated address bit in PADDR[9:2] is set, otherwise it is left
unchanged.
●
During a read operation from GPIODATA register: a data bit of the GPIODATA register
is read only if the associated address bit in PADDR[9:2] is set, otherwise a zero is
returned regardless of its state.
Control interrupt generation
The GPIO interrupt generation capability is fully controlled by a set of seven registers
located in the APB slave interface.
These registers allows to select, for each single pin, the interrupt source (the edge or the
level of signal on that pin), the event (rising/falling edge or high/low signal level) which
triggers the interrupt and any interrupt masking.
Figure 31 shows how the three main interrupt control registers (namely GPIOIS, GPIOIBE
and GPIOIEV) should be set to select an interrupt source event for a single pin. Please refer
to Section 18.5.5. and following for detailed description of these registers.
Doc ID 018672 Rev 1
327/844
BS_General purpose input/output (GPIO)
RM0082
Figure 31. GPIO interrupt triggering logic
Start
GPIOIE
Masked?
No
Interrupt
masked
Yes
GPIOIS
Edge/level?
No
Yes
Yes
GPIOIBE
both edges?
No
Yes
Note:
No
GPIOIEV
Rising/falling?
Yes
GPIOIEV
HIGH/LOW?
No
1
For level detection case, it is assumed that an external source holds the level constant for
the interrupt to be recognized by the processor.
2
Interrupt control registers must be programmed when corresponding interrupts are not
enabled, in order to avoid spurious interrupts to be generated.
18.5
Programming model
18.5.1
Register map
The GPIO can be fully configured by programming its 6 bit wide registers which can be
accessed through the APB slave interface at the base address 0xFC98_0000.
GPIO registers can be logically arranged:
328/844
●
Data direction register (listed in Table 264), for pins configuration as input or output
●
Data register (listed in Table 265), used to read value on those GPIO lines configured
as inputs, or to write a value on those GPIO lines configured as outputs.
Doc ID 018672 Rev 1
RM0082
Note:
BS_General purpose input/output (GPIO)
The same data register appears at 64 locations in Memory Map (with offset ranging from
0x00 to 0xFC), allowing to use the address bus [9:2] as an additional bit masking feature.
●
Interrupt Control Registers (listed in Table 266), for interrupt generation
configuration.
●
Identification Registers (listed in Table 267.), containing peripheral & BIOS
information
Table 264. GPIO data direction register
Name
Offset
Type
Width(bit)
Reset Value
Description
GPIODIR
0x400
RW
6
6’h0
Data Direction
Table 265. GPIO data register
Name
Offset
Type
Width(bit)
Reset Value
Description
GPIODATA
0x000(1)
RW
8
8’h0
Data
1. For the first data register, but up to 0xFC for the 64th (See Note above).
Table 266. GPIO interrupt control registers summary
Name
Offset
Type
Width(bit)
Reset Value
Description
GPIOIS
0x404
RW
6
6’h0
Interrupt Sense.
GPIOIBE
0x408
RW
6
6’h0
Interrupt Both Edges.
GPIOIEV
0x40C
RW
6
6’h0
Interrupt Event.
GPIOIE
0x410
RW
6
6’h0
Interrupt Mask.
GPIORIS
0x414
RO
6
6’h0
Raw/Interrupt Status
GPIOMIS
0x418
RO
6
6’h0
Masked Interrupt Status
GPIOIC
0x41C
WO
6
6’h0
Interrupt Clear.
Table 267. GPIO identification registers summary
Name
Offset
Type
Width
(bit)
Resetva
Description
lue
GPIOPeriphID0
0xFE0
RO
8
8’h61
Peripheral identification register (bits 7:0).
GPIOPeriphID1
0xFE4
RO
8
8’h10
Peripheral identification register (bits 15:8).
GPIOPeriphID2
0xFE8
RO
8
8’h04
Peripheral identification register (bits
23:16).
GPIOPeriphID3
0xFEC
RO
8
8’h00
Peripheral identification register (bits
31:24).
GPIOPCellID0
0xFF0
RO
8
8’h0D
ID Register bits (7:0)
GPIOCellID1
0xFF4
RO
8
8’hF0
ID Register bits (15:8)
GPIOCellID2
0xFF8
RO
8
8’h05
ID Register bits (23:16)
GPIOCellID3
0xFFC
RO
8
8’hB1
ID Register bits (31:24)
Doc ID 018672 Rev 1
329/844
BS_General purpose input/output (GPIO)
18.5.2
Register description
18.5.3
GPIODIR register
RM0082
The GPIODIR is the data direction RW register which allows to configure each pin as either
an input or an output. The GPIODIR bit assignments are given in Table 268.
Table 268. GPIODIR register bit assignments
Bit
[05:00]
Name
GPIODIR
Reset
value
Description
6’h0
Each bit is associated to a pin.
If a bit is set, the relevant pin is configured to be an
output.
Clearing a bit configures the relevant pin to be input
(default).
Note:
GPIO 6 & GPIO 7 are dedicated for SPI chipselect & can be configured in O/P mode only.
18.5.4
GPIODATA register
The GPIODATA is the data RW register which allows to read from and write to GPIO pins
configured as input or output, respectively, when GPIO is in software mode. The GPIODATA
bit assignments are given in Table 269.
In software mode, the GPIODATA content is transferred to the pins which have been
configured as output through the GPIODIR register.
Table 269. GPIODATA register bit assignments
18.5.5
Bit
Name
Reset
value
Description
[07:00]
GPIODATA
8’h0
Input/output data.
GPIOIS register
The GPIOIS (Interrupt Sense) is a RW register which allows configuring each pin to detect
either a level or an edge for interrupt triggering. The GPIOIS bit assignments are given in
Table 270.
Table 270. GPIOIS register bit assignments
Bit
[05:00]
330/844
Name
GPIOIS
Reset
value
Description
6’h0
Each bit is associated to a pin.
If a bit is set, level on the relevant pin is detected.
Clearing a bit, edge on the relevant pin is detected
(default).
Doc ID 018672 Rev 1
RM0082
18.5.6
BS_General purpose input/output (GPIO)
GPIOIBE register
The GPIOIBE (Interrupt Both Edges) is a RW register which allows to configure each pin to
detect both rising and falling edges for interrupt triggering, in case edge detection for that pin
is enabled (clearing relevant bit in GPIOIS register). The GPIOIBE bit assignments are given
in Table 271.
Table 271. GPIOIBE register bit assignments
Bit
[05:00]
18.5.7
Name
GPIOIBE
Reset
value
Description
6’h0
Each bit is associated to a pin.
If a bit is set, both edges on the relevant pin trigger an
interrupt, regardless of GPIOIEV setting
(Section 18.5.7).
Clearing a bit, interrupt generation event is controlled
by the GPIOIEV register (default). Single edge is
determined by the corresponding bit in that register.
GPIOIEV register
The GPIOIEV (Interrupt Event) is a RW register which allows to select for each pin the
interrupt triggering event (rising/falling edge, high/low level), depending on GPIOIS register
setting (Section 18.5.5). The GPIOIEV bit assignments are given in Table 272.
Table 272. GPIOIEV register bit assignments
Bit
[05:00]
18.5.8
Name
GPIOIEV
Reset
value
Description
6’h0
Each bit is associated to a pin.
If a bit is set, rising edge or high level on the relevant
pin triggers the interrupt.
Clearing a bit, falling edge or low level on that pin
triggers the interrupt (default).
GPIOIE register
The GPIOIE (interrupt mask) is a RW register which allows to enable/disable interrupt
triggering for each pin. The GPIOIE bit assignments are given in Table 273.
Table 273. GPIOIE register bit assignments
Bit
[05:00]
Name
GPIOIE
Reset
value
Description
6’h0
Each bit is associated to a pin.
If a bit is set, the relevant pin is allowed to trigger
their interrupts (pin not masked).
Clearing a bit, the relevant pin is masked and
interrupt triggering is disabled for that pin (default).
Doc ID 018672 Rev 1
331/844
BS_General purpose input/output (GPIO)
18.5.9
RM0082
GPIORIS register
The GPIORIS (Raw Interrupt Status) is a RO register which reflects the raw status (prior to
masking through GPIOIE register) of interrupts trigger conditions on each pin. The GPIORIS
bit assignments are given in Table 274.
Table 274. GPIORIS register bit assignments
Bit
[05:00]
18.5.10
Name
GPIORIS
Reset
value
Description
6’h0
Each bit is associated to a pin.
If a bit is set, it indicates that all requirements for
interrupt triggering have been met on the relevant
pin.
If a bit is cleared, it means that requirements have
not been met on the relevant pin and an interrupt
has not been initiated (default).
GPIOMIS register
The GPIOMIS (Masked Interrupt Status) is a RO register which reflects the status of
interrupts trigger conditions on each pin after masking (through GPIOIE register). The
GPIOMIS bit assignments are given in Table 275.
The content of this register is available externally through the GPIOMIS[7:0] signals.
Table 275. GPIOMIS register bit assignments
Bit
[05:00]
18.5.11
Name
GPIOMIS
Reset
value
Description
6’h
Each bit is associated to a pin.
If a bit is set, it indicates that the relevant pin is
triggering an interrupt.
If a bit is cleared, it means that on that pin either no
interrupt has been generated or the interrupt is
masked by GPIOIE (default).
GPIOIC register
The GPIOIC (Interrupt Clear) is a WO register which allows to clear the interrupt edge
detection. The GPIOIC bit assignments are given in Table 276.
Table 276. GPIOIC register bit assignments
Bit
[05:00]
332/844
Name
GPIOIC
Reset
value
Description
6’h0
Each bit is associated to a pin.
Setting a bit, the corresponding interrupt request is
cleared.
Clearing a bit has no effect (default).
Doc ID 018672 Rev 1
RM0082
BS_DMA controller
19
BS_DMA controller
19.1
Overview
Within its basic subsystem, SPEAr300 provides an DMA controller (DMAC) able to service
up to 8 independent DMA channels for sequential data transfers between single source and
destination (i.e., memory-to-memory, memory-to-peripheral, peripheral-to-memory, and
peripheral-to-peripheral).
Main features of the DMAC are:
●
Each DMA channel can support a unidirectional transfer, with internal 16-words FIFO
per channel.
●
16 peripheral DMA request lines, where each peripheral connected to the DMAC can
assert either a single DMA request or a Burst DMA request (with programmable size to
increase data transfer effectiveness).
●
Hardware priority (0 the highest to 7 the lowest) for each DMA channel to manage
requests from more than 1 channel at the same time.
●
Scatter or gather DMA support through the use of linked lists.
●
An AHB slave acting as programming interface to access to DMA control registers:
●
Two AHB masters for data transfer following a DMA request.
●
32 bit AHB master bus width, supporting 8, 16, and 32 bit wide transactions.
●
Support both big-endian and little-endian (Little endian default on DMAC reset).
●
Separate and combined DMA error and DMA count interrupt requests, with three
interrupt request signals (DMACINTTC, DMACINTERR and DMACINTR).
●
Interrupt masking and raw interrupt status (prior to masking).
Doc ID 018672 Rev 1
333/844
BS_DMA controller
19.2
RM0082
Block diagram
Figure 32. DMAC block diagram
CHANNEL 0
A
R
B
I
T
E
R
AHB
MAST
I/F
CHANNEL 1
A
R
B
I
T
E
R
AHB AHB MASTER 2
MAST
I/F
DMACCLR[15:0]
DMACTC[15:0]
DMACSREQ[15:0]
DMACBREQ[15:0]
DMACLSREQ[15:0]
DMACLBREQ[15:0]
AHB
BUS
DMA
REQUEST
AND
RESPONSE
BLOCK
AHB MASTER
1
AHB SLAVE
INTERFACE
CHANNEL 7
19.3
Signal interfaces
The DMAC directly interfaces with the signals summarized in Table 277. A functional
diagram of these signal interfaces is given in Figure 33.
Figure 33. DMAC signal interface diagram
AMBA AHB BUS
AHB master #1
334/844
DMA response
AHB master #2
DMAC
AHB salve
Doc ID 018672 Rev 1
DMA request
Interrupt request
(to interrupt controller)
RM0082
BS_DMA controller
Table 277. DMAC signal interface
Group
Signal name
Direction
Size
(bit)
Description
DMACBREQ
Input
16
DMA burst transfer request.
DMACLBREQ
Input
16
DMA last burst transfer request.
DMACSREQ
Input
16
DMA single transfer request.
DMACLSREQ
Input
16
DMA last single transfer request
DMACCLR
Output
16
DMA request clear.
DMACTC
Output
16
DMA terminal count (transaction
complete).
DMACINTERR
Output
1
DMA error interrupt request.
DMACINTTC
Output
1
DMA terminal count interrupt request.
DMACINTR
Output
1
DMA interrupt request. This signal
combines the DMACINTERR and
DMACINTTC requests.
DMA request
DMA response
Interrupt
request
AHB Master #1 -
Input/Output -
See AMBA specification.
AHB Master #2 -
Input/Output -
See AMBA specification.
AHB Slave
Input/Output -
See AMBA specification.
-
19.4
Main functions description
19.4.1
AHB slave interface
The AHB slave interface block allows to connect the DMAC to the AMBA AHB bus.
In particular, the AHB slave interface properly decodes read and write command on AHB
bus providing access to DMAC memory-mapped registers for configuration purposes.
It is worth noticing that the AHB slave and the two AHB masters use the same clock, HCLK,
that is they are all synchronous.
19.4.2
AHB master interfaces
The DMAC contains two full independent AHB masters for data transfer. This feature allows,
for example, the DMAC to transfer data directly from the memory connected to AHB port #1
to any AHB peripheral connected to AHB port #2. Besides, it enables transactions between
the DMAC and any APB peripheral to occur independently of transactions on AHB bus 1.
Each AHB master is capable of dealing with all types of AHB transactions, including:
●
Split, retry and error responses from AHB slaves. If a peripheral performs a split or
retry, the DMAC stalls and waits until the transaction can complete.
●
Locked transfers for source and destination of each stream.
●
Setting of protection bits for transfers on each stream.
The two AHB masters are connected to buses of the same width (the default is a 32 bit bus).
However, source and destination transfers can be with different widths, and can be the same
Doc ID 018672 Rev 1
335/844
BS_DMA controller
RM0082
width or narrower than the physical bus width. In this case, the DMAC packs or unpacks
data as appropriate.
Note:
The DMAC uses HSIZE1 or HSIZE2 to indicate the width of a transfer, and if this fails to
match the width expected by the peripheral, then the peripheral can assert an error on
HRESP1 or HRESP2, respectively.
19.4.3
DMA interface
The DMA interface provides the set of signals (listed in Table 277) to be used by a generic
peripheral. Over this interface the connected peripheral is allowed to request a data transfer
(through DMA request signals), and DMA is able to reply to peripheral both acknowledging
the request and stating whether the data transfer has been completed (through DMA
response signals).
As stated in Table 277, each DMA request/response signal is 16 bit wide, allowing then
DMAC connectivity with up to 16 peripherals.
Note:
Some peripherals do not use all the signals provided by the DMA interface. In this case,
response signals that are not required can be left unconnected, and request signals that are
not required can be tied to low.
Because of DMA interface, the DMAC enables four different data transfer types:
●
Memory-to-memory
●
Memory-to-peripheral
●
Peripheral-to-memory
●
Peripheral-to-peripheral,
where each transfer can have either the peripheral or the DMAC as the flow controller,
resulting then in eight different scenarios (see FlowCntrl field in Table 300: DMAC
Configuration register bit assignments).
19.5
Scatter/gather
As mentioned before, the DMAC provides for scatter/gather DMA through the use of a series
of linked lists, allowing then source and destination of any DMA transfer to occupy noncontiguous areas in memory.
Each item of a linked list, referred to as Linked List Item (LLI), controls the transfer of one
block of data (the packet) over a DMA channel, and then optionally loads another LLI to
continue the DMA operation (in case of more than a packet transfer), or stops the DMA
stream.
An LLI consists of four words:
●
the source address of the data to be transferred over a DMA channel,
●
the destination address of the data to be transferred over a DMA channel,
●
the pointer to next LLI (set to 0 in case current LLI is the last in its linked list),
●
a control word containing information about the corresponding DMA channel.
The first LLI of each linked list is programmed into the DMAC using the DMA channel
registers, namely DMACCnSrcAddr, DMACCnDestAddr, DMACCnLLI and DMACCnControl.
Then, these registers are updated as soon as a complete packet has been transferred over
the DMA channel by following the linked list.
336/844
Doc ID 018672 Rev 1
RM0082
BS_DMA controller
Note:
The DMAC configuration is not part of the LLI description, but allows to configure the
relevant DMA channel.
19.5.1
How to program the DMAC for scatter/gather DMA
19.6
1.
Write to memory all the LLIs for the complete DMA transfer (source address,
destination address, pointer to next LLI and control word for each LLI).
2.
Choose a free DMA channel with the required priority (0 the highest to 7 the lowest).
3.
Write the first LLI, previously written to memory (step 1), to the relevant DMA channel
in the DMAC, setting the corresponding registers (DMACCnSrcAddr,
DMACCnDestAddr, DMACCnLLI and DMACCnControl).
4.
Write the DMA channel configuration information to the DMAC Configuration and set its
channel enable bit (E, bit [0]).
5.
An interrupt can be generated at the end of each LLI setting the terminal count bit (I, bit
[31]) in the DMACCnControl register (Section 19.7.20). Then, the interrupt request
must be serviced and the relevant bit of the IntTCClear field in the DMACIntTCClear
register (Section 19.7.5) must be set to clear the interrupt.
Interrupt requests
The DMAC allows to generate an interrupt to the ARM processor:
●
In case of a DMA error (assertion of an error response on the AHB during data
transfer),
●
At the end of DMA transfer (terminal count reached 0).
The corresponding interrupt request signals are listed in Table 277. The combined
DMACINTR signal (generated as an OR function of the individual request signals,
DMACINTERR and DMACINTTC) can be useful in low performance system with a few
interrupt controller request inputs. As depicted in Figure 34, in this case only the
DMACINTR request signal coming from DMAC is directly connected to the interrupt
controller, but both the DMACIntErrStatus (Section 19.7.6) and the DMACIntTCStatus
(Section 19.7.4) registers, in conjunction with the DMACIntStatus (Section 19.7.3) register,
must be read to find the actual source of the interrupt.
Figure 34. DMAC-to-interrupt controller connection
DMAC
DMACINTR
Interrupt
controller
nIRQ
nFIQ
ARM
Processor
In any case the error and terminal count interrupts can be masked at the DMAC-level by
programming the relevant bits (IE and ITC, respectively) on the relevant
DMACCnConfiguration (Section 19.7.15) channel register. In order to get interrupt status
prior to masking, the DMACRawIntErrStatus (Section 19.7.9) and the
DMACRawIntTCStatus (Section 19.7.8) registers are provided by the DMAC.
Doc ID 018672 Rev 1
337/844
BS_DMA controller
19.6.1
RM0082
How to operate single combined DMACINTR interrupt request signal
1.
Wait until the combined interrupt request from the DMAC (DMACINTR) goes active.
2.
Read the interrupt controller status register and determine whether the source of the
request was the DMAC.
3.
Read the DMACIntStatus register (Section 19.7.4) to determine the DMA channel that
generated the interrupt. If more than one request is active (that is, more than one bit
are set in the IntStatus field), it is recommended to check the highest priority channels
first (0, 1, 2 and so on).
4.
Read the DMACIntTCStatus register (Section 19.7.4) to determine whether the
interrupt was generated because of the end of the transfer or because an error
occurred. If the bit corresponding to the DMA channel (from step #3) in the field
IntTCStatus is set, the data transfer has been completed? step #6.
5.
Read the DMACIntErrStatus register (Section 19.7.7) to determine whether the
interrupt was generated because of the end of the transfer or because an error
occurred. If the bit corresponding to the DMA channel (from step #3) in the field
IntErrorStatus is set, an error occurred › step #6
6.
Set the relevant bit in the DMACIntTCClear register (Section 19.7.5) or in the
DMACIntErrClr register (Section 19.7.7), respectively, to clear the interrupt request.
19.7
Programming model
19.7.1
Register map
The DMAC can be fully configured by programming its 32 bit wide registers which can be
accessed through the AHB slave interface at the base address 0xFC40_0000.
DMAC registers can be logically arranged in four main groups:
●
Global registers, listed in Table 278, for DMAC-level configuration,
●
Channel registers for programming a single DMA channel. Each DMA channel is
associated to these five registers, listed in Table 279 where n ranges from 0 to 7 being
8 the number of DMA channels supported by the DMAC,
●
Peripheral identification registers, listed in Table 280,
●
Cell identification registers, listed in Table 281.
Table 278. DMAC global registers summary
338/844
Name
Offset
Type
Reset
Value
Description
DMACIntStatus
0x000
RO
32’h0
Interrupt status.
DMACIntTCStatus
0x004
RO
32’h0
Interrupt terminal count status.
DMACIntTCClear
0x008
WO
32’h0
Interrupt terminal count clear.
DMACIntErrorStatus
0x00C
RO
32’h0
Interrupt error status.
DMACIntErrClr
0x010
WO
32’h0
Interrupt error clear.
DMACRawIntTCStatus
0x014
RO
32’h0
Raw interrupt terminal count status.
DMACRawIntErrorStatus
0x018
RO
32’h0
Raw interrupt error status.
Doc ID 018672 Rev 1
RM0082
BS_DMA controller
Table 278. DMAC global registers summary (continued)
Name
Offset
Type
Reset
Value
Description
DMACEnbldChns
0x01C
RO
32’h0
Enabled channel.
DMACSoftBReq
0x020
RW
32’h0
Software burst request.
DMACSoftSReq
0x024
RW
32’h0
Software single request.
DMACSoftLBReq
0x028
RW
32’h0
Software last burst request.
DMACSoftLSReq
0x02C
RW
32’h0
Software last single request.
DMACConfiguration
0x030
RW
32’h0
DMAC configuration
DMACSync
0x034
RW
32’h0
Synchronization.
Table 279. DMAC channel registers summary
Name
Offset
Type
Reset
Value
Description
DMACCnSrcAddr
0x100 + (n · 0x020)
RW
32’h0
Channel source address.
DMACCnDestAddr
0x104 + (n · 0x020)
RW
32’h0
Channel destination address.
DMACCnLLI
0x108 + (n · 0x020)
RW
32’h0
Channel linked list item.
DMACCnControl
0x10C + (n · 0x020)
RW
32’h0
Channel control.
DMACCnConfiguration
0x110 + (n · 0x020)
RW
32’h0
Channel configuration.
Table 280. DMAC peripheral registers summary
Name
Offset
Type
Description
DMACPeriphID0
0xFE0
RO
See Section 19.7.22.
DMACPeriphID1
0xFE4
RO
See Section 19.7.22.
DMACPeriphID2
0xFE8
RO
See Section 19.7.22.
DMACPeriphID3
0xFEC
RO
See Section 19.7.22.
Table 281. DMAC cell identification registers summary
Name
Offset
Type
Description
DMACPCellID0
0xFF0
RO
See Section 19.7.23.
DMACPCellID1
0xFF4
RO
See Section 19.7.23.
DMACPCellID2
0xFF8
RO
See Section 19.7.23.
DMACPCellID3
0xFFC
RO
See Section 19.7.23.
Doc ID 018672 Rev 1
339/844
BS_DMA controller
RM0082
19.7.2
Register description
19.7.3
DMACIntStatus register
The DMACIntStatus (interrupt status) is a RO register which shows the status of the
interrupts after masking. The DMACIntStatus bit assignments are given in Table 282.
Table 282. DMACIntStatus register bit assignments
Bit
Name
Reset value Description
[31:08]
Reserved
-
Read: undefined.
8’h00
Status of DMA interrupts after masking.
Each bit is associated to a DMA channel. If a bit is set, it
means that an interrupt request is active for the relevant
DMA channel.
[07:00]
19.7.4
IntStatus
DMACIntTCStatus register
The DMACIntTCStatus (interrupt terminal count status) is a RO register which shows the
status of the terminal count after masking. The DMACIntTCStatus bit assignments are given
in Table 283.
Note:
This register must be used in conjunction with the DMACIntStatus register if the combined
interrupt request, DMACINTR, is used. If the DMACINTTC interrupt request is used, reading
this register only is enough to determine source of the interrupt request.
Table 283. DMACIntTCStatus register bit assignments
Bit
Name
Reset value Description
[31:08]
Reserved
-
Read: undefined.
8’h00
Interrupt terminal count request status.
Each bit is associated to a DMA channel. If a bit is set, it
means that an interrupt terminal count request is active for
the relevant DMA channel.
[07:00]
19.7.5
IntTCStatus
DMACIntTCClear register
The DMACIntTCClear (interrupt terminal count clear) is a WO register which allow to clear a
terminal count interrupt request. The DMACIntTCClear bit assignments are given in
Table 284.
340/844
Doc ID 018672 Rev 1
RM0082
BS_DMA controller
Table 284. DMACIntTCClear register bit assignments
Bit
Name
Reset value Description
[31:08]
Reserved
-
[07:00]
19.7.6
Write as zero.
Terminal count request clear.
Each bit is associated to a DMA channel. When writing to
this register, each bit that is set causes the corresponding bit
in the DMACIntTCStatus register to be cleared. In contrast,
bits that are not set have no effect on the corresponding bit
in the DMACIntTCStatus register.
IntTCClear 8’h00
DMACIntErrorStatus register
The DMACIntErrorStatus (interrupt error status) is a RO register which shows the status of
the error request after masking. The DMACIntErrorStatus bit assignments are given in
Table 285.
Note:
This register must be used in conjunction with the DMACIntStatus register if the combined
interrupt request, DMACINTR, is used. If the DMACINTERR interrupt request is used,
reading this register only is enough to determine source of the interrupt request.
Table 285. DMA ClntErrorStatus register bit assignments
Bit
Name
Reset
Value
Description
[31:08]
Reserved
-
Read: undefined.
8’h00
Interrupt error status.
Each bit is associated to a DMA channel. If a bit is set, it
means that an interrupt error request is active for the
relevant DMA channel.
[07:00]
19.7.7
IntErrorStatus
DMACIntErrClr register
The DMACIntErrClr (interrupt error clear) is a WO register which allow to clear an error
interrupt request. The DMACIntErrClr bit assignments are given in Table 286.
Table 286. DMACIntErrClr register bit assignments
Bit
Name
Reset value
Description
[31:08]
Reserved
-
Write as zero.
8’h00
Interrupt error request clear.
Each bit is associated to a DMA channel. When writing to
this register, each bit that is set causes the corresponding bit
in the DMACIntErrorStatus register to be cleared. In
contrast, bits that are not set have no effect on the
corresponding bit in the DMACIntErrorStatus register.
[07:00]
IntErrClr
Doc ID 018672 Rev 1
341/844
BS_DMA controller
19.7.8
RM0082
DMACRawIntTCStatus register
The DMACRawIntTCStatus (raw interrupt terminal count status) is a RO register which
indicates the DMA channels that are requesting a transfer complete, terminal count
interrupt, prior to masking. The DMACRawIntTCStatus bit assignments are given in
Table 287.
Table 287. DMACRawIntTCStatus register bit assignments
Bit
Name
Reset value Description
[31:08]
Reserved
-
Read: undefined.
8’h00
Status of the terminal count interrupt prior to masking.
Each bit is associated to a DMA channel. If a bit is set,
it means that a terminal count interrupt request is
active prior to masking for the relevant DMA channel.
[07:00]
19.7.9
RawIntTCStatus
DMACRawIntErrorStatus register
The DMACRawIntErrorStatus (raw interrupt error status) is a RO register which indicates
the DMA channels that are requesting an errror interrupt prior to masking. The
DMACRawIntErrorStatus bit assignments are given in Table 288.
Table 288. DMACRawIntErrorStatus register bit assignments
Bit
Name
Reset value
Description
[31:08]
Reserved
-
Read: undefined.
[07:00]
19.7.10
RawIntErrorStatus 8’h00
Status of the error interrupt prior to masking.
Each bit is associated to a DMA channel. If a bit is
set, it means that an error interrupt request is active
prior to masking for the relevant DMA channel.
DMACEnbldChns register
The DMACEnbldChns (enabled channel) is a RO register which indicates the DMA
channels that are enabled, as indicated by the Enable bit (E) in the DMACCnConfiguration
register (Section 19.7.15). The DMACEnbldChns bit assignments are given in Table 289.
Table 289. DMACEnbldChns register bit assignments
Bit
Name
Reset value
Description
[31:08]
Reserved
-
Read: undefined.
[07:00]
342/844
EnabledChannels 8’h00
Channel enable status.
Each bit is associated to a DMA channel. If a bit is
set, it means that corresponding DMA channel is
enabled. A bit is cleared on completion of the DMA
transfer.
Doc ID 018672 Rev 1
RM0082
19.7.11
BS_DMA controller
DMACSoftBReq register
The DMACSoftBReq (software burst request) is a RW register which enables DMA burst
requests to be generated by software. The DMACSoftBReq bit assignments are given in
Table 290.
Table 290. DMACSoftBReq register bit assignments
Bit
Name
Reset value
Description
[31:16]
Reserved
-
Read: undefined. Write as zero.
16’h0000
Software last burst request.
Each bit is associated to one out of 16 peripheral DMA
request lines. Setting a bit, a DMA last burst request for the
corresponding peripheral is generated, and the bit is cleared
when the transaction has completed. Reading this field of
the register indicates the sources that are requesting DMA
last burst transfers.
[15:00]
SoftBReq
Note:
A DMA burst request can be generated form either a peripheral or the software request
register. However, it is recommended not to use software and hardware peripheral requests
at the same time.
19.7.12
DMACSoftSReq register
The DMACSoftSReq (software single request) is a RW register which enables DMA single
requests to be generated by software. The DMACSoftSReq bit assignments are given in
Table 291.
Table 291. DMACSoftSReq register bit assignments
Bit
Name
Reset value Description
[31:16]
Reserved
-
Read: undefined. Write as zero.
16’h0000
Software single request.
Each bit is associated to one out of 16 peripheral DMA
request lines. Setting a bit, a DMA single request for the
corresponding peripheral is generated, and the bit is cleared
when the transaction has completed. Reading this field of the
register indicates the sources that are requesting DMA single
transfers.
[15:00]
SoftSReq
Note:
A DMA single request can be generated form either a peripheral or the software request
register. However, it is recommended not to use software and hardware peripheral requests
at the same time.
19.7.13
DMACSoftLBReq register
The DMACSoftLBReq (software last burst request) is a RW register which enables DMA last
burst requests to be generated by software. The DMACSoftLBReq bit assignments are
given in Table 292.
Doc ID 018672 Rev 1
343/844
BS_DMA controller
RM0082
Table 292. DMACSoftLBReq register bit assignments
Bit
Name
Reset value Description
[31:16]
Reserved
-
Read: undefined. Write as zero.
16’h0000
Software last burst request.
Each bit is associated to one out of 16 peripheral DMA
request lines. Setting a bit, a DMA last burst request for the
corresponding peripheral is generated, and the bit is cleared
when the transaction has completed. Reading this field of
the register indicates the sources that are requesting DMA
last burst transfers.
[15:00]
SoftLBReq
Note:
A DMA last burst request can be generated form either a peripheral or the software request
register.
19.7.14
DMACSoftLSReq register
The DMACSoftLSReq (software last single request) is a RW register which enables DMA
last single requests to be generated by software. The DMACSoftLSReq bit assignments are
given in Table 293.
Table 293. DMACSoftLSReq register bit assignments
Bit
Name
Reset value
Description
[31:16]
Reserved
-
Read: undefined. Write as zero.
16’h0000
Software last single request.
Each bit is associated to one out of 16 peripheral DMA
request lines. Setting a bit, a DMA last single request for
the corresponding peripheral is generated, and the bit is
cleared when the transaction has completed. Reading this
field of the register indicates the sources that are
requesting DMA last single transfers.
[15:00]
SoftLSReq
Note:
A DMA last single request can be generated form either a peripheral or the software request
register.
19.7.15
DMAC configuration register
The DMACConfiguration is a RW register which allows to configure the operation of the
DMAC. The DMACConfiguration bit assignments are given in Table 294.
Table 294. DMACConfiguration register bit assignments
Bit
Name
Reset value Description
[31:03]
Reserved
-
Read: undefined. Write as zero.
1’h0
AHB master 2 endianness configuration.
This bit enables to alter the endianness of the AHB master
interface 2, according to encoding:
1‘b0 = Little-endian mode.
1‘b1 = Big-endian mode.
[02]
344/844
M2
Doc ID 018672 Rev 1
RM0082
BS_DMA controller
Table 294. DMACConfiguration register bit assignments (continued)
Bit
19.7.16
Name
Reset value Description
[01]
M1
1’h0
AHB master 1 endianness configuration.
This bit enables to alter the endianness of the AHB master
interface 1, according to the same encoding as M2 (see
above).
[00]
E
1’h0
DMAC enable.
Setting this bit, the DMAC is enabled. Clearing this bit, the
DMAC is disabled reducing power consumption.
DMACSync register
The DMACSync (synchronization) is a RW register which allows to enable/disable
synchronization logic for the DMA request signals, namely DMACBREQ[15:0],
DMACSREQ[15:0], DMACLBREQ[15:0] and DMACLSREQ[15:0]. The DMACSync bit
assignments are given in Table 295.
Note:
Synchronization logic must be used when the peripheral generating the DMA request runs
on a different clock to the DMAC. For peripherals running on the same clock as DMA,
disabling the synchronization logic improves the DMA request response time.
Table 295. DMACSync register bit assignments
Bit
Name
Reset
value
Description
[31:16]
Reserved
-
Read: undefined. Write as zero.
16’h0000
DMA synchronization logic enable.
Each bit is associated to one out of 16 peripheral
DMA request lines. A cleared bit (as for default)
indicates that the synchronization logic for the
request signals is enabled. In contrast, setting the
bit the synchronization logic is disabled.
[15:00]
19.7.17
DMACSync
DMACCnSrcAddr register
The DMACCnSrcAddr (channel n source address) is a RW register which contains the
current source address (byte-aligned) of the data to be transferred over the n-th DMA
channel. The DMACCnSrcAddr bit assignments are given in Table 296.
Note:
Source and destination addresses must be aligned to the source and destination widths.
Software programs the DMACCnSrcAddr register directly before the appropriate DMA
channel is enabled. Once the corresponding DMA channel is enabled, this register is
updated:
●
As the source address is incremented,
●
By following the linked list when a complete packet of data has been transferred.
Reading the register when the DMA channel is active does not provide useful information.
This is because by the time the software has processed the value read, the channel might
have progressed. It is intended to be read-only when the channel has stopped, and in such
case, it shows the source address of the last item read.
Doc ID 018672 Rev 1
345/844
BS_DMA controller
RM0082
Table 296. DMACCnSrcAddr register bit assignments
19.7.18
Bit
Name
Reset value
Description
[31:00]
SrcAddr
32’h0
DMA source address.
DMACCnDestAddr register
The DMACCnDestAddr (channel n destination address) is a RW register which contains the
current destination address (byte-aligned) of the data to be transferred over the n-th DMA
channel. The DMACCnDestAddr bit assignments are given in Table 297.
Note:
Source and destination addresses must be aligned to the source and destination widths.
Software programs the DMACCnDestAddr register directly before the appropriate DMA
channel is enabled. Once the corresponding DMA channel is enabled, this register is
updated:
●
as the destination address is incremented,
●
by following the linked list when a complete packet of data has been transferred.
Reading the register when the DMA channel is active does not provide useful information.
This is because by the time the software has processed the value read, the channel might
have progressed. It is intended to be read-only when the channel has stopped, and in such
case, it shows the source address of the last item read.
Table 297. DMACCnDestAddr register bit assignments
19.7.19
Bit
Name
Reset value Description
[31:00]
DestAddr
32’h0
DMA destination address.
DMACCnLLI register
The DMACCnLLI (channel n linked list item) is a RW register which contains the address
(word-aligned) of the next Linked List Item (LLI). If next LLI is 0, then the current LLI is the
last in the chain, and the DMA channel is disabled after all DMA transfers associated with it
are completed. The DMACCnLLI bit assignments are given in Table 298.
Note:
Programming this register when the corresponding DMA channel is enabled has
unpredictable results.
Table 298. DMACCnLLI register bit assignments
Bit
Name
Reset value
Description
[31:02]
LLI
30’h0
Next LLI address.
This field contains the bits [31:2] of the address for the next
LLI. Address LSB bits [1:0] are 1‘b0 both.
[01]
Reserved
-
Read: undefined. Write as zero.
1’h0
AHB master select.
This bit allows to select the AHB master for loading the next
LLI, according to encoding:
1‘b0 = AHB master 1.
1‘b1 = AHB master 2.
[00]
346/844
LM
Doc ID 018672 Rev 1
RM0082
19.7.20
BS_DMA controller
DMACCn control register
The DMACCnControl is a RW register which contains control information about the DMA
channel n, such as transfer size, burst size and transfer width. The DMACCnControl bit
assignments are given in Table 299.
Software programs the DMACCnControl register directly before the appropriate DMA
channel is enabled. Once the corresponding DMA channel is enabled, this register is
updated by following the linked list when a complete packet of data has been transferred.
Reading the register when the DMA channel is active does not provide useful information.
This is because by the time the software has processed the value read, the channel might
have progressed. It is intended to be read-only when the channel has stopped.
Table 299. DMACCnControl register bit assignments
Bit
Name
Reset value Description
[31]
I
1’h0
Terminal count interrupt enable.
This bit controls whether the current LLI is expected to trigger
the terminal count interrupt.
[30:28]
Port
3’h0
Protection.
This 3 bits field reports AHB access information which are
primarily intended to be used by source and destination
peripherals for implementing some level of protection. This field
directly controls the AHB HPROT[3:1] signals, and bit
assignment is given:
[28], HPROT[1] = 1‘b0 user mode
[28], HPROT[1] = 1‘b1 privileged mode
[29], HPROT[2] = 1‘b0 non-bufferable
[29], HPROT[2] = 1‘b1 bufferable
[30], HPROT[3] = 1‘b0 non-cacheable
[30], HPROT[3] = 1‘b1 cacheable
[27]
DI
1’h0
Destination increment.
If the bit is set, the destination (resp. source) address is
incremented after each transfer.
[26]
SI
1’h0
Source increment.
If the bit is set, the destination (resp. source) address is
incremented after each transfer.
1’h0
Destination AHB master select.
This bit allows to select the AHB master for the destination
(resp. source) transfer, according to encoding:
1‘b0 = AHB master 1.
1‘b1 = AHB master 2.
1’h0
Source AHB master select.
This bit allows to select the AHB master for the destination
(resp. source) transfer, according to encoding:
1‘b0 = AHB master 1.
1‘b1 = AHB master 2.
[25]
[24]
D
S
Doc ID 018672 Rev 1
347/844
BS_DMA controller
RM0082
Table 299. DMACCnControl register bit assignments (continued)
Bit
[23:21]
[20:18]
[17:15]
348/844
Name
Reset value Description
3’h0
Destination transfer width.
This 3 bits field states the width of destination (resp. source)
transfer, according to encoding:
3‘b000 = Byte (8 bit)
3‘b001 = Halfword (16 bit)
3‘b010 = Word (32 bit)
3‘b011 to 3‘b111 = Reserved
The hardware automatically packs and unpacks the data when
required.
Note: Transfers wider than the AHB master bus width are illegal.
Besides, the source and the destinations widths can be different
from each other.
3’h0
Source transfer width.
This 3 bits field states the width of destination (resp. source)
transfer, according to encoding:
3‘b000 = Byte (8 bit)
3‘b001 = Halfword (16 bit)
3‘b010 = Word (32 bit)
3‘b011 to 3‘b111 = Reserved
The hardware automatically packs and unpacks the data when
required.
Note: Transfers wider than the AHB master bus width are illegal.
Besides, the source and the destinations widths can be different
from each other.
DBSize 3’h0
Destination burst size.
This 3 bits field indicates the number of transfers that make up a
destination (resp. source) burst transfer request, according to
the encoding:
3‘b000 = 1
3‘b001 = 4
3‘b010 = 8
3‘b011 = 16
3‘b100 = 32
3‘b101 = 64
3‘b110 = 128
3‘b111 = 256
This value must be set to the burst size of the destination (resp.
source) peripheral, being the burst size the amount of data that
is transferred when the n-th DMACBREQ signal goes active in the
destination (resp. source) peripheral. In case destination (resp.
source) is the memory, this value must be set to the memory
boundary size.
Note: Burst equal or greater than 32 are available only using
data-width 32. The data-width 8 and 16 support only bursts of
1,4,8 & 16.
Dwidth
Swidth
Doc ID 018672 Rev 1
RM0082
BS_DMA controller
Table 299. DMACCnControl register bit assignments (continued)
Bit
[14:12]
[11:00]
19.7.21
Name
Reset value Description
SBSize 3’h0
Source burst size.
This 3 bits field indicates the number of transfers that make up a
destination (resp. source) burst transfer request, according to
the encoding:
3‘b000 = 1
3‘b001 = 4
3‘b010 = 8
3‘b011 = 16
3‘b100 = 32
3‘b101 = 64
3‘b110 = 128
3‘b111 = 256
This value must be set to the burst size of the destination (resp.
source) peripheral, being the burst size the amount of data that
is transferred when the n-th DMACBREQ signal goes active in the
destination (resp. source) peripheral. In case destination (resp.
source) is the memory, this value must be set to the memory
boundary size.
Transfer
12’h0
Size
Transfer size.
A write to this field sets the size of the transfer in case the
DMAC is the flow controller. This value counts down from the
original value to zero, and a read from this field provides then
the number of transfers still to be completed on the destination
bus.
Note: This field should be set to zero if the DMAC is not the flow
controller, avoiding then the DMAC might attempt to use a nonzero value instead of ignoring the field.
DMAC Configuration register
The DMAC Configuration is a RW register which allow to configure the relevant DMA
channel. The DMAC Configuration bit assignments are given in Table 300.
Table 300. DMAC Configuration register bit assignments
Bit
Name
Reset value Description
[31:19]
Reserved
-
Read: undefined. Write as zero.
1’h0
Halt.
Setting this bit, extra source DMA requests are ignored
(otherwise enabled), and the content of channel FIFO is
drained. This bit can be jointly used with the active bit (A field
in this register) and the channel enable bit (E field in this
register) to cleanly disable a DMA channel.
1’h0
Active (read-only).
If this read-only field is set, it means that there is still data in
the channel FIFO. This bit can be jointly used with the halt bit
(H field in this register) and the channel enable bit (E field in
this register) to cleanly disable a DMA channel.
[18]
[17]
H
A
Doc ID 018672 Rev 1
349/844
BS_DMA controller
RM0082
Table 300. DMAC Configuration register bit assignments (continued)
Bit
350/844
Name
Reset value Description
[16]
L
1’h0
Lock.
Setting this bit, locked transfers are enabled: when a burst
occurs, the HLOCK signal is asserted by the DMAC, so that
the AHB arbiter doesn’t degrant the DMAC during the burst
until the lock is deasserted, even if another master with
greater priority requests the bus.
[15]
ITC
1’h0
Terminal count interrupt mask.
Clearing this bit, it masks out the terminal count interrupt for
this DMA channel.
[14]
IE
1’h0
Error interrupt mask.
Clearing this bit, it masks out the error interrupt for this DMA
channel.
[13:11]
FlowCntrl
3’h0
Flow control and transfer type.
This 3 bits field indicates both the flow controller (DMAC,
destination peripheral or source peripheral) and the transfer
type (memory-to-memory, memory-to-peripheral, …),
according to encoding:
3‘b000 = Memory-to-memory, DMAC
3‘b001 = Memory-to-peripheral, DMAC
3‘b010 = Peripheral-to-memory, DMAC
3‘b011 = Source periph.-to-destination periph., DMAC
3‘b100 = Source periph.-to-destination periph., Destination
peripheral
3‘b101 = Memory-to-peripheral, Peripheral
3‘b110 = Peripheral-to-memory, Peripheral
3‘b111 = Source periph.-to-destination periph. Source
peripheral, DestPeripheral,
[10]
Reserved
-
Read: undefined. Write as zero.
[09:06]
DestPeriph
4’h0
eral
Destination peripheral.
This 4 bits field allows to select the DMA destination (resp.
source) request peripheral. The value is ignored in case the
destination (resp. source) of the transfer is the memory.
Note: The DestPeripheral and SrcPeripheral fields are the
binary value of the request line (4’h0 to 4’hF, that is 0 to 15)
and not a mask value.
[05]
Reserved
Read: undefined. Write as zero.
-
Doc ID 018672 Rev 1
RM0082
BS_DMA controller
Table 300. DMAC Configuration register bit assignments (continued)
Bit
Name
[04:01]
[00]
19.7.22
Reset value Description
SrcPeriphe
4’h0
ral
Source peripheral.
This 4 bits field allows to select the DMA destination (resp.
source) request peripheral. The value is ignored in case the
destination (resp. source) of the transfer is the memory.
Note: The DestPeripheral and SrcPeripheral fields are the
binary value of the request line (4’h0 to 4’hF, that is 0 to 15)
and not a mask value.
E
Channel enable.
Setting this bit, the relevant DMA channel is enabled. When
this bit is cleared, the current AHB transfer – if any – is firstly
completed (losing any data in the channel FIFO), then the
channel is disabled.
Note: Restarting the DMA channel by setting back the E bit
results in unpredictable effects and the channel must be fully
re-initialized.
If a DMA channel has to be disabled without losing data in its
channel’s FIFO, at first the Halt bit must be set, so that
subsequent DMA requests are ignored. Then, the Active bit
must be polled until it reaches 1‘b0, indicating that there is no
data left in the channel’s FIFO. Finally, the Channel Enable
bit can be cleared.
The DMA channel is also disabled (and the E bit cleared)
when either the last LLI is reached or if a channel error is
encountered.
Reading this bit indicates whether the DMA channel is
enabled or disabled.
1’h0
DMACPeriphID register
The DMACPeriphID are four 8 bit RO registers, which can be treated conceptually as a
single 32 bit register. These read-only registers provide the following peripheral options:
19.7.23
●
PartNumber[11:00] - This identifies the peripheral. The three digit product code 0x080
is used.
●
Designer ID[19:12] - This is the identification of the designer. ARM Limited is 0x41
(ASCII A).
●
Revision[23:20] - This is the revision number of the peripheral. The revision number
starts from 0.
●
Configuration[31:24] - This is the configuration option of the peripheral.
DMACPCellID register
The DMACPCellID are four 8 bit RO registers, which can be treated conceptually as a single
32 bit register. The register is a standard cross-peripheral identification system. The
DMACPCellID register is set to 0xB105_F00D.
Doc ID 018672 Rev 1
351/844
BS_Real time clock
RM0082
20
BS_Real time clock
20.1
Overview
Within its basic subsystem, SPEAr300 provides a real time clock (RTC) acting as an APB
slave.
Main features of the RTC block are:
●
Provides time-of-day clock in 24 hours mode.
●
Provides calendar.
●
Makes available alarm capability.
●
Provides two general purpose registers.
●
Supports a self-isolation mode, which allows RTC to work even if power is not supplied
to the rest of the device.
20.2
Programming model
20.2.1
Register map
The RTC can be fully configured by programming its 32 bit wide registers (listed in
Table 301) which can be accessed at the base address 0xFC90_0000.
Table 301. RTC functional registers summary
Name
Offset
Type Reset value
Description
TIME
0x000
RW
Undefined
Time register
DATE
0x004
RW
Undefined
Date register
ALARM TIME
0x008
RW
Undefined
Alarm time register
ALARM DATE
0x00C
RW
Undefined
Alarm date register
CONTROL
0x010
RW
Undefined
Control register
STATUS
0x014
RW
Undefined
Status register
REG1MC
0x018
RW
Undefined
General purpose register
REG2MC
0x01C
RW
Undefined
General purpose register
20.2.2
Register description
20.2.3
CONTROL register
The CONTROL is a RW register which allows the software to control the RTC. The
CONTROL register bit assignments are given Table 302.
352/844
Doc ID 018672 Rev 1
RM0082
BS_Real time clock
Table 302. CONTROL register bit assignments
Bit
Description
Interrupt event enable.
Setting this bit, interrupt event is enabled, and interrupts
generated by alarm logic are sent out (see ALARM TIME and
ALARM DATE registers).
[31]
IE
[30:10]
Reserved
[09]
TB
Time bypass (for testing purpose only).
[08]
PB
Prescaler bypass (for testing purpose only).
[07:06]
Reserved
[05:00]
20.2.4
Reset
value
Name
-
Read: undefined. Write: should be zero.
-
Read: undefined. Write: should be zero.
Force time-calendar comparisons.
Each bit of this 6 bit field allows to mask one time-calendar
element (seconds, minutes, hours, days, months, years),
according to encoding. The aim is to generate an interrupt for
any masked element, apart from actual matching of
programmed alarms.
[00] = Seconds.
[01] = Minutes.
[02] = Hours.
[03] = Days.
[04] = Months.
[05] = Years.
MASK
STATUS register
The STATUS is a RW register (with some RO field) which indicates the status of the RTC
and allows to clear any pending interrupt. The STATUS register bit assignments are given in
Table 303.
Table 303. STATUS register bit assignments
Bit
Name
[31]
I
[30:06]
Reserved
[05]
LD
Reset
value
-
Type
Description
RW
Interrupt status.
Reading from this 1 bit field, the interrupt status returns.
Writing 1‘b1 to this bit clears any pending interrupts,
whereas there is no effect writing 1‘b0.
-
Read: undefined. Write: should be zero.
RO
Write to DATE register lost.
If a second write to DATE register is requested before
the first is completed, this second request is aborted and
the LD bit is set. This bit is cleared when a write to DATE
register is performed successfully.
Doc ID 018672 Rev 1
353/844
BS_Real time clock
RM0082
Table 303. STATUS register bit assignments (continued)
Bit
[04]
[03]
Reset
value
LT
PD
[02]
PT
[01]
Reserved
[00]
20.2.5
Name
-
RC
Type
Description
RO
Write to TIME register lost.
If a second write to TIME register is requested before the
first is completed, this second request is aborted and the
LT bit is set. This bit is cleared when a write to TIME
register is performed successfully.
RO
Pending write to DATE register.
If set, this bit indicates that a write to DATE register
request is asserted from 48 MHz part to 32 kHz part. It is
independent from PT. A new write can be successfully
requested only when this bit is cleared.
RO
Pending write to TIME register.
If set, this bit indicates that a write to TIME register
request is asserted from 48 MHz part to 32 kHz part. A
new write can be successfully requested only when this
bit is cleared.
-
Read: undefined. Write: should be zero.
RO
Isolation of timer
If cleared (1‘b0), the RTC is self-isolated from the rest of
the chip. Reading and writing to TIME and DATE
registers can be safely done when this bit is set only.
TIME register
The TIME is a RW register which defines the time (hour, minutes, seconds) when the RTC
can start to count the time. The TIME register bit assignments are given in Table 304.
Note:
All values in this TIME register are in binary-coded decimal (BCD) format.
Table 304. TIME register bit assignments
354/844
Bit
Name
Reset
value
Description
[31:22]
Reserved
-
Read: undefined. Write: should be zero.
[21:20]
HT
Current hours tens.
[19:16]
HU
Current hours units.
[15]
Reserved
[14:12]
MT
Current minutes tens.
[11:08]
MU
Current minutes units.
[07]
Reserved
[06:04]
ST
Current seconds tens.
[03:00]
SU
Current seconds units.
-
-
Read: undefined. Write: should be zero.
Read: undefined. Write: should be zero.
Doc ID 018672 Rev 1
RM0082
20.2.6
BS_Real time clock
DATE register
The DATE is a RW register which defines the date (year, month, day) when the RTC can
start to count the time. The DATE register bit assignments are given in Table 305.
Note:
All values in this DATE register are in binary-coded decimal (BCD) format.
Table 305. DATE register bit assignments
20.2.7
Reset
value
Bit
Name
[31:28]
YM
Current year millenniums.
[27:24]
YH
Current year hundreds.
[23:20]
YT
Current year tens.
[19:16]
YU
Current year units.
[15]
Reserved
[14:12]
MT
Current month tens.
[11:08]
MU
Current month units.
[07:06]
Reserved
[05:04]
DT
Current day tens.
[03:00]
DU
Current day units.
-
-
Description
Read: undefined. Write: should be zero.
Read: undefined. Write: should be zero.
ALARM TIME registers
The ALARM TIME is a RW register which defines a successive time, so that when the value
of TIME register is equal to the value set in this ALARM TIME register, an interrupt is
generated (if enabled, that is if IE bit in CONTROL register is set). The ALARM TIME
register bit assignments are given in Table 306.
Note:
All values in this ALARM TIME register are in binary-coded decimal (BCD) format.
Table 306. ALARM TIME register bit assignments
Bit
Name
Reset
value
Description
[31:22]
Reserved
-
Read: undefined. Write: should be zero.
[21:20]
HT
Target hour tens.
[19:16]
HU
Target hour units.
[15]
Reserved
[14:12]
MT
Target minute tens.
[11:08]
MU
Target minute units.
[07]
Reserved
[06:04]
ST
Target second tens.
[03:00]
SU
Target second units.
-
-
Read: undefined. Write: should be zero.
Read: undefined. Write: should be zero.
Doc ID 018672 Rev 1
355/844
BS_Real time clock
20.2.8
RM0082
ALARM DATE registers
The ALARM DATE is a RW register which defines a successive date, so that when the value
of DATE register is equal to the value set in this ALARM DATE register, an interrupt is
generated (if enabled, that is if IE bit in CONTROL register is set). The ALARM DATE
register bit assignments are given in Table 307.
Note:
All values in this ALARM DATE register are in binary-coded decimal (BCD) format.
Table 307. ALARM DATE register bit assignments
20.2.9
Reset
value
Bit
Name
[31:28]
YM
Target year millenniums.
[27:24]
YH
Target year hundreds.
[23:20]
YT
Target year tens.
[19:16]
YU
Target year units.
[15]
Reserved
[14:12]
MT
Target month tens.
[11:08]
MU
Target month units.
[07:06]
Reserved
[05:04]
DT
Target day tens.
[03:00]
DU
Target day units.
-
-
Description
Read: undefined. Write: should be zero.
Read: undefined. Write: should be zero.
REGxMC register
These general purpose registers, battery powered, can be used to store information when
the system goes in a deep power saving state like suspend to ram. During this state only the
DDR memory is powered and all the other parts of the system (SOC included) are
completely off. The REGxMC registers bit assignments are given in Table 308 and
Table 309.
Table 308. REG1MC registers bit assignments
Bit
Name
[31:00]
REG1MC
Reset value Description
General purpose bits
Table 309. REG2MC register bit assignments
356/844
Bit
Name
[31:00]
REG2MC
Reset value Description
General purpose bits
Doc ID 018672 Rev 1
RM0082
AS_Cryptographic co-processor (C3)
21
AS_Cryptographic co-processor (C3)
21.1
Overview
Within its Application Connection Subsystem, SPEAr300 provides one Channel Control Coprocessor (C3). C3 is a high-performance instruction driven DMA based co-processor. It
executes instruction flows generated by the host processor. After it has been set-up by the
host it runs in a completely autonomous way (DMA data in, data processing, DMA data out),
until the completion of all the requested operations.
C3 has been used to accelerate the processing of cryptographic, security and network
security applications. It can be used for other types of data intensive applications as well.
Main features provided by the C3 are listed below:
●
C3 Hardware ID base address 0xFFFF_1000.
●
High performance DMA based co-processor enabling the acceleration of data-driven
computationally expensive functions, such as: Cryptography, Pattern matching, Signal
Processing, etc.
●
Highly programmable (instruction driven) controller
●
AMBA AHB 2.0 Master and Slave Interfaces
●
Scatter and Gather DMA engine
●
C3 has 8 slots for including channels (hardware accelerators). The configuration is as
follows:
Channel 0 - Empty
Channel 1 - Data Encryption Standard (DES and TripleDES)
–
DES (56 bit keys, no parity)
–
DES ECB encryption + decryption
–
DES CBC encryption + decryption
–
TripleDES (168 bit keys EncDecEnc)
–
3DES ECB encryption + decryption
–
3DES CBC encryption + decryption
–
FIFO Size
–
Input FIFO: 16x32 bits
–
Output FIFO: 16x32 bits
Channel 2 - Advanced Encryption Standard (AES)
Channel ID: 0x0000_3000
Supported Algorithms
–
AES (128, 192, 256 bit keys)
–
AES ECB encryption + decryption
–
AES CBS encryption + decryption“AES Counter Mode encryption + decryption
FIFO Size
–
Input FIFO: 16x32 bits
–
Output FIFO: 16x32 bits
Doc ID 018672 Rev 1
357/844
AS_Cryptographic co-processor (C3)
RM0082
Channel 3 - Unified Hash with HMAC
Channel ID: 0x0000_4002
Supported Algorithms
–
MD5
–
Hash with 128 bit digest
–
HMAC
–
SHA1
–
Hash with 160 bit digest
–
HMAC
–
FIFO Size
–
Input FIFO: 16x32 bits
–
Output FIFO: 8x32 bits
Channel 4 - Empty
Channel 5 - Empty
Channel 6 - Empty
Channel 7 - Empty
●
●
Number of Instruction Dispatchers is 4. The configuration is as follows:–
ID0 - Available
–
ID1 - Empty
–
ID2 - Empty
–
ID3 - Empty
Number Coupling / Chaining Module (internal cross-bar) for inter channel direct highspeed communications is 1.
21.2
Functional description
21.2.1
Device summary
Table 310. C3 device summary
358/844
Features
C3 version 3
Interfaces
AMBA AHB 2.0 Master Interface
AMBA AHB 2.0 Slave Interface
Instruction Dispatchers (IDS) Available
1
Channels Available
3
Coupling/Chaining Paths Available
1
Doc ID 018672 Rev 1
RM0082
21.3
AS_Cryptographic co-processor (C3)
Block diagram
Figure 35. C3 block diagram
Buffer
(RAM)
Reset
SYS
HIF(AHB Master Iinterface)
IRQ
Channel #0
Channel #1
Channel #2
CCM (Coupling and chaining)
AMBA
AHB 2.0
IDS (Inst.Disp.Subsys)
Channel #7
SIF(AHB Slave Interface)
21.4
Main functions description
C3 is a highly programmable DMA based hardware co-processor that executes some
instructions flows (programs) written in memory by the host processor. These programs
specify which operations must be performed and where to locate data buffers (input, output,
parameters) in memory.
After being set-up C3 is completely autonomous and can perform an unlimited number of
operations, until it hits an end of program instruction in which case it can signal the end of
processing by the means of an interrupt request (if programmed to do so).
C3 has two interfaces:
●
AHB Master Interface: it is used to fetch instruction flows, to access input data,
parameters and to store output data to system memory.
●
AHB Slave Interface: it is used to set-up the device and to access all the registers.
C3 has been designed to perform acceleration of data-intensive applications where
computationally expensive algorithms must operate on medium to large memory buffers.
Doc ID 018672 Rev 1
359/844
AS_Cryptographic co-processor (C3)
RM0082
Such applications can be found in the fields of security (data encryption, integrity check,
etc.) and networking.
There are many other fields of application for C3, such as signal processing, image
processing and in general applications that require complex mathematical computations
21.4.1
HIF (High speed bus interface)
This block implements an AMBA AHB 2.0 compliant Master interface. It receives internal
requests from all the C3 internal initiator blocks and it translates them into AHB bus
requests. The HIF is a master only and will not allow access to the C3 internal.
21.4.2
SIF (Slave bus interface)
This block implements an AMBA AHB 2.0 compliant Slave interface. This interface is used to
set-up the device and access all the memory mapped internal registers. Each channel is
allocated a 1K byte address space and the major blocks of the C3 are also allocated space
in the map.
21.4.3
IDS (Instruction dispatchers sub-system)
This block contains the instruction dispatchers (up to 4) that are in charge of fetching the
programs from memory and dispatch the instructions to the requested channels. Since the
instruction dispatchers operate in parallel up to 4 instruction flows can be executed
concurrently.
If programmed to do so the instruction dispatcher signal the end of processing to the host
processor by raising an interrupt signal.
Each Instruction Dispatchers (ID) can handle two types of instructions:
21.4.4
●
Flow Type Instructions: these are C3 control instructions and are executed by the ID
itself
●
Application Specific Instructions: these are processing instructions that are directly
dispatched by the ID to the right channel that will perform decoding and execution.
Channel
A Channel is a specific function or set of similar functions and a wrapper to provide data flow
management, instruction handling and interface to the various parts of C3. Channels
implement the data processing. Total number of channels available in this version of C3 is 3.
Channels operate in parallel and contend the access to the system bus through the HIF
arbitration mechanism. Channels are designed to efficiently support the data-flow model of
computation.
360/844
Doc ID 018672 Rev 1
RM0082
AS_Cryptographic co-processor (C3)
The channel main features are the following:
21.4.5
●
Decoding of the instructions received from the dispatcher sub-system.
●
DMA engine with support of scatter and gather operations.
●
Internal input / output data-flows buffering by the means of FIFO in order to
accommodate for the system bus latency.
●
I/O multiplexing, so that data can be directly received from/sent to other channels
without going through memory.
●
Support for multiple algorithms in the Core block. The Core block implementation is
application specific.
CCM (Coupling/Chaining module)
This block implements a cross-bar allowing direct connection of channels Input/Outputs
between them. Typical use cases of the CCM are for:
●
Sending the output data generated by a channel to the input of another channel, also
known as “chaining”.
●
Sending the input data received by a channel from the system bus to the input of
another channel, also known as “coupling”.
Doc ID 018672 Rev 1
361/844
AS_Cryptographic co-processor (C3)
21.5
RM0082
Processing overview
This section outlines the main steps involved in setting up C3 for processing.
●
The host processor creates a program and stores it in memory.
●
The program contains C3 instructions and their arguments (usually pointers to data
buffers in system memory).
●
The host processor writes the base address of the program in the Instruction Pointer
Register of one of the Instruction Dispatcher (ID).
●
Instruction Dispatchers (IDs) work independently from each other and each ID can
handle a C3 instruction flow.
●
From the system/software standpoint, each logical device (associated to an Instruction
Dispatcher) can be managed by an independent software task, which is to say that a
C3 with 4 dispatchers is equivalent to 4 logical co-processors.
●
The selected Instruction Dispatcher starts fetching the program from system memory
and fills its instruction queue. It then process the instruction flow sequentially, one
instruction at a time.
●
The ID either executes the instruction itself (in case of Flow Type instruction) or it
dispatches the instruction to the specified channel (in case of application specific
instruction).
●
The channel executes the instruction
●
The channel generally performs DMA access request for reading input data and
parameters from system memory, but it may be set-up to receive data from another
channel.
●
The channel Core block (CB) performs the actual data processing, which is specific to
the implemented algorithm.
●
The channel generally then performs DMA access request for writing the output data to
system memory, but it may be set-up to send data to another channel too.
●
When the ID hits the end of program it signals completion by rising an interrupt
●
Interrupt generation may be disabled, in which case polling by the host processor of the
C3 status register can be used to determine the end of processing.
21.6
Programming model
21.6.1
Register map
Most components of C3 have registers mapped in AHB address space starting at the base
address 0xD900_0000. Registers are accessed using the C3 AHB Slave Interface (SIF). An
address space of 1 KB is allocated for each of these components. The total AHB address
window of C3 is 32 KB permitting the mapping of up to 32 components. All registers are 32
bit wide and access to them must be done using aligned 32 bit words read and writes. The
current mapping is listed in the Table 311
Table 311. C3 components system register summary
362/844
Symbol
Name
Offset
Reset Value
C3_SYS
System Registers
0x0000
32’h400
C3_HIF
Master Interfaced Registers
0x0400
32’h400
Doc ID 018672 Rev 1
RM0082
AS_Cryptographic co-processor (C3)
Table 311. C3 components system register summary (continued)
Symbol
21.6.2
Name
Offset
Reset Value
unused
0x0800
32’h400
unused
0x0C00
32’h400
C3_ID0
Instruction Dispatcher #0 Registers
0x1000
32’h400
C3_ID1
unused
0x1400
32’h400
C3_ID2
unused
0x1800
32’h400
C3_ID3
unused
0x1C00
32’h400
C3_CH0
unused
0x2000
32’h400
C3_CH1
Channel #1 Registers
0x2400
32’h400
C3_CH2
Channel #2 Registers
0x2800
32’h400
C3_CH3
Channel #3 Registers
0x2C00
32’h400
unused
0x3000
32’h400
unused
0x3400
32’h400
unused
0x3800
32’h400
unused
0x3C00
32’h400
unused
0x4000
32’h400
unused
0x4400
32’h400
unused
0x4800
32’h400
unused
0x4C00
32’h400
unused
0x5000
32’h400
unused
0x5400
32’h400
unused
0x5800
32’h400
unused
0x5C00
32’h400
unused
0x6000
32’h400
unused
0x6400
32’h400
unused
0x6800
32’h400
unused
0x6C00
32’h400
unused
0x7000
32’h400
unused
0x7400
32’h400
unused
0x7800
32’h400
unused
0x7C00
32’h400
System registers (C3_SYS)
System registers are registers whose scope is the whole C3.
Doc ID 018672 Rev 1
363/844
AS_Cryptographic co-processor (C3)
21.6.3
RM0082
Register configuration
Table 312 summarizes AHB mapped registers for the system (SYS).
Table 312. C3 components system registers map
Symbol
Name
Type
Reset value
Offset
SYS_SCR
Status and control register
RW
-
0x000
SYS_STR
Channel status register
RO
-
0x040
SYS_VER
Hardware version and revision
RO
VER
0x3F0
SYS_HWID
Hardware ID
RO
HWID
0x3FC
Zero is read from undefined locations, writing has no effect.
21.6.4
Register description
Bit
31
30
29
28
27
26
25
24
Symbol
ID3SH
IDS3L
IDS2H
IDS2L
IDS1H
IDS1L
IDS0H
IDS0L
Initial Value
0 or 1
0
0 or 1
0
0 or 1
0
0 or 1
0
Type
RO
RO
RO
RO
RO
RO
RO
RO
Bit
23
22
21
20
19
18
17
16
Symbol
ISD
ISD2
ISD1
ISD0
ISA
CISR
BEND
ARST
Initial Value
0
0
0
0
0
0
0
0
Type
R(W)
R(W)
R(W)
R(W)
R(W)
R(W)
R(W)
R(W)
Bit
15
14
13
12
11
10
9
8
Symbol
C7SH
C7SL
C6SH
C6SL
C5SH
C5SL
C4SH
C4SL
Initial Value
0 or 1
0
0 or 1
0
0 or 1
0
0 or 1
0
Type
RO
RO
RO
RO
RO
RO
RO
RO
Bit
7
6
5
4
3
2
1
0
Symbol
C3SH
C3SL
C2SH
C2SL
C1SH
C1SL
C0SH
C0SL
Initial Value
0 or 1
0
0 or 1
0
0 or 1
0
0 or 1
0
Type
RO
RO
RO
RO
RO
RO
RO
RO
Bit 31 to 24 - Instruction dispatcher n status (IDnS)
The status of each Instruction Dispatcher is mirrored in these bits. Bits 31-30 are the state of
ID3, bits 29-28 of ID2, bits 27-26 of ID1 and bits 25-24 of ID0. These bits are the same as
364/844
Doc ID 018672 Rev 1
RM0082
AS_Cryptographic co-processor (C3)
the ones in the Instruction Dispatcher Status and Control Register (ID_SCR) of each ID.
These bits allow knowing the status of all Instruction Dispatcher with a single AHB slave
read. See the Instruction Dispatcher document section for more details
Bit 23 to 20 - Instruction dispatcher n interrupt status (ISDn)
Interrupt States (IS) of every Instruction Dispatcher are made available in these bits. These
bits are the same than the ones in the Instruction Dispatcher Status and Control Register
(ID_SCR) of each ID. Interrupts can be acknowledged using the Status and Control Register
of the Instruction Dispatcher (ID_SCR) or using these bits. See the Instruction Dispatcher
document section for more details.
Bit 23-20 ISDn
Description
1’b1
The Instruction Dispatcher n is requesting an Interrupt.
1’b0
(Clearing conditions) The Interrupt Status (IS) of Instruction
Dispatcher n can be cleared writing one to this flag. Writing zero
has no effect.
Bit 19 - Interrupt status of all instruction dispatchers (ISA)
The Interrupt Status of All Instruction Dispatchers (ISA) is the logical OR of bits ISD3-ISDO.
This bit represents the state of the Interrupt pin of the C3 document. Writing one to this flag
has the same effect as writing one in all ISD3-ISDO.
Bit 19 ISA
Description
1’b1
At least one Instruction Dispatcher is requesting an Interrupt.
1’b0
(Clearing conditions) The Interrupt Status (IS) of Instruction
Dispatcher can be cleared writing one to this flag. Writing zero
has no effect.
Bit 18 - Clear interrupt status on read (CISR)
If the Clear Interrupt Status on Read bit (CISR) is set, clearing of Interrupt States is
performed by reading the Status and Control Register of the System (SYS_SCR). The
Status and Control Register of Instruction Dispatchers (ID_SCR) is not affected by this bit.
Bit 18 CISR
Description
1’b1
Reading SYS_SCR dears Interrupt States of all Instruction
Dispatchers.
1’b0
Do not clear Interrupt States on SYS_SCR read.
Bit 17 - Big endian (BEND)
Not implemented. This bit should be set to zero.
Doc ID 018672 Rev 1
365/844
AS_Cryptographic co-processor (C3)
RM0082
Bit 16 - Asynchronous master reset (ARST)
The whole C3 can be reset using this bit. The reset is done asynchronously in Hardware
thus guaranteeing a well known state after its execution. A special Hardware block takes
care of correct timings for the reset sequence. It takes about 6 clock cycles for the Hardware
reset. The Internal Memory may not be cleared.
Bit 16 ARST
Description
1’b1
Reset the whole C3.
1’b0
(Clearing conditions) This bit is cleared as a consequence of
the reset, so it is always read zero. Writing zero has no effect.
Bit 15 to 0 - Channel n status (CnS)
The status of each Channel is mirrored in these bits. These bits are the same ones as found
in the Instruction Dispatcher Status and Control Register (ID_SCR). See the Instruction
Dispatcher document section for more details. To know the status of the other 8 Channels
(Channels 8 to 15) you must use the Channel Status Register (SYS_STR).
Status and control register (SYS_SCR)
366/844
Bit
31
30
29
28
27
26
25
24
Symbol
C15SH
C15SL
C14SH
C14SL
C13SH
C13SL
C12SH
C12SL
Initial Value
0 or 1
0
0 or 1
0
0 or 1
0
0 or 1
0
Type
RO
RO
RO
RO
RO
RO
RO
RO
Bit
23
22
21
20
19
18
17
16
Symbol
C11SH
C11SL
C10SH
C10SL
C9SH
C9SL
C8SH
C8SL
Initial Value
0 or 1
0
0 or 1
0
0 or 1
0
0 or 1
0
Type
RO
RO
RO
RO
RO
RO
RO
RO
Bit
15
14
13
12
11
10
9
8
Symbol
C7SH
C7SL
C6SH
C6SL
C5SH
C5SL
C4SH
C4SL
Initial Value
0 or 1
0
0 or 1
0
0 or 1
0
0 or 1
0
Type
RO
RO
RO
RO
RO
RO
RO
RO
Bit
7
6
5
4
3
2
1
0
Symbol
C3SH
C3SL
C2SH
C2SL
C1SH
C1SL
C0SH
C0SL
Initial Value
0 or 1
0
0 or 1
0
0 or 1
0
0 or 1
0
Type
RO
RO
RO
RO
RO
RO
RO
RO
Doc ID 018672 Rev 1
RM0082
AS_Cryptographic co-processor (C3)
Bit 31 to 0 - Channel n status (CnS)
The status of each Channel is mirrored in these bits. The lower 16 bits (bits 15 to 0) are the
same ones as found in the Instruction Dispatcher Status and Control Register (ID_SCR)
and in the System Status and Control Register (SYS_SCR). See the Instruction Dispatcher
registers description (section 3) for more details. The upper 16 bits (bits 31 to 16) represents
the status of Channels 8 to 15. Using this register is the only way to know the status of
Channels 8 to 15.
Hi Bit CnSH
LoBit CnSL
Description
0
0
Not Present: This Channel does not exist in Hardware.
1
0
Idle: The Channel is idle and instructions can be dispatched to it.
1
1
Busy: The Channel is executing instructions dispatched by an
Instruction Dispatcher.
0
1
Error: The Channel is in error state, use Channel registers to know
the cause.
Hardware Version and Revision Registers (SYS_VER)
The Hardware Version and Revision Register (SYS_VER) contain the RTL source version
from which the Hardware was generated.
Bit
31
30
29
28
27
26
25
24
Symbol
V7
V6
V5
V4
V3
V2
V1
V0
Initial Value
0
0
0
0
0
0
1
1
Type
RO
RO
RO
RO
RO
RO
RO
RO
Bit
23
22
21
20
19
18
17
16
Symbol
R7
R6
R5
R4
R3
R2
R1
R0
Initial Value
R7
R7
R7
R7
R7
R7
R7
R7
Type
RO
RO
RO
RO
RO
RO
RO
RO
Bit
15
14
13
12
11
10
9
8
Symbol
S15
S14
S13
S12
S11
S10
S9
S8
Initial Value
S15
S14
S13
S12
S11
S10
S9
S8
Type
RO
RO
RO
RO
RO
RO
RO
RO
Bit
7
6
5
4
3
2
1
0
Symbol
S7
S6
S5
S4
S3
S2
S1
S0
Doc ID 018672 Rev 1
367/844
AS_Cryptographic co-processor (C3)
RM0082
Bit
7
6
5
4
3
2
1
0
Initial Value
S7
S6
S5
S4
S3
S2
S1
S0
Type
RO
RO
RO
RO
RO
RO
RO
RO
Bit 31 to 24 - Hardware Version
Bits V7-V0 represents the Version. This is always 3 (the v3 part in C3v3).
Bit 23 to 16 - Hardware Revision
Bits R7-R0 represents the RTL Revision.
Bit 15 to 0 - Hardware Sub-revision
Bits S15-S0 represents the RTL Sub-revision. For example the version of a C3v3 RTL
source tree 3.1.5 is identified by Vn set to 3, Rn set to 1 and Sn set to 5.
Hardware ID Register (SYS_HWID)
The Hardware ID register contains the Identifier of the Hardware. The Hardware ID has no
bit-field structure: the value is a mere index in a database table. There is currently no
maintained Hardware IDs Table. There are however a bunch of reserved Hardware IDs:
21.6.5
HWID
Usage
32’h0000_0000
Illegal Value
32’h1234_5678
Endianess Test
32’hFFFF_xxxx
Prototype on Programamble Logic
Master interface register (C3_HIF)
The Master Interface (HIF) interfaces Channels and Instruction Dispatchers (ID) to the
Initiator Bus and to an Internal Memory (IM). The purpose of the HIF is to allow read and
write accesses generated by Channels and Instruction Dispatchers to be transferred to an
Initiator Bus or to the Internal Memory. An arbiter in the HIF prevents data access collisions
from occurring. ID0 has the highest priority to perform accesses on this block followed in
order by ID1 to ID3 and Channels #0 to #15 (lowest priority). Read Transfers have higher
priority than Write Transfers.
The HIF is able to route requests to an internal Memory instead of the Bus if this Memory is
enabled (using a configuration bit in HIF_MCR). The maximum size of the Internal Memory
is 64 KB and is always 32 bit wide.
HIF is also able to route requests to a Byte Bucket if this is enabled (using a configuration bit
in HIF_NCR).
Transactions can simultaneously occur on the Bus, on the Internal Memory and on the Byte
Bucket. A Base Address for transactions that must target the Internal Memory or the Byte
Bucket instead of the Bus must be programmed in the HIF prior to utilizing the Internal
Memory.
Write transaction requests coming from IDs or Channels that are within an address window
of 64 KB starting from the programmed Byte Bucket Base Address (HIF_NBAR) will be
routed to the Byte Bucket. That is, every thing written to this address window is thrown away.
368/844
Doc ID 018672 Rev 1
RM0082
AS_Cryptographic co-processor (C3)
Read transactions from this address window are not affected by the Byte Bucket: they are
normally routed either to the Internal Memory or to the Bus.
Transaction requests coming from IDs or Channels that are within an address window of 64
KB starting from the programmed Memory Base Address (HIF_MBAR) will be routed to the
Internal Memory. Higher addresses of the internal Memory window are aliased if the Internal
Memory is smaller than 64 KB.
The Byte Bucket has priority if both the Byte Bucket Base Address and the Memory Base
Address are programmed with the same addresses.
A burst transaction always completes on the initial target even if addresses span two
different targets.
The Move Channel (move_cnl) can be used to transfer data to/from the Internal Memory
from/to the Bus and vice versa. Internal Memory content is undefined at startup or after an
asynchronous master reset.
The other way to access the internal Memory contents is making transfers to the C3 AHB
Slave Interface. There are two different methods to achieve this: mapping a 512 Bytes page
of the Internal Memory into AHB address space (HIF_MP) and/or using a pair of Address
and Data Registers (HIF_MAAR and HIF_MADR) to access single locations.
The internal Memory can be accessed by an ID or Channel and simultaneously from the
AHB Slave Interface.
21.6.6
Register configuration
Table 313. contains the AHB mapped registers for the Master Interface (HIF).
Table 313. AHB mapped registers for Master Interface (HIF)
Symbol
Name
Type
Initial Value
Address
HIF_MP
Memory Page
RW
-
0x000 to 0x1FF
HIF_MSIZE
Memory Size in
Bytes
RO
MSIZE
0x300
HIF_MBAR
Memory Base
Address Register
R/W
32’h0
0x304
HIF_MCR
Memory Control
Register
R/W
32’h0
0x308
HIF_MPBAR
Memory Page
Base Address
Register
R/W
32’h0
0x30C
HIF_MAAR
Memory Access
Address Register
R/W
32’h0
0x310
HIF_MADR
Memory Access
Data Register
R/W
-
0x314
HIF_NBAR
Byte Bucket Base
Address Register
R/W
32’h0
0x344
HIF_NCR
Byte Bucket
Control Register
R/W
32’h0
0x348
Doc ID 018672 Rev 1
369/844
AS_Cryptographic co-processor (C3)
RM0082
Zero is read from undefined locations, writing has no effect.
21.6.7
Register Description
21.6.8
Memory page (HIF_MP)
A 512 Bytes page of the Internal Memory is mapped in the Memory Page address range
(HIF_MP, 0x000 to 0x1FF). The page number to be mapped is programmed using the
Memory Page Base Address Register (HIF_MPBAR). AHB Reads and Writes to the C3
Slave Interface in this address space leads to Internal Memory access.
21.6.9
Memory size register (HIF_MSIZE)
The content of this register represents the size of the internal Memory in Bytes. If an internal
Memory does not exist in Hardware, this register will be zero. This is a way for the Software
to know if an internal Memory is there and what its size is. The maximum memory size is
64KB so the maximum value of MSIZE is 0x10000. The lower 2 bits of MSIZE are always
zero (only 32 bit wide memories are supported).
370/844
Bit
31
30
29
28
27
26
25
24
Symbol
-
-
-
-
-
-
-
-
Initial Value
0
0
0
0
0
0
0
0
Type
RO
RO
RO
RO
RO
RO
RO
RO
Bit
23
22
21
20
19
18
17
16
Symbol
-
-
-
-
-
-
-
S16
Initial Value
0
0
0
0
0
0
0
S16
Type
RO
RO
RO
RO
RO
RO
RO
RO
Bit
15
14
13
12
11
10
9
8
Symbol
S15
S14
S13
S12
S11
S10
S9
S8
Initial Value
S15
S14
S13
S12
S11
S10
S9
S8
Type
RO
RO
RO
RO
RO
RO
RO
RO
Bit
7
6
5
4
3
2
1
0
Symbol
S7
S6
S5
S4
S3
S2
-
-
Initial Value
S7
S6
S5
S4
S3
S2
-
-
Type
RO
RO
RO
RO
RO
RO
RO
RO
Doc ID 018672 Rev 1
RM0082
21.6.10
AS_Cryptographic co-processor (C3)
Memory base address register (HIF_MBAR)
The Base Address of the Internal Memory can be programmed to any multiple of 64 KB. Bits
31-16 of MBAR are used for this. Channel and Instruction Dispatcher transactions that fall
within a window of 64 KB starting from MBAR are then routed to the Internal Memory (if
enabled). The Internal Memory Base Address can be changed at any time but behavior of
the active transactions done in this range is undefined. The Byte Bucket has priority if its
Base Address (NBAR) is programmed with the same value as MBAR.
21.6.11
Bit
31
30
29
28
27
26
25
24
Symbol
B31
B30
B29
B28
B27
B26
B25
B24
Initial Value
0
0
0
0
0
0
0
0
Type
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
Bit
23
22
21
20
19
18
17
16
Symbol
B23
B22
B21
B20
B19
B18
B17
B16
Initial Value
0
0
0
0
0
0
0
0
Type
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
Bit
15
14
13
12
11
10
9
8
Symbol
-
-
-
-
-
-
-
-
Initial Value
0
0
0
0
0
0
0
0
Type
RO
RO
RO
RO
RO
RO
RO
RO
Bit
7
6
5
4
3
2
1
0
Symbol
-
-
-
-
-
-
-
-
Initial Value
0
0
0
0
0
0
0
0
Type
RO
RO
RO
RO
RO
RO
RO
RO
Memory control register (HIF_MCAR)
The Internal Memory must be enabled to allow Channels and Instruction Dispatchers to
access it. This is done using the Enable Memory Mapping bit (EMM). The correct procedure
for the Software to enable the Internal Memory is to first program its base address using
HIF_MBAR and then enable it by setting the EMM bit of HIF_MCR. The Internal Memory
can be enabled or disabled at any time but the behaviour of the active transactions done in
this range is undefined.
Normally, when using the Address and Data registers pair (HIF_MAAR and HIF_MDAR) to
access Internal Memory locations from AHB, the Address register is auto incremented. To
disable this feature Disable Auto Increment on Read and Disable Auto Increment Write bits
(DAIR and DAIW) are offered.
Doc ID 018672 Rev 1
371/844
AS_Cryptographic co-processor (C3)
RM0082
Bit
31
30
29
28
27
26
25
24
Symbol
res
res
res
res
res
res
res
res
Initial Value
-
-
-
-
-
-
-
-
Type
-
-
-
-
-
-
-
-
Bit
23
22
21
20
19
18
17
16
Symbol
res
res
res
res
res
res
DAIR
DAIW
Initial Value
-
-
-
-
-
-
0
0
Type
-
-
-
-
-
-
R/W
R/W
Bit
15
14
13
12
11
10
9
8
Symbol
res
res
res
res
res
res
res
res
Initial Value
-
-
-
-
-
-
-
-
Type
-
-
-
-
-
-
-
-
Bit
7
6
5
4
3
2
1
0
Symbol
res
res
res
res
res
res
res
BMM
Initial Value
-
-
-
-
-
-
-
0
Type
-
-
-
-
-
-
-
R/W
●
Bit 31 to 18, 15 to 1 - Reserved
These bits are reserved and should be set to zero.
Bit 17 - Disable Auto Increment on Read (DAIR)
Bit 17
DAIR
372/844
Description
1’b0
Memory Access Address Register (HIF_MAAR) is auto
incremented when an Internal Memory location is read from
AHB using the Memory Access Data Register (HIF_MADR).
1’b1
Memory Access Address Register (HIF_MAAR) auto increment
is disabled on HIF_MADR reads.
Doc ID 018672 Rev 1
RM0082
AS_Cryptographic co-processor (C3)
Bit 16 - Disable Auto Increment on Write (DAIW)
Bit 16
Description
DAIR
1’b0
Memory Access Address Register (HIF_MAAR) is auto
incremented when an Internal Memory location is read from
AHB using the Memory Access Data Register (HIF_MADR).
1’b1
Memory Access Address Register (HIF_MAAR) auto increment
is disabled on HIF_MADR writes.
Bit 0 - Enable Memory Mapping (EMM)
Bit 0
Description
EMM
21.6.12
1’b0
Disable the Internal Memory. Transactions from Channels and
Instruction Dispatchers go either to the Bus or the Byte Bucket
(if enabled). AHB slave accesses to the Internal Memory are
not affected by this bit they are always enabled.
1’b1
Enable the Internal Memory.
Memory page base address register (HIF_MPBAR)
Bit
31
30
29
28
27
26
25
24
Symbol
B31
B30
B29
B28
B27
B26
B25
B24
Initial Value
0
0
0
0
0
0
0
0
Type
RO
RO
RO
RO
RO
RO
RO
RO
Bit
23
22
21
20
19
18
17
16
Symbol
B23
B22
B21
B20
B19
B18
B17
B16
Initial Value
0
0
0
0
0
0
0
0
Type
RO
RO
RO
RO
RO
RO
RO
RO
Bit
15
14
13
12
11
10
9
8
Symbol
P15
P14
P13
P12
P11
P10
P9
-
Initial Value
0
0
0
0
0
0
0
0
Type
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
Bit
7
6
5
4
3
2
1
0
Symbol
-
-
-
-
-
-
-
-
Doc ID 018672 Rev 1
373/844
AS_Cryptographic co-processor (C3)
RM0082
Bit
7
6
5
4
3
2
1
0
Initial Value
0
0
0
0
0
0
0
0
Type
RO
RO
RO
RO
RO
RO
RO
RO
A 512 Bytes page of the Internal Memory is mapped on the AHB address space HIF_MP
(0x000 to 0x01FF). The page is selected using bits P15-P9 of this registers. Bits B31-B16
(read-only) are those programmed in the Internal Memory Base Address Register
(HIF_MBAR).
21.6.13
Memory access address register (HIF_MAAR)
Bit
31
30
29
28
27
26
25
24
Symbol
B31
B30
B29
B28
B27
B26
B25
B24
Initial Value
0
0
0
0
0
0
0
0
Type
RO
RO
RO
RO
RO
RO
RO
RO
Bit
23
22
21
20
19
18
17
16
Symbol
B23
B22
B21
B20
B19
B18
B17
B16
Initial Value
0
0
0
0
0
0
0
0
Type
RO
RO
RO
RO
RO
RO
RO
RO
Bit
15
14
13
12
11
10
9
8
Symbol
A15
A14
A13
A12
A11
A10
A9
A8
Initial Value
0
0
0
0
0
0
0
0
Type
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
Bit
7
6
5
4
3
2
1
0
Symbol
A7
A6
A5
A4
A3
A2
-
-
Initial Value
0
0
0
0
0
0
0
0
Type
R/W
R/W
R/W
R/W
R/W
R/W
RO
RO
AHB slave accesses to the Memory Access Data Register (HIF_MADR) targets the Internal
Memory location programmed in the Memory Access Address Register (HIF_MAAR). Bits
A15-A2 are used for this. Bits B31-B16 (read only) are those programmed in the Internal
Memory Base Address Register (HIF_MBAR). Bits 1-0 are always zero since only aligned
32 bit transactions are supported.
374/844
Doc ID 018672 Rev 1
RM0082
21.6.14
AS_Cryptographic co-processor (C3)
Memory access data register (HIF_MADR)
The Internal Memory location which address is programmed in the Memory Access Address
Register (HIF_MAAR) can be accessed reading and writing the Memory Access Data
Register (HIF_MADR). By default, when reading or writing the Memory Access Data
Register, the Memory Access Address Register is auto incremented. This feature can be
disabled setting bits Disable Auto Increment on Read (DAIR) and/or Disable Auto Increment
on Write (DAIW) in the Memory Control Register (HIF_MCR).
21.6.15
Byte bucket base address register (HIF_NBAR)
The Base Address of the Byte Bucket can be programmed to any multiple of 64 KB. Bits 3116 of NBAR are used for this. Channel and Instruction Dispatcher write transactions that fall
within a window of 64 KB starting from NBAR are then discarded by the Byte Bucket (if
enabled). The Byte Bucket Base Address can be changed at any time but the behaviour of
the active transactions done in this range is undefined. The Byte Bucket has priority if its
Base Address (NBAR) is programmed with the same value as the Memory Base Address
(MBAR). Read transactions are ignored by the Byte Bucket and are always routed either to
the Bus or the Memory.
Bit
31
30
29
28
27
26
25
24
Symbol
B31
B30
B29
B28
B27
B26
B25
B24
Initial Value
0
0
0
0
0
0
0
0
Type
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
Bit
23
22
21
20
19
18
17
16
Symbol
B23
B22
B21
B20
B19
B18
B17
B16
Initial Value
0
0
0
0
0
0
0
0
Type
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
Bit
15
14
13
12
11
10
9
8
Symbol
-
-
-
-
-
-
-
-
Initial Value
0
0
0
0
0
0
0
0
Type
RO
RO
RO
RO
RO
RO
RO
RO
Bit
7
6
5
4
3
2
1
0
Symbol
-
-
-
-
-
-
-
-
Initial Value
0
0
0
0
0
0
0
0
Type
RO
RO
RO
RO
RO
RO
RO
RO
Doc ID 018672 Rev 1
375/844
AS_Cryptographic co-processor (C3)
21.6.16
RM0082
Byte bucket control register (HIF_NCR)
The Byte Bucket must be enabled to allow Channels and Instruction Dispatchers to discard
data using it. This is done using the Enable Byte Bucket Mapping bit (ENM). The correct
procedure for the Software to enable the Byte Bucket is to first program its base address
using HIF_NBAR and then enable it by setting the ENM bit of HIF_NCR. The Byte Bucket
can be enabled or disabled at any time but the behaviour of the active transactions done in
this range is undefined.
Bit
31
30
29
28
27
26
25
24
Symbol
res
res
res
res
res
res
res
res
Initial Value
-
-
-
-
-
-
-
-
Type
-
-
-
-
-
-
-
-
Bit
23
22
21
20
19
18
17
16
Symbol
res
res
res
res
res
res
res
res
Initial Value
-
-
-
-
-
-
-
-
Type
-
-
-
-
-
-
-
-
Bit
15
14
13
12
11
10
9
8
Symbol
res
res
res
res
res
res
res
res
Initial Value
-
-
-
-
-
-
-
-
Type
-
-
-
-
-
-
-
-
Bit
7
6
5
4
3
2
1
0
Symbol
res
res
res
res
res
res
res
ENM
Initial Value
-
-
-
-
-
-
-
0
Type
-
-
-
-
-
-
-
R/W
●
Bit 31 to 1 - Reserved
These bits are reserved and should be set to zero.
●
Bit 0 - Enable Byte Bucket Mapping (ENM)
Bit 17
DAIR
376/844
Description
1’b0
Disable the Byte Bucket. Transactions from Channels and
Instruction Dispatchers go either to the Bus or the Memory (if
enabled).
1’b1
Enable the Byte Bucket.
Doc ID 018672 Rev 1
RM0082
21.6.17
AS_Cryptographic co-processor (C3)
Instruction dispatcher registers (C3_IDn)
Up to four Instruction Dispatchers can exist in Hardware. Each Instruction Dispatcher has its
own set of registers.
Register Configuration
Table 314. summarizes AHB mapped registers for an Instruction Dispatcher (ID).
Table 314. AHB mapped registers for an Instruction Dispatcher (ID)
Symbol
Name
Type
Initial Value
Address
ID_SCR
Status and Control Register
R/W
-
0x000
ID_IP
Instruction Pointer
R/W
32’h0
0x010
ID_IR0
Instruction Word 0 Register
RO
32’h0
0x020
ID_IR1
Instruction Word 1 Register
RO
32’h0
0x024
ID_IR2
Instruction Word 2 Register
RO
32’h0
0x028
ID_IR3
Instruction Word 3 Register
RO
32’h0
0x02C
Status and Control Register (ID_SCR)
Bit
31
30
29
28
27
26
25
24
Symbol
IDSH
IDSL
BERR
res
res
CERR
CBSY
CDNX
Initial Value
0 or 1
0
0
-
-
0
0
0
Type
RO
RO
RO
-
-
RO
RO
RO
Bit
23
22
21
20
19
18
17
16
Symbol
IS
IES
IER
SSC
SSE
res
IGR
RST
Initial Value
0
0
0
0
0
-
0
0
Type
R/(W)
R/W
R/W
R/W
R/W
-
R/W
R/(W)
Bit
15
14
13
12
11
10
9
8
Symbol
C7SH
C7SL
C6SH
C6SL
C5SH
C5SL
C4SH
C4SL
Initial Value
0 or 1
0
0 or 1
0
0 or 1
0
0 or 1
0
Type
RO
RO
RO
RO
RO
RO
RO
RO
Bit
7
6
5
4
3
2
1
0
Symbol
C3SH
C3SL
C2SH
C2SL
C1SH
C1SL
C0SH
C0SL
Initial Value
0 or 1
0
0 or 1
0
0 or 1
0
0 or 1
0
Type
RO
RO
RO
RO
RO
RO
RO
RO
Doc ID 018672 Rev 1
377/844
AS_Cryptographic co-processor (C3)
RM0082
Bit 31 to 30 - Instruction Dispatcher Status (IDS)
The Instruction Dispatcher Status bits (IDSn) indicates the state in which the addressed
Instruction Dispatcher (ID) is. The Software can use these bits at system startup to know if
an ID is present. In normal operation mode the Software uses these bits to know the reason
of an Interrupt or to know when a program execution has finished if in polling mode.
Bit 31
Bit 31
IDSH
IDSH
0
0
Not Present: This Instruction Dispatcher does not exist in Hardware.
1
0
Idle: The Instruction Dispatcher has successfully terminated the execution
of a program and is ready to accept a new Instruction Pointer.
1
1
Run: The Instruction Dispatcher is executing program.
0
1
Error: The Instruction Dispatcher has stopped the execution of a program
because of an error. Error cause can be analyzed using bits 29-24 of
ID_SCR.
Description
The Instruction Dispatcher exits the Error state in three ways: resetting the Instruction
Dispatcher (the ID goes to Idle state), launching a new program (the ID goes to Run state)
or requesting an asynchronous master reset.
Bit 29 - Bus Error (BERR)
Every module attached to the HIF receives its own Bus error signal. This signal is set by the
HIF if a bus error condition is detected for a Bus transaction initiated by the corresponding
module.
Bit 29 DERR
Description
1’b0
The HIF reported a bus error condition for a transaction initiated
by this Instruction Dispatcher.
1’b1
(Cleaning Conditions) This flag is cleared in three ways:
resetting the Instruction Dispatcher, launching a new program
or requesting an asynchronous master reset.
Bit 28 to 27 - Reserved
These bits are reserved and should be set to zero.
Bit 26 - Channel Error (CERR)
Channels report their states to each Instruction Dispatcher. When the ID dispatches an
instruction to a Channel that is in error state or if the Channel goes to error state when it
executes the received instruction, the Instruction Dispatcher goes in turn in error state and
this bit is set.
378/844
Doc ID 018672 Rev 1
RM0082
AS_Cryptographic co-processor (C3)
Bit 26 DERR
Description
1’b1
The Channel to which the current instruction was addressed is
in error state or went to error state executing the instruction.
1’b0
(Cleaning Conditions) This flag is cleared in three ways:
resetting the Instruction Dispatcher, launching a new program
or requesting an asynchronous master reset.
Bit 25 - Channel Busy (CBSY)
Bit 25 CBSY
Description
1’b1
The Channel to which the current instruction was addressed is
busy. It is already running under control of another Instruction
Dispatcher.
1’b0
(Cleaning Conditions) This flag is cleared in three ways:
resetting the Instruction Dispatcher, launching a new program
or requesting an asynchronous master reset.
Bit 24 - Channel Does Not Exist (CDNX)
Bit 24 CDNX
Description
1’b1
The Channel to which the current instruction was addressed
does not exist in Hardware.
1’b0
(Cleaning Conditions) This flag is cleared in three ways:
resetting the Instruction Dispatcher, launching a new program
or requesting an asynchronous master reset.
Bit 23 - Interrupt Status (IS)
The Interrupt Status (IS) bit reflects the status of the Interrupt port of the Instruction
Dispatcher. Interrupt ports of every Instruction Dispatcher are “ORed” together to generate
the final Interrupt signal which drives the Interrupt Pin of the C3 component.
Bit 23 IS
Description
1’b1
The Instruction Dispatcher is requesting an Interrupt because
IES and / or IER are set and one of their corresponding event
occured.
1’b0
(Cleaning Conditions) This flag is cleared writing one to it,
resetting the Instruction Dispatcher or requesting an
asynchronous master reset. Launching a new program will not
clear this flag. Writing zero has no effect.
Doc ID 018672 Rev 1
379/844
AS_Cryptographic co-processor (C3)
RM0082
Bit 22 - Interrupt Enable on Stop (IES)
Bit 22 IES
Description
1’b1
The Instruction Dispatcher generates an Interrupt on normal
termination of a program execution (when the stop instruction
executes).
1’b0
Do not generate Interrupt. Cleaning this bit does not clear
pending interrupts.
Bit 21 - Interrupt Enable on Error (IER)
Bit 21 IER
Description
1’b1
The Instruction Dispatcher generates an Interrupt when a
program encounters an error. The error cause can be analyzed
through bits 29-24 of ID_SCR.
1’b0
Do not generate Interrupt. Cleaning this bit does not clear
pending Interrupts.
Bit 20 - Single Step Command (SSC)
If the Instruction Dispatcher is put in Single Step Mode using bit SSE of ID_SCR it will await
for SSC to be set before executing/dispatching the next instruction. In this context, a Single
Step is defined as the execution/dispatching of the instruction and its argument. The first
instruction is not executed/dispatched launching a new program when SSE is set.
Bit 20 SSC
Description
1’b1
Writing one to this flag in Single Step Mode (SSE is set)
executes / dispatches the next instruction.
1’b0
(Cleaning Conditions) This bit is cleared when the execution of
the current single instruction terminates. Writing zero has no
effect.
Bit 19 - Single Step Enable (SSE)
Bit 19 SSE
Description
1’b1
Enable Single Step Mode. This bit can be changed anytime.
1’b0
Disable Single Step Mode. Exiting Single Step Mode clears also
SSC.
Bit 18 - Reserved
This bit is reserved and should be set to zero.
380/844
Doc ID 018672 Rev 1
RM0082
AS_Cryptographic co-processor (C3)
Bit 17 - Ignore Errors (IGR)
Not implemented. This bit should be set to zero.
Bit 16 - Reset Command (RST)
Each Instruction Dispatcher can be reset independently from each other using this bit. In
Hardware the reset is done synchronously and not all registers are affected by it. The
following are the effects of a synchronous reset:
●
bits 29-16 of SCR are all cleared,
●
the Instruction Dispatcher goes in Idle state eventually aborting program execution and
bits 31-30 (IDS) of SCR are set to Idle.
Bit 16 RST
Description
1’b1
Reset this Instruction Dispatcher.
1’b0
(Cleaning Conditions) This bit is cleared as a consequence of
the reset,. so it is always read zero. Writing zero has no effect.
Bit 15 to 0 - Channel n Status (CnS)
All sixteen Channels report their state to each Instruction Dispatcher. The status of the first
eight Channels (Channel 0 to 7) is mirrored into these bits. A Channel status is encoded into
two bits of the SCR: status for Channel #0 is in bits 1-0, for Channel #1 in bits 3-2 and so on
till Channel #16 in bits 31-30. You must use the System Channel Status Register
(SYS_STR) to know the status of all 16 Channels.
Hi Bit
Lo Bit
CnSH
CnSL
0
0
Not Present: This Channel does not exist in Hardware.
1
0
Idle: The Channel is Idle and instructions can be dispatched to it.
1
1
Busy: The Channel is executing instructions dispatched by an
Instruction Dispatcher.
0
1
Error: The Channel is in error state, use Channel registers to know the
cause.
Description
Instruction Pointer Register (ID_IP)
The Instruction Pointer Register is used to store the pointer of the first instruction to be
fetched and to launch program execution. It can be read back at any time (particularly in
Single Step Mode) to know the address of the next instruction that will be executed. Effects
of changing Instruction Pointer while a program is running are unspecified. The Instruction
Pointer must be 32 bit aligned (the lower two bits are ignored and are always read zero).
When an Instruction Pointer is written the Instruction Dispatcher goes in run state, begins
filling its Instruction Queue and as soon as the first instruction is available it
executes/dispatches it.
Doc ID 018672 Rev 1
381/844
AS_Cryptographic co-processor (C3)
RM0082
Instruction Word 0-3 Register (ID_IRn)
Instruction Word Registers are used to read back the OP Code of the current executing
instruction. The instruction can be 1 to 4 words long. IR1-3 contents are undefined for 1
word instructions, IR2-3 contents are undefined for 2 word instructions and, similarly, IR3 is
undefined for 3 word instructions. These register are used mainly in Single Step Mode to
read back the last executed instruction.
21.6.18
Channel registers (C3_CHn)
Each Channel has its own specific set of registers. See the Channel User Manual to know
more about them. There is however one register that is mandatory to each Channel: the
Channel Identity Register (CH_ID). This read-only register is mapped in a fixed location and
it is typically used by the SW (at system startup) to know which Channels are available in
the C3.
Register Configuration
Table 315. summarizes AHB mapped registers for a Channel (CH).
Table 315. AHB mapped registers for Channel (CH)
Symbol
CH_ID
21.6.19
Name
Type
Initial Value
Address
Channel Specific
Registers
-
-
0x000-0x3FB
Channel ID
RO
CH_ID
0x3FC
Channel ID register (CH_ID)
The Channel ID register contains the Identifier of the Channel. The Software knows that a
Channel is not present reading zero from this register (or using the ID_SCR or the
SYS_SCR). The Channel ID has no bit-field structure: the value is a mere index in a
database table.
The database containing all the assigned IDs is provided in a separate document
[CH_ID_TABLE].
There is a unique 32 bit channel ID associated to a channel/version pair. In order to avoid
using an already allocated channel ID new channel developers should contact the C3
project team to obtain unique numbers for their channels. Such centralized allocation enable
maintaining interoperability between all channel libraries and the baseline C3 platform.
Before designing a new Channel please consider looking at this table to see if a Channel
that performs a similar function does not already exist.
21.7
Channel ID
Each Channel/Version is assigned a unique 32 bit Identifier that can be read in the Channel
ID register of each channel.
The upper 8 bit of the Channel ID are reserved for specific organizations. In order to
manage the situation in which different versions of the same channel are developed by
different company organizations the organization specific bit indicates which organization is
382/844
Doc ID 018672 Rev 1
RM0082
AS_Cryptographic co-processor (C3)
in charge of maintaining the corresponding version of the channel. In the device, the bit
mask to be used for retrieving this ID is 0x8000_0000.
Table 316. Channel ID Table
Channel
No.
Channel Name Function
Type
Channel ID
0
EMPTY_CNL
No channel
-
-
1
DES_CNL
DES/3DES algorithm (ECB,
CBC modes)
Cryptography
0x00002000
2
AES_CNL
AES algorithm (ECB, CBC, CTR
Cryptography
modes)
0x00003000
3
UH_CNL
SHA-1/MD5 + HMAC algorithms Cryptography
0x00004002
4
EMPTY_CNL
No Channel
-
-
5
EMPTY_CNL
No Channel
-
-
6
EMPTY_CNL
No Channel
-
-
7
EMPTY_CNL
No Channel
-
-
21.8
DES channel
21.8.1
Overview
This Channel can compute DES and 3DES encryption and decryption in ECB and CBC
mode; executing C3 Flow type DES [START/APPEND] instruction.
21.8.2
Instruction set
The DES Channel executes DES [START/APPEND] ENCRYPT and DES [START/APPEND]
DECRYPT instructions. Instructions that do not conform to the following bit encodings are
unknown to the DES Channel that will go in error state.
21.8.3
DES instructions
There are 2 different DES instructions:
●
DES START
●
DES APPEND
The first instruction is used for setting the operation parameters, such as the key and the
initialization vector. The second one is used for passing the data to encrypt or decrypt.
21.8.4
DES START instruction
The DES START instruction can be applied with 2 different modes of operation:
●
ECB
●
CBC
Doc ID 018672 Rev 1
383/844
AS_Cryptographic co-processor (C3)
21.8.5
RM0082
ECB
The DES START ECB instruction is 2 words long. This instruction is used to set the key for
the following operations. The length of the key is encoded in the first instruction word, while
the second word represents the Source Address for the key.
Table 317. DES ECB start instruction bit encoding
W#
Bit Encoding
1
xxxx01ab 000x xxxx cccc cccc cccc cccc
2
(32 bit Source Address for the key)
Bit ‘a’ in the above table is used to set the algorithm to use:
Table 318. DES ECB bit ‘a’ encoding
Bit 25
a
Operation
0
DES
1
3DES
Bit ‘b’ in the above table is used to set the operation to perform:
Table 319. DES ECB bit ‘b’ encoding
Bit 24
b
Operation
0
Encryption
1
Decryption
Bits 15 to 0 in the first instruction word (cccc in the above table) represent the length in
Bytes of the key.
21.8.6
CBC
The DES START CBC instruction is 3 words long. This instruction is used to set the key and
the initialization vector for the following operations. The length of the key is encoded in the
first instruction word, the second word represents the Source Address for the key and the
third word represents the Source Address for the Initialization Vector.
Table 320. DES CBC START Instruction Bit Encoding
384/844
W#
Bit Encoding
1
xxxx 10ab 001x xxxx cccc cccc cccc cccc
2
32 bit Source Address for the key
3
32 bit Source Address for the IV
Doc ID 018672 Rev 1
RM0082
AS_Cryptographic co-processor (C3)
Bits ‘a’ and ‘b’ in the above table are used to set the algorithm and the operation to perform
and have the same encoding as in the ECB instruction. Bits 15 to 0 in the first instruction
word (cccc in the above table) represent the length in Bytes of the key.
21.8.7
DES APPEND instruction
The DES APPEND instruction can be applied with 3 different modes of operation:
21.8.8
●
ECB
●
CBC
ECB
The DES APPEND ECB instruction is 3 words long. This instruction is used for passing the
data to process (encrypt or decrypt). The length of the data to process is encoded in the first
instruction word, the second word represents the Source Address and the third word
represents the Destination Address.
Table 321. DES ECB APPEND Instruction bit encoding
W#
Bit Encoding
1
xxxx 10ab 100x xxxx cccc cccc cccc cccc
2
32 bit Source Address for the data
3
32 bit Destination Address for the data
Bit a in the above table is used to set the algorithm to use:
Bit 25
a
Operation
0
DES
1
3DES
Bit b in the above table is used to set the operation to perform:
Bit 25
b
Operation
0
Encryption
1
Decryption
Bits 15 to 0 in the first instruction word (cccc in the above table) represent the length in
Bytes of the data to be processed.
21.8.9
CBC
The DES APPEND CBC instruction is 3 words long. This instruction is used for passing the
data to process (encrypt or decrypt). The length of the data to process is encoded in the first
Doc ID 018672 Rev 1
385/844
AS_Cryptographic co-processor (C3)
RM0082
instruction word, the second word represents the Source Address and the third word
represents the Destination Address.
Table 322. DES CBC Append Instruction Bit Encoding
W#
Bit Encoding
1
xxxx 10ab 101x xxxx cccc cccc cccc cccc
2
32 bit Source Address for the data
3
32 bit Destination Address for the data
Bits ‘a’ and ‘b’ in the above table are used to set the algorithm and the operation to perform
and have the same encoding as in the ECB instruction (Table 318. and Table 319.). Bits 15
to 0 in the first instruction word (cccc in Table 322.) represent the length in Bytes of the key.
21.8.10
Register set
Table 323. DES registers map
Symbol
Name
DES_DATA_INOUT_HI
Type
Initial value
Address
Data input/output register #0 R/W
32’h0
0x000
DES_DATA_INOUT_LO
Data input/output register #1 R/W
32’h0
0x004
DES_FEEDBACK_HI
Feedback register #0
R/W
32’h0
0x008
DES_FEEDBACK_LO
Feedback register #1
R/W
32’h0
0x00C
DES_CONTROL_STATUS
Control and status register
R/(W) 32’h0
0x010
DES_KEY1_HI
Key register #0
R/W
32’h0
0x020
DES_KEY1_LO
Key register #1
R/W
32’h0
0x024
DES_KEY2_HI
Key register #2
R/W
32’h0
0x028
DES_KEY2_LO
Key register #3
R/W
32’h0
0x02C
DES_KEY3_HI
Key register #4
R/W
32’h0
0x030
DES_KEY3_LO
Key register #5
R/W
32’h0
0x034
DES_IR
Channel ID register
RO
32’h0
0x3FC
21.8.11
DES register description
Note:
Changing the register values while the DES Channel is executing an instruction may
produce wrong results and unexpected behaviors.
21.8.12
Data input/output registers (DES_DATAINOUT)
The same address refers to 2 different blocks of registers, depending on the operation (read
or write). The Data Input Registers contain the current data input to the DES Channel
(accessed using the write operation). The Data Output Registers contain the current data
output of the DES Channel (accessed using the read operation).
Note:
386/844
A read operation on these registers just after a write operation will not return the same value
previously written.
Doc ID 018672 Rev 1
RM0082
21.8.13
AS_Cryptographic co-processor (C3)
Feedback registers (DES_FEEDBACK)
The Feedback Registers contain the value that is added to the DES input for implementing
the selected mode of operation (it depends on the selected mode).
21.8.14
Control and status register (DES_CONTROL_STATUS)
Bit
31
30
29
28
27
26
25
24
Symbol
res
res
res
res
res
res
res
res
Initial Value
-
-
-
-
-
-
-
-
Type
-
-
-
-
-
-
-
-
Bit
23
22
21
20
19
18
17
16
Symbol
res
res
res
res
res
res
res
res
Initial Value
-
-
-
-
-
-
-
-
Type
-
-
-
-
-
-
-
-
Bit
15
14
13
12
11
10
9
8
Symbol
res
res
res
res
res
res
res
res
Initial Value
-
-
-
-
-
-
-
-
Type
-
-
-
-
-
-
-
-
Bit
7
6
5
4
3
2
1
0
Symbol
res
res
res
res
res
ED
MODE
ALGO
Initial Value
-
-
-
-
-
0
0
0
Type
-
-
-
-
-
R/W
R/W
R/W
●
Bits 31 to 3 - Reserved
These bits are reserved and should be written zero.
●
Bit 2 - Encryption/Decryption (ED)
This bit indicates the operation to perform (Encryption or Decryption).
Bit 2
Description
1’b0
Encryption
1’b1
Decryption
●
Bit 1 - Mode of operation (MODE)
This bit indicates the mode of operation (ECB or CBC).
Doc ID 018672 Rev 1
387/844
AS_Cryptographic co-processor (C3)
RM0082
Bit 1
Description
1’b0
ECB
1’b1
CBC
Bit 0 - Algorithm (ALGO)
This bit indicates the algorithm to use (DES or 3DES).
21.8.15
Bit 1
Description
1’b0
DES
1’b1
3DES
TKey registers (DES_KEY)
The Key Registers contain the key.
21.8.16
Channel ID (DES_ID)
The Channel ID register contains the Identifier of this version of the DES channel. The
Channel ID for this version of the DES channel is 0x0000_2000.
21.9
AES channel
21.9.1
Overview
This channel computes AES encryption and decryption in ECB, CTR and CBC mode;
executing C3 Flow type instruction set.
21.9.2
Instruction set
The AES Channel executes AES [START/APPEND] ENCRYPT and AES [START/APPEND]
DECRYPT instructions specified in the C3v3 flow type instruction set v2.1 document
[ISv2.1]. Instructions that do not conform to the following bit encodings or to [ISv2.1] are
unknown to the AES Channel that will go in error state.
21.9.3
AES instructions
There are 2 different AES instructions:
●
AES START
●
AES APPEND
The first instruction is used for setting the operation parameters, such as the key and the
initialization vector. The second one is used for passing the data to encrypt or decrypt.
388/844
Doc ID 018672 Rev 1
RM0082
21.9.4
AS_Cryptographic co-processor (C3)
AES START instruction
The AES START instruction can be applied with 3 different modes of operation:
21.9.5
●
ECB
●
CBC
●
CTR
ECB
The AES START ECB instruction is 2 words long. This instruction is used to set the key for
the following operations. The length of the key is encoded in the first instruction word, while
the second word represents the Source Address for the key.
Table 324. AES ECB START instruction bit encoding
W#
Bit Encoding
1
xxxx 01xa 000x xxxx cccc cccc cccc cccc
2
32 bit Source Address for the key
Bit ‘a’ in the above table is used to set the operation to perform:
Table 325. AES ECB Bit ‘a’ encoding
Bit #24 - a
Operation
0
DES
1
3DES
Bits 15 to 0 in the first instruction word (cccc in Table 322.) represent the length in Bytes of
the key.
21.9.6
CBC
The AES START CBC instruction is 3 words long. This instruction is used to set the key and
the initialization vector for the following operations. The length of the key is encoded in the
first instruction word, the second word represents the Source Address for the key and the
third word represents the Source Address for the Initialization Vector.
Table 326. AES CBC START instruction bit encoding
W#
Bit Encoding
1
xxxx 10xa 001x xxxx cccc cccc cccc cccc
2
32 bit Source Address for the key
3
32 bit Source Address for the IV
Bit ‘a’ in the above table is used to set the operation to perform and has the same encoding
as in the ECB instruction (Table 323.). Bits 15 to 0 in the first instruction word (cccc in
Table 326) represent the length in Bytes of the key.
Doc ID 018672 Rev 1
389/844
AS_Cryptographic co-processor (C3)
21.9.7
RM0082
CTR
The AES START CTR instruction is 3 words long. This instruction is used to set the key and
the initialization vector for the following operations. The length of the key is encoded in the
first instruction word, while the second word represents the Source Address for the key.
Table 327. AES CTR START instruction bit encoding
W#
Bit Encoding
1
xxxx 10xa 010x xxxx cccc cccc cccc cccc
2
32 bit Source Address for the key
3
32 bit Source Address for the IV
Bit ‘a’ in the above table is used to set the operation to perform and has the same encoding
as in the ECB instruction (Table 323. Bits 15 to 0 in the first instruction word (cccc in
Table 327) represent the length in Bytes of the key.
21.9.8
AES APPEND instruction
The AES APPEND instruction can be applied with 3 different modes of operation:
21.9.9
●
ECB
●
CBC
●
CTR
ECB
The AES APPEND ECB instruction is 3 words long. This instruction is used for passing the
data to process (encrypt or decrypt). The length of the data to process is encoded in the first
instruction word, the second word represents the Source Address and the third word
represents the Destination Address.
Table 328. AES ECB APPEND instruction bit encoding
W#
Bit Encoding
1
xxxx 10xa 100x xxxx cccc cccc cccc cccc
2
32 bit Source Address for the data
3
32 bit Destination Address for the data
Bit ‘a’ in the above table is used to set the operation to perform.
Bit 24
Description
a
Operation
0
Encryption
1
Decryption
Bits 15 to 0 in the first instruction word (cccc in Table 328) represent the length in Bytes of
the data to be processed.
390/844
Doc ID 018672 Rev 1
RM0082
21.9.10
AS_Cryptographic co-processor (C3)
CBC
The AES APPEND CBC instruction is 3 words long. This instruction is used for passing the
data to process (encrypt or decrypt). The length of the data to process is encoded in the first
instruction word, the second word represents the Source Address and the third word
represents the Destination Address.
Table 329. AES CBC APPEND instruction bit encoding
W#
Bit Encoding
1
xxxx 10xa 101x xxxx cccc cccc cccc cccc
2
32 bit Source Address for the data
3
32 bit Destination Address for the data
Bit ‘a’ in the above table is used to set the operation to perform and has the same encoding
as in the ECB instruction Table 323.. Bits 15 to 0 in the first instruction word (cccc in
Table 329) represent the length in Bytes of the key.
21.9.11
CTR
The AES APPEND CTR instruction is 3 words long. This instruction is used for passing the
data to process (encrypt or decrypt). The length of the data to process is encoded in the first
instruction word, the second word represents the Source Address and the third word
represents the Destination Address.Address.
Table 330. AES CTR APPEND instruction bit encoding
W#
Bit Encoding
1
xxxx 10xa 110x xxxx cccc cccc cccc cccc
2
32 bit Source Address for the data
3
32 bit Destination Address for the data
Bit ‘a’ in the above table is used to set the operation to perform and has the same encoding
as in the ECB instruction (Table 323.). Bits 15 to 0 in the first instruction word (cccc in Table
330.) represent the length in Bytes of the key.
21.10
Register set
21.10.1
Register configuration
The following table summarizes AHB mapped registers of the AES Channel connected to
Channel2 of C3.
.
Table 331. AES registers map
Symbol
Name
AES_DATA_INOUT0
AES_DATA_INOUT1
Initial value
Address
Data Input/output register #0 R/W
32’h0
0x000
Data Input/output register #1 R/W
32’h0
0x004
Doc ID 018672 Rev 1
Type
391/844
AS_Cryptographic co-processor (C3)
RM0082
Table 331. AES registers map (continued)
Symbol
Name
AES_DATA_INOUT2
Type
Initial value
Address
Data Input/output register #2 R/W
32’h0
0x008
AES_DATA_INOUT3
Data Input/output register #3 R/W
32’h0
0x00C
AES_FEEDBACK0
Feedback register #0
R/W
32’h0
0x010
AES_FEEDBACK1
Feedback register #1
R/W
32’h0
0x014
AES_FEEDBACK2
Feedback register #2
R/W
32’h0
0x018
AES_FEEDBACK3
Feedback register #3
R/W
32’h0
0x01C
AES_COUNTER0
Counter register #0
R/W
32’h0
0x020
AES_COUNTER1
Counter register #1
R/W
32’h0
0x024
AES_COUNTER2
Counter register #2
R/W
32’h0
0x028
AES_COUNTER3
Counter register #3
R/W
32’h0
0x02C
AES_CONTROL_STATUS
Control and status register
R/(W) 32’h0
0x040
AES_KEY0
Key register #0
R/W
32’h0
0x050
AES_KEY1
Key register #1
R/W
32’h0
0x054
AES_KEY2
Key register #2
R/W
32’h0
0x058
AES_KEY3
Key register #3
R/W
32’h0
0x05C
AES_KEY4
Key register #4
R/W
32’h0
0x060
AES_KEY5
Key register #5
R/W
32’h0
0x064
AES_KEY6
Key register #6
R/W
32’h0
0x068
AES_KEY7
Key register #7
R/W
32’h0
0x06C
AES_IR
Channel ID register
RO
32’h0
0x3FC
Note:
Changing the register values while the AES Channel is executing an instruction may
produce wrong results and unexpected behaviors.
21.10.2
Data input/output registers (AES_DATAIN_OUT)
The same address refers to 2 different blocks of registers, depending on the operation (read
or write).
The Data Input Registers contain the current data input to the AES Channel (accessed
using the write operation).
The Data Output Registers contain the current data output of the AES Channel (accessed
using the read operation).
Note:
A read operation on these registers just after a write operation will not return the same value
previously written.
21.10.3
Feedback registers (AES_FEEDBACK)
The Feedback Registers contain the value that is added to the AES input for implementing
the selected mode of operation (it depends on the selected mode).
392/844
Doc ID 018672 Rev 1
RM0082
21.10.4
AS_Cryptographic co-processor (C3)
Counter registers (AES_COUNTER)
The Counter Registers contain the counter used in CTR mode (that will be automatically
incremented).
21.10.5
Control and status register (AES_CONTROL_STATUS)
Bit
31
30
29
Symbol
ED
KEYSZ1
Initial Value
0
Type
R/W
Bit
23
28
27
26
25
24
KEYSZ0 MODE2 MODE1
MODE0
KEYRDY
CTXSR1
0
0
0
0
0
0
0
R/W
R/W
R/W
R/W
R/W
R/W
R/W
22
21
20
19
18
17
16
Symbol
CTXSR0 res
res
res
res
res
res
res
Initial Value
0
-
-
-
-
-
-
-
Type
R/W
-
-
-
-
-
-
-
Bit
15
14
13
12
11
10
9
8
Symbol
res
res
res
res
res
res
res
res
Initial Value
-
-
-
-
-
-
-
-
Type
-
-
-
-
-
-
-
-
Bit
7
6
5
4
3
2
1
0
Symbol
res
res
res
res
res
res
res
res
Initial Value
-
-
-
-
-
-
-
-
Type
-
-
-
-
-
-
-
-
Bit 31 - Encryption/Decryption (ED)
This bit indicates the operation to perform (Encryption or Decryption). For writing this field
the bit #4 of the input word has to be set to 1.
Bit 31
Description
1’b1
Encryption
1’b0
Decryption
Bits 30 to 29 - Key Size (KEYSZ)
These 2 bits represent the key length, as in the following internal representation. For writing
this field the bit #3 of the input word has to be set to 1.
Doc ID 018672 Rev 1
393/844
AS_Cryptographic co-processor (C3)
RM0082
Bit 30 to 29
Description
2’b00
128 bits
2’b01
192 bits
2’b10
256 bits
2’b11
Not Used
Bits 28 to 26 - Mode of operation (MODE)
These 3 bits represent the mode of operation, as in the following internal representation. For
writing this field the bit #2 of the input word has to be set to 1.
Bit 28 to 26
Description
3’b000
ECB
3’b001
CBR
3’b010
CTR
3’b011
Not Used
3’b100
Not Used
3’b101
Not Used
3’b110
Not Used
3’b111
Not Used
Bit 25 - Key ready (KEYRDY)
This bit indicates if the key value is valid or not. For writing this field the bit #1 of the input
word has to be set to 1.
Bit 25
Description
1’b1
The Key value is NOT ready
1’b0
The Key value is ready
Bits 24 to 23 - Context Save/Restore (CTX_SR)
These 2 bits represent the operation to do with the context, as in the following internal
representation. For writing this field the bit #0 of the input word has to be set to 1.
394/844
Bit 30 to 29
Description
2’b00
None
2’b01
Context restore
2’b10
Context Save
2’b11
Not Used
Doc ID 018672 Rev 1
RM0082
AS_Cryptographic co-processor (C3)
Bits 22 to 0 - Reserved
These bits are reserved and should be written zero.
21.10.6
Key registers (AES_KEY)
The Key Registers contain the key.
21.10.7
Channel ID (AES_ID)
The Channel ID register contains the Identifier of this version of the AES channel. The
Channel ID for this version of the AES channel is 0x0000_3000.
21.11
Unified hash with HMAC channel
21.11.1
Overview
Unified HASH channel can compute MD5 and SHA-1 digests of a message, executing C3
Flow type instruction set's HASH [MD5/SHA1] instruction.
It can compute the HMAC of a message with MD5 and SHA-1, executing C3 Flow type
instruction set's HMAC [MD5/SHA1] instruction.
It can save and restore the internal context in order to allow the stop and the resume of the
computation, executing C3 Flow type instruction set's HASH [CONTEXT] and HMAC
[CONTEXT] instructions.
21.11.2
Instruction set
The UHH Channel executes HASH [MD5/SHA1/CONTEXT] and HMAC
[MD5/SHA1/CONTEXT] instructions specified in the C3v3 flow type instruction set.
Instructions that do not conform to the following bit encodings are unknown to the UHH
Channel that will go in error state.
21.11.3
HASH instruction
There are 4 different HASH instructions:
●
HASH MD5
●
HASH SHA1
●
HASH CONTEXT
The first 3 instructions are used for computing the digest of a message and work in the
same way. The last one is used for saving and restoring the context.
21.11.4
HASH [MD5/SHA1] instructions
Each HASH [MD5/SHA1] instruction is composed by 3 sub-instructions:
●
INIT
●
APPEND
●
END
Doc ID 018672 Rev 1
395/844
AS_Cryptographic co-processor (C3)
21.11.5
RM0082
INIT
The HASH [MD5/SHA1/SHA2] INIT instruction is 1 word long. This instruction is used to set
the Function.
Table 332. HASH INIT Instruction bit encoding
W#
Bit Encoding
1
xxxx 000a a00x xxxx cccc cccc cccc cccc
Bits ‘aa’ in the above table are used to set the algorithm to use:
Table 333. HASH INIT Bit ‘aa’ encoding
Bit 24 to 23
21.11.6
aa
Algorithm
2’b00
MD5
2’b01
SHA-1
2’b10
Not Used
2’b11
Context (See CONTEXT instruction)
APPEND
The HASH [MD5/SHA1] APPEND instruction is 2 words long. This instruction is used to set
the Source Address Register for the message and to start the computation of the digest.
The length of the message is encoded in the first instruction word, while the second word
represents the Source Address for the message.
Table 334. HASH APPEND Instruction bit encoding
W#
Bit Encoding
1
xxxx 010a a01x xxxx cccc cccc cccc cccc
2
32 bit Source Address for the message
Bits aa in the above table are used to set the algorithm to use and have the same encoding
as in the INIT instruction (Table 333.). Bits 15 to 0 in the first instruction word (cccc in Table
334.) represent the Count in Bytes of the input message.
21.11.7
END
The HASH [MD5/SHA1] END instruction is 2 words long. This instruction is used to set the
Destination Address Register for the message and to end the computation of the digest.
The second word represents the Destination Address for the digest.
396/844
Doc ID 018672 Rev 1
RM0082
AS_Cryptographic co-processor (C3)
Table 335. HASH END Instruction bit encoding
W#
Bit Encoding
1
xxxx 010a a01t xxxx cccc cccc cccc cccc
2
32 bit Destination Address for the message
Bits ‘aa’ in the above table are used to set the algorithm to use and have the same encoding
as in the INIT instruction(Table 333.).
Bit ‘t’ in the above table is used to truncate the result to 96 bits:
Bit 20
21.11.8
t
Truncate
1’b0
Full digest
1’b1
Truncated 96 bit digest
HASH CONTEXT instruction
The HASH CONTEXT instruction is composed by 2 sub-instructions:
21.11.9
●
SAVE
●
RESTORE
SAVE
The HASH CONTEXT SAVE instruction is 2 words long. This instruction is used to set the
Destination address Register for the context and to save the full context.
The second word represents the Destination Address for the context.
Table 336. HASH CONTEXT SAVE Instruction bit encoding
W#
Bit Encoding
1
xxxx 0101 10xx xxxx cccc cccc cccc cccc
2
32 bit Destination Address for the context
21.11.10 RESTORE
The HASH CONTEXT RESTORE instruction is 2 words long. This instruction is used to set
the Source Address Register for the context and to restore the full context.
The second word represents the Source Address for the context.
Table 337. HASH CONTEXT RESTORE Instruction bit encoding
W#
Bit Encoding
1
xxxx 0101 11xx xxxx cccc cccc cccc cccc
2
32 bit Source Address for the context
Doc ID 018672 Rev 1
397/844
AS_Cryptographic co-processor (C3)
RM0082
21.11.11 HMAC instruction
There are 4 different HMAC instructions:
●
HMAC MD5
●
HMAC SHA1
●
HMAC CONTEXT
The first 3 instructions are used for computing the HMAC of a message and work in the
same way. The last one is used for saving and restoring the context.
21.11.12 HMAC [MD5/SHA1] instructions
Each HMAC [MD5/SHA1] instruction is composed by 3 sub-instructions:
●
INIT
●
APPEND
●
END
21.11.13 INIT
The HMAC [MD5/SHA1] INIT instruction is 2 words long. This instruction is used to set the
Function and the Source Address Register for the HMAC key.
Table 338. HMAC INIT Instruction bit encoding
W#
Bit Encoding
1
xxxx 011a a00x xxxx cccc cccc cccc cccc
2
32 bit Source Address for the key
Bits ‘aa’ in the above table are used to set the algorithm to use and have the same encoding
as in the HASH INIT instruction (Table 333.).
Bits 15 to 0 in the first instruction word (cccc in Table 338.) represent the length in Bytes of
the key.
21.11.14 APPEND
The HMAC [MD5/SHA1] APPEND instruction is 2 words long. This instruction is used to set
the Source Address Register for the message and to start the computation of the HMAC.
The length of the message is encoded in the first instruction word, while the second word
represents the Source Address for the message.
Table 339. HMAC APPEND Instruction bit encoding
W#
Bit Encoding
1
xxxx 011a a01x xxxx cccc cccc cccc cccc
2
32 bit Source Address for the message
Bits ‘aa’ in the above table are used to set the algorithm to use and have the same encoding
as in the INIT instruction(Table 335.).
398/844
Doc ID 018672 Rev 1
RM0082
AS_Cryptographic co-processor (C3)
Bits 15 to 0 in the first instruction word (cccc in Table 339) represent the Count in Bytes of
the input message.
Note:
The state of the HASH channel should be saved after an HMAC-APPEND instruction, if a
consecutive HMAC-APPEND instruction is to be executed. The consecutive APPEND
instruction should be executed after restoring the previously saved state of the channel. If
this process is not followed, the HASH channel will not respond to any further instructions as
it will become non-operational.
21.11.15 END
The HMAC [MD5/SHA1] END instruction is 3 words long. This instruction is used to set the
Source Address Register for the HMAC key and the Destination Address Register for the
HMAC and to end the computation of the HMAC.
The second word represents the Source Address for the key, while the third word represents
the Destination Address for the HMAC.
Table 340. HMAC END Instruction bit encoding
W#
Bit Encoding
1
xxxx 101a a10tx xxxx cccc cccc cccc cccc
2
32 bit Source Address for the key
3
32 bit Destination Address for the message
Bits ‘aa’ in the above table are used to set the algorithm to use and have the same encoding
as in the INIT instruction (Table 335.).
Bits 15 to 0 in the first instruction word (cccc in Table 340.) represent the length in Bytes of
the key.
Bit ‘t’ in the above table is used to truncate the result to 96 bits.
Bit 20
t
Truncate
1’b0
Full HMAC
1’b1
Truncated 96 bit HMAC
21.11.16 HMAC CONTEXT instruction
The HMAC CONTEXT instruction is composed by 2 sub-instructions:
●
SAVE
●
RESTORE
21.11.17 SAVE
The HMAC CONTEXT SAVE instruction is 2 words long. This instruction is used to set the
Destination Address Register for the context and to save the full context.
The second word represents the Destination Address for the context.
Doc ID 018672 Rev 1
399/844
AS_Cryptographic co-processor (C3)
RM0082
Table 341. HMAC CONTEXT SAVE Instruction bit encoding
W#
Bit Encoding
1
xxxx 0111 10xx xxxx cccc cccc cccc cccc
2
32 bit Destination Address for the context
21.11.18 RESTORE
The HMAC CONTEXT RESTORE instruction is 2 words long. This instruction is used to set
the Source Address Register for the context and to restore the full context.
The second word represents the Source Address for the context.
Table 342. HMAC CONTEXT RESTORE instruction bit encoding
W#
Bit Encoding
1
xxxx 0111 11xx xxxx cccc cccc cccc cccc
2
32 bit Source Address for the context
21.11.19 Register configuration
The following table summarizes AHB mapped registers of the UHH Channel connected on
channel 3 of C3.
Table 343. UHH channel registers map
Symbol
UHH_SR(1)
Type
Initial value
Address
Core Status Register
R/(W)
32’h0
0x020
(1)
Hash Status Register #0
R/W
32’h0
0x024
(1)
UHH_HX1
Hash Status Register #1
R/W
32’h0
0x028
UHH_HX2(1)
Hash Status Register #2
R/W
32’h0
0x02C
(1)
Hash Status Register #3
R/W
32’h0
0x030
(1)
UHH_HX4
Hash Status Register #4
R/W
32’h0
0x034
UHH_HX5(1)
Hash Status Register #5
R/W
32’h0
0x038
UHH_HX6(1)
Hash Status Register #6
R/W
32’h0
0x03C
(1)
UHH_HX7
Hash Status Register #7
R/W
32’h0
0x040
UHH_X0(1)
Hash Working Register #0
R/W
32’h0
0x044
(1)
Hash Working Register #1
R/W
32’h0
0x048
UHH_X2(1)
Hash Working Register #2
R/W
32’h0
0x04C
UHH_X3(1)
Hash Working Register #3
R/W
32’h0
0x050
UHH_X4
(1)
Hash Working Register #4
R/W
32’h0
0x054
UHH_X5
(1)
Hash Working Register #5
R/W
32’h0
0x058
UHH_X6(1)
Hash Working Register #6
R/W
32’h0
0x05C
(1)
Hash Working Register #7
R/W
32’h0
0x060
UHH_HX0
UHH_HX3
UHH_X1
UHH_X7
400/844
Name
Doc ID 018672 Rev 1
RM0082
AS_Cryptographic co-processor (C3)
Table 343. UHH channel registers map (continued)
Symbol
Name
Type
Initial value
Address
(1)
Message Scheduler #0
R/W
32’h0
0x064
UHH_WX1(1)
Message Scheduler #1
R/W
32’h0
0x068
UHH_WX2
(1)
Message Scheduler #2
R/W
32’h0
0x06C
UHH_WX3
(1)
Message Scheduler #3
R/W
32’h0
0x070
UHH_WX4(1)
Message Scheduler #4
R/W
32’h0
0x074
UHH_WX5(1)
Message Scheduler #5
R/W
32’h0
0x078
(1)
Message Scheduler #6
R/W
32’h0
0x07C
UHH_WX7(1)
Message Scheduler #7
R/W
32’h0
0x080
(1)
Message Scheduler #8
R/W
32’h0
0x084
UHH_WX9(1)
Message Scheduler #9
R/W
32’h0
0x088
UHH_WX10(1)
Message Scheduler #10
R/W
32’h0
0x08C
(1)
Message Scheduler #11
R/W
32’h0
0x090
UHH_WX12(1)
Message Scheduler #12
R/W
32’h0
0x094
UHH_WX13(1)
Message Scheduler #13
R/W
32’h0
0x098
(1)
Message Scheduler #14
R/W
32’h0
0x09C
UHH_WX15(1)
Message Scheduler #15
R/W
32’h0
0x0A0
UHH_UHR
Current Hash Constant
R/W
32’h0
0x0A4
UHH_BCLO(1)
Bit Count Register (LSW)
R/W
32’h0
0x0A8
UHH_BCHI(1)
Bit Count Register (MSW)
R/W
32’h0
0x0AC
UHH_RK0
Digest of the HMAC key #0
R/W
32’h0
0x0B0
UHH_RK1
Digest of the HMAC key #1
R/W
32’h0
0x0B4
UHH_RK2
Digest of the HMAC key #2
R/W
32’h0
0x0B8
UHH_RK3
Digest of the HMAC key #3
R/W
32’h0
0x0BC
UHH_RK4
Digest of the HMAC key #4
R/W
32’h0
0x0C0
UHH_RK5
Digest of the HMAC key #5
R/W
32’h0
0x0C4
UHH_RK6
Digest of the HMAC key #6
R/W
32’h0
0x0C8
UHH_RK7
Digest of the HMAC key #7
R/W
32’h0
0x0CC
UHH_RH0
HMAC working Register #0
R/W
32’h0
0x0D0
UHH_RH1
HMAC working Register #1
R/W
32’h0
0x0D4
UHH_RH2
HMAC working Register #2
R/W
32’h0
0x0D8
UHH_RH3
HMAC working Register #3
R/W
32’h0
0x0DC
UHH_RH4
HMAC working Register #4
R/W
32’h0
0x0E0
UHH_RH5
HMAC working Register #5
R/W
32’h0
0x0E4
UHH_RH6
HMAC working Register #6
R/W
32’h0
0x0E8
UHH_RH7
HMAC working Register #7
R/W
32’h0
0x0EC
UHH_WX0
UHH_WX6
UHH_WX8
UHH_WX11
UHH_WX14
(1)
Doc ID 018672 Rev 1
401/844
AS_Cryptographic co-processor (C3)
RM0082
Table 343. UHH channel registers map (continued)
Symbol
Name
Type
Initial value
Address
CB Status &Control Register
R/W
32’h0
0x0EC
UHH_CB_CONTROL_
STATUS(1)
CB Status &Control Register
R/(W)
32’h0
0x200
UHH_CU_CONTROL_
STATUS(1)
CU Status and Control Register
R/(W)
32'h8000_000
0x200
0
CTAG_IR
Channel ID
RO
32'h0000_400
0x3FC
1
UHH_DATA_IN
(1)
1. Marked registers compose the Context (for saving and restoring), in the same order as they are listed in
table. The context is composed by 38 words.
21.11.20 Register description
Note:
Changing the register values while the UHH Channel is executing an instruction may
produce wrong results and unexpected behaviour.
21.11.21 Control and status register (UHH_CU_CONTROL_STATUS)
402/844
Bit
31
30
29
28
27
26
25
24
Symbol
CSH
CSL
BERR
DERR
PERR
IERR
AERR
res
Initial Value
0
0
0
0
0
0
0
-
Type
RO
RO
RO
RO
RO
RO
RO
-
Bit
23
22
21
20
19
18
17
16
Symbol
res
res
res
res
res
res
res
RST
Initial Value
-
-
-
-
-
-
-
0
Type
-
-
-
-
-
-
-
R/(W)
Bit
15
14
13
12
11
10
9
8
Symbol
res
res
res
res
res
res
res
res
Initial Value
-
-
-
-
-
-
-
-
Type
-
-
-
-
-
-
-
-
Bit
7
6
5
4
3
2
1
0
Symbol
res
res
res
res
res
res
res
res
Initial Value
-
-
-
-
-
-
-
-
Type
-
-
-
-
-
-
-
-
Doc ID 018672 Rev 1
RM0082
AS_Cryptographic co-processor (C3)
Bit 31 to 30 - Channel Status (CS)
These two bits represent the status of the Channel. The status is reported to the Instruction
Dispatcher (which also duplicates this information in its bits SCR_CnS).
Bit 31 CSH
Bit 30 CSL
Description
0
0
Not Present: This Channel does not exist in Hardware.
1
0
Idle: The Channel is idle and instructions can be dispatched to it.
1
1
Busy: The Channel is executing instructions dispatched by an
Instruction Dispatcher.
0
1
Error: The Channel is in error state, use Channel registers to know
the cause.
When the UHH Channel goes in error state, bits 29 to 24 indicates the cause. The only way
to get out from error state is to reset the channel using bit 16 (SCR_RST) or requesting an
asynchronous reset of the whole C3.
Bit 29 - Bus Error (BERR)
Every module attached to the HIF receives its own Bus error signal. This signal is set by the
HIF if a bus error condition is detected for a Bus transaction initiated by the corresponding
module. If the UHH Channel detects a bus error condition it goes in error state and this bit is
set.
Bit 29 BERR
Description
1’b1
The HIF reported a bus error condition for a transaction initiated
by the UHH Channel.
Bit 28 - Dispatching Protocol Error (DERR)
If the Instruction Dispatcher goes in error state or if it is reset while it is dispatching
instruction to the UHH Channel, a dispatching protocol violation could happen. If this is the
case the UHH Channel goes in error state and this bit is set. Example: the ID has
dispatched the first word of the Hash Append instruction. The UHH Channel is still waiting
for the second word. If the ID goes now in error state (that is. because of a bus error), the
UHH Channel will never receive that second word. This condition is detected and reported
using this bit.
Bit 28 DERR
Description
1’b1
The UHH Channel detected a dispatching protocol violation.
1’b0
(Clearing conditions) This flag is cleared in two ways: resetting
the UHH Channel or requesting an asynchronous master reset.
Bit 27 - Couple/Chaining Error (PERR)
The UHH Channel is NOT able to become a Master for Chaining operations. It is NOT able
to become simultaneously a Master and a Slave for Coupling operations.
Doc ID 018672 Rev 1
403/844
AS_Cryptographic co-processor (C3)
RM0082
Bit 27 BERR
Description
1’b1
The Channel was requested to become a Chaining-master, or
simultaneously both a Couple-Master and a Slave for cascade
CCM operations.
1’b0
(Clearing conditions) This flag is cleared in two ways: resetting
the UHH Channel or requesting an asynchronous master reset.
Bit 26 - Instruction Decode Error (IERR)
The UHH Channel goes in error state and this bit is set if an invalid instruction is received
from the Instruction Dispatcher.
Bit 26 BERR
Description
1’b1
The UHH Channel received an invalid instruction from the
Instruction Dispatcher.
1’b0
(Clearing conditions) This flag is cleared in two ways: resetting
the UHH Channel or requesting an asynchronous master reset.
Bit 25 - Alignment Error (AERR)
The Source Address and the Destination Address must be 32 bit aligned. Count must be a
multiple of 4 Bytes. The UHH Channel goes in error state and this bit is set if any of these
condition is not respected.
Bit 25 BERR
Description
1’b1
The UHH Channel received an invalid address or count part.
1’b0
(Clearing conditions) This flag is cleared in two ways: resetting
the UHH Channel or requesting an asynchronous master reset.
Bits 23 to 17 - Reserved
These bits are reserved and should be written zero.
Bit 16 - Reset Command (RST)
In Hardware the reset is done synchronously and not all registers are affected by it. The
following are the effects of a synchronous reset: bits 29-24, 16, 7-0 of SCR are all cleared,
FIFOs are flushed, the UHH Channel goes in Idle state eventually aborting instruction
execution and bits 31-30 (CS) of UHH_CU_CONTROL_STATUS are set to Idle.
404/844
Bit 26 RST
Description
1’b1
Reset the UHH Channel
1’b0
(Clearing conditions) This bit is cleared as a consequence of
the reset, so it is always read zero. Writing zero has no effect.
Doc ID 018672 Rev 1
RM0082
AS_Cryptographic co-processor (C3)
Bit 15 to 0 - Reserved
These bits are reserved and should be written zero.
21.11.22 Data input register (UHH_DATA_IN)
The Data Input Register contains the current data input word to the UHH Channel.
21.11.23 Control and status register (UHH_CB_CONTROL_STATUS)
The UHH_CB_CONTROL_STATUS bit assignments are given.
Bit
31
30
29
28
27
26
25
24
Symbol
res
NBLW4
NBLW3
NBLW2
NBLW1
NBLW0
STAT3
STAT2
Initial Value
-
0
0
0
0
0
0
0
Type
-
R/W
R/W
R/W
R/W
R/W
R/W
R/W
Bit
23
22
21
20
19
18
17
16
Symbol
STAT1
STAT0
INVAL
SHORT
res
res
ALG1
ALG0
Initial Value
0
0
0
0
-
-
0
0
Type
R/W
R/W
R/W
R/W
-
-
R/W
R/W
Bit
15
14
13
12
11
10
9
8
Symbol
res
res
res
res
res
res
res
res
Initial Value
-
-
-
-
-
-
-
-
Type
-
-
-
-
-
-
-
-
Bit
7
6
5
4
3
2
1
0
Symbol
res
res
res
res
res
res
res
res
Initial Value
-
-
-
-
-
-
-
-
Type
-
-
-
-
-
-
-
-
Bit 31 - Reserved
This bit is reserved and should be written zero.
Bits 30 to 26 - Number of Bits for the Last Word (N BLW)
These 5 bits represent the length in bits of the last word of the message.
Bits 25 to 22 - Cryptoblock Internal Status (STAT)
These 4 bits represent the status of the Cryptoblock, as in the following internal
representation:
Doc ID 018672 Rev 1
405/844
AS_Cryptographic co-processor (C3)
RM0082
Bit 25 to 22
Status
Description
4’b0000
BLOCK_IDLE
Idle State
4’b0001
HASH_DO_RESET
Init for hash
4’b0010
HASH_REQUEST_DATA
Get data input for hash
4’b0011
HASH_PROCESS_DATA
Process the message
4’b0100
HMAC_DO_RESET_SHORT_KEY
Init for HMAC with short key
4’b0101
HMAC_DO_RESET_LONG_KEY
Init for HMAC with long key
4’b0110
HMAC_REQUEST_IKEY_SHORT
Get the short inner key for HMAC
4’b0111
HMAC_REQUEST_IKEY_LONG
Get the long inner key for HMAC
4’b1000
HMAC_REQUEST_DATA
Get data input for HMAC
4’b1001
HMAC_PROCESS_DATA_SHORT_KEY
Process the message (short key)
4’b1010
HMAC_PROCESS_DATA_LONG_KEY
Process the message (long key)
4’b1011
HMAC_REQUEST_OKEY_SHORT
Get the short outer key for HMAC
4’b1100
HMAC_REQUEST_OKEY_LONG
Get the long outer key for HMAC
4’b1101
CONTEXT_SAVE
Save the context
4’b1110
CONTEXT_RESTORE
Restore the context
4’b1111
Not Used
Bit 21 - Data Input Valid (INVALID)
This bit indicates if the value in the Data Input Register is valid or not.
Bit 21 INVALID
Description
1’b1
The Data Input Register value is NOT valid
1’b0
The Data Input Register value is valid.
Bit 20 - Short Output (SHORT)
This bit indicates if the output result has to be truncated to 96 bits.
Bit 21 INVALID
Description
1’b1
The result is produced in full length.
1’b0
The result is trancated to 96 bits.
Bits 19 to 18 - Reserved
These bits are reserved and should be written zero.
Bits 17 to 16 - Current Algorithm (ALG)
These 2 bits represent the current algorithm, as in the following representation:
406/844
Doc ID 018672 Rev 1
RM0082
AS_Cryptographic co-processor (C3)
Bit 17 to 16
Algorithm
2’b00
MD5
2’b01
SHA-1
2’b10
Not Used
2’b11
Not Used
Bits 15 to 0 - Reserved
These bits are reserved and should be written zero.
Core Status Register (UHH_SR)
Bit
31
30
29
28
27
26
25
24
Symbol
ALG1
ALG0
res
res
Res
CPHA1
CPHA0
PST2
Initial Value
0
0
-
-
-
0
0
0
Type
R/W
R/W
-
-
-
R/W
R/W
R/W
Bit
23
22
21
20
19
18
17
16
Symbol
PST1
PST0
WCNT3
WCNT2 WCNT1
WCNT0
ST3
ST2
Initial Value
0
0
0
0
0
0
0
0
Type
RO
RO
R/W
R/W
R/W
R/W
RO
RO
Bit
15
14
13
12
11
10
9
8
Symbol
ST1
ST0
LKEY
PHA1
PHA0
CST
CST
SCNT6
Initial Value
0
0
0
0
0
0
0
0
Type
RO
RO
R/W
R/W
R/W
R/W
R/W
R/W
Bit
7
6
5
4
3
2
1
0
Symbol
SCNT5 SCNT4
SCNT3
SCNT2
SCNT1
SCNT0
LAST
res
Initial Value
0
0
0
0
0
0
0
-
Type
R/W
R/W
R/W
R/W
R/W
R/W
R/W
-
Bits 31 to 30 - Current Algorithm (ALG)
These 2 bits represent the current algorithm, as in the following representation:
Doc ID 018672 Rev 1
407/844
AS_Cryptographic co-processor (C3)
RM0082
Bit 31 to 30
Algorithm
2’b00
MD5
2’b01
SHA-1
2’b10
Not Used
2’b11
Not Used
Bits 29 to 27 - Reserved
These bits are reserved and should be written zero.
Bits 26 to 25 - Current Phase (CPHA)
These bits represent the current phase of the hash algorithm.
Bits 24 to 22 - Padder State (PST)
These bits represent the action in progress in the input padding.
Bit 24 to 22
Algorithm
3’b000
Idle state, no padding
3’b001
Insert the first 1 after the end of the message
3’b010
Insert extra zeros
3’b011
Insert the length of the message
3’b100
Insert extra key
3’b101
Pause the padding
3’b110
Not used
3’b111
Not used
Bits 21 to 18 - Number of Words (WCNT)
These 4 bits represent the number of input words already passed to the hash core.
Bits 17 to 14 - HMAC State (ST)
These bits represent the action in progress in the HMAC procedure.
408/844
Bit 17 to 14 ST
Description
4’b0000
Idle state, no work in progress
4’b0001
Get short inner key
4’b0010
Pad short inner key
4’b0011
Get message
4’b0100
Wait for the message digest
4’b0101
Get short outer key
Doc ID 018672 Rev 1
RM0082
AS_Cryptographic co-processor (C3)
Bit 17 to 14 ST
Description
4’b0110
Pad short outer key
4’b0111
Wait for the HMAC
4’b1000
HMAC value is ready
4’b1001
Get long inner key
4’b1010
Get long outer key
4’b1011
Wait for long inner key preparation
4’b1100
Wait for long outer key preparation
4’b1101
Not used
4’b1110
Not used
4’b1111
Not used
Bit 13 - Long Key (LKEY)
This bit indicates if the HMAC uses a short key or a long one.
Bit 13 LKEY
Description
1’b1
Short HMAC key
1’b0
Long HMAC key
Bits 12 to 11 - Phase (PHA)
These bits represent the phase of the hash algorithm for the next step.
Bits 10 to 9 - Hash Core State (CST)
These bits represent the current phase.
Bit 10 to 9 CST
Description
2’b00
Idle state, no work in progress
2’b01
Compute the digest
2’b10
Update the result
2’b11
Computation ended
Bits 8 to 2 - Step Count (SCNT)
These 7 bits represent the hash round in progress.
Bit 1 - Last Word Asserted (LAST)
This bit indicates if the whole message has been passed to the core.
Doc ID 018672 Rev 1
409/844
AS_Cryptographic co-processor (C3)
RM0082
Bit 0 - Reserved
This bit is reserved and should be written zero.
Hash Status Registers (UHH_HX0 - UHH_HX7)
The Hash Status Registers contain the current partial value of the digest.
Hash Working Registers (UHH_X0 - UHH_X7)
The Hash Working Registers contain a temporary value used for the computation of the
digest.
Message Scheduler Registers (UHH_WX0 - UHH_WX15)
The Message Scheduler Registers contain the unrolled message.
Current Hash Constant Register (UHH_UHR)
The Current Hash Register contains the current result of the internal Hash function.
Bit Count Registers (UHH_BCLO - UHH_BCHI)
The Bit Count Registers contain the cumulated length of the processed message.
HMAC Key Digest Registers (UHH_RK0 - UHH_RK7)
The HMAC Key Digest Registers contain the computed digest of the HMAC key.
HMAC Working Registers (UHH_RH0 - UHH_RH7)
The HMAC Working Registers contain a temporary value used for the computation of the
HMAC.
21.11.24 Channel ID (UHH_CH_ID)
The Channel ID register contains the Identifier of this version of the UHH Channel. The
Channel ID for this version of the UHH channel is 0x0000_4002.
410/844
Doc ID 018672 Rev 1
RM0082
HS_USB2.0 host
22
HS_USB2.0 host
22.1
Overview
Within its High-Speed (HS) Connection Subsystem, the device provides one USB 2.0 Host
with 2 physical ports which are fully compliant with the Universal Serial Bus specification
(version 2.0), and offering an interface to the industry-standard AHB bus.
Main features provided by USB 2.0 Host are listed below:
●
A PHY interface implementing a USB 2.0 Transceiver Macro-cell Interface plus
(UTMI+) fully compliant with UTMI+ specification (revision 1.0), to execute serialization
and de-serialization of transmissions over the USB line;
●
Either 30 MHz clock for 16 bit interface or 60 MHz for 8 bit interface are supported by
the UTMI+ PHY interface;
●
A USB 2.0 Host Controller (UHC) which is connected to the AHB bus and generates
the commands for the UTMI+ PHY;
●
The UHC complies with both the Enhanced Host Controller Interface (EHCI)
specification (version 1.0) and the Open Host Controller Interface (OHCI) specification
(version 1.0a);
●
The UHC supports the 480 Mbps high-speed (HS) for USB 2.0 through an embedded
EHCI Host Controller, as well as the 12 Mbps full-speed (FS) and the low-speed (LS)
for USB 1.1 through two integrated OHCI Host Controller;
●
All clock synchronization is handled within the UHC;
●
An AHB slave for each controller (1 EHCI and 2 OHCI), acting as programming
interface to access to control and status registers;
●
An AHB master for each controller (1 EHCI and 2 OHCI) for data transfer to system
memory, supporting 8, 16, and 32 bit wide data transactions on the AHB bus;
●
32 bit AHB bus addressing.
Only one port can be selected to be used for 480 Mbps (HS) communication by the EHCI
controller. When one port is used by the EHCI, the other can only be used for full-speed
(FS) or low-speed (LS) communication (by the OHCI controller).
Doc ID 018672 Rev 1
411/844
HS_USB2.0 host
22.2
RM0082
Block diagram
Figure 36. UHC block diagram.
EHCI
Operation
AHB BIU
AMBA AHB
Port1
UTMI+PHY
List
Processor
Root Hub
EHCI
Port0
To External PAD
SOF
Generator
Packet Buffer
USB2.0 EHCI Controller
OHCI
USB1.1 OHCI
Controller
OHCI
USB1.1 OHCI
Controller
UHC
22.3
Main functions description
22.3.1
AHB bus interface unit (BIU)
USB 2.0 Host access to the AHB bus is granted by the AHB Bus Interface Unit (BIU), which
consists of a Master module and a Slave module.
The AHB BIU Slave module acts a slave on the AHB and responds to all EHCI/OHCI
Operational registers (Section 22.4.2: Operational registers) accesses from an AHB master.
In particular, this module allows RW access to its operational registers through the AHB bus.
Note:
There is only a single AHB slave port in AHB BIU Slave module for both EHCI and OHCI
host controller registers access.
The AHB BIU Master module, acting as a master on the AHB, receives requests from the
List Processor block Section 22.4.1: List processor within the EHCI Host Controller, and
transfers data with system memory through the AHB bus. The AHB BIU Master supports 8-,
16-, and 32 bit data transfers, and 32 bit address transfers.
22.3.2
EHCI host controller
An EHCI Host Controller compliant with the EHCI specification (version 1.0) is embedded
within the UHC to support the 480 Mbps high-speed (HS) transaction of USB 2.0.HS device
connected to one of the two downstream ports.
412/844
Doc ID 018672 Rev 1
RM0082
HS_USB2.0 host
Major blocks of the EHCI Host Controller are described in Section 22.4: EHCI host controller
blocks
22.3.3
OHCI host controller
Two OHCI Host Controllers compliant with the OHCI specification (version 1.0a) are also
integrated in the UHC to support the 12 Mbps full-speed (FS) and the 1.5 Mbps low-speed
(LS) operation of USB 1.1. FS/LS device connected to port0 is managed by OHCI0 and
port1 is managed by OHCI1.
Major blocks of the OHCI Host Controller are described in Section 22.5: OHCI host
controller blocks.
22.4
EHCI host controller blocks
22.4.1
List processor
The List Processor is the main block of the EHCI Host Controller. The List Processor is
implemented with multiple state machines to perform the list service flow, which is set up by
the Host Controller Driver (HCD) according to the priority set in the Operational registers
Section 22.4.2: Operational registers
In addition, the List Processor consists of a controller that interfaces with all the other EHCI
Host Controller blocks, such as the AHB BIU (Master module), the Packet Buffer, the EHCI
Operational registers, the SOF Generators and the Root Hub.
22.4.2
Operational registers
This block exposes the implemented EHCI Capability and Operational registers as defined
in the USB EHCI specification. In addition, certain IP-specific extended registers are also
implemented, in order to configure features like Packet Buffer depth, break memory transfer,
frame length.
The Operational registers block interfaces with the AHB BIU (Slave module), the List
Processor and the Root Hub.
22.4.3
Start-Of-Frame (SOF) generator
The SOF Generator block implements the counter which generates the Start-Of-Frame
(SOF) packets to supply micro-SOFs for each microframe. The SOF counter runs in the
PHY clock domain.
Microframe duration is derived from the EHCI Frame Length Adjustment (FLADJ) register
value. This ensures that the Host microframe duration and per-port microframe duration
remain the same.
This block interfaces with the List Processor only.
22.4.4
Packet buffer
The Packet Buffer (PBUF) block provides storage and control for IN/OUT data transaction,
with a configured size of 1024 bytes (256 x 32 = 1024 bytes).
Doc ID 018672 Rev 1
413/844
HS_USB2.0 host
RM0082
According to its functionality, the PBUF block interface with both the List Processor and the
Root Hub. Specifically, during an OUT transaction, the List Processor fetches data from the
system memory and writes them in the PBUF. Besides, during an IN transaction, the data
are written to PBUF by the Root Hub Section 22.4.5: Root hub.
The Packet Buffer size depends on the system latency and bandwidth allocated to the EHCI
Host Controller. For example, in case PBUF size is programmed to 64 bytes, a 1024-bytes
IN transfer would get 1024/64 = 16 data transfer on the AHB bus. If the system is not able to
ensure EHCI access to AHB bus for these 16 transfers with no breaks, then a buffer overrun
occurs. In this case, to avoid buffer overrun or under-run, PBUF size could be set to 1024
bytes.
22.4.5
Root hub
The Root Hub (RH) block interfaces between the List Processor and the USB PHY. It
propagates reset and resume signals to downstream ports, and handles port connections
and disconnections.
The RH operates both on the local PHY clock (a free-running 30/60 MHz clock) and on the
clock source from each physical port (30 MHz with a 16 bit interface).
22.5
OHCI host controller blocks
The USB Open Host Controller is designed to be independent of the Bus Interface Unit
(BIU) as in Figure 37. The host bus is assumed to be at least 32 bits wide with adequate
performance to support the data rate of the particular implementation (100Mbit/sec or
higher plus overhead for DMA structures) as well as bounded latency so that the FIFO’s can
have a reasonable size.
414/844
Doc ID 018672 Rev 1
RM0082
HS_USB2.0 host
Figure 37. USB Host controller (UHOSTC) block diagram
OHCI
Regs
RCFG_RegData(32)
APB_SADR(6)
HCI
Slave
block
APB_SData(32)
HCI_Data(32)
OHCI
Regs
HCI Bus
Control
HCM_ADR/
Data(32)
Control
Ctrl
X
V
R
USB
2
TxDpls
Root Hub
&
Host SIE
Ctrl
TxDmns
Port
S/M
X
V
R
USB
Cntl
List
Processor
Block
ED/TD_Data(32)
APP_MData(32)
TxEnL
USB
State
Control
Ctrl
Port
S/M
1
Ctrl
Ctrl
ED/TD_Status(32)
ED &TD
Regs
HCI
Master
block
RH_Data(8)
64 x 8
FIFO
Ctrl
Root
Hub
Config
Block
HSIE
S/M
RcvData
Status
HC_Data(8)
DF_Data(8)
Clock
MUX
12/1_5
DPLL
RcvDpls
-
RcvDmns
DF_Data(8)
FIFO_Data (8)
Addr (6)
HCF_Data(8)
15
Ext.FIFO Status
Port
S/M
X
V
R
USB
FIFO
64 x 8
22.5.1
HCI master block
The HCI master block is the interface between HCI master interface logic block and the HCI
bus. It converts all the cycles initiated by different blocks of the list processor through HCI
master inteface logic block into HCI bus cycles according to the protocol defined for HCI
bus. In addition to that it implements a state machine to read/ write from/to DFIFO. When it
is transferring the data returned by endpoint, it reads the data from DFIFO and merges into
DWORD and then send it to the application’s internal FIFO. Similarly when reading the
endpoint data from the system memory, after reading every DWORD from the application’s
FIFO it splits the DWORD into 4 individual bytes and then sends it to the DFIFO. It also
implements byte-alignment logic, that is when a write cycle is initiated by FML block at the
odd boundary (not the DWORD boundary), it reads only the lower 2 bit of the address (ties
them to 0), so that the application always writes at DWORD boundary, and manipulates the
byte-enables accordingly.
22.5.2
HCI slave block
The HCI slave block is the slave on HCI bus. This is basically an interface between OHCI
operational register internal to the Host Controller and the application. It updates the
registers on writes and provides the register data on reads. All the slave accesses should be
DWORD aligned. Therefore, byte enables are not used in slave accesses.
Doc ID 018672 Rev 1
415/844
HS_USB2.0 host
22.5.3
RM0082
List processor block
The list processor block acts as a main controller of the entire controller. It has multiple state
machines to implement List Service Flow, List Priority, USB-States, ED, TD Service,
StatusWriteBack, TD Retirement, and so on as per the OHCI specification. Additionally, this
block implements a controller which interfaces with HCI_master and hsie, helping them in
the data transfer from system memory to USB and USB to system memory.
The following submodules are included:
22.5.4
●
USB states
●
List service flow
●
ED-TD block
●
HCI master interface logic
●
Data read write logic
RootHub and HSIE blocks
Since implementation varies, most of the functionality of the RootHub is implemented in the
Port Configuration Block. This logic is common to any user configuration. The logic in this
block acts as a wrapper around HSIE and interface with Host Controller’s List Processor,
FIFO and OHCI registers. This block also implements the control logic to synchronize the
interface between HSIE and port S/M.
This block implements the following submodules:
22.5.5
●
Reset_Resume
●
DPLL
●
HSIE
Digital PLL block (DPLL)
The function of the DPLL Block is to extract the clock and data information from the USB
Data received from the different transceiver. The Digital PLL runs on a 48 MHz userprovided clock to extract the clock information from the USB for both Full-Speed and Lowspeed data. The two signals D+ and D- of the USB lines are passed through a differential
receiver (external to the UHOSTC controller) and a NRZI formatted data is obtained from
the output of the differential receivers. The output of the differential receiver is then used by
the Digital PLL to extract clock information. The PLL Block also has a SE0 Detect Logic to
detect the Single Ended Zero (SE0) in the data stream. The circuit in this module extracts
clock from either high-speed data or low-speed data indicated by SIE_Switch HCLK input
from SIETx State Machine.
22.5.6
HSIE functionality
The functionality of the Host Serial Interface Engine (HSIE) is to receive and transmit the
USB data over D+ and D- lines in accordance with the USB protocol. During the reception of
USB data, the D+ and D- signals are passed through the differential receiver (which is
external to the UHOSTC controller) to get a single ended bit stream that is passed through
the PLL Block to extract the clock and data information. The Clock and data are passed to
the SIE Block to identify the Sync Pattern and for NRZI-NRZ conversion. This NRZ data is
then passed through the Bit Stripper which strips off the excessive zeros inserted, The data
stream is initially passed through the PID Decode and checker to identify different PIDs.
Depending upon the type of PID, the HSIE block handles the protocol accordingly.
416/844
Doc ID 018672 Rev 1
RM0082
22.5.7
HS_USB2.0 host
RootHub port configuration
The port configuration block implements part of the RootHub logic. This block is separated
from the main RootHub block to distinguish the logic that varies with design requirements. In
short, this block implements part of the OHCI registers that are specific to RootHub and a
state machine for every DownStreamPort to control the port functional states.
This block has the following submodules:
●
RootHub port registers
●
Port S/M
●
Port receive
●
Port resume
●
Port MUX
22.6
Programming model
22.6.1
External pin connections
Table 344. External pin connections
22.6.2
Signal name
Pin
Description
HOST1_DP
K1
Host port 1, positive data line
HOST1_DM
K2
Host port 1, negative data line
HOST1_VBUS
J3
Host port 1, VBUS enable line
HOST1_OVC
H4
Host port 1, overcurrent on VBUS line indicator
HOST2_DP
H1
Host port 2, positive data line
HOST2_DM
H2
Host port 2, negative data line
HOST2_VBUS
H3
Host port 2, VBUS enable line
HOST2_OVC
J4
Host port 2, overcurrent on VBUS line Indicator
UHC interrupts
EHCI block generates one interrupt when following conditions are occurred:
●
Interrupt on Async Address
●
Host System Error
●
Frame List Rollover
●
Port Change
●
USB Error
●
USB Interrupt
But this interrupt is generated only when corresponding bits are enabled in Table 356:
USBINTR register bit assignments (Section 22.6.4: Register descriptions of EHCI). This
interrupt is connected with IRQ26 of the CPU (Table 23: Interrupt sources, Section 8.4:
Interrupt connection table).
Doc ID 018672 Rev 1
417/844
HS_USB2.0 host
RM0082
Similarly, OHCI block generates one interrupt when any of the following conditions occurs:
●
OwnershipChange
●
RootHubStatusChange
●
FrameNumberOverflow
●
UnrecoverableError
●
ResumeDetected
●
StartofFrame
●
WritebackDoneHead
●
SchedulingOverrun
But this interrupt is generated only when corresponding bits are enabled in Table 370:
HcInterruptEnable register bit assignments, Section 22.6.22: Register description of OHCI.
This interrupt is connected with IRQ25 for OHCI1 and IRQ27 for OHCI2 respectively
(Table 23: Interrupt sources, Section 8.4: Interrupt connection table)
22.6.3
Register map
The UHC can be fully configured by programming a set of 32 bit wide registers which can be
accessed through the AHB BIU slave module at the base addresses given in Table 345 (for
controller and for the two host ports provided by the device.
Table 345. UHC registers’ base address
Host controller
Host port
Base address
EHCI
1 or 2
0xE180_0000(USBBASE)
OHCI
1
0xE190_0000
OHCI
2
0xE210_0000(USBBASE)
Register map for EHCI
The EHCI controller can enable communication through one of the two ports by setting the
corresponding PORTSC register in the EHCI Operation Register block.
The registers of the EHCI host controller can be grouped in four different classes:
Note:
●
Read-only capability registers (listed inTable 346), which specify the limits, restrictions
and capabilities of the EHCI host controller implementation. These values are used as
parameters for the HCD.
●
Read/write operational registers (listed in Table 347), used by system software to
control and monitor the operational state of the EHCI host controller. These registers
are implemented in the core power well.
Each operational register is only reset (that is, initialized to its default value) in case of
assertion of system hardware reset, or in response to a host controller reset (HCRESET bit
set to 1‘b1 in USBCMD register).
●
418/844
Auxiliary power well registers (listed in Table 348), which are part of the operational
registers but implemented in the auxiliary power well.
Doc ID 018672 Rev 1
RM0082
Note:
HS_USB2.0 host
Each auxiliary power well register is only reset (that is, initialized to its default value) by
hardware in case of initial power-up of the auxiliary power well, or in response to a host
controller reset (HCRESET bit set to 1‘b1 in USBCMD register).
●
PCR registers (listed in Table 349), which allow to program configurable registers, such
as the packet buffer depth, break memory transfer when the threshold value is reached,
the frame length, and UTMI control and status register access.
Table 346. EHCI host controller capability registers summary
Name
Offset(1)
Type
Reset value
Description
HCCAPBASE
USBBASE+ 0x00
RO
32’h01000010
Capability registers base
address.
HCSPARAMS
USBBASE+ 0x04
RO
32’h00001116
Structural parameters.
HCCPARAMS
USBBASE+ 0x08
RO
32’h0000A010 Capability parameters.
1. The offset is intended to be with respect to the operational registers base address:USBBASE is
fixed to the EHCI base address.
Table 347. EHCI host controller operational registers summary
Name
Offset (1)
USBCMD
Type
Reset value
Description
USBOPBASE+ 0x00 RO
32’h00080900
USB command.
USBSTS
USBOPBASE+ 0x04 RW
32’h00001000
USB status.
USBINTR
USBOPBASE+ 0x08 RW
32’h0
USB interrupt enable.
FRINDEX
USBOPBASE+ 0x0C RW
32’h0
USB frame index.
CTRLDSSEGMENT
USBOPBASE+ 0x10 RW
32’h0
4G segment selector.
PERIODICLISTBASE USBOPBASE+ 0x14 RW
32’h0
Periodic frame list base
address.
ASYNCLISTADDR
32’h0
Asynchronous list address.
USBOPBASE+ 0x18 RW
1. Offset calculated by reading HCCAPBASE. The offset is kept with respect to the operational
registers base address: USBOPBASE = USBBASE + 0x10.
Table 348. EHCI host controller auxiliary power well registers summary
Name
Offset (1)
CONFIGFLAG
Type
Reset value
Description
USBOPBASE+ 0x40 RW
32’h0
Configured flag.
PORTSC1
USBOPBASE+ 0x44
32’h00002000
Port 1 status and control.
PORTSC2
0x48
32’h00000000
Port 2 status and control.
(2)
1. The offset is intended to be with respect to the operational registers base address
(USBOPBASE).
2. Depending on port power control (see PP bit description in PORTSC register).
Doc ID 018672 Rev 1
419/844
HS_USB2.0 host
RM0082
Table 349. EHCI host controller specific registers summary
Name
Offset (1)
Size
(bit)
Type Reset value
Description
INSNREG00
USBOPBASE+0x80
14
RW
14’h0
Programmable microframe
base value.
INSNREG01
USBOPBASE+ 0x84
32
RW
32’h00200020
Programmable packet buffer
out/in thresholds.
INSNREG02
USBOPBASE+0x88
12
RW
12’h080
Programmable packet buffer
depth.
INSNREG03
USBOPBASE+0x8C
1
RW
1’h0
Break memory transfer.
INSNREG04
USBOPBASE+ 0x90
3
RW
3’h0
For debug purposes only.
INSNREG05
USBOPBASE+0x94
32
RW
32’h00001000
UTMI control and status
registers.
1. The offset is intended to be with respect to the operational registers base address
(USBOPBASE).
Register Map for OHCI
Table 350. Host controller operational registers
420/844
Offset
Register name
00
HcRevision
04
HcControl
08
HcCommandStatus
0C
HcInterruptStatus
10
HcInterruptEnable
14
HcInterruptDisable
18
HcHCCA
1C
HcPeriodCurrentED
20
HcControlHeadED
24
HcControlCurrentED
28
HcBulkHeadED
2C
HcBulkCurrentED
30
HcDoneHead
34
HcFmInterval
38
HcFmRemaining
3C
HcFmNumber
40
HcPeriodicStart
44
HcLSTreshold
48
HcRhDescriptorA
4C
HcRhDescriptorB
Doc ID 018672 Rev 1
RM0082
HS_USB2.0 host
Table 350. Host controller operational registers (continued)
Offset
Register name
50
HcRhStatus
54
HcRhPortStatus[1]
--
--
54+4*NDP
HcRhPortStatus[NDP]
22.6.4
Register descriptions of EHCI
22.6.5
HCCAPBASE register
The HCCAPBASE is a RO register which contains the base address of the DWord-aligned
memory-mapped EHCI host controller capability registers. The HCCAPBASE register bit
assignments are given in Table 351.
Table 351. HCCAPBASE register bit assignments
Bit
22.6.6
Name
Reset value Description
[31:16]
HCIVERSION
16’h0100
This field contains a BCD encoding of the EHCI
revision number supported by this host controller. The
most significant byte of this register represents a
major revision and the least significant byte is the
minor revision.
[15:08]
Reserved
-
Read: undefined
[07:00]
CAPLENGTH
8’h10
This field is used as an offset to add to register base
to find the beginning of the Operational Register
Space.
HCSPARAMS register
The HCSPARAMS is a RO register stating the structural parameters of the EHCI host
controller, such as the number of downstream ports, etc. The HCSPARAMS register bit
assignments are given in Table 352.
Table 352. HCSPARAMS register bit assignments
Bit
Name
Reset value Description
[31:24]
Reserved
-
Read: undefined.
4’h0
Debug port number.
This field identifies which of the EHCI host controller
ports is the debug port, according to encoding:
4‘b0000 = No debug port.
4‘b0001 = Port #1.
... =...
4‘b1111 = Port #15.
Note: The value in DPN field must not be greater than
N_PORTS field.
[23:20]
DPN
Doc ID 018672 Rev 1
421/844
HS_USB2.0 host
RM0082
Table 352. HCSPARAMS register bit assignments (continued)
Bit
Name
Reset value Description
[19:17]
Reserved
-
Read: undefined.
1‘h0
Port indicators.
This bit indicates whether the ports support port
indicator control. When this bit is set, each port status
control register (PORTSC) of auxiliary power well
includes a specific RW field (PIC, port indicator
control) for controlling the state of the port indicator.
4‘h1
Number of companion controllers.
This field indicates the number of companion OHCI
host controllers (USB 1.1) associated with the EHCI
host controller (USB 2.0). A zero value in this field
indicates that there are no companion OHCI host
Controllers, whereas a non-zero value indicates that
there are as many companion OHCI host controllers
(default is 1).
4‘h1
Number of ports per companion controller.
This field indicates the number of ports supported per
each companion OHCI host controller. It is used to
indicate the port routing configuration to system
software. The default convention (bit PRR set to 0b0)
is that the first N_PCC ports are assumed to be
routed to companion controller #1, the next N_PCC
ports to companion controller #2, and so on.
Note: The number in this field must be consistent with
both N_PORTS and N_CC.
[16]
[15:12]
[11:08]
422/844
P_INDICATOR
N_CC
N_PCC
[07]
PRR
1‘h0
Port routing rules.
This field indicates the port routing method which
drives how all ports are mapped to companion
controllers, according to encoding:
1‘b0 = The first N_PCC ports are routed to the lowest
numbered function companion OHCI host controller,
the next N_PCC port are routed to the next lowest
function companion controller, and so on.
1‘b1 = The port routing is explicitly enumerated by the
first N_PORTS elements of the HCSP-PORTROUTE
array (in the capability registers). In the device, just
one single port is present for each controller, so this
information is actually irrelevant.
[06:05]
Reserved
-
Read: undefined.
Doc ID 018672 Rev 1
RM0082
HS_USB2.0 host
Table 352. HCSPARAMS register bit assignments (continued)
Bit
[04]
[03:00]
22.6.7
Name
PPC
N_PORTS
Reset value Description
1’h1
Port power control.
This field indicates whether the EHCI host controller
implementation includes port power control. In
particular, setting this bit a port power switch is
enabled for each port, otherwise (PPC set to 1‘b0)
each port is hard-wired to power.
Note: The value of this field affects the functionality of
the port power field (PP) in each port status control
registers of auxiliary power well.
4’h2
Number of physical downstream ports.
This field specifies the number of physical
downstream ports implemented on this EHCI host
controller. The value of this field (ranging from 4’h1 to
4’hF, that is 1 to 15) determines how many port
registers are addressable in the auxiliary power well
registers memory-space (ranging from offset 0x40 to
0x7C with respect to USBOPBASE address).
Note: A zero-value in this field is undefined.
HCCPARAMS register
The HCCPARAMS is a RO register stating the capability parameters of the EHCI host
controller, such as scheduling, addressing, etc. The HCCPARAMS register bit assignments
are given in Table 353.
Table 353. HCCPARAMS register bit assignments
Bit
Name
Reset value Description
[31:16]
Reserved
-
Read: undefined.
8’hA0
EHCI extended capabilities pointer.
This optional field indicates the existence of a
capabilities list. A zero value indicates that no
extended capabilities are implemented, whereas a
non-zero value indicates the offset in PCI
configuration space of the first EHCI extended
capability.
Note: The pointer value in this field must be 8’h40 or
greater in order to maintain the consistency of the
PCI header defined for this class of device.
[15:08]
EECP
Doc ID 018672 Rev 1
423/844
HS_USB2.0 host
RM0082
Table 353. HCCPARAMS register bit assignments (continued)
Bit
Reset value Description
[07:04]
IST
4’h1
Isochronous scheduling threshold.
This field indicates, relative to the current position of
the executing EHCI host controller, where software
can reliably update the isochronous schedule. When
bit [7] of this field is 1‘b0 (default), the value of the
least significant 3 bits indicates the number of microframes a EHCI host controller can hold a set of
isochronous data structures (one as default or more)
before flushing the state. When bit [7] is set to 1‘b1,
then host software assumes the EHCI host controller
may cache an isochronous data structure for an
entire frame.
[03]
Reserved
-
Read: undefined.
1‘h0
Asynchronous schedule park capability.
If this bit is set, then the EHCI host controller supports
the park feature for high-speed (HS) queue heads in
the asynchronous schedule. The park feature can be
disabled or enabled as well as set to a specific level
by using the asynchronous schedule park mode
enable and asynchronous schedule park mode count
fields in the USBCMD register.
1‘h0
Programmable frame list flag.
This bit states the frame list length, according to
encoding:
1‘b0 = System software must use a frame list length
of 1024 elements with this EHCI host controller. In
this case, the frame list size (FLS) in the USBCMD
register is a read only field and it should be set to
2‘b00.
1‘b1 = System software can specify and use a smaller
frame list, configured by the frame list size (FLS) field
in the USBCMD register.
The frame list must always be aligned on a 4K page
boundary, in order to ensure that the frame list is
always physically contiguous.
1‘h0
64 bits addressing capability.
This bit documents the addressing range capability of
this implementation, according to encoding:
1‘b0 = Data structures using 32 bit address memory
pointers.
1‘b1 = Data structures using 64 bit address memory
pointers.
[02]
[01]
[00]
22.6.8
Name
ASPC
PFLF
64BAC
USBCMD register
The USBCMD is a RW register which indicates the command to be executed by the serial
bus EHCI host controller.
424/844
Doc ID 018672 Rev 1
RM0082
Note:
HS_USB2.0 host
Writing this register causes a command to be executed. The USBCMD register bit
assignments are given in Table 354.
Table 354. USBCMD register bit assignments
Bit
Name
Reset value Description
[31:24]
Reserved
-
Read: undefined. Write: should be zero.
[23:16]
ITC
8’h08
Interrupt threshold control.
This field is used by system software to select the
maximum rate at which the EHCI host controller will
issue interrupts, according to encoding (any value
other than those defined above yields undefined
results):
8‘h00 = Reserved.
8‘h01 = 1 micro-frame.
8‘h02 = 2 micro-frames.
8‘h04 = 4 micro-frames.
8‘h08 = 8 micro-frames (default, equal to 1 ms).
8‘h10 = 16 micro-frames (2 ms).
8‘h20 = 32 micro-frames (4 ms).
8‘h40 = 64 micro-frames (8 ms).
Note: Software modifications to this field while HH bit
in USBSTS register is equal to 0 results in undefined
behavior.
[15:12]
Reserved
-
Read: undefined. Write: should be zero.
[11]
ASPME
1‘h1
Asynchronous schedule park mode enable.
This bit is used by software to enable (bit set to 1‘b1)
or disable (1‘b0) the Park mode.
If the asynchronous park capability bit in the
HCCPARAMS register (ASPC, bit [2]) is set, then this
bit defaults to 1‘b1 and it is RW. In contrast, this bit
must be set to 1‘b0 and it is RO.
[10]
Reserved
-
Read: undefined. Write: should be zero.
2‘h1
Asynchronous schedule park mode count.
This 2 bit field contains a count of the number of
successive transactions the EHCI host controller is
allowed to execute from a high-speed (HS) queue
head on the asynchronous schedule before
continuing the traversal of the asynchronous
schedule. Valid values are 2’h1 (2‘b01) to 2’h3 (2’b11)
only.
If the asynchronous park capability bit in the
HCCPARAMS register (ASPC, bit [2]) is set, then this
field defaults to 2‘b11 and it is RW. In contrast, it
defaults to 2‘b00 and it is RO.
Note: Software must not write a zero value (2‘b00) to
this field when park mode enable is set as it will result
in undefined behavior.
[09:08]
ASPMC
Doc ID 018672 Rev 1
425/844
HS_USB2.0 host
RM0082
Table 354. USBCMD register bit assignments (continued)
Bit
[07]
[06]
[05]
[04]
426/844
Name
LHCR
IAAD
ASE
PSE
Reset value Description
1‘h0
Light host controller reset.
This bit allows the driver to reset the EHCI host
controller without affecting the state of the ports or the
relationship to the companion OHCI host controllers.
For example, the PORSTC registers should not be
reset to their default values and the CF bit (in
CONFIGFLAG register setting should not go to zero
(retaining port ownership relationships).
If this bit is set to 1‘b0, the light host controller reset
has been completed and it is safe for host software to
re-initialize the EHCI host controller. Besides, if this
bit is set to 1‘b1, the light host controller reset has not
yet completed.
Note: If light host controller reset is not implemented,
reading this bit will always return a zero value (1‘b0).
1‘h0
Interrupt on async advance doorbell.
This bit is used as a doorbell by software to tell the
EHCI host controller to issue an interrupt the next
time it advances asynchronous schedule. Software
must write a 1‘b1 to this bit to ring the doorbell.
When the EHCI host controller has evicted all
appropriate cached schedule state, it sets the
interrupt on async advance status bit (IAA, bit [5]) in
the USBSTS register. If the Interrupt on async
advance enable bit in the USBINTR, is set, then the
EHCI host controller will assert an interrupt at the
next interrupt threshold.
Note: The EHCI host controller clears the IAAD bit
after it has set the IAA status bit in the USBSTS
register.
Note: In order to avoid undefined results, software
should not set this bit when the asynchronous
schedule is disabled.
1‘h0
Asynchronous schedule enable.
This bit controls whether the EHCI host controller
skips processing the asynchronous schedule,
according to encoding:
1‘b0 = Don’t process the asynchronous schedule.
1‘b1 = Use the ASYNCLISTADDR register to access
the asynchronous schedule.
1‘h0
Periodic schedule enable.
This bit controls whether the EHCI host controller
skips processing the periodic schedule, according to
encoding:
1‘b0 = Don’t process the periodic schedule.
1‘b1 = Use the PERIODICLISTBASE register to
access the periodic schedule.
Doc ID 018672 Rev 1
RM0082
HS_USB2.0 host
Table 354. USBCMD register bit assignments (continued)
Bit
[03:02]
[01]
[00]
Name
FLS
HCRESET
RS
Reset value Description
2‘h0
Frame list size.
This 2 bit field specifies the size of the frame list,
according to encoding:
2‘b00 = 102 elements (4096 bytes).
2‘b01 = 512 elements (2048 bytes).
2‘b10 = 256 elements (1024 bytes) - for resourceconstrained environments
2‘b11 = Reserved.
The frame list size set by this field controls which bits
in the FRINDEX register should be used for the frame
list current index.
1‘h0
Host controller reset.
This control bit is used by software to reset the EHCI
host controller. When software set this bit, the EHCI
host controller resets its internal pipelines, timers,
counters, state machines, etc. to their initial values.
Any transaction currently in progress on USB is
immediately terminated. A USB reset is not driven on
downstream ports. PCI configuration registers are not
affected by this reset. All operational registers,
including port registers and port state machines are
set to their initial values.
Note: Port ownership reverts to the companion OHCI
host controller(s), with the side effects.
This bit is cleared by the EHCI host controller when
the reset process is complete.
Note: Software cannot terminate the reset process
early by writing a 1‘b0 to this field. Software must
reinitialize the EHCI host controller in order to return
to an operational state.
Note: Software setting this bit while HCHalted bit in
USBSTS register is equal to 1‘b0 results in undefined
behavior (because attempting to reset an actively
running EHCI host controller).
1‘h0
Run / stop.
Setting this bit, the EHCI host controller proceeds
with execution of the schedule, and it continues
execution as long as RS is set.
Clearing this bit, the EHCI host controller completes
the current and any actively pipelined transactions on
the USB and then halts. The HCHalted bit in the
USBSTS register reflects this status.
Note: The EHCI host controller must halt within 16
micro-frames after software clears the RS bit.
Note: In order to avoid undefined results, software
must not set the RS bit until the EHCI host controller
is in the halted state (i.e., HCHalted in the USBSTS
register is set to 1‘b1).
Doc ID 018672 Rev 1
427/844
HS_USB2.0 host
22.6.9
RM0082
USBSTS register
The USBSTS is a RW register which indicates pending interrupts and various states of the
EHCI host controller. The USBSTS register bit assignments are given in Table 355.
Note:
1
The status resulting from a transaction on the serial bus is not indicated in this register.
2
Software clears a bit in this register by writing a 1‘b1 to it.
Table 355. USBSTS register bit assignments
Bit
Name
Reset value Description
[31:16]
Reserved
-
Read: undefined. Write: should be zero.
1‘h0
Asynchronous schedule status.
The bit reports the current real status of the
asynchronous schedule, according to encoding:
1‘b0 = Disabled.
1‘b1 = Enabled.
The EHCI host controller is not required to
immediately disable or enable the asynchronous
schedule when software transitions the asynchronous
schedule enable bit in the USBCMD register. When
this bit and the asynchronous schedule enable bit are
the same value, the asynchronous schedule is either
enabled or disabled.
[15]
428/844
ASS
[14]
PSS
1‘h0
Periodic schedule status.
The bit reports the current real status of the periodic
schedule, according to encoding:
1‘b0 = Disabled.
1‘b1 = Enabled.
The EHCI host controller is not required to
immediately disable or enable the periodic schedule
when software transitions the periodic schedule
enable bit in the USBCMD register. When this bit and
the periodic schedule enable bit are the same value,
the periodic schedule is either enabled or disabled.
[13]
R
1‘h0
Reclamation.
This is a read-only status bit, which is used to detect
an empty asynchronous schedule.
[12]
HH
1‘h1
HCHalted.
This bit is set by the EHCI host controller after it has
stopped executing as a result of the RS bit (in
USBCMD register being cleared, either by software or
by the EHCI host controller hardware (e.g. internal
error). Besides, this bit is set to 1‘b0 whenever the RS
bit is set to 1‘b1.
[11:06]
Reserved
-
Read: undefined. Write: should be zero.
Doc ID 018672 Rev 1
RM0082
HS_USB2.0 host
Table 355. USBSTS register bit assignments (continued)
Bit
[05]
[04]
[03]
[02]
Name
IAA
HSE
FLR
PCD
Reset value Description
1‘h0
Interrupt on async advance.
This status bit indicates the assertion of that interrupt
source. System software can force the EHCI host
controller to issue an interrupt the next time the EHCI
host controller advances the asynchronous schedule
by setting the interrupt on async advance doorbell bit
(IAAD) in the USBCMD register.
1‘h0
Host system error.
This bit is set by the EHCI host controller when a
serious error occurs during a host system access
involving the EHCI host controller module.
When this error occurs, the EHCI host controller
clears the RS bit in the USBCMD register to prevent
further execution of the scheduled TDs(1).
1‘h0
Frame list rollover.
This bit is set by the EHCI host controller when the
frame list index (see FRINDEX register in rolls over
from its maximum value to 0.
The exact value at which the rollover occurs depends
on the frame list size. For example, if the frame list
size (as programmed in the Frame list size, FLS, field
of the USBCMD register) is 1024 (FLS is 2‘b00), the
frame index register rolls over every time
FRINDEX[13] toggles. Similarly, if the size is 512
(FLS is 2‘b01), the EHCI host controller sets the FLR
bit every time FRINDEX[12] toggles.
1‘h0
Port change detect.
This bit is set by the EHCI host controller when any
port for which the port owner bit is set to 1‘b0 (bit PO
in port status controls register) has a change bit
transition from a 1‘b0 to a 1‘b1 or a force port resume
bit transition from a ‘b0 to a ‘b1 as a result of a J-K
transition detected on a suspended port.
This bit will also be set as a result of the connect
status change being set to 1‘b1 after system software
has relinquished ownership of a connected port by
writing a 1‘b1 to a port's port owner (PO) bit.
Doc ID 018672 Rev 1
429/844
HS_USB2.0 host
RM0082
Table 355. USBSTS register bit assignments (continued)
Bit
[01]
[00]
Name
USBERRINT
USBINT
Reset value Description
1‘h0
USB error interrupt.
This bit is set by the EHCI host controller when
completion of a USB transaction results in an error
condition (e.g., error counter underflow). If the TD on
which the error interrupt occurred also had its IOC bit
set, both this bit and USBINT bit are set.
1‘h0
USB interrupt.
This bit is set by the EHCI host controller on the
completion of a USB transaction, which results in the
retirement of a TD that had its IOC bit set. The EHCI
host controller also sets this bit when a short packet
is detected (actual number of bytes received was less
than the expected number of bytes).
1. See EHCI documentation for the detailed definitions of the data structures TD, IOC, etc.
22.6.10
USBINTR register
The USBINTR is a RW register which enables to report corresponding interrupts to the
software. It means that when an enabling bit of this register is set and the corresponding
interrupt is active, an interrupt is generated and sent to the EHCI host controller, that issue
the interrupt request (IRQ26 for EHCI1). The USBINTR register bit assignments are given in
Table 356.
Note:
Interrupt sources that are disabled in this register (enabling bit set to 1‘b0) still appear in
USBSTS register allowing the software to poll for events.
Table 356. USBINTR register bit assignments
Bit
Name
Reset value Description
[31:06]
Reserved
-
[05]
[04]
[03]
430/844
Read: undefined. Write: should be zero.
Interrupt on Async
1‘h0
Advance Enable
When both this bit and the Interrupt on async
advance (IAA) bit in the USBSTS register are set, the
EHCI host controller will issue an interrupt at the next
interrupt threshold.
The interrupt is acknowledged by software clearing
the IAA bit.
Host System Error
1‘h0
Enable
When both this bit and the host system error (HSE)
bit in the USBSTS register are set, the EHCI host
controller will issue an interrupt.
The interrupt is acknowledged by software clearing
the HSE bit.
Frame List
Rollover Enable
When both this bit and the frame list rollover (FLR) bit
in the USBSTS register are set, the EHCI host
controller will issue an interrupt.
The interrupt is acknowledged by software clearing
the FLR bit.
1‘h0
Doc ID 018672 Rev 1
RM0082
HS_USB2.0 host
Table 356. USBINTR register bit assignments (continued)
Bit
[02]
[01]
[00]
22.6.11
Name
Port Change
Interrupt Enable
USB Error
Interrupt Enable
USB Interrupt
Enable
Reset value Description
1‘h0
When both this bit and the port change detect (PGD)
bit in the USBSTS register are set, the EHCI host
controller will issue an interrupt.
The interrupt is acknowledged by software clearing
the PGD bit.
1‘h0
When both this bit and the USBERRINT bit in the
USBSTS register are set, the EHCI host controller will
issue an interrupt at the next interrupt threshold. The
interrupt is acknowledged by software clearing the
USBERRINT bit.
1‘h0
When both this bit and the USBINT bit in the
USBSTS register are set, the EHCI host controller will
issue an interrupt at the next interrupt threshold. The
interrupt is acknowledged by software clearing the
USBINT bit.
FRINDEX register
The FRINDEX (frame index) is a RW register used by the EHCI host controller to index into
the periodic frame list. The register updates every 125 microseconds, that is each microframe. The FRINDEX register bit assignments are given in Table 357.
Note:
1
The FRINDEX register must be written as a DWord. Byte writes produce undefined results.
2
The FRINDEX register cannot be written unless the EHCI host controller is in the halted
state as indicated by the HCHalted bit (in USBSTS register). A write to this register while the
RS bit (in USBCMD register) is set to 0b1 produces undefined results. Writes to this register
also affect the SOF value.
Table 357. FRINDEX register bit assignments
Bit
Name
Reset value Description
[31:14]
Reserved
-
Read: undefined. Write: should be zero.
[13:00]
Frame Index
14‘h0000
See Table 358.
The value of the frame index field increments at the end of each time frame (e.g. microframe). In particular, bits [N:3] of this field are used as frame list current index to select a
particular entry in the periodic frame list during periodic schedule execution.
Note:
This means that each location of the frame list is accessed 8 times (frames or micro-frames)
before moving to the next index.
The actual number of bits (that is, N) used for the frame list current index depends on the
size of the frame list as set by system software in the FLS field in the USBCMD register,
according to encoding:
Doc ID 018672 Rev 1
431/844
HS_USB2.0 host
RM0082
Table 358. USBCMD register encoding
FLS field value
Number of elements
N
2‘b00
1024
12
2‘b01
512
11
2‘b10
256
10
2‘b11
Reserved
-
The SOF frame number value for the bus SOF token is derived or alternatively managed
from this register. The value of FRINDEX must be 125 µsec (1 micro-frame) ahead of the
SOF token value. The SOF value may be implemented as an 11 bit shadow register. For this
discussion, this shadow register is 11 bits and is named SOFV. Then, SOFV updates every
8 micro-frames (1 millisecond).
An example implementation to achieve this behavior is to increment SOFV each time the
FRINDEX[2:0] increments from a 0 to a 1.
Software must use the value of FRINDEX to derive the current micro-frame number, both for
high-speed isochronous scheduling purposes and to provide the get micro-frame number
function required for client drivers.
Therefore, the value of FRINDEX and the value of SOFV must be kept consistent if either
chip is reset or software writes to FRINDEX. Writes to FRINDEX must also write-through
FRINDEX[13:3] to SOFV[10:0]. In order to keep the update as simple as possible, software
should never write a FRINDEX value where the three least significant bits are 3‘b111 or
3‘b000.
22.6.12
CTRLDSSEGMENT register
The CTRLDSSEGMENT (control data structure segment) is a RW register which
corresponds to the most significant address bits [63:32] for all EHCI data structures.
If the 64 bit addressing capability (64BAC) field in HCCPARAMS register is set to 1‘b0, then
this register is not used. Software cannot write to it and a read from this register will return
zeros.
If the 64BAC field in HCCPARAMS register is set to 1‘b1, then this register is used with the
link pointers to construct 64 bit addresses to EHCI control data structures. This register is
concatenated with the link pointer from either the PERIODICLISTBASE, ASYNCLISTADDR
or any control data structure link field to construct a 64 bit address.
This register allows the Host software to locate all control data structures within the same 4
GByte memory segment.
22.6.13
PERIODICLISTBASE register
The PERIODICLISTBASE (periodic frame list base address) is a RW register which
contains the beginning address of the periodic frame list in the system memory. If the EHCI
host controller is in 64 bit mode (as indicated by a 1‘b1 in the 64BAC field in the
HCCSPARAMS register, then the most significant 32 bits of every control data structure
address comes from the CTRLDSSEGMENT register (see above). The
PERIODICLISTBASE register bit assignments are given in Table 359.
432/844
Doc ID 018672 Rev 1
RM0082
HS_USB2.0 host
The contents of this register are combined with the FRINDEX register to enable the EHCI
host controller to step through the periodic frame list in sequence.
Note:
1
System software loads this register prior to starting the schedule execution by the EHCI host
controller.
2
The memory structure referenced by this physical memory pointer is assumed to be 4
kbytes aligned.
Table 359. PERIODICLISTBASE register bit assignments
22.6.14
Bit
Name
Reset value Description
[31:12]
Base Address
20’h0
These bits correspond to memory address signals
[31:12], respectively.
[11:00]
Reserved
-
Read: undefined. Write: should be zero.
SYNCLISTADDR register
The ASYNCLISTADDR (current asynchronous list address) is a RW register which contains
the address of the next asynchronous queue head to be executed. The ASYNCLISTADDR
register bit assignments are given in Table 360.
Note:
1
If the Host Controller is in 64 bit mode (as indicated by a 1‘b1 in the 64BAC field in the
HCCSPARAMS register, then the most significant 32 bits of every control data structure
address comes from the CTRLDSSEGMENT register.
2
Bits [4:0] of this register cannot be modified by system software and will always return a zero
when read.
3
The memory structure referenced by this physical memory pointer is assumed to be 32
bytes (cache line) aligned.
Table 360. ASYNCLISTADDR register bit assignments
22.6.15
Bit
Name
Reset value Description
[31:05]
LPL
27’h0
Link pointer low. These bits correspond to memory
address signals [31:5], respectively. This field may
only reference a queue head (QH).
[04:00]
Reserved
-
Read: undefined. Write: should be zero.
CONFIGFLAG register
The CONFIGFLAG is a RW register which is properly set by the host software as the last
action in EHCI host controller initialization (after initial power-on or hardware/software
reset). In particular, this register allows to control the global port routing policy of the EHCI
host controller.
The CONFIGFLAG register bit assignments are given in Table 361.
Doc ID 018672 Rev 1
433/844
HS_USB2.0 host
RM0082
Table 361. CONFIGFLAG register bit assignments
Bit
Name
Reset value Description
[31:01]
Reserved
-
Read: undefined. Write: should be zero.
1’h0
Configure flag.
This bit controls the global port routing policy of the
EHCI host controller, according to encoding:
1‘b0 = All ports are routed to the appropriate
companion OHCI host controller.
1‘b1 = All ports are routed to the EHCI host controller.
[00]
22.6.16
CF
PORTSC registers
Each EHCI host controller must implement one or more port status and control (PORTSC)
registers. The actual number of PORTSC registers implemented by the EHCI host controller
is reported in the N_PORTS field of the HCSPARAMS register. For SPEAr300
implementation this value is 4’h2 then two ports are available.
The bit assignments of each PORTSCi (i = 1, 2... N_PORTS) register are given in Table 362.
Table 362. PORTSC register bit assignments
Bit
Name
Reset
value
Description
[31:23]
Reserved
-
Read: undefined. Write: should be zero.
[22]
WKOC_E
1’h0
Wake on over-current enable.
Setting this bit enables the port to be sensitive to over-current
conditions as wake-up events.
[21]
WKDSCNNT_E 1’h0
Wake on disconnect enable.
Setting this bit enables the port to be sensitive to device
disconnects as wake-up events.
WKCNNT_E
1’h0
Wake on connect enable.
Setting this bit enables the port to be sensitive to device
connects as wake-up events.
Note: The three fields above are all zero if port power (PP bit
in this register) is zero.
4’h0
Port test control.
When this 4 bit field is zero (4‘b0), the port is not operating in a
test mode. In contrast, a non-zero value indicates that it is
operating in test mode and the specific test mode is indicated
by the specific value, according to encoding:
4‘b0000 = Disabled.
4‘b0001 = Test J_STATE.
4‘b0010 = Test K_STATE.
4‘b0011 = Test SE0_NAK.
4‘b0100 = Test Packet.
4‘b0101 = Test FORCE_ENABLE.
4‘b0001 to 4‘b1111Reserved.
[20]
[19:16]
434/844
PTC
Doc ID 018672 Rev 1
RM0082
HS_USB2.0 host
Table 362. PORTSC register bit assignments (continued)
Bit
[15:14]
[13]
[12]
Name
PIC
PO
PP
Reset
value
Description
2’h0
Port indicator control.
Writing to these 2 bit field has no effect if the P_INDICATOR
bit in the HCSPARAMS register is cleared. If P_INDICATOR bit
is set to 1‘b1, then the PIC encoding is:
2‘b00 = Port indicators are off.
2‘b01 = Amber.
2‘b10 = Green.
2‘b11 = Undefined.
Note: This field is zero if port power (PP bit in this register) is
zero.
1’h1
Port owner.
This bit unconditionally goes to 1‘b0 when the CF bit in the
CONFIGFLAG register makes a 1‘b0 to 1‘b1 transition. In
contrast, this bit unconditionally goes to 1‘b1 whenever the CF
bit is 1‘b0.
System software uses this PO field to release ownership of the
port to a selected host controller (in the event that the attached
device is not an high-speed device). Software writes a 1‘b1 to
this bit when the attached device is not an HS device, meaning
that a companion OHCI host controller owns and controls the
relevant port.
1’h0
Port Power.
The function of this bit depends on the value of the port power
control (PPC) field in the HCSPARAMS register, according to
encoding:
1‘b0 1‘b1 = EHCI host controller does not have port power
control switches, and each port is hard-wired to power. This
field is RO.
1‘b1 1‘bx = EHCI host controller has port power control
switches, and actual PP value represents the current setting of
the switch:
1‘b0 Off
1‘b1 On
When power is not available on a port (i.e. PP equals to 1 ‘b0),
the port is non-functional and will not report attaches,
detaches, etc.
Note: When an over-current condition is detected on a
powered port and PPC is set, the PP bit in each affected port
may be transitioned by the EHCI host controller from 1‘b1 to
1‘b0 (then removing power from the port).
Doc ID 018672 Rev 1
435/844
HS_USB2.0 host
RM0082
Table 362. PORTSC register bit assignments (continued)
Bit
Reset
value
Description
[11:10]
LS
2’h0
Line status.
This 2 bit field reflects the current logical levels of the D+ (bit
[11]) and D- (bit [10]) signal lines, according to encoding:
2‘b00 SE0 = Not low-speed device, perform EHCI reset.
2‘b01 J-state = Not low-speed device, perform EHCI reset.
2‘b10 K-state = Low-speed device, release ownership of port.
2‘b11 Undefined = Not low-speed device, perform EHCI reset.
These bits are used for detection of low-speed (LS) USB
devices prior to the port reset and enable sequence.
Note: This field is valid only when the port enable bit is 1‘b0
and the current connect status bit is set to 1‘b1.
Note: The value of this field is undefined if port power (PP bit
in this register) is zero.
[09]
Reserved
-
Read: undefined. Write: should be zero.
1’h0
Port Reset.
This bit states whether the port is in reset, according to
encoding:
1‘b0 = Port is not in reset.
1‘b1 = Port is in reset.
When software writes a 1‘b1 to this bit (from a 1‘b0), the bus
reset sequence as defined in the Universal Serial Bus
Specification Revision 2.0 is started. Software must keep this
bit at a 1‘b1 long enough to ensure the reset sequence
completes.
Note: When software writes this PR bit to a 1‘b1, it must also
write a 1‘b0 to the port enable bit.
Software writes a 1‘b0 to this bit to terminate the bus reset
sequence.
Note: When software writes a 1‘b0 to this bit there may be a
delay before the bit status changes to a 1‘b0. The bit status will
not read as a 1‘b0 until after the reset has completed.
If the port is in high-speed (HS) mode after reset is complete,
the EHCI host controller will automatically enable this port
(e.g. set the port enable bit to a 1‘b1). A EHCI host controller
must terminate the reset and stabilize the state of the port
within 2 milliseconds of software transitioning this bit from
a1’b1 to a 1‘b0.
Note: The HCHalted bit in the USBSTS register should be a
zero before software attempts to use the PR bit. The EHCI
host controller may hold PR asserted to a one when the
HCHalted bit is a one.
Note: This field is zero if port power (PP bit in this register) is
zero.
[08]
436/844
Name
PR
Doc ID 018672 Rev 1
RM0082
HS_USB2.0 host
Table 362. PORTSC register bit assignments (continued)
Bit
[07]
Name
S
Reset
value
Description
1’h0
Suspend.
This bit states whether the port is in suspend, according to
encoding:
1‘b0 = Port is not in suspend state.
1‘b1 = Port is in suspend state.
This S bit together with the port enabled bit (PEN) in this
register define the port states as follows:
1‘b0 1‘bx = Disabled.
1‘b1 1‘b0 = Enabled.
1‘b1 1‘b1 = Suspend.
When in suspend state, downstream propagation of data is
blocked on this port, except for port reset. The blocking occurs
at the end of the current transaction, if a transaction was in
progress when this bit was written to 1‘b1. In the suspend
state, the port is sensitive to resume detection. Note that the
bit status does not change until the port is suspended and that
there may be a delay in suspending a port if there is a
transaction currently in progress on the USB.
A write of 1’b0 to this bit is ignored by the EHCI Host
Controller. The EHCI host controller will unconditionally set
this bit to a zero when:
software sets the force port resume (FPR) bit to 1‘b0 (from a
1‘b1)
software sets the port reset (PR) bit to 1‘b1 (from a 1‘b0).
Note: If host software sets this bit to 1‘b1 when the port is not
enabled (i.e. PEN bit is 1‘b0) the results are undefined.
Note: This field is zero if port power (PP bit in this register) is
zero.
Doc ID 018672 Rev 1
437/844
HS_USB2.0 host
RM0082
Table 362. PORTSC register bit assignments (continued)
Bit
[06]
[05]
[04]
[03]
438/844
Name
FPR
OcC
OcA
PEDC
Reset
value
Description
1’h0
Force port resume.
This bit states whether the port is in suspend, according to
encoding:
1‘b0 = No resume (K-state) detected/driven on port.
1‘b1 = Resume detected/driven on port.
The functionality defined for manipulating this bit depends on
the value of the suspend bit (see above). For example, if the
port is not suspended (S is 1‘b0 and PEN is 1‘b1) and
software transitions this bit to 1‘b1, then the effects on the bus
are undefined.
The EHCI host controller sets the FPR bit to 1‘b1 if a J-to-K
transition is detected while the port is in the Suspend state.
When this bit changes to 1‘b1 because a J-to-K transition is
detected, the port change detect (PCD) bit in the USBSTS
register is also set to 1‘b1.
Software sets this bit to 1‘b1 to drive resume signaling. In this
case, the EHCI host controller must not set the port change
detect bit. The resume signaling (full-speed 'K') is driven on
the port as long as this bit remains a 1‘b1. Software must
appropriately time the resume and set this bit to a zero when
the appropriate amount of time has elapsed. Writing a zero
(from one) causes the port to return to high-speed mode
(forcing the bus below the port into a high-speed idle). This bit
will remain a one until the port has switched to the high-speed
idle.
The EHCI host controller must complete this transition within 2
milliseconds of software setting this bit to 1‘b0.
Note: This field is zero if port power (PP bit in this register) is
zero.
1’h0
Over-current change.
This bit is set to 1‘b1 when there is a change in the overcurrent active (OcA) bit in this register. Software clears this bit
by writing a one to this bit position.
1’h0
Over-current active.
This bit states whether the port has a over-current condition,
according to encoding:
1‘b0 = This port does not have an over-current condition.
1‘b1 = This port currently has an over-current condition.
Note: This bit will automatically transition from a 1‘b1 to a 1‘b0
when the over-current condition is removed.
1’h0
Port enable/disable change.
This bit is set to 1‘b1 when port enabled/disabled status
(reflected by the PEN bit in this register) has changed.
Software clears this bit by writing a one to this bit position.
Doc ID 018672 Rev 1
RM0082
HS_USB2.0 host
Table 362. PORTSC register bit assignments (continued)
Bit
[02]
[01]
[00]
22.6.17
Name
PEN
CSC
CCS
Reset
value
Description
1’h0
Port enabled/disabled.
This bit states whether the port is enabled, according to
encoding:
1‘b0 = Disabled.
1‘b1 = Enabled.
Ports can only be enabled by the EHCI host controller as a
part of the reset and enable. Software cannot enable a port by
writing a 1‘b1 to this field. The EHCI host controller will only
set this bit to 1‘b1 when the reset sequence determines that
the attached device is an high-speed (HS) device.
Ports can be disabled by either a fault condition (disconnect
event or other fault condition) or by host software. When the
port is disabled (1‘b0), downstream propagation of data is
blocked on this port, except for reset.
Note: The bit status does not change until the port state
actually changes. There may be a delay in disabling or
enabling a port due to other EHCI host controller and bus
events.
This field is zero if port power (PP bit in this register) is zero.
1’h0
Connect status change.
This bit is set to indicates that a change has occurred in the
port’s current connect status (CCS bit in this register).
The EHCI host controller sets this bit for all changes to the port
device connect status, even if system software has not cleared
an existing connect status change. For example, the insertion
status changes twice before system software has cleared the
changed condition, hub hardware will be setting an already-set
bit (i.e., the bit will remain set).
Software clears this bit by writing a one to this bit position.
This field is zero if port power (PP bit in this register) is zero.
1’h0
Current connect status.
This bit reflects the current state of the port, according to
encoding, and may not correspond directly to the event that
caused the CSC bit to be set:
1‘b0 = No device is present on port.
1‘b1 = Device is present on port.
This field is zero if port power (PP bit in this register) is zero.
INSNREG00 register
The INSNREG00 is a RW 14 bit register which allows to reduces the microframe length in
simulation.
22.6.18
INSNREG01 register
The INSNREG01 is a RW register which allows to break memory transactions (in both out
and in direction) into chunks once a threshold value (in bytes) is reached. Enabling of break
Doc ID 018672 Rev 1
439/844
HS_USB2.0 host
RM0082
memory feature is driven by the INSNREG03 register. The INSNREG01 register bit
assignments are given in Table 363.
Table 363. INSNREG01 register bit assignments
22.6.19
Bit
Name
Reset value Description
[31:16]
OUT
16’h0020
Out transactions threshold (in bytes).
[15:00]
IN
16’h0020
In transactions threshold (in bytes).
INSNREG02 register
The INSNREG02 is a RW 12 bit register which allows to configure the packet buffer depth.
As stated by the reset value (12’h080), the buffer depth is 128 x 32 by default.
22.6.20
INSNREG03 register
The INSNREG03 is a RW 1 bit register used in conjunction with INSNREG01 to
enable/disable breaking of memory transactions into chunks. The bit description is given in
Table 364.
Table 364. INSNREG03 register bit assignments
22.6.21
Bit
Name
Reset value Description
[00]
BMT
1’h0
Setting this bit enables break memory transfer.
INSNREG05 register
The INSNREG05 is a RW 32 bit register which allows to read the UTMI registers from the
following signals:
Table 365. INSNREG05 register bit assignments
Bit
Name
Reset value Description
[31:18]
Reserved
-
Read: undefined. Write: should be zero.
[17]
VBusy
1’h0
Software RO.
[16:13]
VPort
4’h0
Software R/W.
[12]
VControlLoadM
1’h0
1‘b0 › Load new control word
1‘b1 › NOP (Software R/W).
[11:08]
VControl
4’h0
Vendor control (software R/W).
[07:00]
VStatus
8’h0
Vendor status (software RO).
22.6.22
Register description of OHCI
22.6.23
Operation registers
The Host Controller (HC) contains a set of on-chip operational registers which are mapped
into a noncacheable portion of the system addressable space. These registers are used by
the Host Controller Driver (HCD). According to the function of these registers, they are
440/844
Doc ID 018672 Rev 1
RM0082
HS_USB2.0 host
divided into four partitions, specifically for Control and Status, Memory Pointer, Frame
Counter and Root Hub. All of the registers should be read and written as Dwords.
Reserved bits may be allocated in future releases of this specification. To ensure
interoperability, the Host Controller Driver that does not use a reserved field should not
assume that the reserved field contains 0. Furthermore, the Host Controller Driver should
always preserve the value(s) of the reserved field. When a R/W register is modified, the
Host Controller Driver should first read the register, modify the bits desired, then write the
register with the reserved bits still containing the read value. Alternatively, the Host
Controller Driver can maintain an in-memory copy of previously written values that can be
modified and then written to the Host Controller register. When a write to set/clear register is
written, bits written to reserved fields should be 0.
22.6.24
The control and status partition
22.6.25
HcRevision register
Table 366. HcRevision register bit assignments
Read/Write
Bits
Name
Reset
Description
HCD
22.6.26
HC
[31:08]
Reserved
[07:00]
Revision
This read-only field contains the BCD representation of
the version of the HCI specification that is implemented by
this HC.
For example, a value of 11h corresponds to version 1.1.
All of the HC implementations that are compliant with this
specification will have a value of 10h.
REV
8’h10
R
R
HcControl register
The HcControl register defines the operating modes for the Host Controller. Most of the
fields in this register are modified only by the Host Controller Driver, except
HostControllerFunctionalState and RemoteWakeupConnected.
Table 367. HcControl register bit assignments
Read/Write
Bits
Name
Reset
Description
HCD
[31:11]
[10]
HC
--
Reserved
RWE
RemoteWakeupEnable
This bit is used by HCD to enable or disable the remote
wakeup feature upon the detection of upstream resume
signaling. When this bit is set and the ResumeDetected bit
in HcInterruptStatus is set, a remote wakeup is signaled to
the host system. Setting this bit has no impact on the
generation of hardware interrupt.
0b
R/W
R
Doc ID 018672 Rev 1
441/844
HS_USB2.0 host
RM0082
Table 367. HcControl register bit assignments (continued)
Read/Write
Bits
Name
Reset
Description
HCD
[09]
[08]
[07:06]
[05]
442/844
RWC
IR
HCFS
BLE
0b
0b
00b
0b
R/W
R/W
R/W
R/W
HC
R
RemoteWakeupConnected
This bit indicates whether HC supports remote wakeup
signaling. If remote wakeup is supported and used by the
system it is the responsibility of system firmware to set
this bit during POST. HC clears the bit upon a hardware
reset but does not alter it upon a software reset. Remote
wakeup signaling of the host system is host-bus-specific
and is not described in this specification.
R
InterruptRouting
This bit determines the routing of interrupts generated by
events registered in HcInterruptStatus. If clear, all
interrupts are routed to the normal host bus interrupt
mechanism. If set, interrupts are routed to the System
Management Interrupt. HCD clears this bit upon a
hardware reset, but it does not alter this bit upon a
software reset. HCD uses this bit as a tag to indicate the
ownership of HC.
R
HostControllerFunctionalState for USB
00b: USBRESET
01b: USBRESUME
10b: USBOPERATIONAL
11b: USBSUSPEND
A transition to USBOPERATIONAL from another state
causes SOF generation to begin 1 ms later. HCD may
determine whether HC has begun sending SOFs by
reading the StartofFrame field of
HcInterruptStatus.
This field may be changed by HC only when in the
USBSUSPEND state. HC may move from the
USBSUSPEND state to the USBRESUME state after
detecting the resume signaling from a downstream port.
HC enters USBSUSPEND after a software reset, whereas
it enters USBRESET after a hardware reset. The latter
also resets the RootHub and asserts subsequent reset
signaling to downstream ports.
R
BulkListEnable
This bit is set to enable the processing of the Bulk list in
the next Frame. If cleared by HCD, processing of the Bulk
list does not occur after the next SOF. HC checks this bit
whenever it determines to process the list. When disabled,
HCD may modify the list. If HcBulkCurrentED is pointing
to an ED to be removed, HCD must advance the pointer
by updating HcBulkCurrentED before re-enabling
processing of the list.
Doc ID 018672 Rev 1
RM0082
HS_USB2.0 host
Table 367. HcControl register bit assignments (continued)
Read/Write
Bits
Name
Reset
Description
HCD
[04]
[03]
[02]
[01:00]
22.6.27
CLE
IE
PLE
CBSR
0b
0b
0b
00b
R/W
R/W
R/W
R/W
HC
R
ControlListEnable
This bit is set to enable the processing of the Control list in
the next Frame. If cleared by HCD, processing of the
Control list does not occur after the next SOF. HC must
check this bit whenever it determines to process the list.
When disabled, HCD may modify the list. If
HcControlCurrentED is pointing to an ED to be removed,
HCD must advance the pointer by updating
HcControlCurrentED before re-enabling processing of the
list.
R
IsochronousEnable
This bit is used by HCD to enable/disable processing of
isochronous EDs. While processing the periodic list in a
Frame, HC checks the status of this bit when it finds an
Isochronous ED (F=1). If set (enabled), HC continues
processing the EDs. If cleared (disabled), HC halts
processing of the periodic list (which now contains only
isochronous EDs) and begins processing the Bulk/Control
lists. Setting this bit is guaranteed to take effect in the next
Frame (not the current Frame).
R
PeriodicListEnable
This bit is set to enable the processing of the periodic list
in the next Frame. If cleared by HCD, processing of the
periodic list does not occur after the next SOF. HC must
check this bit before it starts processing the list.
R
ControlBulkServiceRatio
This specifies the service ratio between Control and Bulk
EDs. Before processing any of the nonperiodic lists, HC
must compare the ratio specified with its internal count on
how many nonempty Control EDs have been processed,
in determining whether to continue serving another
Control ED or switching to Bulk EDs.
The internal count will be retained when crossing the
frame boundary. In case of reset, HCD is responsible for
restoring this value.
00 - 1:1
01 - 2:1
10 - 3:1
11 - 4:1
HcCommandStatus register
The HcCommandStatus register is used by the Host Controller to receive commands issued
by the Host Controller Driver, as well as reflecting the current status of the Host Controller.
To the Host Controller Driver, it appears to be a "write to set" register. The Host Controller
must ensure that bits written as ‘1’ become set in the register while bits written as ‘0’ remain
unchanged in the register. The Host Controller Driver may issue multiple distinct commands
Doc ID 018672 Rev 1
443/844
HS_USB2.0 host
RM0082
to the Host Controller without concern for corrupting previously issued commands. The Host
Controller Driver has normal read access to all bits.
The SchedulingOverrunCount field indicates the number of frames with which the Host
Controller has detected the scheduling overrun error. This occurs when the Periodic list
does not complete before EOF. When a scheduling overrun error is detected, the Host
Controller increments the counter and sets the SchedulingOverrun field in the
HcInterruptStatus register.
Table 368. HcCommandStatus register bit assignments
Read/Write
Bits
Name
Reset
Description
HCD
[31:18]
Reserved
[17:16]
SchedulingOverrunCount
These bits are incremented on each scheduling overrun
error. It is initialized to 00b and wraps around at 11b. This
will be incremented when a scheduling overrun is
detected even if SchedulingOverrun in HcInterruptStatus
has already been set. This is used by HCD to monitor any
persistent scheduling problems.
SOC
00b
R
R/W
[15:04]
Reserved
[03]
R/R
OwnershipChangeRequest
This bit is set by an OS HCD to request a change of
control of the HC. When set HC will set the
OwnershipChange field in HcInterruptStatus. After the
changeover, this bit is cleared and remains so until the
next request from OS HCD.
R
BulkListFilled
This bit is used to indicate whether there are any TDs on
the Bulk list. It is set by HCD whenever it adds a TD to an
ED in the Bulk list.
When HC begins to process the head of the Bulk list, it
checks BF. As long as BulkListFilled is 0, HC will not start
processing the Bulk list. If BulkListFilled is 1, HC will start
processing the Bulk list and will set BF to 0. If HC finds a
TD on the list, then HC will set BulkListFilled to 1 causing
the Bulk list processing to continue. If no TD is found on
the Bulk list, and if HCD does not set BulkListFilled, then
BulkListFilled will still be 0 when HC completes
processing the Bulk list and Bulk list processing will stop.
[02]
444/844
HC
OCR
BLF
00b
0b
R/W
R/W
Doc ID 018672 Rev 1
RM0082
HS_USB2.0 host
Table 368. HcCommandStatus register bit assignments (continued)
Read/Write
Bits
Name
Reset
Description
HCD
[01]
[00]
22.6.28
CLF
HCR
0b
0b
R/W
R/W
HC
R
ControlListFilled
This bit is used to indicate whether there are any TDs on
the Control list. It is set by HCD whenever it adds a TD to
an ED in the Control list.
When HC begins to process the head of the Control list, it
checks CLF. As long as ControlListFilled is 0, HC will not
start processing the Control list. If CF is 1, HC will start
processing the Control list and will set ControlListFilled to
0. If HC finds a TD on the list, then HC will set
ControlListFilled to 1 causing the Control list processing to
continue. If no TD is found on the Control list, and if the
HCD does not set ControlListFilled, then ControlListFilled
will still be 0 when HC completes processing
the Control list and Control list processing will stop.
R
HostControllerReset
This bit is set by HCD to initiate a software reset of HC.
Regardless of the functional state of HC, it moves to the
USBSUSPEND state in which most of the operational
registers are reset except those stated otherwise; e.g., the
InterruptRouting field of HcControl, and no Host bus
accesses are allowed. This bit is cleared by HC upon the
completion of the reset operation.The reset operation
must be completed within 10 ms. This bit, when set,
should not cause a reset to the Root Hub and no
subsequent reset signaling should be asserted to its
downstream ports.
HcInterruptStatus register
This register provides status on various events that cause hardware interrupts. When an
event occurs, Host Controller sets the corresponding bit in this register. When a bit becomes
set, a hardware interrupt is generated if the interrupt is enabled in the HcInterruptEnable
register (see Section 7.1.5) and the MasterInterruptEnable bit is set. The Host Controller
Driver may clear specific bits in this register by writing ‘1’ to bit positions to be cleared. The
Host Controller Driver may not set any of these bits. The Host Controller will never clear the
bit.
Doc ID 018672 Rev 1
445/844
HS_USB2.0 host
RM0082
Table 369. HcInterruptStatus register bit assignments
Read/Write
Bits
Name
Reset
Description
HCD
HC
[31]
Reserved
[30]
OwnershipChange
This bit is set by HC when HCD sets the
OwnershipChangeRequest field in HcCommandStatus.
This event, when unmasked, will always generate an
System Management Interrupt (SMI) immediately.
This bit is tied to 0b when the SMI pin is not implemented.
OC
0b
R/W
R/W
[29:07]
[06]
[05]
[04]
[03]
[02]
[01]
[00]
446/844
Reserved
RHSC 0b
FN0
UE
RD
SF
WDH
SO
0b
0b
0b
0b
0b
0b
R/W/
R/W
R/W
R/W
R/W
R/W
R/W
R/W
RootHubStatusChange
This bit is set when the content of HcRhStatus or the
content of any of
HcRhPortStatus[NumberofDownstreamPort] has
changed.
R/W
FrameNumberOverflow
This bit is set when the MSb of HcFmNumber (bit 15)
changes value, from 0 to 1 or from 1 to 0, and after
HccaFrameNumber has been updated.
R/W
UnrecoverableError
This bit is set when HC detects a system error not related
to USB. HC should not proceed with any processing nor
signaling before the system error has been corrected.
HCD clears this bit after HC has been reset.
R/W
ResumeDetected
This bit is set when HC detects that a device on the USB
is asserting resume signaling. It is the transition from no
resume signaling to resume signaling causing this bit to
be set. This bit is not set when HCD sets the
USBRESUME state.
R/W
StartofFrame
This bit is set by HC at each start of a frame and after the
update of HccaFrameNumber. HC also generates a SOF
token at the same time.
R/W
WritebackDoneHead
This bit is set immediately after HC has written
HcDoneHead to HccaDoneHead. Further updates of the
HccaDoneHead will not occur until this bit has been
cleared. HCD should only clear this bit after it has saved
the content of HccaDoneHead.
R/W
SchedulingOverrun
This bit is set when the USB schedule for the current
Frame
overruns
and
after
the
update
of
HccaFrameNumber. A scheduling overrun will also cause
the SchedulingOverrunCount of HcCommandStatus to be
incremented.
Doc ID 018672 Rev 1
RM0082
22.6.29
HS_USB2.0 host
HcInterruptEnable register
Each enable bit in the HcInterruptEnable register corresponds to an associated interrupt bit
in the HcInterruptStatus register. The HcInterruptEnable register is used to control which
events generate a hardware interrupt. When a bit is set in the HcInterruptStatus register
AND the corresponding bit in the HcInterruptEnable register is set AND the
MasterInterruptEnable bit is set, then a hardware interrupt is requested on the host bus.
Writing a '1' to a bit in this register sets the corresponding bit, whereas writing a '0' to a bit in
this register leaves the corresponding bit unchanged. On read, the current value of this
register is returned.
Table 370. HcInterruptEnable register bit assignments
Read/Write
Bits
Name
Reset
Description
HCD
HC
[31]
MIE
0b
R/W
R
A ‘0’ written to this field is ignored by HC. A '1' written to
this field enables interrupt generation due to events
specified in the other bits of this register. This is used by
HCD as a Master Interrupt Enable.
[30]
OC
0b
R/W
R
0 - Ignore
1 - Enable interrupt generation due to Ownership Change.
[29:07]
22.6.30
Reserved
[06]
RHSC
0b
R/W
R
0 - Ignore
1 - Enable interrupt generation due to Root Hub Status
Change.
[05]
FNO
0b
R/W
R
0 - Ignore
1 - Enable interrupt generation due to Frame Number
Overflow.
[04]
UE
0b
R/W
R
0 - Ignore
1 - Enable interrupt generation due to Unrecoverable
Error.
[03]
RD
0b
R/W
R
0 - Ignore
1 - Enable interrupt generation due to Resume Detect.
[02]
SF
0b
R/W
R
0 - Ignore
1 - Enable interrupt generation due to Start of Frame.
[01]
WDH
0b
R/W
R
0 - Ignore
1 - Enable interrupt generation due to HcDoneHead
Writeback.
[00]
SO
0b
R/W
R
0 - Ignore
1 - Enable interrupt generation due to Scheduling
Overrun.
HcInterruptDisable register
Each disable bit in the HcInterruptDisable register corresponds to an associated interrupt bit
in the HcInterruptStatus register. The HcInterruptDisable register is coupled with the
Doc ID 018672 Rev 1
447/844
HS_USB2.0 host
RM0082
HcInterruptEnable register. Thus, writing a '1' to a bit in this register clears the
corresponding bit in the HcInterruptEnable register, whereas writing a '0' to a bit in this
register leaves the corresponding bit in the HcInterruptEnable register unchanged. On read,
the current value of the HcInterruptEnable register is returned.
Table 371. HcInterruptDisable register bit assignments
Read/Write
Bits
Name
Reset
Description
HCD
HC
[31]
MIE
0b
R/W
R
A ‘0’ written to this field is ignored by HC. A '1' written to
this field disables interrupt generation due to events
specified in the other bits of this register. This field is set
after a hardware or software reset.
[30]
OC
0b
R/W
R
0 - Ignore
1 - disable interrupt generation due to Ownership Change.
[29:07]
Reserved
[06]
RHSC
0b
R/W
R
0 - Ignore
1 - disable interrupt generation due to Root Hub Status
Change.
[05]
FNO
0b
R/W
R
0 - Ignore
1 - disable interrupt generation due to Frame Number
Overflow.
[04]
UE
0b
R/W
R
0 - Ignore
1 - disable interrupt generation due to Unrecoverable
Error.
[03]
RD
0b
R/W
R
0 - Ignore
1 - disable interrupt generation due to Resume Detect.
[02]
SF
0b
R/W
R
0 - Ignore
1 - disable interrupt generation due to Start of Frame.
[01]
WDH
0b
R/W
R
0 - Ignore
1 - disable interrupt generation due to HcDoneHead
Writeback.
[00]
SO
0b
R/W
R
0 - Ignore
1 - disable interrupt generation due to Scheduling
Overrun.
22.6.31
Memory pointer partition
22.6.32
HcHCCA register
The HcHCCA register contains the physical address of the Host Controller Communication
Area. The Host Controller Driver determines the alignment restrictions by writing all 1s to
HcHCCA and reading the content of HcHCCA. The alignment is evaluated by examining the
number of zeroes in the lower order bits. The minimum alignment is 256 bytes; therefore,
bits 0 through 7 must always return '0' when read. Detailed description can be found in
Chapter 4. This area is used to hold the control structures and the Interrupt table that are
accessed by both the Host Controller and the Host Controller Driver.
448/844
Doc ID 018672 Rev 1
RM0082
HS_USB2.0 host
Table 372. HcHCCA register bit assignments
Read/Write
Bits
[31:08]
Name
HCCA
Reset
0h
Description
HCD
HC
R/W
R
[07:00]
22.6.33
This is the base address of the Host Controller
Communication Area.
Reserved
HcPeriodCurrentED register
The HcPeriodCurrentED register contains the physical address of the current Isochronous
or Interrupt Endpoint Descriptor.
Table 373. HcPeriodCurrentED register bit assignments
Read/Write
Bits
Name
Reset
Description
HCD
[31:04]
PCED
0h
R
HC
R/W
[03:00]
22.6.34
PeriodCurrentED
This is used by HC to point to the head of one of the
Periodic lists which will be processed in the current
Frame. The content of this register is updated by HC after
a periodic ED has been processed. HCD may read the
content in determining which ED is currently being
processed at the time of reading.
Reserved
HcControlHeadED register
The HcControlHeadED register contains the physical address of the first Endpoint
Descriptor of the Control list.
Table 374. HcControlHeadED register bit assignments
Read/Write
Bits
Name
Reset
Descritpion
HCD
[31:04]
CHED
0h
R/W
HC
R
[03:00]
22.6.35
ControlHeadED
HC traverses the Control list starting with the
HcControlHeadED pointer. The content is loaded from
HCCA during the initialization of HC.
Reserved
HcControlCurrentED register
The HcControlCurrentED register contains the physical address of the current Endpoint
Descriptor of the Control list.
Doc ID 018672 Rev 1
449/844
HS_USB2.0 host
RM0082
Table 375. HcControlCurrentED register bit assignments
Read/Write
Bits
Name
Reset
Description
HCD
[31:04]
CCED
0h
R/W
HC
R/W
[03:00]
22.6.36
ControlCurrentED
This pointer is advanced to the next ED after serving the
present one. HC will continue processing the list from
where it left off in the last Frame. When it reaches the end
of the Control list, HC checks the ControlListFilled of in
HcCommandStatus. If set, it copies the content of
HcControlHeadED to HcControlCurrentED and clears the
bit. If not set, it does nothing. HCD is allowed to modify
this register only when the ControlListEnable of HcControl
is cleared. When set, HCD only reads the instantaneous
value of this register. Initially, this is set to zero to indicate
the end of the Control list.
Reserved
HcBulkHeadED register
The HcBulkHeadED register contains the physical address of the first Endpoint Descriptor
of the Bulk list.
Table 376. HcBulkHeadED register bit assignments
Read/Write
Bits
Name
Reset
Description
HCD
[31:04]
BHED
0h
R/W
HC
R
[03:00]
22.6.37
BulkHeadED
HC traverses the Bulk list starting with the HcBulkHeadED
pointer. The content is loaded from HCCA during the
initialization of HC.
Reserved
HcBulkCurrentED register
The HcBulkCurrentED register contains the physical address of the current endpoint of the
Bulk list. As the Bulk list will be served in a round-robin fashion, the endpoints will be
ordered according to their insertion to the list.
450/844
Doc ID 018672 Rev 1
RM0082
HS_USB2.0 host
Table 377. HcBulkCurrentED register bit assignments
Read/Write
Bits
Name
Reset
Description
HCD
[31:04]
BCED
0h
R/W
HC
R/W
[03:00]
22.6.38
BulkCurrentED
This is advanced to the next ED after the HC has served
the present one. HC continues processing the list from
where it left off in the last Frame. When it reaches the end
of the Bulk list, HC checks the ControlListFilled of
HcControl. If set, it copies the content of HcBulkHeadED
to HcBulkCurrentED and clears the bit. If it is not set, it
does nothing. HCD is only allowed to modify this register
when the BulkListEnable of HcControl is cleared. When
set, the HCD only reads the instantaneous value of this
register. This is initially set to zero to indicate the end of
the Bulk list.
Reserved
HcDoneHead register
The HcDoneHead register contains the physical address of the last completed Transfer
Descriptor that was added to the Done queue. In normal operation, the Host Controller
Driver should not need to read this register as its content is periodically written to the HCCA.
Table 378. HcDoneHead register bit assignments
Read/Write
Bits
Name
Reset
Description
HCD
[31:04]
DH
0h
R
HC
R/W
[03:00]
DoneHead
When a TD is completed, HC writes the content of
HcDoneHead to the NextTD field of the TD. HC then
overwrites the content of HcDoneHead with the address
of this TD. This is set to zero whenever HC writes the
content of this register to HCCA. It also sets the
WritebackDoneHead of HcInterruptStatus.
Reserved
22.6.39
Frame counter partition
22.6.40
HcFmInterval register
The HcFmInterval register contains a 14 bit value which indicates the bit time interval in a
Frame, (i.e., between two consecutive SOFs), and a 15 bit value indicating the Full Speed
maximum packet size that the Host Controller may transmit or receive without causing
scheduling overrun. The Host Controller Driver may carry out minor adjustment on the
FrameInterval by writing a new value over the present one at each SOF. This provides the
programmability necessary for the Host Controller to synchronize with an external clocking
resource and to adjust any unknown local clock offset.
Doc ID 018672 Rev 1
451/844
HS_USB2.0 host
RM0082
Table 379. HcFmInterval register bit assignments
Read/Write
Bits
Name
Reset
Description
HCD
[31]
[30:16]
22.6.41
FIT
0b
FSMPS TBD
R/W‘
R/W
HC
R
FrameIntervalToggle
HCD toggles this bit whenever it loads a new value to
FrameInterval.
R
FSLargestDataPacket
This field specifies a value which is loaded into the
Largest Data Packet Counter at the beginning of each
frame. The counter value represents the largest amount
of data in bits which can be sent or received by the HC in
a single transaction at any given time without causing
scheduling overrun. The field value is calculated by the
HCD.
[15:14]
Reserved
[13:00]
FrameInterval
This specifies the interval between two consecutive
SOFs in bit times. The nominal value is set to be 11,999.
HCD should store the current value of this field before
resetting HC. By setting the HostControllerReset field of
HcCommandStatus as this will cause the HC to reset this
field to its nominal value. HCD may choose to restore the
stored value upon the completion of the Reset sequence.
FI
2EDFh R/W
R
HcFmRemaining register
The HcFmRemaining register is a 14 bit down counter showing the bit time remaining in the
current Frame.
Table 380. HcFmRemaining register bit assignments
Read/Write
Bits
Name
Reset
Description
HCD
[31]
452/844
FRT
0b
R
HC
R/W
FrameRemainingToggle
This bit is loaded from the FrameIntervalToggle field of
HcFmInterval whenever FrameRemaining reaches 0. This
bit is used by HCD for the synchronization between
FrameInterval and FrameRemaining.
[30:14]
Reserved
[13:00]
FrameRemaining
This counter is decremented at each bit time. When it
reaches zero, it is reset by loading the FrameInterval
value specified in HcFmInterval at the next bit time
boundary. When entering the USBOPERATIONAL state,
HC re-loads the content with the FrameInterval of
HcFmInterval and uses the updated value from the next
SOF.
FR
0h
R
R/W
Doc ID 018672 Rev 1
RM0082
22.6.42
HS_USB2.0 host
HcFmNumber register
The HcFmNumber register is a 16 bit counter. It provides a timing reference among events
happening in the Host Controller and the Host Controller Driver. The Host Controller Driver
may use the 16 bit value specified in this register and generate a 32 bit frame number
without requiring frequent access to the register.
Table 381. HcFmNumber register bit assignments
Read/Write
Bits
Name
Reset
Description
HCD
22.6.43
HC
[31:16]
Reserved
[15:00]
FrameNumber
This is incremented when HcFmRemaining is re-loaded. It
will be rolled over to 0h after ffffh. When entering the
USBOPERATIONAL state, this will be incremented
automatically. The content will be written to HCCA after
HC has incremented the FrameNumber at each frame
boundary and sent a SOF but before HC reads the first
ED in that Frame. After writing to HCCA, HC will set the
StartofFrame in HcInterruptStatus.
FN
0h
R
R/W
HcPeriodicStart register
The HcPeriodicStart register has a 14 bit programmable value which determines when is the
earliest time HC should start processing the periodic list.
Table 382. HcPeriodicStart register bit assignments
Read/Write
Bits
Name
Reset
Description
HCD
22.6.44
HC
[31:14]
Reserved
[13:00]
PeriodicStart
After a hardware reset, this field is cleared. This is then
set by HCD during the HC initialization. The value is
calculated roughly as 10% off from HcFmInterval. A
typical value will be 3E67h. When HcFmRemaining
reaches the value specified, processing of the periodic
lists will have priority over Control/Bulk processing. HC
will therefore start processing the Interrupt list after
completing the current Control or Bulk transaction that is
in progress.
PS
0h
R/W
R
HcLSThreshold register
The HcLSThreshold register contains an 11 bit value used by the Host Controller to
determine whether to commit to the transfer of a maximum of 8-byte LS packet before EOF.
Neither the Host Controller nor the Host Controller Driver are allowed to change this value.
Doc ID 018672 Rev 1
453/844
HS_USB2.0 host
RM0082
Table 383. HcLSThreshold register bit assignments
Read/Write
Bits
Name
Reset
Description
HCD
22.6.45
HC
[31:12]
Reserved
[11:00]
LSThreshold
This field contains a value which is compared to the
FrameRemaining field prior to initiating a Low Speed
transaction. The transaction is started only if
FrameRemaining ³ this field. The value is calculated by
HCD with the consideration of transmission and setup
overhead.
LST
0628h
R/W
R
Root hub partition
All registers included in this partition are dedicated to the USB Root Hub which is an integral
part of the Host Controller though still a functionally separate entity. The HCD emulates
USBD accesses to the Root Hub via a register interface. The HCD maintains many USBdefined hub features which are not required to be supported in hardware. For example, the
Hub's Device, Configuration, Interface, and Endpoint Descriptors are maintained only in the
HCD as well as some static fields of the Class Descriptor. The HCD also maintains and
decodes the Root Hub's device address as well as other trivial operations which are better
suited to software than hardware.
The Root Hub register interface is otherwise developed to maintain similarity of bit
organization and operation to typical hubs which are found in the system. Below are four
register definitions: HcRhDescriptorA, HcRhDescriptorB, HcRhStatus, and
HcRhPortStatus[1:NDP]. Each register is read and written as a Dword. These registers are
only written during initialization to correspond with the system implementation. The
HcRhDescriptorA and HcRhDescriptorB registers should be implemented such that they are
writeable regardless of the HC USB state. HcRhStatus and HcRhPortStatus must be
writeable during the USBOPERATIONAL state.
Note:
IS denotes an implementation-specific reset value for that field.
22.6.46
HcRhDescriptorA register
The HcRhDescriptorA register is the first register of two describing the characteristics of the
Root Hub. Reset values are implementation-specific. The descriptor length (11), descriptor
type (TBD), and hub controller current (0) fields of the hub Class Descriptor are emulated by
the HCD. All other fields are located in the HcRhDescriptorA and HcRhDescriptorB
registers.
454/844
Doc ID 018672 Rev 1
RM0082
HS_USB2.0 host
Table 384. HcRhDescriptorA register bit assignments
Read/Write
Bits
Name
Reset
Description
HCD
[31:24]
POTP
GT
IS
R/W
HC
R
PowerOnToPowerGoodTime
This byte specifies the duration HCD has to wait before
accessing a powered-on port of the Root Hub. It is
implementation-specific. The unit of time is 2 ms. The
duration is calculated as POTPGT * 2 ms.
[23:13]
Reserved
[12]
R
NoOverCurrentProtection
This bit describes how the overcurrent status for the Root
Hub ports are reported. When this bit is cleared, the
OverCurrentProtectionMode field specifies global or perport reporting.
0: Over-current status is reported collectively for all
downstream ports
1: No overcurrent protection supported
R
OverCurrentProtectionMode
This bit describes how the overcurrent status for the Root
Hub ports are reported. At reset, this fields should reflect
the same mode as PowerSwitchingMode. This field is
valid only if the NoOverCurrentProtection field is cleared.
0: over-current status is reported collectively for all
downstream ports
1: over-current status is reported on a per-port basis
R
DeviceType
This bit specifies that the Root Hub is not a compound
device. The Root Hub is not permitted to be a compound
device. This field should always read/write 0.
R
NoPowerSwitching
These bits are used to specify whether power switching is
supported or port are always powered. It is
implementationspecific. When this bit is cleared, the
PowerSwitchingMode specifies global or per-port
switching.
0: Ports are power switched
1: Ports are always powered on when the HC is powered
on
[11]
[10]
[09]
NOCP
IS
OCPM IS
DT
NPS
0b
IS
R/W
R/W
R
R/W
Doc ID 018672 Rev 1
455/844
HS_USB2.0 host
RM0082
Table 384. HcRhDescriptorA register bit assignments (continued)
Read/Write
Bits
Name
Reset
Description
HCD
[08]
[07:00]
22.6.47
PSM
NDP
IS
IS
R/W
R/W
HC
R
PowerSwitchingMode
This bit is used to specify how the power switching of the
Root Hub ports is controlled. It is implementation-specific.
This field is only valid if the NoPowerSwitching field is
cleared.
0: all ports are powered at the same time.
1: each port is powered individually. This mode allows port
power to be controlled by either the global switch or
perport switching. If the PortPowerControlMask bit is set,
the port responds only to port power commands
(Set/ClearPortPower). If the port mask is cleared, then the
port is controlled only by the global power switch
(Set/ClearGlobalPower).
R
NumberDownstreamPorts
These bits specify the number of downstream ports
supported by the Root Hub. It is implementation-specific.
The minimum number of ports is 1. The maximum number
of ports supported by OpenHCI is 15.
HcRhDescriptorB register
The HcRhDescriptorB register is the second register of two describing the characteristics of
the Root Hub. These fields are written during initialization to correspond with the system
implementation. Reset values are implementation-specific.
456/844
Doc ID 018672 Rev 1
RM0082
HS_USB2.0 host
Table 385. HcRhDescriptorB register bit assignments
Read/Write
Bits
Name
Reset
Description
HCD
[31:16]
[15:00]
22.6.48
PPCM
DR
IS
IS
R/W
R/W
HC
R
PortPowerControlMask
Each bit indicates if a port is affected by a global power
control command when PowerSwitchingMode is set.
When set, the port's power state is only affected by perport power control (Set/ClearPortPower). When cleared,
the port is controlled by the global power switch
(Set/ClearGlobalPower). If the device is configured to
global switching mode
(PowerSwitchingMode=0), this field is not valid.
bit 0: Reserved
bit 1: Ganged-power mask on Port #1
bit 2: Ganged-power mask on Port #2
...
bit15: Ganged-power mask on Port #15
R
DeviceRemovable
Each bit is dedicated to a port of the Root Hub. When
cleared, the attached device is removable. When set, the
attached device is not removable.
bit 0: Reserved
bit 1: Device attached to Port #1
bit 2: Device attached to Port #2
...
bit15: Device attached to Port #15
HcRhStatus register
The HcRhStatus register is divided into two parts. The lower word of a Dword represents the
Hub Status field and the upper word represents the Hub Status Change field. Reserved bits
should always be written '0'.
Table 386. HcRhStatus register bit assignments
Read/Write
Bits
[31]
Name
Reset
CRWE
Description
HCD
HC
W
R
(write) ClearRemoteWakeupEnable
Writing a '1' clears DeviceRemoveWakeupEnable. Writing
a '0' has no effect.
[30:18]
Reserved
[17]
OverCurrentIndicatorChange
This bit is set by hardware when a change has occurred to
the OCI field of this register. The HCD clears this bit by
writing a ‘1’. Writing a ‘0’ has no effect.
OCIC
0b
R/W
R/W
Doc ID 018672 Rev 1
457/844
HS_USB2.0 host
RM0082
Table 386. HcRhStatus register bit assignments (continued)
Read/Write
Bits
Name
Reset
Description
HCD
[16]
[15]
0b
DRWE 0b
R/W
R/W
R
(read) LocalPowerStatusChange
The Root Hub does not support the local power status
feature; thus, this bit is always read as ‘0’.(write)
SetGlobalPower
In
global
power
mode
(PowerSwitchingMode=0), This bit is written to ‘1’ to turn
on power to all ports (clear PortPowerStatus). In per-port
power mode, it sets PortPowerStatus only on ports whose
PortPowerControlMask bit is not set. Writing a ‘0’ has no
effect.
R
(read) DeviceRemoteWakeupEnable
This bit enables a ConnectStatusChange bit as a resume
event, causing a USBSUSPEND to USBRESUME state
transition and setting the ResumeDetected interrupt.
0 = ConnectStatusChange is not a remote wakeup event.
1 = ConnectStatusChange is a remote wakeup event.
(write) SetRemoteWakeupEnable
Writing a '1' sets DeviceRemoveWakeupEnable. Writing a
'0' has no effect.
[14:02]
Reserved
[01]
R/W
OverCurrentIndicator
This bit reports overcurrent conditions when the global
reporting is implemented. When set, an overcurrent
condition exists. When cleared, all power operations are
normal. If per-port overcurrent protection is implemented
this bit is always ‘0’
R
(read) LocalPowerStatus
The Root Hub does not support the local power status
feature; thus, this bit is always read as ‘0’.
(write) ClearGlobalPower In global power mode
(PowerSwitchingMode=0), This bit is written to ‘1’ to turn
off power to all ports (clear PortPowerStatus). In per-port
power mode, it clears PortPowerStatus only on ports
whose PortPowerControlMask bit is not set. Writing a ‘0’
has no effect.
[00]
22.6.49
LPSC
HC
OCI
LPS
0b
0b
R
R/W
HcRhPortStatus[1:NDP] register
The HcRhPortStatus[1:NDP] register is used to control and report port events on a per-port
basis. NumberDownstreamPorts represents the number of HcRhPortStatus registers that
are implemented in hardware. The lower word is used to reflect the port status, whereas the
upper word reflects the status change bits. Some status bits are implemented with special
write behavior (see below). If a transaction (token through handshake) is in progress when a
write to change port status occurs, the resulting port status change must be postponed until
the transaction completes. Reserved bits should always be written '0'.
458/844
Doc ID 018672 Rev 1
RM0082
HS_USB2.0 host
Table 387. HcRhPortStatus register bit assignments
Read/write
Bits
Name
Reset
Description
HCD
HC
[31:21]
Reserved
[20]
R/W
PortResetStatusChange
This bit is set at the end of the 10-ms port reset signal.
The HCD writes a ‘1’ to clear this bit. Writing a ‘0’ has no
effect.
0 = port reset is not complete
1 = port reset is complete
R/W
PortOverCurrentIndicatorChange
This bit is valid only if overcurrent conditions are reported
on a per-port basis. This bit is set when Root Hub
changes the PortOverCurrentIndicator bit. The HCD
writes a ‘1’ to clear this bit. Writing a ‘0’ has no effect.
0 = no change in PortOverCurrentIndicator
1 = PortOverCurrentIndicator has changed
R/W
PortSuspendStatusChange
This bit is set when the full resume sequence has been
completed. This sequence includes the 20-s resume
pulse, LS EOP, and 3-ms resychronization delay. The
HCD writes a ‘1’ to clear this bit. Writing a ‘0’ has no
effect. This bit is also cleared when ResetStatusChange is
set.
0 = resume is not completed
1 = resume completed
R/W
PortEnableStatusChange
This bit is set when hardware events cause the
PortEnableStatus bit to be cleared. Changes from HCD
writes do not set this bit. The HCD writes a ‘1’ to clear this
bit. Writing a ‘0’ has no effect.
0 = no change in PortEnableStatus
1 = change in PortEnableStatus
R/W
ConnectStatusChange
This bit is set whenever a connect or disconnect event
occurs. The HCD writes a ‘1’ to clear this bit. Writing a ‘0’
has no effect. If CurrentConnectStatus is cleared when a
SetPortReset, SetPortEnable, or SetPortSuspend write
occurs, this bit is set to force the driver to re-evaluate the
connection status since these writes should not occur if
the port is disconnected.
0 = no change in CurrentConnectStatus
1 = change in CurrentConnectStatus
Note: If the DeviceRemovable[NDP] bit is set, this bit is
set only after a Root Hub reset to inform the system that
the device is attached.
[19]
[18]
[17]
[16]
[15:10]
PRSC
OCIC
PSSC
PESC
CSC
0b
0b
0b
0b
0b
R/W
R/W
R/W
R/W
R/W
Reserved
Doc ID 018672 Rev 1
459/844
HS_USB2.0 host
RM0082
Table 387. HcRhPortStatus register bit assignments (continued)
Read/write
Bits
Name
Reset
Description
HCD
[09]
[08]
[07:05]
460/844
LSDA
PPS
xb
0b
R/W
R/W
HC
R/W
(read) LowSpeedDeviceAttached
This bit indicates the speed of the device attached to this
port. When set, a Low Speed device is attached to this
port. When clear, a Full Speed device is attached to this
port.
This
field
is
valid
only
when
the
CurrentConnectStatus is set.
0 = full speed device attached
1 = low speed device attached
(write)
ClearPortPower
The
HCD
clears
the
PortPowerStatus bit by writing a ‘1’ to this bit. Writing a ‘0’
has no effect.
R/W
(read) PortPowerStatus
This bit reflects the port’s power status, regardless of the
type of power switching implemented. This bit is cleared if
an overcurrent condition is detected. HCD sets this bit by
writing SetPortPower or SetGlobalPower. HCD clears this
bit by writing ClearPortPower or ClearGlobalPower. Which
power control switches are enabled is determined by
PowerSwitchingMode and PortPortControlMask[NDP]. In
global switching mode (PowerSwitchingMode=0), only
Set/ClearGlobalPower controls this bit. In per-port power
switching
(PowerSwitchingMode=1),
if
the
PortPowerControlMask[NDP] bit for the port is set, only
Set/ClearPortPower commands are enabled. If the mask
is not set, only Set/ClearGlobalPower commands are
enabled.
When
port
power
is
disabled,
CurrentConnectStatus,
PortEnableStatus,
PortSuspendStatus, and PortResetStatus
should be reset.
0 = port power is off
1 = port power is on
(write) SetPortPower
The HCD writes a ‘1’ to set the PortPowerStatus bit.
Writing a ‘0’ has no effect. Note: This bit is always reads
‘1b’ if power switching is not supported.
Reserved
Doc ID 018672 Rev 1
RM0082
HS_USB2.0 host
Table 387. HcRhPortStatus register bit assignments (continued)
Read/write
Bits
Name
Reset
Description
HCD
[04]
[03]
[02]
PRS
POCI
PSS
0b
0b
0b
R/W
R/W
R/W
HC
R/W
(read) PortResetStatus
When this bit is set by a write to SetPortReset, port reset
signaling is asserted. When reset is completed, this bit is
cleared when PortResetStatusChange is set. This bit
cannot be set if CurrentConnectStatus is cleared.
0 = port reset signal is not active
1 = port reset signal is active
(write) SetPortReset
The HCD sets the port reset signaling by writing a ‘1’ to
this bit. Writing a ‘0’
has no
effect. If
CurrentConnectStatus is cleared, this write does not set
PortResetStatus, but instead sets ConnectStatusChange.
This informs the driver that it attempted to reset a
disconnected port.
R/W
(read) PortOverCurrentIndicator
This bit is only valid when the Root Hub is configured in
such a way that overcurrent conditions are reported on a
per-port basis. If per-port overcurrent reporting is not
supported, this bit is set to 0. If cleared, all power
operations are normal for this port. If set, an overcurrent
condition exists on this port. This bit always reflects the
overcurrent input signal
0 = no overcurrent condition.
1 = overcurrent condition detected.
(write) ClearSuspendStatus
The HCD writes a ‘1’ to initiate a resume. Writing a ‘0’ has
no effect. A resume is initiated only if PortSuspendStatus
is set.
R/W
(read) PortSuspendStatus
This bit indicates the port is suspended or in the resume
sequence. It is set by a SetSuspendState write and
cleared when PortSuspendStatusChange is set at the end
of the resume interval. This bit cannot be set if
CurrentConnectStatus is cleared. This bit is also cleared
when PortResetStatusChange is set at the end of the port
reset or when the HC is placed in the USBRESUME state.
If an upstream resume is in progress, it should propagate
to the HC.
0 = port is not suspended
1 = port is suspended
(write) SetPortSuspend
The HCD sets the PortSuspendStatus bit by writing a ‘1’
to this bit. Writing a ‘0’ has no effect. If
CurrentConnectStatus is cleared, this write does not set
PortSuspendStatus;
instead
it
sets
ConnectStatusChange. This informs the driver that it
attempted to suspend a disconnected port.
Doc ID 018672 Rev 1
461/844
HS_USB2.0 host
RM0082
Table 387. HcRhPortStatus register bit assignments (continued)
Read/write
Bits
Name
Reset
Description
HCD
[01]
[00]
462/844
PES
CCS
0b
0b
R/W
R/W
HC
R/W
(read) PortEnableStatus
This bit indicates whether the port is enabled or disabled.
The Root Hub may clear this bit when an overcurrent
condition, disconnect event, switched-off power, or
operational bus error such as babble is detected. This
change also causes PortEnabledStatusChange to be set.
HCD sets this bit by writing SetPortEnable and clears it by
writing ClearPortEnable. This bit cannot be set when
CurrentConnectStatus is cleared. This bit is also set, if not
already, at the completion of a port reset when
ResetStatusChange is set or port suspend when
SuspendStatusChange is set.
0 = port is disabled
1 = port is enabled
(write) SetPortEnable
The HCD sets PortEnableStatus by writing a ‘1’. Writing a
‘0’ has no effect. If CurrentConnectStatus is cleared, this
write does not set PortEnableStatus, but instead sets
ConnectStatusChange. This informs the driver that it
attempted to enable a disconnected port.
R/W
(read) CurrentConnectStatus
This bit reflects the current state of the downstream port.
0 = no device connected
1 = device connected
(write) ClearPortEnable
The HCD writes a ‘1’ to this bit to clear the
PortEnableStatus bit. Writing a ‘0’ has no effect. The
CurrentConnectStatus is not affected by any write.
Note: This bit is always read ‘1b’ when the attached
device is nonremovable (DeviceRemoveable[NDP]).
Doc ID 018672 Rev 1
RM0082
HS_USB 2.0 device
23
HS_USB 2.0 device
23.1
Overview
In addition to single independent USB 2.0 hosts, within its high-speed (HS) connection
subsystem SPEAr300 provides a USB 2.0 Device which is fully compliant with the universal
serial bus specification (version 2.0), and offering an interface to the industry-standard AHB
bus.
Main features provided by the USB 2.0 device are listed:
●
A PHY interface implementing a USB 2.0 transceiver macrocell interface (UTMI) fully
compliant with UTMI specification (version 1.05), to execute serialization and
deserialization of transmissions over the USB line.
●
Unidirectional/bidirectional 8-/16 bit UTMI data bus interfaces are supported.
●
A USB plug detect (UPD) which detects the connection of a device (detailed in
Section 23.7).
●
A USB device controller (UDC) which is connected to the AHB bus and generates the
commands for the UTMI PHY. Hereafter the UDC along with AHB interface is referred
to UDC-AHB subsystem.
●
The UDC-AHB supports the 480 Mbps high-speed (HS) for USB 2.0, as well as the 12
Mbps full-speed (FS) for USB 1.1.
●
The UDC-AHB supports 16 physical endpoints (listed in Table 388), and proper
configurations to achieve logical endpoints.
●
Both DMA mode and slave-only mode supported (detailed in Section 23.4).
●
In DMA mode, the UDC-AHB supports descriptor-based memory structures in
application memory.
●
In both modes, an AHB slave is provided by UDC-AHB, acting as programming
interface to access to memory-mapped control and status registers (CSRs).
●
An AHB master for data transfer to system memory, supporting 8, 16, and 32 bit wide
data transactions on the AHB bus.
Table 388. Endpoints assignment
Endpoint number
Endpoint direction
Transfer type
0
IN/OUT
Control.
IN
Software configurable to:
Bulk
Interrupt
Isochronous.
OUT
Software configurable to:
Bulk
Interrupt
Isochronous.
1-3-5-7-9-11-13-15
2-4-6-8-10-12-14
Doc ID 018672 Rev 1
463/844
HS_USB 2.0 device
23.2
RM0082
Block diagram
Figure 38 shows the block diagram of the UDC-AHB subsystem.
Figure 38. UDC-AHB subsystem block diagram within the USB 2.0 device
External RAM (IN Endpoints)
EP FIFO
CNTRL 1
WRITE Port
EP FIFO
CNTRL 2
AHB
Slave-only
Interface
EP FIFO
CNTRL N
SOF
Tracker
USB 2.0
UTMI
UDC
UTU
DMA
USB 1.1
Transceiver
Control &
Status
Registers
Interrupt
Manage
r
CSR Slave
Access
AMBA High Performance Bus(AHB)
READ Port
Receive FIFO
Controller(s)
Interrupt
WRITE Port
READ Port
External RAM (OUT Endpoints)
Figure 39. UDC_Device block diagram
USB_DEVICE
UDC_AHB
USB_PLUG_DETECT
IRQ24
to VIC
464/844
Doc ID 018672 Rev 1
System
Memory
AHB
Master
(ARM)
RM0082
HS_USB 2.0 device
23.3
Main functions description
23.3.1
UTLI
The USB transaction layer interface (UTLI) of the UDC-AHB subsystem interfaces with the
UDC and the FIFOs to handle data reception/transmission with and USB host.
Main tasks of UTLI are:
●
Interfaces to the UDC,
●
Interfaces to endpoint-specific TxFIFOs (Section 23.3.5: Endpoint FIFO controller
(Transmit FIFO controller)) when transmitting data in response to in requests from USB
host,
●
Interfaces to the common RxFIFO (Section 23.3.4: Receive FIFO controller) when
receiving out data from the USB host,
●
Works with the CSRs block (Section 23.3.6: Control and status registers) to maintain
correct status and control,
●
Works with the interrupt manager block (Section 23.3.2: Interrupt manager) to generate
proper interrupts to the application,
●
Interfaces to the SOF tracker (Section 23.3.3: SOF tracker) to ensure that isochronous
data is transmitted in intended frame.
In particular, during data reception from an USB Host (that is, an out transaction), the UTLI
directly read incoming data from the UDC and writes them to the receive FIFO
(Section 23.3.4: Receive FIFO controller). Besides, for data transmission to an USB Host
(that is, an in transaction), the UTLI reads data to be transmitted from relevant endpoint
FIFO (Section 23.3.5: Endpoint FIFO controller (Transmit FIFO controller)) and provides
them to UDC.
23.3.2
Interrupt manager
The interrupt manager block controls the generation of interrupts to the application. In
particular, exchanging information with the UTLI, an interrupt is issued by the interrupt
manager when any of the following device-level events occurs:
●
Reception of a SOF token from the USB Host,
●
Detection of a USB suspend,
●
Detection of a USB reset,
●
Completion of speed enumeration,
●
Reception of a Set Interface command (defined in USB specification),
●
Reception of a Set Configuration command (defined in USB specification).
In addition, the interrupt manager also triggers an interrupt when any of the following
endpoint-specific events occurs:
●
Reception of a request for in data,
●
Reception of an out data packet,
●
Reception of 8 bytes of SETUP data packet,
●
An application error resulting in an AHB error response.
The interrupt manager block maintains the device interrupt register (Device interrupt register
on page 495) and the device interrupt mask register (Device interrupt mask register on
Doc ID 018672 Rev 1
465/844
HS_USB 2.0 device
RM0082
page 497), which are mapped into the address space of the global control and status
registers (CSRs, Section 23.3.6: Control and status registers).
Interrupt (IRQ24) issued will be the OR of all active events defined above, plus the plug
detect interrupt.
23.3.3
SOF tracker
The USB host sends start-of-frame (SOF) packets to USB 2.0 device every 1 ms for fullspeed (FS) operation, and every 125 µs for high-speed (HS) operation. Each SOF token
represents the start of every frame (for FS) or micro-frame (for HS) respectively, in case of
isochronous (ISO) data synchronization.
The start-of-frame (SOF) tracker block within the UDC-AHB subsystem is intended to track
any incoming SOF packets from the USB Host. With this aim, the SOF tracker runs internal
frame counters according to the operation rate (that is, 1 ms for FS and 125 µs for HS).
When a SOF packet is received from the USB Host, the UDC gets the 11 bit frame number
from the packet, and gives it to the back end within a single clock pulse, indicating the
reception of a SOF token.
In contrast, if a missing SOF packet is detected, the SOF tracker generates an event that is
used by the ISO in FIFOs to clear residual data from the previous frame, whereas UDC-AHB
subsystem moves to the next frame to provide synchronization.
In order to provide backward-compatibility with the FS 1 ms frame of USB 1.1, in HS mode
the frame number is incremented by UDC once every eight 125 µs micro-frames only. As a
consequence, the SOF tracker module generates the correct 14 bit micro-frame number by
adding a 3 bit micro-frame counter (operated by the SOF tracker itself) to the 11 bit frame
number provided by the UDC.
Note:
In order to provide backward-compatibility with the FS 1 ms frame of USB 1.1, in HS mode
the frame number is incremented by UDC once every eight 125 µs micro-frames only. As a
consequence, the SOF tracker module generates the correct 14 bit micro-frame number by
adding a 3 bit micro-frame counter (operated by the SOF tracker itself) to the 11 bit frame
number provided by the UDC.
23.3.4
Receive FIFO controller
All out endpoints (dedicated to transactions coming from the USB Host) share a common
receive FIFO (RxFIFO), which is managed by multiple receive FIFO controller. In particular,
the RxFIFO provides the UTLI with enough space to either accept the incoming packet from
the USB Host or send a NYET (UDC20 only) or a NAK handshake packet.
In particular, the RxFIFO consists of two individual FIFOs, one for the data and one for the
addresses. As depicted in Figure 40, the data FIFO is implemented as RAM, whereas the
address FIFO is implemented using registers. Each 32 bit wide entry in the address FIFO
corresponds to a received out packet, and it is associated to both the destination endpoint
number and a flag to distinguish regular data from the 8 bytes of SETUP data.
Note:
466/844
The total data FIFO size is 4KB. Out of the 37 bits wide data 32 bits is OUT/IN data and rest
5 bits is status information. For RxFIFO the maximum depth of address FIFO is 4, hence at
a given time maximum 4 OUT packets can be accommodated simultaneously. The depth of
the data RXFIFO is limited to 2kB. So during simultaneous storing of 4 OUT packet, each
packet would not be more than 512 bytes. But if OUT packets are of 1024 bytes (maximum
size) then only two OUT packets can be accommodated. Hence number of OUT packet
Doc ID 018672 Rev 1
RM0082
HS_USB 2.0 device
accommodation is limited by the size of the OUT packets. Rest of the data FIFO i.e. 2 KB
(out of total 4KB dada FIFO) is used for TXFIFO.
Figure 40. RxFIFO implementation
37 bits wide
Addrss FIFO
(Implemented in Regiters)
Data
Packet 3
Address
Packet 2
Packet 1
32 bits wide
Data FIFO
(Implemented in RAM)
Upon receiving an out packet, UTLI strobes this data into the data FIFO (37 bit wide), and
the UDC sends a status bit indicating whether or not the data was received without errors. If
data reception was error-free, the UTLI confirms the data in the RxFIFO by writing the
relevant endpoint number and associated flag into the address FIFO. In contrast, if data was
received with errors, the receive FIFO controller rolls back the data FIFO pointers as if
nothing had been received.
Then, when an external AHB master tries to access the packet received for a particular out
endpoint, at first it must read the relevant endpoint status register (Endpoint status register
on page 499) to determine the number of bytes to be transferred, before to start the
appropriate AHB transfers with an appropriate HSIZE (i.e 32, 16, or 8).
Note:
Any attempt to write the RxFIFO via the AHB interface results in an AHB error.
The RxFIFO also requires a confirming signal when a packet is written to or read from it.
This confirmation is used by the receive FIFO controller to propagate pointer information
from one domain to another and to calculate different RxFIFO status signals.
23.3.5
Endpoint FIFO controller (Transmit FIFO controller)
An endpoint FIFO controller block manages the FIFO of a specific in endpoint (dedicated to
transactions to the USB Host) supported by the UDC-AHB subsystem. In particular, each in
endpoint is associated to a Transmit FIFO (TxFIFO) which is mapped in external RAM, and
each TxFIFO is in charge of an endpoint FIFO controller.
Doc ID 018672 Rev 1
467/844
HS_USB 2.0 device
RM0082
Each endpoint FIFO controller maintains the write and read pointers to access the memory
where relevant TxFIFO is located. Besides, these controllers need both the base address
and the buffer size of each endpoint TxFIFO to implement adaptive buffer management.
This feature allows to tailor the size of each TxFIFO depending on specific buffering
requirements.
In particular, the base address of each TxFIFO results from the upper limit of the previous
TxFIFO which, in turn, depends on the buffer size set by the CSRs for this endpoint (buffer
size register, Endpoint buffer size and received packet frame number register on page 501).
That is, the base address of the TxFIFO associated to nth in endoint added to the size of the
TxFIFO of the same nth in endpoint represents the base address for the TxFIFO associated
to the (n+1)th in endpoint.
Note:
Any attempt to read from TxFIFO via the AHB interface results in an AHB error.
Like receive FIFO controller, the transmit endpoint FIFO controller also requires a
confirmation signal indicating a successful transfer to TxFIFO. This confirmation signal
allows the controller to export the FIFO pointers to other domains.
23.3.6
Control and status registers
The control and status registers (CSRs) allow to exchange control information with the
application, as well as provide a means for the application to control the UDC-AHB
Subsystem.
23.3.7
AHB slave-only interface
The AHB slave-only interface block is active only when the UDC-AHB subsystem is
configured as a slave on the AHB.
In this scenario, all endpoint FIFOs are mapped to the system memory, and the application
writes the data directly to the endpoint FIFOs. Similarly, the RxFIFO is also mapped to the
system memory, and the application reads directly from the RxFIFO.
23.3.8
DMA (AHB master interface)
Enabling the UDC-AHB Subsystem to become an AHB master (that is, entering the DMA
mode, Section 23.4.1: DMA mode), the DMA block receives the required data pointers from
the values programmed in the CSRs (Section 23.3.6: Control and status registers), and it
can transfer data with the system memory.
In particular, the DMA supports a true scatter/gather memory distribution, where each
endpoint memory structure is implemented as a linked-list (as detailed in Section 23.4.1:
DMA mode).
The DMA block (which is inactive in slave-only mode) consists of three basic components:
23.3.9
●
The DMA transfer engine, which moves the actual data,
●
The DMA controller, which controls the movement of the data,
●
The AHB interface, which manages the flow of data between the DMA and AHB for
both data transfer and CSRs accesses.
DMA transfer engine
The DMA transfer engine is a slave to the DMA by the DMA controller for the actual data
transfer to and from system memory.
468/844
Doc ID 018672 Rev 1
RM0082
HS_USB 2.0 device
In case of a memory access, the DMA transfer engine interfaces with the FIFOs and the
AHB interface module of DMA, and indicates to the DMA whether or not the transfer was
successful. If the data transfer was unsuccessful, the DMA transfer engine also indicates
how many bytes were successfully transferred to the destination, so that the DMA can
decide whether to retry the transaction.
In case of data transfer from the FIFOs to system memory, the DMA transfer engine
depends on status signals from the FIFOs’ respective FIFO controllers. In case of
transferring the data to system memory, the DMA transfer engine registers the data, then
waits for the request from the DMA controller and decides on the direction of the transfer. It
completes the transfer whether the transaction is completed successfully or if there is an
error during the data transfer.
23.3.10
DMA controller
The DMA controller is in charge of all data exchange between FIFOs and system memory.
Specifically, the DMA controller actually consists of two distinct controllers with the aim to
manage both in (transmit) and out (receive) transactions simultaneously, although transmit
and receive functions cannot be performed simultaneously.
From a functional perspective, the DMA controller parses the descriptor structures and then
commands the other subsystem blocks to perform data transfers accordingly. The
descriptors fetched from memory are stored by the DMA controller in a proper descriptors
buffer.
23.3.11
AHB interface
This block contains all the subsystem’s AHB protocol logic. In particular, the AHB interface
has two functional states where it is able to act:
●
As a AHB slave, when the application programs the CSRs of either the UDC-AHB
Subsystem or the UDC (Section 23.3.7),
●
As a AHB master, when the DMA performs data transfers.
Acting as AHB master, the UDC-AHB subsystem accesses the application memory for
descriptors and data buffers. When the subsystem is in slave-only mode, the AHB interface
also acts as a slave. In this mode, all the FIFOs are memory-mapped, and the application
writes directly to the FIFOs.
23.3.12
CSRs slave access
The CSRs slave access block is active in DMA mode only (Section 23.4.1: DMA mode) and,
acting as an AHB slave, it responds to any CSRs access from the application (which acts as
an AHB master).
In DMA mode CSR registers are accessible through CSR slave access block as this time
AHB slave only block is de-activated. This AHB slave only block is activated only in slave
mode.
Doc ID 018672 Rev 1
469/844
HS_USB 2.0 device
23.4
RM0082
Theory of operation
The UDC-AHB Subsystem supports two distinct operation modes:
●
DMA mode (detailed in Section 23.4.1), a DMA-based implementation where the UDCAHB Subsystem acts as an AHB master for data transfers.
●
Slave-Only mode (detailed in Section 23.4.2), where the UDC-AHB Subsystem is
slaved to the application and any application AHB master reads data from, or writes
data to the memory-mapped FIFOs provided by the device.
In both modes, all data transfers are interrupt-driven.
23.4.1
DMA mode
In general, a major advantage of DMA-based implementations is that they spare the main
processor’s computing power from involvement in data transfer tasks. Moreover, use of a
scatter-gather DMA helps applications to make efficient and optimal use of system memory,
which is indeed a major design constraint on portable systems.
Specifically, in DMA mode, the UDC-AHB subsystem implements a true scatter-gather
memory distribution, in which memory structures are scattered over the system memory. As
illustrated in Figure 41, each in/out endpoint memory structure is implemented as a linkedlist, where each element of the list is a data buffer of a predefined size.
In addition to data (both in and out), each buffer also has a status quadlet and a pointer to
the next buffer. The last element of such a linked list can point either to a null pointer or, if
the linked list is implemented as a ring buffer, to the first element of the list. Data buffer
structure for both in and out endpoint is described in Section 23.5.2 and Section 23.5.3,
respectively.
Besides, all control endpoints implement an additional 16-byte buffer to store SETUP data.
The SETUP data structure (detailed in Section 23.5.1) does not implement a linked-list
structure.
470/844
Doc ID 018672 Rev 1
RM0082
HS_USB 2.0 device
Figure 41. Linked-list memory structure in DMA mode
Setup Buffer
Pointer
Setup buffer Status Quadlet
R
Data
Data
IN Data Descriptor
Pointer
In buffer Status Quadlet
R
Next Pointer
OUT Data
Descriptor Pointer
Buffer
OUT buffer Status Quadlet
R
Next Pointer
Buffer
In buffer Status Quadlet
R
Next Pointer
Next Pointer
Buffer
In buffer Status Quadlet
R
Next Pointer
OUT buffer Status Quadlet
R
Buffer
OUT buffer Status Quadlet
R
Buffer
Next Pointer
Buffer
In DMA mode, before starting any action, the application must both initialize the buffer
descriptor chains in the DMA data memory structure for all active endpoints of the UDCAHB subsystem, and configure the required CSRs during the USB reset.
A brief description of both in and out operation in DMA mode.
23.4.2
In operation (Data transfer To USB host)
If the UDC-AHB subsystem receives an in token from a USB host for a non-isochronous
endpoint (such as, bulk, interrupt or control), it checks the corresponding TxFIFO for data
availability. If data is available, the TxFIFO is read and the data is provided to the UDC for
transfer to USB host. In contrast, if the TxFIFO is empty (no data), the UDC-AHB subsystem
sends an interrupt to the application and the UDC sends a NAK handshake to the USB Host
connected to that endpoint.
On receiving the interrupt, at first the application probes the endpoint interrupt register,
Endpoint interrupt register on page 497 to determine which endpoint has requested the
interrupt. Having determined this endpoint, then the application probes the endpoint status
register, Endpoint status register on page 499 to determine the interrupt’s cause.
Upon notification that this is an in token for a particular endpoint, the application updates the
addressed endpoint’s system memory buffer with data. Besides, the application reports to
the DMA the availability of such data by setting the poll demand bit in the subsystem’s
CSRs.
Note:
Each endpoint has a dedicated poll demand bit within CSRs, specifically in the endpointspecific endpoint control register, Endpoint control register on page 498.
Now the DMA transfers the data from the system memory to the relevant endpoint FIFO. As
shown in Figure 41, these endpoint buffers are RAM-based implementations with
programmable sizes. When the USB host retries with another in token, the UDC-AHB
subsystem provides the data to the UDC reading the endpoint buffers for transmission to
Doc ID 018672 Rev 1
471/844
HS_USB 2.0 device
RM0082
USB host. When the transmission is complete, the status is written back into the buffer
descriptor’s status quadlet. Then, the subsystem clears the endpoint-specific poll demand
bit once the descriptor chain reaches the last descriptor.
Note:
The application can read the poll demand bit to determine if the descriptor chain is serviced
or not.
In transfers with ISO endpoints are handled similarly. In this case, the transfer of in data from
the application memory to the endpoint FIFO is not initiated by request tokens from the USB
host, but the application sets the poll demand bit of CSR as soon as data is available.
Following bit setting, the UDC-AHB subsystem tags data for isochronous endpoints with a
frame number. The UDC, which maintains the frame counter, sends the isochronous data in
the intended frame, whereas the SOF tracker module (SOF tracker on page 466) tracks the
incoming SOFs and their frame numbers. Three distinct scenarios can be raised up:
●
if the incoming frame number matches the frame number in the buffer, the UDC is
allowed to transfer the frame from the appropriate data buffer.
●
if the frame number in the SOF is greater than the frame number in the frame counter
of UDC, the DMA module skips the buffers to align to the correct frame number.
●
if the frame number in the SOF is less than the subsystem’s frame number, the DMA
waits for a few frames to align to the correct frame number.
Hooks are provided for the application to flush the subsystem’s FIFOs in case of missing
SOFs. The transaction flow of in data from the USB Host to the application memory is given
in Figure 42.
472/844
Doc ID 018672 Rev 1
RM0082
HS_USB 2.0 device
Figure 42. In transaction flow in DMA mode
Idle
Idle
IN
Transaction
Poll demand
Data
available?
No
Generate INTR
and NAK
Transfer data
From memory to
TxFIFO
Yes
TxFIFO
Availabe?
Yes
No
Read the
TxFIFO &Provide
IN data
Packet
Completely
Transferred?
Transfer done
Yes
No
Service other IN
requests and
return when done
Update Descriptor
Status
Wait for Status
from USB host
Got ACK
Status?
Yes
No
Rewined
READ pointer
23.4.3
Out operation (Data transfer from USB host)
In the out direction, as soon as the UDC-AHB subsystem receives an out (or SETUP) data
from the USB host (that is, when a packet of data is completed or - if thresholding is enabled
- a threshold is reached), it transfers the data to the buffers allocated to the endpoint in
application memory. Once the data is transferred, the subsystem updates the status of the
received data to the buffer’s status quadlet.
SETUP data is transferred to a 16-byte SETUP buffer. The pointer for this buffer is indicated
in the SETUP buffer pointer register, Endpoint setup buffer pointer register on page 503).
Out data is transferred to the buffers indicated by the descriptor, and the pointer for these
descriptors is programmed in the CSRs.
Note:
The SETUP data directly addresses the buffers, while regular out data addresses the out
data buffers indirectly.
The transaction flow for all out endpoints is similar. The only difference is that isochronous
(iso-out) data is tagged with the frame number when the packet is received.
The transaction flow of out data from the USB host to the application memory is given in
Figure 43.
Doc ID 018672 Rev 1
473/844
HS_USB 2.0 device
RM0082
Figure 43. Out transaction flow in DMA mode
Idle
Ye
s
OUT
Transaction
RxFIFO
available?
No
ISO
Transfer?
No
Send
NAK
Yes
Write the OUT
Data in the
RxFIFO
Update
descriptor
status and
generate INTR
Wait for
Status
No
DMA
Enabled?
Got Status
Flush the
data
No
Success
or ISO
Yes
Yes
Confirm
data
Get
Descriptor
Generate
BNA INTR
Transfer
done
No
Buffer
Initialized?
Yes
Transfer
OUT data To
host memory
High-bandwidth isochronous (ISO) transfers
In case of out packets (that is, coming from USB Host), each descriptor stores one
maximum packet size of data. The data PID associated with the packet is available in the
PID field, bits [15:14], of the out data memory buffer status (OUT data memory structure on
page 479). If the microframe contains three packets, data and the corresponding data PID
are stored in three descriptors.
In case of in packets (transmitted to the USB Host), the application creates data of one
maximum packet size per descriptor. If the application must send three packets in the
microframe, the application must then create three descriptors. Data PID information must
be provided in the PID field, bits [15:14], of the in data memory buffer (IN data memory
structure on page 481).
23.4.4
Slave-only mode
In slave-only implementation, the application acts as an AHB master to read data from or to
write data to the memory-mapped subsystem FIFOs, and the UDC-AHB subsystem
operates as a AHB slave for both data and CSRs transfers.
The USB host initiates USB traffic and the application responds to all the USB host’s
commands. In this mode, the UDC-AHB subsystem can only be used in device-type
applications, and before any operation the application must completely configure the
necessary CSRs. All data transfers are interrupt-driven, except iso-in and interrupt-in
transfers, which are periodic.
The slave-only mode is typically implemented either in applications with limited complexity
software, or when the subsystem has a dedicated master for data processing.
474/844
Doc ID 018672 Rev 1
RM0082
HS_USB 2.0 device
In operation (Data transfer to USB host)
If the UDC-AHB subsystem receives an in token from an USB Host for a non-isochronous
endpoint (such as, bulk, interrupt or control), it checks the associated TxFIFO (Endpoint
FIFO controller (Transmit FIFO controller) on page 467) for data availability. If data is
available, the UDC reads the data from the TxFIFO, otherwise if the TxFIFO does not
contain data, the UDC sends an interrupt to the application, and the USB host retries the in
token.
Upon receiving the interrupt, at first the application reads the endpoint interrupt register
(Endpoint interrupt register on page 497) to determine which endpoint requested the
interrupt, and then probes the endpoint status register (Endpoint status register on
page 499) to determine the interrupt’s cause.
Once the application determines that an in token for the endpoint requested the interrupt, it
writes the packet directly to the address where the associated TxFIFO is mapped. As soon
as the packet data has been completely written into the FIFO, the application performs then
a single write to a predefined address (pointed by the write confirmation register, see
Table 396, of the relevant in endpoint) indicating to the subsystem that the packet transfer is
done.
When the USB host retries the in token, the subsystem provides the associated endpoint
TxFIFO data to the UDC for transmission to the USB host. The sequence of these events for
a non-isochronous (interrupt, bulk, or control) endpoint is shown in Figure 44.
Note:
The application does not receive status update regarding the packet, because the
subsystem must transmit this data. However, the application may flush the packet from the
relevant TxFIFO by setting the F bit in the endpoint control register (Endpoint control register
on page 498).
Doc ID 018672 Rev 1
475/844
HS_USB 2.0 device
RM0082
Figure 44. In transaction flow in slave-only mode
Idle
Idle
IN
Transaction
TxFIFO write
Data
available?
No
Generate INTR
and NAK
TxFIFO
available?
No
Retry
Yes
Yes
Read the
TxFIFO &Provide
IN data
Write data
To TxFIFO
Yes
TxFIFO full?
Transfer done
No
Confirm Packet
in TxFIFO
Wait for Status
Yes
Status = ACK?
No
Rewined READ
pointer
Isochronous-in endpoints are handled similarly. In this case, the transfer of in data from the
application memory to the endpoint FIFO is not initiated by USB Host request tokens, but by
the application filling the TxFIFOs as soon as data is available. Isochronous endpoint data
must be filled in the TxFIFO only if the buffer is set for the current frame, which the
application can determine by reading the current active frame number from the CSR.
Out operation (Data transfer from USB host)
When the UDC-AHB subsystem receives out data from the USB Host, it transfers the data
to the receive FIFO (RxFIFO) within the subsystem - if it has space available for the packet . If no space is available, the packet is retried. SETUP out packets are stored in a temporary
subsystem register before being loaded to the receive FIFO.
Once the packet is transferred to the RxFIFO, the subsystem sends an interrupt to the
application for the received packet. Then, the application reads the addressed endpoint’s
interrupt and status registers (Endpoint interrupt register on page 497 and Endpoint status
register on page 499) and it is able to determine the number of bytes received by the UDCAHB Subsystem in the packet. After that, the application reads from the RxFIFO this number
of bytes.
Note:
476/844
The application reads from the address where the RxFIFO is mapped. The transaction flow
of out data from the USB host to the application is shown in Figure 45.
Doc ID 018672 Rev 1
RM0082
HS_USB 2.0 device
Figure 45. Out transaction flow in slave-only mode
Idle
Idle
OUT
Transaction
Read data from
RxFIFO
No
RxFIFO
available?
Send NAK
(for non-ISO)
Yes
Excess
read?
Yes
Assert error
No
Write the OUT
Data in the
RxFIFO
Transfer done
Wait for Status
Got Status
No
Flush data
Yes
Status=Success
or ISO?
Confirm data &
Generate INTR
High-bandwidth isochronous (ISO) transfers
In outcase of out packets (that is, coming from USB Host), the data PID received for a highbandwidth transaction is available in the endpoint buffer size (in) / receive packet frame
number (out) register (Endpoint buffer size and received packet frame number register on
page 501), specifically in the ISO PID field (bit [17:16]).
This 2 bit field indicates the data PID for the current packet available in the receive FIFO. For
example, if the USB host sends three packets with a PID sequence of MDATA and DATA2,
when the application receives the interrupt for the first packet, the ISO PID field of the
register indicates an MDATA PID (2‘b11). After the application reads out the first two
maximum-size packets, this register will indicate DATA2 (2‘b10).
In case of in packets (that is, transmitted to the USB host), the transfer is described by the
following example flow:
●
At first, write the initial data PID (bit [17:16]) in the endpoint buffer size in register
(Endpoint buffer size and received packet frame number register on page 501). For
example, to send three packets in a microframe, write 2’b11 to the ISO PID field (in).
●
Write the data one maximum-size packet at a time. After writing one maximum-size
packet, perform a confirm cycle.
●
Wait for the UDC-AHB subsystem to send the iso in done interrupt, setting the iso in
done (bit [23]) field in the endpoint status register (Endpoint status register on
page 499) after the entire high-bandwidth transaction is completed on the USB.
●
To change the packet number to be sent in the next microframe, the application can
now modify the iso pid (in) field in the endpoint buffer size in register (Endpoint buffer
size and received packet frame number register on page 501).
Doc ID 018672 Rev 1
477/844
HS_USB 2.0 device
RM0082
23.5
Data memory structure in DMA mode
23.5.1
SETUP data memory structure
The memory structure for SETUP data is given in Figure 46. The 16-byte buffer consists of 4
fields of 32 bits each: the status quadlet (its bit assignments are given in Table 389), a
reserved one and the 2 last fields for the 8 bytes of SETUP data.
Figure 46. SETUP data memory
31
0
Status Quadlet
Setup Buffer Pointer
Reserved
First 4 Bytes of Setup Data
Second 4 Bytes of Setup Data
Status Quadlet
31:30
BS
29:28
Rx Sts
27:16
15:0
Config Sts
R
Table 389. SETUP data memory: status quadlet bit assignments
Bit
Name
Description
BS
Buffer status.
This 2 bit field reports the status of the SETUP data buffer, according to
encoding:
– 2‘b00 Host ready. = The descriptor is available to be processed by DMA.
– 2‘b01 DMA busy. = The DMA is still processing the descriptor.
– 2‘b10 DMA done. = Buffer data transfer completed by DMA.
– 2‘b11 Host busy. = The application is processing the descriptor.
[29:28]
Rx Sts
Receive status.
This 2 bit field reports the status of the received SETUP data (according to
encoding), reflecting whether the SETUP data has been correctly received or
some errors occurred:
– 2‘b00 = Success.
– 2‘b01 = DESERR (descriptor transfer error).
– 2‘b10 = Reserved.
– 2‘b11 = BUFFER (data transfer error).
[27:16]
Configuration status.
This 12 bit field echoes the status of the current configuration associated
with the SETUP packet for a control endpoint. Bits assignments for this field
Config Sts are given:
– [27:24] = Configuration number.
– [23:20] = Interface number.
– [19:16] = Alternate setting number.
[15:00]
Reserved
[31:30]
478/844
Read: undefined. Write: should be zero.
Doc ID 018672 Rev 1
RM0082
23.5.2
HS_USB 2.0 device
OUT data memory structure
All endpoints that support out direction transactions (that is, endpoints receiving data from
the USB Host) must implement a memory structure according to the following
characteristics:
●
Each data buffer must have an associated descriptor which provides the status of the
buffer. Indeed, the buffer itself contains only raw data.
●
Each buffer descriptor is 4-quadlet length.
The out data memory structure is given in Figure 47. Table 390 reports the bits assignments
for out buffer status quadlet.
If the buffer status of the first descriptor is set to host ready (see BS field in Table 390), the
DMA fetches and processes its data buffer. Otherwise, the DMA skips to the next descriptor
until it reaches the end of the descriptor chain.
Figure 47. Out data memory
31
0
OUT Buffer Status Quadlet
Data Descriptor Pointer
Reserved
Buffer Pointer
Next Descriptor Pointer
Status Quadlet for
Non Iso-chronous OUT
31:30
BS
29:28
27
Rx Sts
L
29:28
27
Rx Sts
L
26:16
15:0
RxBytes
R
Status Quadlet for
Iso-chronous OUT
31:30
BS
26:16
Frame Number
Doc ID 018672 Rev 1
15:14
PID
13:0
RxBytes
479/844
HS_USB 2.0 device
RM0082
Table 390. Out data memory: buffer status quadlet bit assignments (for NonIsochronous OUT)
Bit
Name
Description
BS
Buffer status.
This 2 bit field reports the status of the out buffer, according to encoding:
– 2'b00 Host ready. = The descriptor is available to be processed by DMA.
– 2'b01 DMA busy. = The DMA is still processing the descriptor.
– 2'b10 DMA done. = Buffer data transfer completed by DMA.
– 2'b11 Host busy. = The application is processing the descriptor.
[29:28]
Rx Sts
Receive status.
This 2 bit field reports the status of the received out data (according to
encoding), reflecting whether the out data has been correctly received or
some errors occurred:
– 2'b00 = Success.
– 2'b01 = DESERR (descriptor transfer error).
– 2'b10 = Reserved.
– 2'b11 = BUFFER (data transfer error).
Note: In particular, a DESERR receive status indicates that the out buffer
status is something other than Host ready (that is, BS not equal to 2’b00)
during descriptor fetch.
[27]
L
If set, it indicates that this descriptor is the last one of the chain.
[26:16]
Reserved
(Non ISO)
Read: undefined. Write: should be zero.
[15:00]
Rx Bytes
(Non ISO)
Received number of bytes.
Its 16 bit width allows values ranging from 0 to 64 kbytes, depending on
the packet size of data received from the USB host.
[31:30]
480/844
Doc ID 018672 Rev 1
RM0082
HS_USB 2.0 device
Table 391. Out data memory: buffer status quadlet bit assignments (for Isochronous
OUT)
Bit
Name
Description
BS
Buffer status.
This 2 bit field reports the status of the out buffer, according to encoding:
– 2'b00 Host ready. = The descriptor is available to be processed by DMA.
– 2’b01 DMA busy. = The DMA is still processing the descriptor.
– 2'b10 DMA done. = Buffer data transfer completed by DMA.
– 2’b11 Host busy. = The application is processing the descriptor.
[29:28]
Rx Sts
Receive status.
This 2 bit field reports the status of the received out data (according to
encoding), reflecting whether the out data has been correctly received or
some errors occurred:
– 2'b00 = Success.
– 2’b01 = DESERR (descriptor transfer error).
– 2'b10 = Reserved.
– 2’b11 = BUFFER (data transfer error).
Note: In particular, a DESERR receive status indicates that the out buffer
status is something other than Host ready (that is, BS not equal to 'b00)
during descriptor fetch.
[27]
L
If set, it indicates that this descriptor is the last one of the chain.
[26:16]
Frame
Number
11 bit frame number in which the current iso-out packet is received.
[15:14]
PID
ISO received data PID.
This 2 bit field indicates the data PID (according to encoding) for the
received ISO packet which is contained in the descriptor:
– 2’b00 = DATA0
– 2'b01 = DATA1
– 2'b10 = DATA2
– 2'b11 = MDATA
Note: The PID field is for HS ISO transactions only. For FS ISO transactions,
this field is don't care.
[13:00]
Rx Bytes
Received number of bytes.
The value of this field gives the received number of bytes.
[31:30]
23.5.3
IN data memory structure
All endpoints that support in direction transactions (that is, endpoints transmitting data to the
USB Host) must implement the memory structure given in Figure 48, where each in buffer
must be associated to a descriptor. Table 392 reports the bits assignments for in buffer
status quadlet.
The application fills the data buffer, then updates its status in the descriptor, and sets the
poll demand bit. Besides, the DMA fetches this descriptor and processes it, moving on in
this fashion until it reaches the end of the descriptor chain.
Doc ID 018672 Rev 1
481/844
HS_USB 2.0 device
RM0082
Figure 48. In data memory
31
0
IN Buffer Status Quadlet
Data Descriptor Pointer
Reserved
Buffer Pointer
Next Descriptor Pointer
Status Quadlet for
Non Iso-chronous IN
31:30
BS
29:28
27
Tx Sts
L
29:28
27
Tx Sts
L
26:16
15:0
TxBytes
R
Status Quadlet for
Iso-chronous IN
31:30
BS
26:16
Frame Number
15:14
PID
13:0
TxBytes
Table 392. In data memory: buffer status quadlet bit assignments (for NonIsochronous IN)
Bit
Name
Description
BS
Buffer status.
This 2 bit field reports the status of the in buffer, according to encoding:
– 2’b00, Host ready. The descriptor is available to be processed by DMA.
– 2'b01, DMA busy. The DMA is still processing the descriptor.
– 2'b10, DMA done. Buffer data transfer completed by DMA.
– 2'b11, Host busy. The application is processing the descriptor.
[29:28]
Tx Sts
Transmit status.
This 2 bit field reports the status of the transmitted in data (according to
encoding), reflecting whether the in data has been correctly transmitted or
some errors occurred:
– 2'b00 = Success.
– 2'b01 = DESERR (descriptor transfer error).
– 2'b10 = Reserved.
– 2'b11 = BUFFER (data transfer error).
[27]
L
If set, it indicates that this descriptor is the last one of the chain.
[26:16]
Reserved
Read: undefined. Write: should be zero.
Tx Bytes
Number of bytes to be transmitted.
Its 16 bit width allows values ranging from 0 to 64 kbytes. for iso in
transactions, a maximum value of 16 kbytes is allowed by the 14 bit length
of the Tx bytes field.
[31:30]
[15:00]
482/844
Doc ID 018672 Rev 1
RM0082
HS_USB 2.0 device
Table 393. In data memory:buffer status quadlet bit assignments (for Isochronous)
Bit
Name
Description
BS
Buffer status.
This 2 bit field reports the status of the in buffer, according to encoding:
– 2‘b00, Host ready. The descriptor is available to be processed by DMA.
– 2‘b01, DMA busy. The DMA is still processing the descriptor.
– 2‘b10, DMA done. Buffer data transfer completed by DMA.
– 2‘b11, Host busy. The application is processing the descriptor.
[29:28]
Tx Sts
Transmit status.
This 2 bit field reports the status of the transmitted in data (according to
encoding), reflecting whether the in data has been correctly transmitted
or some errors occurred:
– 2‘b00 = Success.
– 2‘b01 = DESERR (descriptor transfer error).
– 2‘b10 = Reserved.
– 2‘b11 = BUFFER (data transfer error).
[27]
L
If set, it indicates that this descriptor is the last one of the chain.
[26:16]
11-bsit frame number in which the current iso-out packet is transmitted.
This 11 bit field gives the frame number in which the current iso-in packet
Frame
is transmitted, according to the following bits assignments:
Number (ISO)
[26:19] = Millisecond frame number.
[18:16] = Micro-frame number.
[31:30]
[15:14]
[13:00]
PID
Number of packets per microframe.
This 2 bit field indicates the number of packets per microframe for
isochronous (iso) in transfers during high-speed (hs) operation. The
application must program these bits in the descriptor (and they must be
the same for all descriptors of the same microframe) according to
encoding, such that the subsystem core returns an isochronous packet
with an appropriate data PID per frame:
– 2‘b00 = 1
– 2‘b01 = 1
– 2‘b10 = 2
– 2‘b11 = 3
Note: The PID field is for HS ISO transactions only. For FS ISO
transactions, this field is reserved.
Tx Bytes
(ISO)
Number of bytes to be transmitted.
The value of this field gives the number of bytes to be transmitted to USB
host. In case of non-iso in, its 16 bit length allows values ranging from 0
to 64 kbytes. for iso in transactions, a maximum value of 16 kbytes is
allowed by the 14 bit length of the Tx bytes field.
Doc ID 018672 Rev 1
483/844
HS_USB 2.0 device
RM0082
23.6
Operation modes In DMA mode
23.6.1
Packet-per-buffer mode
In packet-per-buffer mode (alternate to buffer fill mode, Buffer fill mode (OUT) on page 484),
the DMA transfers packet by packet to various addresses as indicated by the descriptor,
implementing then a true scatter-gather mechanism.
A descriptor update can happen either at the end of each packet transfer or at the end of the
descriptor chain only. As a results, the application may be interrupted either after processing
each descriptor or at the end of a descriptor chain, respectively. In particular, setting to 1‘b1
the DU bit of the global CSRs’ Device control register on page 492, it enables descriptor
updating and application interrupt to the software at the end of each packet.
23.6.2
Buffer fill mode (OUT)
Enabling the buffer fill mode (setting the bit BF in the global CSRs’ Device control register on
page 492, the DMA transfers all packets to the large buffer whose address is indicated by
the single out data memory structure descriptor. This DMA mode of operation requires fewer
memory accesses than packet-per-buffer with descriptor update mode Packet-per-buffer
mode on page 484 above, increasing the throughput.
The DMA controller updates buffer status when a short packet is received, and
simultaneously sends an interrupt to the application.
23.6.3
Buffer fill mode (IN)
In case of in transactions, the DMA buffer fill mode can be entered by using the packet-perbuffer mode with only one descriptor indicating:
●
The system memory starting address,
●
The number of bytes to be transferred to the USB host (the tx bytes can be greater than
one packet),
●
The L bit set in the status quadlet.
The DMA controller updates buffer status after all data has been transferred to the TxFIFO.
The UDC-AHB subsystem then sends an interrupt to the application.
23.6.4
Threshold enable
The threshold enable feature is used for transferring packets in the out direction for DMA
operation only. There is no threshold enable for the in direction.
Note:
In this context, thresholding means emptying the out RxFIFO as soon as it receives a
certain number (the threshold value) of 32 bit words.
Thresholding is enabled by setting to 1‘b1 the THE bit in the global CSRs’ Device control
register on page 492. Moreover, the threshold value is programmed by setting the THLEN 8
bit in the same device control register. As mentioned, the threshold value is the number of
32 bit words (quadlets) that must be received by the RxFIFO before the DMA can start the
transfer.
When thresholding is disabled (bit THE set to 1‘b0), then the DMA waits for the complete
packet before starting the data transfer. In contrast, if thresholding is enabled, the transfer of
the packet to host memory starts before the validity of the packet is assessed. If the packet
484/844
Doc ID 018672 Rev 1
RM0082
HS_USB 2.0 device
is found to be corrupt at the end of the transfer, the descriptor is not updated and the next
clean packet overwrites the previous corrupted one. This conceals the USB error from the
application.
23.6.5
Burst split enable
When burst split is enabled, all AHB transfers (from the DMA to system memory and from
system memory to the TxFIFO) are splitted into bursts of a specified length.
The burst split is enabled by setting to 1‘b1 the BREN bit in the global CSRs’ Device control
register on page 492. Moreover, the burst length value is programmed by setting the BRLEN
8 bit in the same device control register. As mentioned, this value indicates the number of 32
bit transfers that should happen in a single burst.
Note:
When thresholding and burst splitting are both enabled, the threshold length (THLEN)
should be either greater than multiples of burst length (BRLEN) or equal to BRLEN.
23.7
USB plug detect
The USB plug detect block (UPD) allows to detect when an USB host is either connected or
disconnected to the USB 2.0 device. This is done through the VBUS pad which is driven
high when the USB host is attached. In particular, a plug interrupt is raised by the UPD block
when the USB host is attached/detached. This interrupt is putted in OR with the output of
the Interrupt Manager block and the output of he OR logic goes to the VIC block.
Two 32 bit RW registers are associated to the UPD block, namely the plug status register
and the plug pending register, whose bit assignments are given in Table 394 and Table 395,
respectively. These registers can be accessed at the base address 0xE1200000
As soon as the USB Host is connected to the device, the VBUS signal goes high enabling
the UPD internal counter, which generates an interrupt 10 ms after the connection. The
software routine handling the interrupt reads as 1‘b1 the intend field of the plug pending
register (Table 395), and as 1‘b1 the state field of the plug status register (Table 394): the
USB 2.0 PHY reset is then released (phy_rst set to 1‘b0 in plug status register) and the USB
2.0 PHY is placed in normal mode (phy_mode set to 1‘b0 in plug status register).
In contrast, when the USB host is detached, the VBUS signal goes low and after 10 ms an
interrupt is generated by the PD block (intpend field set to 1‘b1 in plug pending register).
Then, the interrupt handler reads as 1‘b0 the state field of the plug status register, so the
reset is asserted (phy_rst set to 1‘b1 in Plug Status register) and the USB 2.0 PHY is placed
in non-driving state (phy_mode set to 1‘b1 in plug status register).
Doc ID 018672 Rev 1
485/844
HS_USB 2.0 device
RM0082
Table 394. Plug status register bit assignments
Bit
Name
Reset value Description
[31:04]
Reserved
-
Read: undefined. Write: should be zero.
[03]
phy_mode
1’h1
USB PHY mode.
This bit allows to set the physical terminations of PHY,
according to encoding:
1‘b0 = Normal (UDC is allowed to drive the USB 2.0
PHY).
1‘b1 = Tri-state (the USB 2.0 PHY is in non-driving
mode).
[02]
phy_rst
1’h1
USB PHY reset.
If set, this bit indicates that the USB PHY is in reset
mode, otherwise it is in normal mode.
[01]
state
1’h0
USB host connection state.
This RO bit reports the connection status of the USB
Host, according to encoding:
1‘b0 = Disconnected.
1‘b1 = Connection detected.
[00]
enable
1’h0
Plug interrupt.
If set, this bit enables an interrupt to be raised when
the USB host is attached/detached.
Table 395. Plug pending register bit assignments
Bit
Name
Reset value Description
[31:01]
Reserved
-
Read: undefined. Write: should be zero.
[00]
intpend
1’h0
Plug interrupt.
This bit is set when the UPD block generates a plug
interrupt. It is cleared when the CPU reads it.
23.8
Programming model
23.8.1
External pin connection
23.8.2
Signal name
Pin
Description
DEV_DP
M1
Device, positive data line
DEV_DM
M2
Device, negative data line
DEV_VBUS
G3
Device, VBUS detection line
Register map
The 32 bit wide CSRs of the UDC-AHB subsystem (Control and status registers on
page 468) provide a high degree of control, making the device both configurable and
scalable. These CSRs can be accessed at the base address 0xE110_0000.
486/844
Doc ID 018672 Rev 1
RM0082
HS_USB 2.0 device
The CSRs can be grouped in two basic categories:
●
Global CSRs (listed in Table 398), which are specific to the UDC-AHB subsystem.
●
Endpoint CSRs (listed in Table 396 and in Table 397), which are specific to a particular
endpoint within the UDC-AHB subsystem. Specifically, each endpoint supported by the
UDC-AHB subsystem is associated to a set of specific 32 bit CSRs for each direction
(in/out).
As explained by the memory map in Figure 49, these CSRs are mapped in the 0x0000 to
0x04FC offset address space (with respect to the base address above). Apart from these
device-level CSRs, the UDC itself contains other specific CSRs which are mapped in the
0x0500 to 0x07FC offset address space.
Moreover, the FIFOs are mapped at base address 0xE100_0800. Offset addresses from
0x0800 up to a 0x1800 host the data in the RxFIFO (Receive FIFO controller on page 466),
which are followed by the memory space allocated to TxFIFOs.
Table 396. In endpoint-specific CSRs summary
Endpoint
Name
Offset
Type
Reset value
0
Control
0x0000
RW
32’h0
Status
0x0004
RO
32’h0
Buffer size
0x0008
RW
32’h0
Maximum packet size
0x000C
RW
32’h0
Reserved
0x0010
-
-
Data description pointer
0x0014
RW
32’h0
Reserved
0x0018
-
-
Write confirmation
0x001C
RW
-
As Endpoint 0
0x0020 - 0x003C
As Endpoint 0
Reserved
0x0040 - 0x005C
As Endpoint 0
0x0060 - 0x007C
Reserved
0x0080 - 0x009C
As Endpoint 0
0x00A0 - 0x00BC
Reserved
0x00C0 - 0x00DC
As Endpoint 0
0x00E0 - 0x00FC
Reserved
0x0100 - 0x011C
As Endpoint 0
0x0120 - 0x013C
Reserved
0x0140 - 0x015C
As Endpoint 0
0x0160 - 0x017C
1
3
5
7
9
11
As Endpoint 0
As Endpoint 0
As Endpoint 0
As Endpoint 0
As Endpoint 0
0x0180 - 0x019C
13
As Endpoint 0
0x01A0 - 0x01BC
As Endpoint 0
0x01C0 - 0x01DC
15
As Endpoint 0
0x01E0 - 0x01FC
Doc ID 018672 Rev 1
As Endpoint 0
487/844
HS_USB 2.0 device
RM0082
Table 397. Out endpoint-specific CSRs summary
Endpoint
Name
Offset
Type
Reset value
0
Control
0x0200
RW
32’h0
Status
0x0204
RO
32’h0
Packet frame number
0x0208
RW
32’h0
Buffer size
0x020C
RW
32’h0
SETUP buffer pointer
0x0210
RW
32’h0
Data description pointer
0x0214
RW
32’h0
Reserved
0x0218
-
-
Read confirmation
0x021C
RW
-
Reserved
0x0220 - 0x023C
As Endpoint 0
0x0240 -0x025C
Reserved
0x0260 - 0x027C
As Endpoint 0
0x0280 - 0x029C
Reserved
0x02A0 - 0x02BC
As Endpoint 0
0x02C0 - 0x02DC
Reserved
0x02E0 - 0x02FC
As Endpoint 0
0x0300 - 0x031C
Reserved
0x0320 - 0x033C
As Endpoint 0
0x0340 - 0x035C
Reserved
0x0360 -0x037C
As Endpoint 0
0x0380 -0x039C
Reserved
0x03A0 -0x03BC
As Endpoint 0
0x03C0 - 0x03DC
Reserved
0x03E0 -0x03FC
2
4
6
8
10
12
14
As Endpoint 0
As Endpoint 0
As Endpoint 0
As Endpoint 0
As Endpoint 0
As Endpoint 0
As Endpoint 0
Table 398. Global CSRs summary
488/844
Name
Offset
Type
Reset value
Device configuration
0x0400
RW
32’h0
Device control
0x0404
RW
32’h0
Device status
0x0408
RO
32’h0
Device interrupt
0x040C
RW
32’h0
Device interrupt mask
0x0410
RW
32’h0
Endpoint interrupt
0x0414
RW
32’h0
Endpoint interrupt mask
0x0418
RW
32’h0
Reserved
0x041C to 0x04fc
Doc ID 018672 Rev 1
RM0082
HS_USB 2.0 device
Table 399. UDCl CSRs summary
Endpoint
Name
Offset
Type
Reset value
Reserved
0x0500
0
UDC20 Endpoint register
0x0504
RW
32’h0
1
UDC20 Endpoint register
0x0508
RW
32’h0
2
UDC20 Endpoint register
0x050C
RW
32’h0
3
UDC20 Endpoint register
0x0510
RW
32’h0
4
UDC20 Endpoint register
0x0514
RW
32’h0
5
UDC20 Endpoint register
0x0518
RW
32’h0
6
UDC20 Endpoint register
0x051C
RW
32’h0
7
UDC20 Endpoint register
0x0520
RW
32’h0
8
UDC20 Endpoint register
0x0524
RW
32’h0
9
UDC20 Endpoint register
0x0528
RW
32’h0
10
UDC20 Endpoint register
0x052C
RW
32’h0
11
UDC20 Endpoint register
0x0530
RW
32’h0
12
UDC20 Endpoint register
0x0534
RW
32’h0
13
UDC20 Endpoint register
0x0538
RW
32’h0
14
UDC20 Endpoint register
0x053C
RW
32’h0
15
UDC20 Endpoint register
0x0540
RW
32’h0
Reserved
0x0544 To
0x07FC
Doc ID 018672 Rev 1
489/844
HS_USB 2.0 device
RM0082
Figure 49. UDC-AHB subsystem memory map
32 bit wide
Address range
0xE100_0000
Reserved
0xE100_07FF
Implemented as
RAM
0xE100_0800
RxFIFO
0xE100_0800
+
RxFIFO depth
0xE110_0000
TxFIFO
UDC Subsystem
with AHB CSRs
0xE110_04FC
0xE110_0500
UDC CSRs
0xE110_07FC
Mamory map
(Processor view point)
23.8.3
Register description
23.8.4
Device configuration register
The Device configuration is a RW register which allows to configure the USB 2.0 device.
Table 400. Device configuration register bit assignments
Bit
Name
Reset value Description
[31:19]
Reserved
-
[18]
[17]
490/844
Read: undefined. Write: should be zero.
SET_DESC 1'h0
Set descriptor requests support.
This bit states how the USB device replies to set Descriptor
request, according to encoding:
1‘b0 = A STALL handshake is sent back to the USB Host.
1‘b1 = The SETUP packet passes to the application.
CSR_PRG
Dynamic UDC register programming support.
Setting this bit, the application is able to dynamically
program the UDC CSRs whenever an interrupt is received
for either a set configuration or a set interface request.
In this case, the USB device returns a NAK handshake
during the status in stage of both the set configuration and
set interface requests until the application sets the
CSR_DONE bit of the Device control register on page 492.
1'h0
Doc ID 018672 Rev 1
RM0082
HS_USB 2.0 device
Table 400. Device configuration register bit assignments (continued)
Bit
[16]
[15:13]
Name
HALT
STATUS
HS_TIMEO
UT CALIB
Reset value Description
1'h0
Reply to USB host Clear_Feature request for endpoint 0.
This bit indicates whether the USB device must respond
with either a STALL (bit set to 1‘b1) or an ACK (bit set to
1‘b0)
handshake
when
a
Clear_Feature
(ENDPOINT_HALT) request for Endpoint 0 has been
issued by the USB host.
3‘h0
Timeout counter in HS operation.
This 3 bit field indicates the integer number of PHY clocks
to the USB device’s timeout counter in high-speed (HS)
operation.
The application uses this value to increase the timeout
value (736 to 848 bit times in HS operation), which depends
on the PHY’s delay in generating a line state condition. The
default timeout value is 736 bit times.
[12:10]
FS_TIMEO
UT CALIB
3‘h0
Timeout counter in FS operation.
This 3 bit field indicates the integer number of phy clocks to
the USB device’s timeout counter in full-speed (FS)
operation.
The application uses this value to increase the timeout
value (16 to 18 bit times in FS operation), which depends
on the PHY’s delay in generating a line state condition. The
default timeout value is 16 bit times.
[09]
PHY_ERRO
1'h0
R DETECT
PHY error detection.
Setting this bit, the USB device detects either the
phy_rxvalid or the phy_rxactive input signal to be
continuously asserted for 2 ms, indicating a PHY error.
[08]
STATUS_1
1'h0
See description.
1'h0
STATUS_1, STATUS
These 2 bits together provide an option for the USB device
to respond to the USB host with a STALL or an ACK
handshake if the USB host has issued a non-zero-length
data packet during the status-out stage of a control transfer.
Refer to USB device technical documentation for more
information.
1'h0
UTMI data bus interface direction.
This bit states the direction of the UTMI data bus interface,
according to encoding:
1‘b0 = Unidirectional.
1‘b1 = Bidirectional.
[07]
[06]
STATUS
DIR
[05]
PI
1'h0
UTMI PHY interface.
This bit indicates the interface size which the UTMI PHY
must support, according to encoding:
1‘b0 = 16 bit.
1‘b1 = 8 bit.
[04]
SS
1'h0
If set, the USB device supports Sync frame.
[03]
SP
1'h0
If set, the USB device is self-powered.
Doc ID 018672 Rev 1
491/844
HS_USB 2.0 device
RM0082
Table 400. Device configuration register bit assignments (continued)
Bit
Name
Reset value Description
[02]
RWKP
1'h0
If set, the USB device is remote wake up capable.
2’h0
Device speed.
These 2 bits give the expected speed the application
programs for the USB device, according to encoding:
– 2‘b00 HS
– 2‘b01 FS
– 2‘b10 LS
– 2‘b11 Reserved
However, the actual speed at which the USB device
operates depends on the enumerated speed field (ENUM
SPD) of the device status register (see Device status
register on page 494).
Note: The UDC11-AHB subsystem uses only the LSB (bit
0) of SPD field, whereas bit 1 is don’t care (2’bx0 = LS,
2‘bx1 = FS).
[01:00]
23.8.5
SPD
Device control register
The device control is a RW register which allows to control (at runtime) the USB 2.0 device
after device configuration. The device control register bit assignments are given in
Table 401.
Table 401. Device control register bit assignments
Bit
[31:24]
THLEN (1)
Reset value
Description
8’h00
Threshold length.
This 8 bit field indicates the number (THLEN + 1) of 32 bit
entries in the RxFIFO before the DMA can start data transfer
(in an out transaction in DMA mode when thresholding is
enabled, Threshold enable on page 484). The 8’h00 reset
value means that only one entry in RxFIFO is enough to
start the DMA data transfer.
[23:16]
BRLEN (1)
8’h00
Burst length.
This 8 bit field indicates the length of a single burst on the
AHB bus as an integer number (BRLEN + 1) of 32 bit data
transfers, when burst split features of DMA mode is enabled
(Burst split enable on page 485). The 8’h00 reset value
means then a burst length of (1 · 32) bits.
[15:14]
Reserved
-
Read: undefined. Write: should be zero.
1'h0
CSR programming completion notification.
This bit is used by the application to notify the UDC-AHB
subsystem that all required CSRs configuration has been
completed (bit set to 1‘b1). Then, the UDC-AHB subsystem
can acknowledge (ACK reply) the current set configuration
or set interface command.
[13]
492/844
Name
CSR_DONE
Doc ID 018672 Rev 1
RM0082
HS_USB 2.0 device
Table 401. Device control register bit assignments (continued)
Bit
[12]
[11]
[10]
[09]
[08]
[07]
[06]
Name
DEVNAK
SCALE
SD
MODE
BREN (1)
THE (1)
BF
(1)
Reset value
Description
1'h0
NAK handshake.
setting this bit, the udc-ahb Subsystem returns a NAK
handshake to all out endpoints, avoiding then to set the
SNAK bit of each endpoint control register (Endpoint control
register on page 498).
1'h0
Scale down.
Setting this bit, the timer values inside the UDC-AHB
subsystem are scaled down when running gate-level
simulation only, aiming to reduce simulation time. Clear the
bit for normal operation.
1'h0
Soft disconnect.
This bit is used by the software application to signal the UDC
to soft-disconnect. In particular, setting this bit causes the
UDC-AHB Subsystem to enter the disconnected state.
1'h0
Operation mode.
This bit allows to select the operation mode of the UDC-AHB
subsystem (Theory of operation on page 470), according to
encoding:
1‘b0 = slave-only mode.
1‘b1 = DMA mode.
1'h0
Burst transfer to AHB bus enable.
Setting this bit, the DMA burst split (Burst split enable on
page 485) is enabled, and burst length is programmed by
the BRLEN field in this register.
1'h0
Thresholding enable.
Setting this bit, the DMA threshold (Threshold enable on
page 484) is enabled, and a number of quadlets equal to the
threshold value (field THLEN in this register) are transferred
from the RxFIFO to the memory in an out transaction in
DMA mode.
1'h0
Buffer fill mode enable.
Setting this bit, the DMA buffer fill mode (Buffer fill mode
(OUT) on page 484) is enabled, and the data are transferred
into contiguous locations pointed to by the buffer address.
[05]
BE (1)
1'h0
Endianness bit.
Setting this bit, the system byte ordering can be changed
from little endian (default, BE set to 1‘b0) to big endian.
Note: Only data accesses are endian-sensitive (in both
slave-only and DMA mode). Descriptor and CSR accesses
are always in little endian mode.
[04]
DU (1)
1'h0
Descriptor update.
Setting this bit, the DMA updates the descriptor at the end of
each packet processed.
[03]
TDE (1)
1'h0
DMA transmission.
Setting this bit, the transmit DMA is enabled.
Doc ID 018672 Rev 1
493/844
HS_USB 2.0 device
RM0082
Table 401. Device control register bit assignments (continued)
Bit
Name
Reset value
Description
[02]
RDE (1)
1'h0
DMA receive.
Setting this bit, the receive DMA is enabled.
[01]
Reserved
-
Read: undefined. Write: should be zero.
1'h0
Resuming signaling on the USB.
This bit is used by the software application to perform a
remote wake-up resume. Setting this bit, the UDC-AHB
subsystem signals the USB host to resume the USB bus.
however, the application must first set RWKP bit in the
device configuration register, (indicating that the UDC-AHB
subsystem supports the remote wake-up feature), and the
USB host must already have issued a set feature request to
enable the device’s remote wake-up feature.
[00]
RES
1. Field supported in DMA mode only.
23.8.6
Device status register
The device status is a RO register which echoes status information needed to service some
of the interrupts. The device status register bit assignments are given in Table 402.
Table 402. Device status register bit assignments
Bit
Reset value Description
[31:18]
TS
14’h0000
Frame number of the received SOF.
This 14 bit field indicates the frame number of the received
SOF, according to the following rules:
High-Speed (HS) operation
[31:21] = Millisecond frame number.
[20:18] = Microframe number
Full-Speed (FS) operation
[31:29] = Reserved.
[28:18] = Millisecond frame number.
[17]
Reserved
-
Read: undefined. Write: should be zero.
1'h0
PHY Error.
This bit is set when either the phy_rxvalid or phy_rxactive
input signal is detected to be continuously asserted for 2 ms.
It results that the UDC-AHB subsystem goes to the suspend
state. When the application serves the early suspend
interrupt (ES bit of the device interrupt register, Device
interrupt register on page 495) it also must check this bit to
determine if the early suspend interrupt was generated due to
PHY error detection.
Note: This bit is reserved for the UDC11-AHB subsystem.
[16]
494/844
Name
PHY
ERROR
Doc ID 018672 Rev 1
RM0082
HS_USB 2.0 device
Table 402. Device status register bit assignments (continued)
Bit
[15]
[14:13]
23.8.7
Name
RXFIFO
EMPTY
ENUM
SPD
Reset value Description
1'h0
Receive FIFO empty status.
This bit is set as soon as DMA data transfer has been
completed and no new packets have been received. In
contrast, this bit is cleared after receiving a valid packet from
the USB. It is set according to the encoding:
– 1‘b0 = Not empty.
– 1‘b1 = Empty.
2’h0
Enumerated speed.
These 2 bits give the speed at which the subsystem comes
up after the speed enumeration, according to the encoding:
– 2‘b00 = HS.
– 2‘b01 = FS.
– 2‘b10 = LS.
– 2‘b11 = Reserved.
If the expected speed is HS (field SPD = 2‘b00 in the device
configuration register and the udc-ahb Subsystem is
connected to a USB 1.1 host controller, then after speed
enumeration, these bits indicates that the subsystem is
operating in FS mode (2‘b01).
Besides, if SPD states HS again but the UDC-AHB
subsystem is connected to a USB 2.0 host controller, then
after speed enumeration, these bits indicate that the
subsystem is operating in HS mode (2‘b00).
Finally, if the expected speed is either LS (SPD = 2‘b10) or
FS (SPD = 2‘b01) and the UDC-AHB subsystem is connected
to either a USB 1.1 or a USB 2.0 host controller, then after
speed enumeration, these bits indicate that the subsystem is
operating in either LS mode (2‘b10) or FS mode (2‘b01,
respectively).
[12]
SUSP
1'h0
Suspend status.
This bit is set according the encoding:
– 1‘b0 = Not detected.
– 1‘b1 = Detected on USB.
[11:08]
ALT
4’h0
Alternate setting.
Please refer to USB standard for more details.
[07:04]
INTF
4’h0
Interface.
Please refer to USB standard for more details.
[03:00]
CFG
4’h0
Configuration.
Please refer to USB standard for more details.
Device interrupt register
The device interrupt is a RW register whose bits are set when there are system-level events.
Indeed interrupts are used by the software application to make system-level decisions. The
device interrupt register bit