Application Note : NG-ULTRA Reset Management

Introduction

This document is aimed to help NG-ULTRA users to manage all resets in their designs.

Some of the reset are dedicated to the SoC part and others are dedicated to the FPGA part.

NG-ULTRA architecture

Reset description

Overview

Hereafter an overview of the whole reset system of NG-ULTRA:

NG-ULTRA Reset Overview

Soc Reset

Overview

Hereafter the overview of all reset

Reset list

The Soc get multiple reset signals and modes affecting the cores, some interfaces or the whole Soc.

CLK pin must be still activated during any reset assertion

Power On Reset

It resets everything in the Soc including the clock manager

After releasing, the SoC restarts with the BL0 running.

The possible sources to generate this signal are:

Name

Type

Comment

Name

Type

Comment

POWER_ON_RSTN

External pin

 

POR

Internal register

SRMR²

System Reset

It reset everything, as the Power On Reset except the clock manager.

As Power On Reset, the SoC restarts with the BL0 running once the reset is released.

Name

Type

Comment

Name

Type

Comment

SYSTEM_RSTN

External pin

POST_MORTEM='0'

SYSRST

Internal register

SRMR

fabric_fpga_sysrstn

Internal signal

SoC/Fabric interface

Post Mortem Reset

It gets the same impact than System Reset except the core restart mode can be modified.

CRMR and PMRSTHALT in SRMR are not reseted.

Name

Type

Comment

Name

Type

Comment

SYSTEM_RSTN

External pin

POST_MORTEM='1'

PMRST

Internal register

SRMR

fabric_fpga_pmrstn

Internal signal

SoC/Fabric interface

Warm Reset

Individual logic reset for each ARM Core.

Behavior after this reset is set by Core Reset Mode Register of each core.

In order to generate a Warm Reset request (Warmrstreq), RR bit in R52 HRMR control register of the associated core must be written.

Then, the following sequence must be done:

  • Assert warmrstreq and de-assert corepactive.

  • Wait for the assertion of Corepreqn and Corepstate.

  • When both Corepreqn and Corepstate are high, assert Corepaccept.

  • In order to abort the procedure, assert corepdeny instead of Corepaccept.

new warm reset procedure can be accepted by clock manager if previous warm reset has been released and both corepaccept and corepdeny are at low level.

Core Reset

Each R52 core is composed by the following resets:

  • nCORERESET[3:0]: individual core warm reset (except debug & trace logic)

  • nCPUPORESET[3:0]: individual core power-on reset (including core’s debug & trace logic)

  • nTOPRESET: cluster top-level logic reset (GIC, AXIS)

  • nPRESETDBG: APB and top level debug logic

In addition, CPUHALT[3:0] controls if the core waits out of reset before fetching instructions (1) or not (0).

DDR Controller Reset

DDR Controller reset

Peripheral Reset

There is one reset for all the following peripheral interface:

  • AXI Master 1 & 2

  • AXI Slave 1 & 2

  • LLPP 0 to 3

  • DDR

  • DMA Handshake

External pin

Hereafter the list of all resets coming from primary pin and connected to the SoC:

  • POWER_ON_RSTN: generates a Power On Reset

  • SYSTEM_RSTN: generates a System Reset or Post Mortem Reset depending on POST_MORTEM level

  • POST_MORTEM: Mode to indicate if SYSTEM_RSTN acts as a System Reset (0) or a Post-Mortem Reset (1)

Internal Register

System Reset Mode Register (SRMR)

SRMR register is a register in CLKRST_MNG range.

The address of SRMR register is 0x0D716040.

Only CORE 0 and external debugger can write into this register.

Bits

Bit Name

POR , SYSRST or PMRST  Value

Description

31:16

Key

n.a.

Register write enable key: 0xCDEF. Read as 0

15:5

Reserved

n.a.

Unused, Read as 0

4

DDRCCRST

1

DDR Controller Core Reset:

 

1= DDRC Core reset

0= DDRC Core enabled

3

PMRSTHALT

0

(not cleared by PMRST)

Select if all the cores are held in HALT after a PMRST

0 = each core behaves as dictated by its Core Reset Mode Register values

1 = all cores held in HALT after the next PMRST until cleared

2

PMRST

n.a.

Post Mortem Reset: writing 1 generates a SoC PMRST, 0 = no effect. Read as 0

1

SYSRST

n.a.

System Reset: writing 1 generates a SoC SYSRST, 0 = no effect. Read as 0

0

POR

n.a.

Power On Reset: writing 1 generates a SoC POR, 0 = no effect. Read as 0.

Core Reset Mode Register (CRMR)

SRMR[3:0] registers are registers in CLKRST_MNG range.

The addresses of CRMR registers are:

Core

Address

Core

Address

0

0x0D716044

1

0x0D716048

2

0x0D71604C

3

0x0D716050

Bits

Bit Name

POR or SYSRST Value

Description

31:5

VECTABLE

0

Reset Vector base address

4:2

Reserved

n.a.

Unused. Read as 0.

1

TCMBOOT

0 (core0)

1 (core1..3)

Enable TCMA at address 0 after reset

1 = enabled

0 = disabled

0

CPUHALT

0 or 1 (core0)

1 (core1..3)

Core held in HALT after reset

1 = held in HALT

0 = free to run

Core Reset StatusRegister (CRSR)

CRSR[3:0] registers are registers in CLKRST_MNG range.

It gives the ability to check the last reset source.

The addresses of CRSR registers are:

Core

Address

Core

Address

0

0x0D716070

1

0x0D716074

2

0x0D716078

3

0x0D71607C

Only CORE 0 and external debugger can write into these registers.

Bits

Bit Name

POR or SYSRST Value

Description

31:5

Reserved

n.a.

Unused. Read as 0.

4:2

LRSRC

X

Last Reset Source:

 

0 = Input Pin

1 = SRMR.POR

3 = SRMR.SYSRST

4 = SRMR.PMRST

5 = HRMR.RR

6 = FPGA

1:0

LRTYPE

X

Last Reset Type:

 

0 = POR

1 = SYSRST

2 = PMRST

3 = WARMRST

SoC/Fabric interface

Hereafter the list of all resets coming from the SoC/Fabric interface with signals generated by the fabric:

  • fabric_fpga_sysrstn: generates a System Reset if SoC/Fabric interface is enabled (depends on enable_TMR)

  • fabric_fpga_pmrstn: generates a Post Mortem Reset if SoC/Fabric interface is enabled (depends on enable_TMR)

  • enable_TMR: enables the SoC/Fabric interfaces if equal to 0b111

  • fabric_fpga_nic_rstn_i[9:0]: Reset of AXI interfaces with the following mapping:

    • 9: DDR 0

    • 8: LLPP 3

    • 7: LLPP 2

    • 6: LLPP 1

    • 5: LLPP 0

    • 4: APB

    • 3: AXI Slave 1

    • 2: AXI Slave 0

    • 1: AXI Master 1

    • 0: AXI Master 1

  • fabric_fpga_dma_hs_rstn_i[5:0]: Reset of DMA handshake

These resets affect the Soc only if the SoC/Fabric interface is enabled (enable_TMR[2:0] set to 0b111 by the fabric.

FPGA Reset

Reset list

The FPGA get multiple reset signals affecting the FPGA manager or the Fabric.

CLK pin must be still activated during any reset assertion

Hard Reset

It resets the FPGA manager: the error registers and the configuration registers of each FPGA loader.

Hereafter the list of all error registers:

  • ERROR1 (0x0E)

  • ERROR1_MASK (0x0F)

  • TRIGGER1_MASK (0x24)

  • ERROR2 (0x10)

  • ERROR2_MASK (0x11)

  • TRIGGER2_MASK (0x25)

  • ERROR3 (0x22)

  • ERROR3_MASK (0x23)

  • TRIGGER3_MASK (0x26)

  • EVENT_CNT1 (0x12)

  • EVENT_CNT2 (0x13)

  • EVENT_CNT3 (0x34)

  • MAX_ERROR_CNT (0x14)

Hereafter the list of all configuration registers:

  • INIT (0x02)

  • JTAG_USERCODE (0x0C)

  • SPI_CTRL (0x0D)

  • DEVICE_ID (0x15)

  • CMIC_DELAY (0x17)

  • THSENS_CTRL (0x1A)

  • DUMP_CTRL (0x1C)

  • SPW_CTRL1 (0x1D)

  • SPW_CTRL2 (0x1E)

  • PARUSR_CTRL (0x28)

  • PAREXT_CTRL (0x29)

  • SPI_TIMING (0x2A)

  • SPI_ADDR (0x2B)

It resets the ERROR output pin.

It resets the configuration memory.

After releasing, the bitstream must be reloaded.

Soft Reset

It resets the FPGA manager: the configuration registers of each FPGA loader.

For the configuration registers, check Hard Reset description.

It resets the TRIGGER output pin.

Soft Reset does not reset error registers.

Sequence

The FPGA reset must comply with the following requirements:

  1. Assert SOFT_RSTN

  2. Wait for a minimum of 100 cycles of CLK

  3. Assert HARD_RSTN

  4. Wait for a minimum of 3 us

  5. Deassert SOFT_RSTN and HARD_RSTN

Deassertion of SOFT_RSTN and HARD_RSTN can be done in any order.

CLK pin must be running during the whole sequence.

For instance, the sequence can be the following one:

FPGA reset sequence

External pin

Hereafter the list of all resets coming from primary pin and connected to the FPGA:

  • HARD_RSTN: It generates a Hard Reset.

  • SOFT_RSTN: It generates a Soft Reset.

Internal Register

BSM RESETS

SRMR register is a register in FPGA_LOADER range.

The address of BSM RESETS register is 0x000D701030.

Bits

Bit Name

Description

31:16

Hard Reset

Must be equal to 0xB007 to be enabled Any other value leads to disabling

Generates a Hard Reset

15:0

Soft Reset

Must be equal to 0x50F7 to be enabled Any other value leads to disabling

Generates a Soft reset

Reset of AHB registers

Reset of AHB/PAR16 interface

LOADERS STATUS

LOADER STATUS register is a register in FPGA_LOADER range.

The address of LOADER STATUS register is0x000D701038.

This register is useful in order to get a global status of the FPGA.

Bits

Bit Name

Description

31:3

Reserved

Unused

2

Ready

OR-reduced of ready status of all loaders

1

Error

OR-reduced of error status of all loaders

0

Trigger

OR-reduced of trigger status of all loaders

LOADERS FLAGS

LOADERS FLAGS register is a register in FPGA_LOADER range.

The address of LOADERS FLAGS register is 0x000D70103C.

This register is useful in order to get a global status of the FPGA.

Bits

Bit Name

Description

31:4

Reserved

Unused

23:0

Error Status

1 error status bit per loader

SoC/Fabric interface

fabric_rstn_fpga (fabric_lowskew_o[1]) is a logic reset for the fabric in order to indicate the SoC is enabled.

This reset is activated in case of any of the following reset is activated whatever the source (SoC/Fabric interface, external pin, internal register, …):

  • Power On Reset

  • System Reset

  • Post Mortem Reset

Summary

Hereafter the summary table:

Reset

Active level

Type

Functionnal/Debug

SoC/FPGA Reset

Configuration Memory Reset

Comment

POWER_ON_RSTN

Low

External pin

Functionnal

Soc

No

Reset the SoC including the clock manager
Applies a reset on rstn_fpga (Soc -> Fabric)

SYSTEM_RSTN

Low

External pin

Functionnal

Soc

No

Reset the SoC
Applies a reset on rstn_fpga (Soc -> Fabric)
In case of POST_MORTEM enabled mode, gives control to user after reset

POST_MORTEM

High (Mode)

External pin

Debug

Soc

No

0: Post-Mortem reset will be applied in case of SYSTEM_RSTN low level
1: Post-Mortem reset will be applied in case of SYSTEM_RSTN low level

RST_HARD_N

Low

External pin

Functionnal

FPGA

Yes

Reset of error registers and the configuration memory

RST_SOFT_N

Low

External pin

Functionnal

FPGA

No

Reset of configuration registers and trigger output

POR

High

Internal register

Functionnal

Soc

No

Enabled when AHB Register address  0x0D716040 data bit 0 is 0b1
Same impact than external POWER_ON_RSTN

SYSRST

High

Internal register

Functionnal

Soc

No

Enabled when AHB Register address  0x0D716040 data bit 1 is 0b1
Same impact than external SYSTEM_RSTN with POST_MORTEM disabled

PMRST

High

Internal register

Debug

Soc

No

Enabled when AHB Register address  0x0D716040 data bit 2 is 0b1
Same impact than external SYSTEM_RSTN with POST_MORTEM enabled

PMRSTHALT

High

Internal register

Debug

Soc

No

Enabled when AHB Register address  0x0D716040 data bit 3 is 0b1
Enables HALT mode of Cores after Post-Mortem reset

DDRCCRST

High

Internal register

Functionnal

Soc

No

Enabled when AHB Register address  0x0D716040 data bit 4 is 0b1
DDR Controller reset

AHB Hard Reset

Low

Internal register

Functionnal

FPGA

No

Enabled when AHB Register address  0x000D701030 is data 0x50F7
Same impact than external RST_HARD_N

AHB Soft Reset

Low

Internal register

Functionnal

FPGA

No

Enabled when AHB Register address  0x000D701030 is data 0xB007
Same impact than external RST_SOFT_N except it resets in addition the PAR16 interface

Warmresetreq[3:0]

High

Internal register

Functionnal

Soc

No

Logic reset of Core processors
Requet is set when HRMR.RR is written
Requires other registers management (corepactive, …)

fabric_fpga_sysrstn

Low

Internal signal

Functionnal

Soc

No

Impact only if NX_SOC_INTERFACE input enable_TMR[2:0]==0b111
Same impact than external SYSTEM_RSTN with POST_MORTEM disabled

fabric_fpga_pmrstn

Low

Internal signal

Debug

Soc

No

Impact only if NX_SOC_INTERFACE input enable_TMR[2:0]==0b111
Same impact than external SYSTEM_RSTN with POST_MORTEM enabled

fabric_fpga_nic_rstn_i[9:0]

Low

Internal signal

Functionnal

Soc

No

Reset of AXI interfaces 

fabric_fpga_dma_hs_rstn_i[5:0]

Low

Internal signal

Functionnal

Soc

No

Reset of DMA handshake

 

fabric_rstn_fpga
(fabric_lowskew_o[1])

Low

Internal signal

Functionnal

FPGA

No

Logic reset
Enabled in case of one of the following resets enabled (whatever source):
1-Power On Reset
2-System Reset
3-Post Mortem reset

© NanoXplore 2022