深入解析Verilog Buck变换器设计原理与仿真优化技巧

引言:电源管理中的Buck变换器与硬件描述语言
Buck变换器(降压变换器)作为开关电源(SMPS)的核心拓扑结构,在现代电子设备中扮演着至关重要的角色。从智能手机的电源管理单元到数据中心的服务器供电,Buck变换器以其高效的能量转换能力(通常可达90%以上)和灵活的电压调节范围,成为工程师必须掌握的关键技术。随着半导体工艺的进步,数字控制的开关电源逐渐取代传统的模拟控制方案,而Verilog作为一种硬件描述语言,为Buck变换器的数字控制设计提供了强大的建模和仿真工具。
本文将深入探讨如何使用Verilog实现Buck变换器的数字控制核心,涵盖从基本原理到高级优化技巧的全方位内容。我们将重点分析脉冲宽度调制(PWM)生成、反馈控制环路设计、数字滤波器实现以及仿真验证等关键环节,并提供完整的代码示例和优化策略。
Buck变换器的基本工作原理
拓扑结构与工作模式
Buck变换器的基本电路由功率开关管(MOSFET)、续流二极管、电感和输出电容组成。其核心原理是通过控制开关管的导通时间(Ton)和关断时间(Toff)来调节输出电压。根据电感电流是否在关断期间降为零,Buck变换器可分为连续导通模式(CCM)和断续导通模式(DCM)。
在CCM模式下,电感电流始终为正,输出电压与输入电压的关系为:
$
\(V_{out} = D \times V_{in}\)
$
其中D为占空比,即导通时间与开关周期的比值。这种线性关系使得通过调节占空比即可精确控制输出电压。
数字控制的核心挑战
与模拟控制相比,数字控制Buck变换器面临以下关键挑战:
采样与量化误差
:ADC的分辨率限制了电压反馈的精度
计算延迟
:数字控制器的计算时间会引入相位滞后
量化噪声
:PWM分辨率有限导致的极限环振荡
开关噪声
:高频开关动作对数字电路的干扰
这些挑战需要在Verilog设计中通过适当的算法和架构来解决。
Verilog实现的数字PWM控制器
基础PWM生成模块
数字PWM是Buck变换器控制的核心。最基本的实现方式是使用计数器与比较器。以下是一个8位分辨率、256级PWM生成器的Verilog代码:
module digital_pwm (
input wire clk, // 系统时钟(例如100MHz)
input wire rst_n, // 异步复位(低有效)
input wire [7:0] duty, // 占空比设置(0-255)
output reg pwm_out // PWM输出
);

reg [7:0] counter; // 8位计数器

always @(posedge clk or negedge rst_n) begin
if (!rst_n) begin
counter <= 8'b0; pwm_out <= 1'b0; end else begin counter <= counter + 1'b1; // 比较器:当计数器小于占空比值时输出高电平 if (counter < duty) pwm_out <= 1'b1; else pwm_out <= 1'b0; end end endmodule 代码解析 : 计数器在每个时钟周期递增,产生0-255的计数序列 占空比寄存器 duty 决定了PWM输出高电平的时钟周期数 PWM频率 = 时钟频率 / 256。对于100MHz时钟,PWM频率约为390kHz 这种实现方式简单但分辨率固定,且频率不可调 高分辨率PWM与死区时间控制 在实际应用中,需要更高的PWM分辨率和死区时间控制以防止上下桥臂直通。以下是支持死区时间的10位PWM实现: module advanced_pwm ( input wire clk, // 系统时钟 input wire rst_n, // 复位信号 input wire [9:0] duty, // 10位占空比 input wire [9:0] period, // 周期设置(可调频率) input wire [7:0] dead_time, // 死区时间(时钟周期数) output reg pwm_high, // 上管驱动 output reg pwm_low // 下管驱动 ); reg [9:0] counter; reg [7:0] dead_counter; reg state; // 0:正常PWM, 1:死区时间 always @(posedge clk or negedge rst_n) begin if (!rst_n) begin counter <= 10'b0; dead_counter <= 8'b0; pwm_high <= 1'b0; pwm_low <= 1'b0; state <= 1'b0; end else begin case (state) 1'b0: begin // 正常PWM状态 if (counter < duty) begin pwm_high <= 1'b1; pwm_low <= 1'b0; end else if (counter < period) begin pwm_high <= 1'b0; pwm_low <= 1'b1; end else begin // 周期结束,进入死区时间 counter <= 10'b0; dead_counter <= dead_time; pwm_high <= 1'b0; pwm_low <= 1'b0; state <= 1'b1; end else counter <= counter + 1'b1; end 1'b1: begin // 死区时间状态 if (dead_counter == 8'b0) begin state <= 1'b0; end else begin dead_counter <= dead_counter - 1'b1; end end endcase end end endmodule 关键改进 : 可调周期 :通过 period 输入动态调整PWM频率 死区控制 :防止上下管同时导通,保护功率器件 状态机设计 :清晰分离正常PWM和死区时间两个状态 PWM分辨率与频率的权衡 在实际设计中,PWM分辨率和频率是一对矛盾。假设系统时钟为100MHz: 若PWM频率为1MHz,则周期=100个时钟周期,最大分辨率为log2(100)≈6.6位 若需要10位分辨率,则PWM频率最高为100MHz/1024≈97.6kHz 优化策略 : 使用抖动(dithering)技术提高等效分辨率 采用多相PWM结构 使用更高频率的系统时钟或专用PWM外设 数字反馈控制环路设计 PID控制器原理与实现 PID(比例-积分-微分)控制器是开关电源中最常用的控制算法。在数字域中,我们需要实现离散PID算法: module digital_pid ( input wire clk, input wire rst_n, input wire signed [15:0] error, // 误差信号(设定值-反馈值) input wire error_valid, // 误差有效信号 output reg signed [15:0] control_out, // 控制输出 output reg control_valid // 输出有效 ); // PID参数(Q15格式,范围-1.0~+1.0) parameter signed [15:0] KP = 16'sd1000; // 比例增益 parameter signed [15:0] KI = 16'sd100; // 积分增益 parameter signed [15:0] KD = 16'sd200; // 微分增益 // 积分饱和限制 parameter signed [31:0] INTEGRAL_LIMIT = 32'sd1000000; reg signed [31:0] integral_term; // 积分累加器(扩展位宽防止溢出) reg signed [15:0] prev_error; // 上一次误差 reg signed [31:0] proportional; // 比例项 reg signed [31:0] derivative; // 微分项 reg signed [31:0] pid_sum; // PID总和 always @(posedge clk or negedge rst_n) begin if (!rst_n) begin integral_term <= 32'b0; prev_error <= 16'b0; control_out <= 16'b0; control_valid <= 1'b0; end else if (error_valid) begin // 比例项计算 proportional <= KP * error; // 积分项计算(带饱和限制) if (integral_term > INTEGRAL_LIMIT) begin
integral_term <= INTEGRAL_LIMIT; end else if (integral_term < -INTEGRAL_LIMIT) begin integral_term <= -INTEGRAL_LIMIT; end else begin integral_term <= integral_term + (KI * error); end // 微分项计算(使用误差变化率) derivative <= KD * (error - prev_error); // PID总和计算 pid_sum <= proportional + integral_term + derivative; // 输出限幅(16位有符号数范围) if (pid_sum > 32’sd32767)
control_out <= 16'sd32767; else if (pid_sum < -32'sd32768) control_out <= -16'sd32768; else control_out <= pid_sum[15:0]; prev_error <= error; control_valid <= 1'b1; end else begin control_valid <= 1'b0; end end endmodule 设计要点 : 定点数表示 :使用Q格式(如Q15)表示小数,提高计算效率 积分饱和保护 :防止积分项无限增长导致系统不稳定 输出限幅 :确保控制信号在PWM占空比有效范围内 流水线设计 :每个时钟周期完成一次计算,适合高速控制 电压反馈与ADC接口 数字控制需要将模拟电压转换为数字量。以下是一个简化的ADC接口模块,假设使用12位ADC: module voltage_feedback ( input wire clk, input wire rst_n, input wire [11:0] adc_data, // ADC原始数据 input wire adc_valid, // ADC数据有效 input wire [11:0] vref, // 参考电压(设定值) output reg signed [15:0] error, // 计算误差 output reg error_valid // 误差有效 ); // 电压转换系数:假设ADC参考电压3.3V,12位分辨率 // 实际电压 = adc_data * 3.3 / 4096 // 为简化计算,我们直接在ADC域进行误差计算 reg signed [15:0] voltage_feedback; reg signed [15:0] voltage_reference; always @(posedge clk or negedge rst_n) begin if (!rst_n) begin error <= 16'b0; error_valid <= 1'b0; end else if (adc_valid) begin // 扩展符号位并转换为有符号数 voltage_feedback <= {4'b0, adc_data}; voltage_reference <= {4'b0, vref}; // 计算误差:参考值 - 反馈值 error <= voltage_reference - voltage_feedback; error_valid <= 1'b1; end else begin error_valid <= 1'b0; end end endmodule 完整的闭环控制系统 将上述模块整合,构建完整的Buck变换器数字控制器: module buck_controller ( input wire clk, // 系统时钟(100MHz) input wire rst_n, // 复位 input wire [11:0] adc_data, // ADC输入(输出电压采样) input wire adc_valid, // ADC数据有效 input wire [11:0] vref, // 电压设定值 output reg pwm_high, // 上管驱动 output reg pwm_low // 下管驱动 ); // 内部信号 wire signed [15:0] error; wire error_valid; wire signed [15:0] control_out; wire control_valid; wire [9:0] duty_cycle; // 占空比转换:将PID输出转换为0-1023的占空比 // PID输出范围-32768~32767,映射到0-1023 assign duty_cycle = (control_out + 16'sd32768) >> 5; // 右移5位相当于除以32

// 实例化子模块
voltage_feedback fb_inst (
.clk(clk),
.rst_n(rst_n),
.adc_data(adc_data),
.adc_valid(adc_valid),
.vref(vref),
.error(error),
.error_valid(error_valid)
);

digital_pid pid_inst (
.clk(clk),
.rst_n(rst_n),
.error(error),
.error_valid(error_valid),
.control_out(control_out),
.control_valid(control_valid)
);

// PWM生成(使用10位分辨率)
advanced_pwm pwm_inst (
.clk(clk),
.rst_n(rst_n),
.duty(duty_cycle),
.period(10’d100), // 100MHz/100 = 1MHz PWM频率
.dead_time(8’d5), // 5个时钟周期死区时间
.pwm_high(pwm_high),
.pwm_low(pwm_low)
);

endmodule
仿真验证与测试平台
Testbench编写规范
良好的仿真验证是确保设计正确性的关键。以下是一个完整的Buck控制器测试平台:
`timescale 1ns/1ps

module tb_buck_controller;

// 信号定义
reg clk;
reg rst_n;
reg [11:0] adc_data;
reg adc_valid;
reg [11:0] vref;
wire pwm_high;
wire pwm_low;

// 仿真参数
parameter CLK_PERIOD = 10; // 100MHz
parameter VREF_NOMINAL = 12’d2048; // 1.65V(假设3.3V参考的一半)

// 实例化被测模块
buck_controller dut (
.clk(clk),
.rst_n(rst_n),
.adc_data(adc_data),
.adc_valid(adc_valid),
.vref(vref),
.pwm_high(pwm_high),
.pwm_low(pwm_low)
);

// 时钟生成
always #(CLK_PERIOD/2) clk = ~clk;

// 模拟Buck变换器行为(简化模型)
real vout = 0.0; // 输出电压
real vin = 3.3; // 输入电压
real L = 10e-6; // 电感值
real C = 100e-6; // 电容值
real Rload = 10; // 负载电阻

// ADC转换任务
task adc_convert;
input real voltage;
begin
// 将电压转换为12位ADC值
adc_data = voltage * 4096 / 3.3;
if (adc_data > 4095) adc_data = 4095;
adc_valid = 1’b1;
#CLK_PERIOD;
adc_valid = 1’b0;
end
endtask

// 测试序列
initial begin
// 初始化
clk = 0;
rst_n = 0;
adc_valid = 0;
vref = VREF_NOMINAL;
adc_data = 0;

// 复位释放
#100 rst_n = 1;

// 等待控制器稳定
#1000;

// 阶跃响应测试:1.65V -> 2.0V
$display(“=== 阶跃响应测试:目标电压2.0V ===”);
vref = 12’d2500; // 约2.0V
run_simulation(5000);

// 负载变化测试
$display(“=== 负载变化测试 ===”);
Rload = 5; // 负载加重
run_simulation(5000);

// 输入电压变化测试
$display(“=== 输入电压变化测试 ===”);
vin = 3.0; // 输入电压降低
run_simulation(5000);

// 最终报告
$display(“=== 仿真完成 ===”);
$display(“最终输出电压: %.3f V”, vout);
$finish;
end

// 运行仿真并监控输出
task run_simulation;
input integer cycles;
integer i;
begin
for (i = 0; i < cycles; i = i + 1) begin // 每100个时钟周期采样一次ADC if (i % 100 == 0) begin // 模拟输出电压计算(简化模型) // 实际应用中应使用更精确的开关模型 real duty = (dut.pwm_high) ? 1.0 : 0.0; vout = vin * duty * (Rload / (Rload + 0.1)); // 考虑内阻 // 生成ADC采样 adc_convert(vout); end #CLK_PERIOD; end end endtask // 监控PWM输出 always @(posedge clk) begin if (dut.pwm_inst.pwm_high && dut.pwm_inst.pwm_low) begin $display("错误:上下管同时导通!"); $finish; end end // 波形记录(用于GTKWave等工具) initial begin $dumpfile("buck_controller.vcd"); $dumpvars(0, tb_buck_controller); end endmodule 仿真优化技巧 分层测试 :分别测试PWM、PID、反馈模块,再进行系统级联调 行为级建模 :对功率级使用简化模型加速仿真,RTL级验证控制逻辑 随机激励 :添加随机噪声测试鲁棒性 性能监控 :在Testbench中实时计算稳态误差、建立时间等指标 高级优化技巧 1. 自适应PID参数调整 根据负载变化动态调整PID参数,提高瞬态响应: module adaptive_pid ( input wire clk, input wire rst_n, input wire signed [15:0] error, input wire error_valid, input wire [15:0] load_estimate, // 负载估计 output reg signed [15:0] control_out, output reg control_valid ); // 根据负载调整参数 wire [15:0] kp_dynamic = (load_estimate > 16’d500) ? 16’d1500 : 16’d800;
wire [15:0] ki_dynamic = (load_estimate > 16’d500) ? 16’d150 : 16’d80;

// 重用PID计算逻辑,但使用动态参数
digital_pid #(
.KP(16’d1000), // 默认值,实际会被覆盖
.KI(16’d100),
.KD(16’d200)
) pid_inst (
.clk(clk),
.rst_n(rst_n),
.error(error),
.error_valid(error_valid),
.control_out(control_out),
.control_valid(control_valid)
);

// 动态参数更新(简化示例)
always @(posedge clk) begin
if (error_valid) begin
// 在实际实现中,需要将参数传递给PID模块
// 这里仅展示概念
end
end

endmodule
2. 前馈补偿技术
当输入电压变化时,提前调整占空比:
module feedforward_compensation (
input wire [11:0] vin_adc, // 输入电压采样
input wire [11:0] vout_adc, // 输出电压采样
input wire vin_valid,
input wire vout_valid,
output reg [9:0] ff_duty // 前馈计算的占空比
);

// 前馈公式:D = Vout / Vin
// 使用移位和查找表加速计算
always @(posedge clk) begin
if (vin_valid && vout_valid) begin
// 简化计算:实际应使用更精确的除法器
ff_duty <= (vout_adc << 10) / vin_adc; end end endmodule 3. 极限环振荡抑制 数字控制特有的极限环振荡可以通过以下方法抑制: module anti_limit_cycle ( input wire clk, input wire signed [15:0] error, input wire error_valid, output reg signed [15:0] error_filtered ); // 使用随机扰动打破周期性 reg [7:0] lfsr; // 线性反馈移位寄存器 always @(posedge clk) begin lfsr <= {lfsr[6:0], lfsr[7] ^ lfsr[5]}; // 8位LFSR end // 在误差信号中添加微小随机噪声 always @(posedge clk) begin if (error_valid) begin error_filtered <= error + $signed({{8{lfsr[7]}}, lfsr}); // 符号扩展 end end endmodule 4. 多相并联技术 对于大电流应用,多相Buck可降低纹波和热应力: module multiphase_buck ( input wire clk, input wire rst_n, input wire [11:0] adc_data, input wire adc_valid, input wire [11:0] vref, output reg [3:0] pwm_high, // 4相输出 output reg [3:0] pwm_low ); // 每相相位差90度(4相) reg [9:0] phase_offset [0:3]; initial begin phase_offset[0] = 10'd0; phase_offset[1] = 10'd25; // 90度相位差 phase_offset[2] = 10'd50; phase_offset[3] = 10'd75; end // 共享PID控制器,但每相有独立的PWM wire signed [15:0] control_out; wire control_valid; // PID实例化(共享) digital_pid pid_inst ( .clk(clk), .rst_n(rst_n), .error(error), .error_valid(error_valid), .control_out(control_out), .control_valid(control_valid) ); // 4个PWM生成器,每相相位不同 genvar i; generate for (i = 0; i < 4; i = i + 1) begin : pwm_gen advanced_pwm pwm_inst ( .clk(clk), .rst_n(rst_n), .duty(duty_cycle), .period(10'd100), .dead_time(8'd5), .pwm_high(pwm_high[i]), .pwm_low(pwm_low[i]) ); // 相位偏移通过计数器初始值实现 always @(posedge clk) begin if (!rst_n) begin pwm_inst.counter <= phase_offset[i]; end end end endgenerate endmodule 仿真优化高级技巧 1. 混合信号仿真加速 对于包含模拟和数字的混合系统,采用分层仿真策略: // 行为级功率级模型(加速仿真) module behavioral_power_stage ( input wire pwm_high, input wire pwm_low, input real vin, input real L, input real C, input real Rload, output real vout ); real il; // 电感电流 real dt = 1e-9; // 1ns步长 always @(pwm_high or pwm_low) begin // 简化的状态空间平均模型 real duty = (pwm_high && !pwm_low) ? 1.0 : 0.0; real ton = duty * 1e-6; // 1us周期 real toff = 1e-6 - ton; // 电感电流变化 if (pwm_high && !pwm_low) begin il = il + (vin - vout) * ton / L; end else if (!pwm_high && pwm_low) begin il = il - vout * toff / L; end // 输出电压变化 vout = vout + (il - vout/Rload) * dt / C; end endmodule 2. 代码覆盖率分析 在仿真中启用覆盖率统计: # 使用ModelSim/QuestaSim vlog -cover bcest buck_controller.v vsim -coverage tb_buck_controller run -all coverage report -detail 3. 性能指标自动计算 在Testbench中实时计算关键指标: // 在tb_buck_controller中添加 real vout_history[0:999]; integer idx = 0; always @(posedge clk) begin if (idx < 1000) begin vout_history[idx] = vout; idx = idx + 1; end end // 计算纹波 function real calculate_ripple; input integer length; real max, min; integer i; begin max = vout_history[0]; min = vout_history[0]; for (i = 1; i < length; i = i + 1) begin if (vout_history[i] > max) max = vout_history[i];
if (vout_history[i] < min) min = vout_history[i]; end calculate_ripple = max - min; end endfunction // 计算建立时间 function real calculate_settling_time; input real target; input real tolerance; real error; integer i; begin for (i = 0; i < 1000; i = i + 1) begin error = $abs(vout_history[i] - target); if (error < tolerance) begin calculate_settling_time = i * 1e-9; // 转换为秒 return; end end calculate_settling_time = -1; // 未建立 end endfunction // 在仿真结束时打印报告 initial begin #50000; // 仿真结束后 $display("=== 性能报告 ==="); $display("输出纹波: %.3f mV", calculate_ripple(1000) * 1000); $display("建立时间: %.3f us", calculate_settling_time(2.0, 0.05) * 1e6); end 4. FPGA原型验证技巧 将Verilog代码移植到FPGA进行硬件验证: // FPGA顶层封装(添加时钟管理) module fpga_buck_top ( input wire sys_clk, // 系统时钟(如50MHz) input wire sys_rst_n, // 复位按钮 input wire [11:0] adc_data, // ADC输入(连接到FPGA引脚) input wire adc_clk, // ADC时钟 output wire pwm_high, // 连接到功率级 output wire pwm_low, output wire [7:0] led // 调试LED ); // 时钟管理:生成100MHz控制时钟 wire clk_100m; wire locked; clk_wiz_0 clk_inst ( .clk_in1(sys_clk), .clk_out1(clk_100m), .locked(locked) ); // 同步复位 reg [3:0] rst_sync; always @(posedge clk_100m) begin rst_sync <= {rst_sync[2:0], sys_rst_n & locked}; end // 实例化控制器 buck_controller ctrl_inst ( .clk(clk_100m), .rst_n(rst_sync[3]), .adc_data(adc_data), .adc_valid(1'b1), // 假设ADC连续输出 .vref(12'd2048), // 固定1.65V .pwm_high(pwm_high), .pwm_low(pwm_low) ); // LED调试:显示ADC值高位 assign led = ~adc_data[11:4]; endmodule 实际应用案例分析 案例1:智能手机PMIC中的Buck变换器 在手机PMIC中,Buck变换器需要支持: 动态电压调节 :根据CPU负载实时调整电压 多模式切换 :CCM/DCM自动切换 快速瞬态响应 :CPU负载阶跃时电压跌落% Verilog实现要点 : // 动态电压调节接口 module dvfs_controller ( input wire [7:0] cpu_load, // CPU负载百分比 input wire clk, output reg [11:0] vref_dynamic // 动态参考电压 ); // 查找表:负载->电压映射
always @(cpu_load) begin
case (cpu_load)
8’d0: vref_dynamic = 12’d1500; // 1.2V
8’d25: vref_dynamic = 12’d1650; // 1.32V
8’d50: vref_dynamic = 12’d1800; // 1.44V
8’d75: vref_dynamic = 12’d1950; // 1.56V
default: vref_dynamic = 12’d2100; // 1.68V
endcase
end

endmodule
案例2:数据中心服务器供电
服务器Buck变换器要求:
高效率
:>95%
冗余设计
:多相并联
故障保护
:过流、过压、过热保护
保护电路实现
:
module protection_circuit (
input wire clk,
input wire [11:0] i_sense, // 电流采样
input wire [11:0] v_sense, // 电压采样
input wire temp_fault, // 温度故障
output reg fault_trip, // 故障触发
output reg [2:0] fault_code // 故障编码
);

// 过流保护(阈值可调)
parameter OC_THRESHOLD = 12’d3500; // 约2.8V对应电流

// 过压保护
parameter OV_THRESHOLD = 12’d3800; // 约3.1V

// 欠压保护
parameter UV_THRESHOLD = 12’d200; // 约0.16V

always @(posedge clk) begin
fault_trip <= 1'b0; fault_code <= 3'b000; if (i_sense > OC_THRESHOLD) begin
fault_trip <= 1'b1; fault_code <= 3'b001; // 过流 end else if (v_sense > OV_THRESHOLD) begin
fault_trip <= 1'b1; fault_code <= 3'b010; // 过压 end else if (v_sense < UV_THRESHOLD) begin fault_trip <= 1'b1; fault_code <= 3'b011; // 欠压 end else if (temp_fault) begin fault_trip <= 1'b1; fault_code <= 3'b100; // 过热 end end endmodule 仿真收敛性问题与解决方案 常见收敛性问题 时序违例 :组合逻辑路径过长 亚稳态 :跨时钟域信号未同步 死锁 :握手信号依赖环路 解决方案 // 跨时钟域同步器 module cdc_synchronizer ( input wire clk_a, input wire clk_b, input wire signal_a, output reg signal_b ); reg [2:0] sync_chain; // 在clk_b域同步 always @(posedge clk_b) begin sync_chain <= {sync_chain[1:0], signal_a}; signal_b <= sync_chain[2]; // 两级同步 end endmodule // 时序约束示例(SDC格式) /* create_clock -name clk -period 10 [get_ports clk] set_input_delay -clock clk -max 2 [all_inputs] set_output_delay -clock clk -max 3 [all_outputs] set_false_path -from [get_ports rst_n] */ 总结 Verilog在Buck变换器数字控制设计中提供了强大的建模和仿真能力。通过合理的架构设计、精确的定点数运算、完善的验证平台,可以实现高性能的数字控制Buck变换器。关键成功因素包括: 精确的数学建模 :理解Buck变换器的物理特性 高效的算法实现 :PID、前馈、自适应控制 全面的验证策略 :单元测试、系统测试、FPGA验证 性能优化 :分辨率、频率、功耗的权衡 随着数字电源技术的发展,Verilog将继续在智能电源管理、多模式控制、AI辅助优化等领域发挥重要作用。掌握这些技术将为电源工程师在下一代电源设计中提供强大竞争力。