Projects / 48 V → 12 V GaN Point-of-Load Converter

48 V → 12 V GaN Point-of-Load Converter

A 300 W synchronous buck built around 100 V GaN half-bridges, designed for high density and a clean switching node under load transients.

Power ElectronicsPCB DesignModeling & SimulationEmbedded Firmware
Render of the GaN point-of-load converter board
Output power300 W
Peak efficiency97.4 %
Switching freq500 kHz
Power density215 W/in³

Overview

Intermediate bus converters on a dense avionics stack are usually thermally limited long before they are electrically limited. This board was an attempt to move that limit: 100 V GaN half-bridges, a two-phase interleaved synchronous buck, and a layout organized entirely around minimizing the high-di/dt loop area so that the switching node stays clean enough to run at 500 kHz without a snubber.

Year2025
RoleDesign lead — schematic, layout, magnetics, firmware, bring-up
DisciplinesPower Electronics, PCB Design, Modeling & Simulation, Embedded Firmware

Requirements

The converter feeds a 12 V rail shared by motor drivers and a compute module, so it has to hold regulation through a load step that is a large fraction of full load, and it has to do so inside a sealed enclosure with conduction cooling only.

Requirement set

Input range36 – 60 V DC (48 V nominal)
Output12 V ± 2 % static, ± 5 % transient
Load0 – 25 A continuous, 40 A for 100 ms
Transient0 → 20 A at 10 A/µs, < 400 mV deviation
Efficiency> 95 % from 30 % to 100 % load
CoolingConduction only, 70 °C baseplate
Envelope70 × 45 × 12 mm including magnetics

Topology selection

A 4:1 step-down at 25 A is comfortably inside the range where a synchronous buck wins, so the interesting decision was not which topology but how many phases. Single-phase at 500 kHz put the inductor ripple and the output capacitor RMS current above what I wanted in a conduction-cooled enclosure. Two interleaved phases cut input capacitor RMS current by roughly half and moved effective output ripple to 1 MHz, which let the output filter shrink faster than the extra phase cost in area.

I built the same trade study into an interactive tool on this site — see the topology selector and the buck design calculator.

Power stage schematic sheet
Power stage sheet: two interleaved half-bridges, shared input bulk, split output filter. Gate drive returns are kept local to each half-bridge.
Top-side PCB layout with annotated regions
Scroll to zoom · drag to pan · click a marker 100%

Select a numbered marker for the design rationale behind that region.

Top copper. Click a marker to see why each region is placed the way it is.
Loading model…
Drag to orbit · scroll to zoom · right-drag to panGLB
Board assembly exported from the ECAD/MCAD co-design — drag to rotate, scroll to zoom. Used to check heatsink and connector clearance before fabrication.

Control and firmware

Peak current-mode control with slope compensation, closed digitally on an STM32G4 so the compensator could be retuned in the lab without spinning a board. The ADC sample point is aligned to the middle of the low-side conduction interval to reject switching noise, and a fault state machine latches the gate drives off on overcurrent, overtemperature, or a missing phase.

control_loop.c
/* Peak current-mode inner loop. Runs in the ADC EOC ISR, phase-aligned to
 * the middle of the low-side conduction interval so the sample lands away
 * from the switching edge. Fixed point Q15 to keep the ISR under 400 ns. */
void ctrl_isr(void)
{
    const q15_t i_sense = adc_read_q15(ADC_ISENSE);
    const q15_t v_out   = adc_read_q15(ADC_VOUT);

    /* Outer voltage loop runs at 1/16 rate; inner loop uses its last output. */
    if (++s_tick >= 16u) {
        s_tick = 0u;
        s_i_ref = pi_update(&s_v_comp, VOUT_REF_Q15 - v_out);
        s_i_ref = q15_clamp(s_i_ref, 0, I_LIMIT_Q15);
    }

    /* Slope compensation: subtract a ramp proportional to elapsed on-time. */
    const q15_t ramp  = q15_mul(SLOPE_Q15, (q15_t)TIM1->CNT);
    const q15_t error = s_i_ref - (i_sense + ramp);

    q15_t duty = pi_update(&s_i_comp, error);
    duty = q15_clamp(duty, DUTY_MIN_Q15, DUTY_MAX_Q15);

    if (fault_pending()) {
        pwm_force_safe_state();   /* both gates low, latch until cleared */
        return;
    }

    pwm_set_duty_interleaved(duty);
}
Inner current loop, executed in the ADC end-of-conversion interrupt at 500 kHz.

Measured results

Peak efficiency97.4 %48 V in, 12 V out, 14 A
Efficiency at full load96.1 %25 A continuous
Transient deviation310 mV0 → 20 A at 10 A/µs
Switch node overshoot17.8 VNo snubber, 60 V input
Hot-spot rise+38 °CAbove 70 °C baseplate, full load

What I would change

The DCR sense network is the weakest part of the design — it is accurate enough for current limit but its tolerance over temperature makes phase-current sharing worse than it needs to be. On a second revision I would spend the area on inline shunts with a dedicated amplifier per phase. I would also move the gate drive supply to a fully isolated rail; bootstrapping worked, but it constrains how long the converter can sit at very high duty cycle during a brownout.

Questions about this design? I am happy to walk through the trade studies, the measurements, or anything I glossed over here — drakeajoseph@gmail.com.