CLB(可配置逻辑块)的定制应用,在C2000上实现自定义PWM保护逻辑
电机驱动和数字电源应用中,PWM保护逻辑直接关系到系统的安全运行。传统方案依赖外部CPLD或FPGA实现故障响应和死区管理,增加了BOM成本和PCB面积。C2000系列MCU内嵌的可配置逻辑块(CLB),使工程师能够在芯片内部直接构建高度定制的硬件级保护逻辑。
CLB实现PWM保护的硬件架构
CLB的本质是“置于MCU内部的微型可编程逻辑”。每个CLB Tile包含三个4输入查找表、三个32位计数器、三个4态有限状态机和一个高级控制器(HLC)。这些逻辑资源通过内部交叉开关(XBAR)与ePWM、eCAP等外设互联,可将CLB的输出“回灌”至原生外设,扩展其原有功能。
在TI官方公布的牵引逆变器PWM保护方案中,CLB架构分为两层:TILE1-3负责PWM波形的实时整形与死区插入,TILE4作为顶层故障状态管理核心。TILE4通过InputXBAR接收硬件比较器的过流、过压及IGBT故障信号,FSM0和FSM1将这些信号锁存为TRIP_STATE[0]和TRIP_STATE[1]状态位,经OUT4和OUT5输出至CLB X-Bar,分配给TILE1-3的In2/In3输入端。
TILE1-3接收故障状态后,LUT0和LUT1根据TRIP_STATE位状态输出关断信号,FSM0和FSM1配合CNT0和CNT1在PWM下降沿插入死区,确保上下管切换安全。CLB设计保证所有逻辑在100MHz频率下稳定工作,免除了时序收敛的验证负担。
CLB保护逻辑的程序实现与配置
CLB的配置通过Code Composer Studio集成的SysConfig图形化工具完成,无需编写VHDL或Verilog代码,直接基于CLB Tool图形界面搭建逻辑,生成C语言配置文件。
配置完成后,需在应用代码中完成使能。程序首先将ePWM1A/1B信号导入CLB的In0/In1,通过CLB_setInputConfig()完成信号映射,并将CLB输出重定向回GPIO以替代原生PWM输出:
// 配置CLB的输入信号源:ePWM1A -> CLB1_IN0, ePWM1B -> CLB1_IN1
CLB_setInputConfig(CLB1_BASE, CLB_IN0, CLB_INPUT_EPWM1A, false);
CLB_setInputConfig(CLB1_BASE, CLB_IN1, CLB_INPUT_EPWM1B, false);
// 使能CLB的输出接管GPIO(替代原生ePWM信号)
CLB_setOutputMask(CLB1_BASE, CLB_OUTPUT_00, true); // 输出EPWM1A
CLB_setOutputMask(CLB1_BASE, CLB_OUTPUT_02, true); // 输出EPWM1B
// 将CLB输出信号连接到GPIO的XBAR输出
XBAR_setOutputMuxConfig(XBAR_OUT_MUX01, XBAR_OUT_MUX01_CLB1_OUT0);
XBAR_enableOutputMux(XBAR_OUT_MUX01, true);
对于故障信号,通常通过InputXBAR将CMPSS(比较器子系统)的过流/过压输出直接导入CLB TILE4:
// 配置InputXBAR接收CMPSS过流信号,送入CLB4_IN2
XBAR_setInputPin(XBAR_INPUT2, 5); // 假设CMPSS过流信号映射至INPUTXBAR5
CLB_setInputConfig(CLB4_BASE, CLB_IN2, CLB_INPUT_INPUTXBAR2, false);
当CLB检测到故障时,硬件级路径直接将ePWM强制拉低,纳秒级响应速度远快于软件中断响应。HLC还支持将故障状态写回CPU寄存器,供软件读取:
// CPU读取故障状态(TRIP_STATE[0]位)
uint32_t trip_state = CLB_readDebugOutput(CLB4_BASE) & 0x10000000;
if (trip_state) { /* 执行软件故障处理 */ }
使用SysConfig配置CLB Tile4的逻辑时,可将LUT配置为故障信号锁存器,再通过GPIO输出端口复用以向外输出故障标志或直接用于驱动保护LED指示灯。
CLB保护方案的应用意义、优化设计及与外部逻辑的扩展协作
CLB方案相比外置CPLD/FPGA具有显著优势:省去外部逻辑芯片、避免引脚延时、支持全软件配置,且时序由TI预先验证,无需外部时序约束。在此基础上,CLB的内置定时功能(如PWM保护消隐滤波与脉冲展宽)在电机启动大电流瞬态或数字电源浪涌场景中可避免误触发保护,有效解决噪声尖峰引起的频繁关断问题。在非关键故障场景下,可利用定时器与状态机实现自动重试逻辑,由CLB独立管理PWM输出恢复而不占用CPU资源。
在系统设计中,若ePWM模块本身具备逐周期保护或单次Trip Zone响应机制,CLB可与这些底层硬件保护形成两层冗余——CLB处理自主逻辑,ePWM直接响应由输入XBAR导入的故障信号。两者结合可覆盖更全面的保护场景。当系统需要对外输出PWM故障状态时,可通过CLB输出路径复用或模拟比较器输出进行引脚扩展。
实现自定义PWM保护逻辑时,需注意:使用CLB需选择带C尾缀的芯片型号;扩展PWM需从ePWM1-4模块选择信号源;CLB输出逻辑无需额外开销即可与原生外设融合。C2000系列不同型号的CLB资源与扩展能力有所差异,设计前需查阅对应型号数据手册确认支持情况。CLB将硬件灵活性从“外部可选”变为“内部可控”,使PWM保护逻辑在C2000平台上从固化的外设功能变成了可定制、可演进的设计资源。





