SPRUIL1D May 2019 – December 2024 DRA829J , DRA829J-Q1 , DRA829V , DRA829V-Q1 , TDA4VM , TDA4VM-Q1
Per-bank refresh commands may be issued to all banks or to a single bank, and may be issued to each bank in any order if programmed for this behavior. However, all banks must be refreshed before the same bank can be issued a new per-bank refresh command. The DDR controller can issue the commands in any order, and subsequent per-bank refresh sequences can be a completely different order than the last command. The order of banks is specified via the DDRSS_CTL_67[8] PBR_NUMERIC_ORDER bit. It is potentially advantageous to execute out-of-numerical order to prevent an active bank from stalling refresh operations to any other banks.
The PBR logic is part of the auto-refresh logic. The auto-refresh logic is responsible for maintaining the debit / credit counts for refresh that ensure that refresh commands are occurring as needed. The DRAM allows the user to postpone a maximum of 8 refresh commands which means that the user can wait as much as 9 x TREFI_PB_Fx cycles before issuing a refresh command. The DDR controller keeps track of how many refreshes it has skipped (DDRSS_CTL_228[4-0] AREF_MAX_DEFICIT) or advanced (DDRSS_CTL_228[12-8] AREF_MAX_CREDIT) and ensures that the DRAM requirements are satisfied. The PBR logic issues refresh commands to single banks if enabled via the DDRSS_CTL_67[0] PBR_EN bit and in accordance with the programmed values. The DDRSS_CTL_59[16] TREF_ENABLE bit must also be set to 1h for the PBR logic to work. The auto-refresh logic issues refresh commands to all banks and high priority refresh commands if the refresh count falls below a certain threshold.
When a refresh is required, the PBR logic issues a per-bank refresh command to a specific bank. If that bank is currently being accessed by the DDR controller core, the command will be held off. If the command is held off beyond the number of cycles specified in the DDRSS_CTL_70[31-16] PBR_MAX_BANK_WAIT field, the PBR logic inhibits the active process in the DDR controller core, closes the bank, executes the PBR command and then un-inhibits the core to allow the interrupted process to continue. Once the bank is free, the PBR command is issued. The bank will be blocked from accesses within the number of clocks programmed into the DDRSS_CTL_71[3-0] PBR_BANK_SELECT_DELAY field and the refresh will occur and then release the bank.