<!– SPDX-FileCopyrightText: 2026 Ahmed Imamović SPDX-FileCopyrightText: 2026 Tarik Hamedović SPDX-License-Identifier: CC-BY-SA-4.0 –>
ubddr3
This module integrates the custom DDR3 controller, CPU access path, and DMA capture stream path.
- class uberclock_soc.ubddr3.UberDDR3(*args: Any, **kwargs: Any)[source]
Bases:
LiteXModuleUberDDR3 top-level integration block.
Use-case
This module wires a Verilog DDR3 controller (ddr3_top) into a LiteX SoC and provides two ways to write/read DDR.
- CPU / software access (SYS domain):
Classic 32-bit Wishbone (LiteX standard) exposed as self.wb.
Width-converted up to the DDR bus width (UB_BUS_WIDTH_BITS).
Bridged into pipelined WB signaling used by the controller.
- High-throughput capture / DMA (UC domain -> SYS domain -> DDR):
A UC-domain stream source generates DW-bit beats.
The source is either an internal ramp or packed design samples.
Stream crosses UC->SYS via AsyncFIFO.
zipdma_s2mm writes the stream into DDR through a shared crossbar.
Clock domains
“sys” : CPU, CSR bus, zipdma_s2mm, Wishbone fabric
“uc” : UberClock DSP / sample domain
“ub_4x” : DDR3 PHY clock
“ub_4x_dqs” : DDR3 PHY clock 90° shifted (DQS)
“idelay” : IDELAYCTRL reference clock
External inputs (from SoC)
cap_enable_uc : 1 = capture external design samples, 0 = use ramp
cap_beats_uc : number of DW-bit beats to write
cap_sample : the selected 12-bit sample (UC domain)
CSRs (SYS domain)
dma_req : strobe to start DMA write
dma_addr0/1 : 64-bit base address (packed from two 32-bit regs)
dma_inc : increment mode for DMA
dma_size : transfer size encoding (zipdma convention)
dma_busy/dma_err : status from zipdma
calib_done : DDR controller calibration complete
- DEFAULT_SERDES_RATIO = 4
- DEFAULT_CAP_BEATS = 256
- DEFAULT_S2MM_FIFO_DEPTH = 256