When a Reset or Debug_Rst occurs, MicroBlaze V flushes the pipeline and immediately starts
fetching instructions from the reset vector (address C_BASE_VECTORS). Both external reset signals are active-High, and it is
recommended to assert the signals for at least 16 cycles.
Reset does not clear the general purpose registers (x1 – x31) or the floating-point registers (f0 – f31). To ensure that stale data is not used, software should not assume that the general purpose registers or floating-point registers are zero.
MicroBlaze V does not wait for outstanding
AXI or LMB transactions to complete before it begins fetching instructions from the
reset vector. When only resetting the processor, all external accesses must be completed
before asserting Reset. This can be achieved with a wfi instruction to enter sleep mode or the
Pause signal. See Sleep and Pause Functionality for
details.
Equivalent Pseudocode
pc ← C_BASE_VECTORS
fcsr ← 0
mstatus ← 0, 00020000, 00018000, 00038000
mie ← 0; mtvec[31:2] ← (C_BASE_VECTORS + 4) / 4; mtvec[1:0] ← 00
mcounteren ← 0; mscratch ← 0; mepc ← 0; mcause ← 0; mtval ← 0
mstream ← 0; mwfi ← 0
mcycle ← 0; minstret ← 0; mhpmcounter3 - mhpmcounter31 ← 0
mcycleh ← 0; minstreth ← 0; mhpmcounterh3 - mhpmcounter31 ← 0
mcountinhibit ← 0; mhpmevent3 - mhpmevent31 ← 0
cycle ← 0; instret ← 0; hpmcounter3 - hpmcounter31 ← 0
cycleh ← 0; instreth ← 0; hpmcounterh3 - hpmcounter31 ← 0
Reservation ← 0
The actual mstatus reset value depends on parameters. See the Machine Status Register (mstatus) description for details.