17.5.14.3 Software Sequence for Removal of Clocks
Software can be used to keep the SDRAM in self-refresh. The AXI and DDRC clocks can be removed when in self-refresh by following the sequence described in the following table.
Note: Dynamic and quasi dynamic registers cannot be programmed if
any of the clocks has been removed. Clocks must be turned back on before starting the
programming sequence. Also, the clock gating logic must ensure there are no glitches on the
clocks when they are removed/enabled.
Step | Description | Comment |
---|---|---|
1 | Write 0 to PCTRL_n.port_en | Blocks AXI ports from taking any more transactions |
2 | Poll PSTAT.rd_port_busy_n = 0 Poll PSTAT.wr_port_busy_n = 0 |
Waits until all AXI ports are idle |
3 | Write 1 to PWRCTL.selfref_sw | Causes the system to move to Self-refresh state |
4 | Poll STAT.selfref_type= 2’b10 | Waits until Self-refresh state is entered |
5 | Remove AXI clocks | – |
6 | Remove DDRC core clock | – |
The clocks should be re-enabled by following the sequence described in the following table.
Step | Description | Comment |
---|---|---|
1 | Enable AXI clocks | – |
2 | Enable DDRC core clock | – |
3 | Write 0 to PWRCTL.selfref_sw | Causes the system to exit from Self-refresh state |
4 | Poll STAT.selfref_type = 2’b00 | Waits until Self-refresh state is exited |
5 | Write 1 to PCTRL_n.port_en | AXI ports are no longer blocked from taking transactions |