We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 65537

MicroBlaze – How to reset MicroBlaze during normal operation with all of the outstanding transactions completed?


I want to reset MicroBlaze during a normal operation.

Will MicroBlaze wait for the completion of all outstanding access when Sleep mode is set by Reset_Mode=01(Sleep mode) input signal?


Reset Mode signals are sampled when Reset is active.

Asserting reset on MicroBlaze will cause MicroBlaze to directly reset and any outstanding transactions will be ignored. 

Aany ongoing transaction will be abruptly stopped. Reset will NOT wait for completion of outstanding accesses.

If you want to reset MicroBlaze during normal operation and want to make sure that all outstanding transactions are completed, this flow needs to be followed.

  1. Instead of resetting MicroBlaze, set an interrupt to MicroBlaze
  2. In the interrupt routine for this interrupt, execute a sleep instruction.

    The assembler pseudo-instruction sleep can be used:

    #definemb_sleep()          ({  __asm__ __volatile__ ("sleep\t"); })

  3. When MicroBlaze has entered sleep mode, assert the reset signal.
    The sleep output signal is asserted when MicroBlaze enters sleep mode.

AR# 65537
Date Created 09/30/2015
Last Updated 12/23/2015
Status Active
Type General Article
  • Microblaze