news 2026/7/23 18:29:20

深入解析C2000 ePWM死区与故障保护机制,构建可靠电力电子系统

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
深入解析C2000 ePWM死区与故障保护机制,构建可靠电力电子系统

1. 项目概述:为什么我们需要死区与故障保护?

在电力电子和电机驱动的世界里,PWM(脉宽调制)信号就像是控制电机转速、电源输出电压的“指挥官”。它通过精确控制开关管(如MOSFET、IGBT)的导通与关断时间,来调节最终输出的平均功率。然而,这个指挥官的工作环境充满了风险。想象一下,在一个典型的H桥或三相逆变器中,上下两个开关管是串联的。如果控制信号稍有偏差,导致上下管同时导通哪怕几纳秒,就会形成一条从电源正极直接到负极的“短路”路径,瞬间产生巨大的电流尖峰。这个现象被称为“直通”或“穿通”,其结果轻则导致器件过热、效率骤降,重则直接炸毁昂贵的功率管和驱动芯片,让整个项目功亏一篑。

因此,任何严肃的电力电子设计,都必须解决两个核心安全问题:第一,如何绝对避免上下管同时导通?第二,当系统发生意外故障(如过流、过压、过热)时,如何让PWM输出“紧急刹车”,进入安全状态?德州仪器(TI)在其C2000系列微控制器中集成的增强型脉宽调制器(ePWM)模块,就为我们提供了工业级的解决方案。它不仅仅是一个简单的PWM发生器,更是一个集成了精密死区(Dead-Band, DB)生成和强大故障保护(Trip-Zone, TZ)子模块的完整控制系统。今天,我们就来深入拆解这两个关键机制,从寄存器配置到波形分析,从设计思路到实战避坑,让你彻底掌握如何利用ePWM构建既精准又可靠的功率控制系统。

2. 死区生成器(DB)子模块:为PWM信号戴上“安全帽”

死区时间,本质上是在一对互补的PWM信号(例如EPWMxA和EPWMxB)的切换边缘,人为插入的一段两个信号都为无效状态(通常为低电平)的短暂间隔。这段间隔确保了在任何一个开关管完全关断后,另一个开关管才会被允许开启,从而物理上杜绝了直通的可能性。

2.1 死区生成器的核心架构与工作模式

ePWM的死区生成器位于动作限定器(AQ)子模块之后。它接收来自AQ的原始EPWMxA和EPWMxB信号,并对其进行延迟和极性处理。其核心是一个高度可配置的逻辑单元,如图17-27所示,它包含两个独立的10位延迟计数器(分别用于上升沿延迟RED和下降沿延迟FED)以及灵活的多路选择器和极性控制逻辑。

关键寄存器速览:

  • DBCTL (Dead-Band Control Register): 控制子模块的全局模式,包括输入源选择、输出模式、极性控制和半周期时钟使能。
  • DBRED (Dead-Band Rising Edge Delay Count Register): 设置上升沿延迟的计数值,范围0-1023。
  • DBFED (Dead-Band Falling Edge Delay Count Register): 设置下降沿延迟的计数值,范围0-1023。

输入源选择(DBCTL[IN_MODE]):这是死区配置的第一个关键决策点。它决定了哪个原始信号作为延迟的源头。默认模式下,EPWMxA In同时作为上升沿和下降沿延迟的源,这是最经典的单信号输入生成互补对的方式。但在一些高级应用中,你可能需要更灵活的控制。例如,你可以配置为“EPWMxA In作为下降沿延迟源,EPWMxB In作为上升沿延迟源”。这种模式允许你对两个输出通道的延迟进行独立且不对称的配置,适用于需要特殊开关时序的拓扑。

实操心得:绝大多数电机驱动和普通逆变器应用,使用默认模式(EPWMxA In作为双延迟源)即可。只有在设计有源钳位、同步整流等需要非常规时序的复杂拓扑时,才需要考虑使用独立的输入源模式。盲目使用复杂模式会增加配置和调试的复杂度。

输出模式与极性控制(DBCTL[OUT_MODE] & DBCTL[POLSEL]):这两个控制位共同决定了最终输出的波形形态,是产生不同种类PWM驱动信号的关键。TI的文档中列举了5种经典模式(AHC, ALC, AH, AL, Bypass),但理解其本质更重要。

  • OUT_MODE: 决定是否应用RED、FED,或两者都应用,或两者都旁路。
  • POLSEL: 决定对经过延迟后的信号是否进行取反。

通过组合,我们可以生成驱动绝大多数半桥栅极驱动芯片所需的信号。例如,Active High Complementary (AHC)模式,通常用于驱动需要高电平导通、低电平关断,且自带死区的半桥驱动芯片(如IR2110)。而Active Low (AL)模式,则可能用于驱动需要低电平有效信号的IGBT模块。

2.2 死区时间的计算与配置实战

死区时间不是随便填的一个数,它需要根据你所使用的功率器件的开关特性来精确计算。主要考虑因素包括:

  1. 功率器件的开关时间:尤其是关断延迟时间(t_d(off))和关断下降时间(t_f)。
  2. 驱动电路的传播延迟:驱动芯片本身的延迟。
  3. 安全裕量:通常会在理论最小值上增加20%-50%的裕量,以应对温度、电压变化带来的参数漂移。

计算公式基于ePWM的时基时钟(TBCLK):死区时间 (秒) = 延迟寄存器值 (DBRED或DBFED) × TBCLK周期 (TTBCLK)

如果使能了半周期时钟(DBCTL[HALFCYCLE]=1),则分辨率提高一倍:死区时间 (秒) = 延迟寄存器值 (DBRED或DBFED) × TTBCLK / 2

配置步骤示例(以生成AHC模式,死区时间为2μs为例):假设系统时钟SYSCLKOUT = 150 MHz,ePWM时钟预分频器配置为 /1,则TBCLK = 150 MHz,TTBCLK ≈ 6.67 ns。

  1. 计算寄存器值:所需死区时间 = 2 μs = 2000 ns。寄存器值 = 2000 ns / 6.67 ns ≈ 300。我们取整为300。
  2. 配置寄存器
    // 假设使用ePWM1 EPwm1Regs.DBFED.bit.DBFED = 300; // 下降沿延迟值 EPwm1Regs.DBRED.bit.DBRED = 300; // 上升沿延迟值,通常两者相等 EPwm1Regs.DBCTL.bit.IN_MODE = 0; // EPWMxA为源 EPwm1Regs.DBCTL.bit.POLSEL = DB_CTL_POLSEL_ACTIVE_HIGH_CMPL; // AHC模式 EPwm1Regs.DBCTL.bit.OUT_MODE = DB_CTL_OUT_MODE_ENABLE; // 使能RED和FED
  3. 验证波形:使用示波器同时测量EPWM1A和EPWM1B引脚。你应该看到两个互补的PWM波,在每次电平跳变(一个从低到高,另一个从高到低)时,中间存在一段两者都为低电平的“死区”。用示波器的测量功能验证死区时间是否接近2μs。

常见问题与排查技巧:

  • 问题1:死区时间不准确或远大于计算值。
  • 排查:首先检查TBCLK的时钟源和分频配置是否正确。确认EPwm1Regs.TBCTL.bit.HSPCLKDIVCLKDIV的设置。一个常见的错误是误以为TBCLK等于系统主频,而忽略了分频器。
  • 问题2:输出波形没有死区,或者EPWMxA和EPWMxB完全同步。
  • 排查:检查DBCTL寄存器的OUT_MODE位是否已正确使能(非00模式)。确认POLSEL模式是否符合你的驱动芯片要求。使用CCS的寄存器查看窗口,实时监控这些寄存器的值是否在运行时被意外修改。
  • 问题3:使能死区后,PWM占空比发生了变化。
  • 原理:这是正常现象!因为死区是在边沿插入延迟,相当于“吃掉”了一部分有效的导通时间。例如,在AHC模式下,高电平脉宽会被下降沿延迟(FED)缩短。因此,在软件计算占空比设定值(CMPA)时,就需要考虑死区时间的补偿。这是一个关键的设计点,否则会导致实际输出电压或电流与预期不符。

3. 故障保护(Trip-Zone)子模块:系统的“紧急制动”系统

如果说死区是预防性的“交通规则”,那么Trip-Zone就是主动的“安全气囊”和“ABS系统”。它负责实时监控外部故障信号,���在微秒级甚至纳秒级的时间内强制PWM输出进入预设的安全状态,防止故障扩大。

3.1 Trip-Zone的输入源与工作模式

ePWM模块最多可以连接6个故障源(TZ1-TZ6):

  • TZ1-TZ3:来自GPIO引脚,通常连接硬件比较器、过流检测芯片或温度传感器的输出。这是最常用、最直接的硬件保护路径。
  • TZ4:来自正交编码器(eQEP)的错误信号,用于电机失步等保护。
  • TZ5:来自系统时钟失效检测逻辑(如晶振故障、PLL失锁),属于系统级故障。
  • TZ6:来自CPU的调试模式停机信号。

关键特性:

  • 异步动作:Trip-Zone的触发是异步的,不依赖于系统时钟。即使CPU时钟出现问题,只要故障信号有效,保护就能立即生效。这是实现高可靠性保护的基础。
  • 最小脉冲宽度:为了抗干扰,TZ输入信号需要维持至少3个TBCLK周期的低电平才会被确认为有效故障。设计外部故障电路时,需要确保故障信号的宽度满足此要求。

3.2 两种核心保护模式:OSHT与CBC

Trip-Zone提供了两种响应模式,对应不同严重程度的故障:

  1. 单次触发(One-Shot Trip, OSHT)

    • 应用场景:严重的、不可自恢复的故障,如硬件过流、短路、IGBT击穿。
    • 行为:一旦触发,ePWM输出立即被强制为预设的安全状态(高、低或高阻),并且锁存这个状态。即使故障信号消失,输出也不会自动恢复。
    • 恢复方式:必须通过软件手动清除故障标志位(TZCLR[OST]),并重新初始化ePWM输出,系统才能再次运行。这迫使工程师必须处理故障根源。
  2. 周期循环(Cycle-By-Cycle Trip, CBC)

    • 应用场景:可自恢复的、用于限流的故障,例如电机的峰值电流限制。
    • 行为:当故障发生时,当前PWM周期内输出立即进入安全状态。但在下一个PWM周期开始时(TBCTR=0),如果故障信号已经消失,输出会自动恢复正常调制。
    • 恢复方式:自动恢复。故障标志位TZFLG[CBC]会被置位,但输出行为在每个周期都会重新评估。这允许PWM在电流超过阈值时关闭,在下个周期电流下降后重新开启,从而实现恒流或限流控制。

配置寄存器核心思路:

  • TZSEL:选择哪些TZ信号或数字比较事件(DCAEVT1/2, DCBEVT1/2)作为故障源,并指定它们是OSHT还是CBC模式。
  • TZCTL:配置当故障发生时,EPWMxA和EPWMxB输出引脚要采取的动作(00-高阻,01-强制高,10-强制低,11-无变化)。
  • TZEINT:使能特定故障源的中断,以便CPU进入中断服务程序进行故障记录、系统停机等处理。

3.3 数字比较(DC)子模块与高级故障触发

Trip-Zone的强大之处还在于它与数字比较(Digital Compare, DC)子模块的联动。DC子模块可以将片内模拟比较器(CMPSS)的输出、ADC的转换结果与内部参考值进行比较,生成事件(DCAEVT, DCBEVT)。这些事件可以直接作为Trip-Zone的触发源。

这意味着,你可以实现基于模拟量的精准保护。例如,用ADC实时采样直流母线电压,通过DC子模块设定一个过压阈值(如410V)。当ADC结果超过该阈值时,DC子模块自动产生一个DCAEVT1事件,并将其配置为OSHT触发源,从而立即关闭PWM。这比通过外部比较器再接到TZ引脚的方式,更加灵活和集成化。

配置示例:实现基于TZ1硬件的过流OSHT保护和基于DC的软件过压CBC保护

假设:

  • TZ1引脚连接硬件过流比较器,低电平有效。
  • 使用DC子模块,将ADC采样结果与一个软件设定的过压阈值比较,产生DCAEVT2事件。
// 1. 配置Trip-Zone选择寄存器 (TZSEL) EPwm1Regs.TZSEL.bit.OSHT1 = 1; // 使能TZ1作为ePWM1的OSHT源 EPwm1Regs.TZSEL.bit.DCAEVT2 = 1; // 使能DCAEVT2作为ePWM1的CBC源(假设已配置DC子模块) // 2. 配置故障动作控制寄存器 (TZCTL) // 发生任何故障时,强制两个PWM输出为低电平(安全状态) EPwm1Regs.TZCTL.bit.TZA = TZ_CTL_TZA_FORCE_LO; // 0b10 EPwm1Regs.TZCTL.bit.TZB = TZ_CTL_TZB_FORCE_LO; // 0b10 // 也可以为不同故障源配置不同动作,但通常统一设为强制关断(低电平) // 3. 使能中断(如果需要) EPwm1Regs.TZEINT.bit.OST = 1; // 使能OSHT中断 EPwm1Regs.TZEINT.bit.CBC = 1; // 使能CBC中断 // 4. 在PIE中断服务程序中处理故障 interrupt void EPWM1_TZ_ISR(void) { if (EPwm1Regs.TZFLG.bit.OST == 1) { // 处理严重的OSHT故障(如TZ1硬件过流) System_Shutdown_Procedure(); // 执行系统停机流程 EPwm1Regs.TZCLR.bit.OST = 1; // 手动清除OST标志 EPwm1Regs.TZCLR.bit.INT = 1; // 清除中断标志 } if (EPwm1Regs.TZFLG.bit.CBC == 1) { // 处理CBC故障(如软件过压限流) Log_OverVoltage_Event(); // 记录过压事件,可用于监控 // CBC标志会在下个PWM周期自动条件清除,此处通常只需记录 EPwm1Regs.TZCLR.bit.CBC = 1; // 也可手动清除 EPwm1Regs.TZCLR.bit.INT = 1; } PieCtrlRegs.PIEACK.all = PIEACK_GROUP2; // 应答PIE中断 }

避坑指南与高级技巧:

  • 安全状态选择TZCTL配置为强制低(10)是最常见的选择,因为大多数功率器件在栅极为低电平时确保关断。慎用高阻态(00),除非你非常清楚功率器件的栅极在浮空状态下的行为(可能因米勒效应误导通)。
  • 抗干扰与滤波:TZ输入是异步的,容易受到噪声干扰。除了硬件上的RC滤波,确保故障信号脉宽大于3个TBCLK周期。对于极其嘈杂的环境,可以考虑在GPIO MUX中启用数字滤波功能。
  • OSHT与CBC的优先级:OSHT故障通常具有最高优先级。一旦发生OSHT,即使同时存在CBC故障,系统也会进入锁存的保护状态。在设计故障树时,应将最致命的故障分配给OSHT。
  • 调试技巧:你可以使用TZFRC寄存器,通过软件强制产生一个Trip事件,来测试你的保护逻辑和中断服务程序是否正确,而无需制造一个真实的硬件故障。这是开发和测试阶段极其有用的工具。
  • 故障恢复策略:对于OSHT故障,一定要设计一个清晰的系统恢复流程。简单的清除标志并重启PWM可能掩盖了真实问题。好的做法是:记录故障、执行系统状态检查(如检查电源、温度)、等待一段时间、再由操作人员确认或自动尝试恢复。

4. 事件触发(ET)子模块:连接PWM与CPU、ADC的桥梁

事件触发子模块是ePWM的“通知中心”。它负责将时基计数器、比较器匹配等内部事件,转化为对CPU的中断请求或对ADC的启动转换(SOC)信号。这对于实现精准的采样控制闭环至关重要,例如在电机控制中,我们希望在PWM周期的特定时刻(如计数器为0时)触发ADC采样相电流。

4.1 中断与SOC触发机制

ET子模块的核心是两组可预分频的计数器:一组用于中断(INT),两组用于ADC启动(SOCA和SOCB)。

  • 事件选择(ETSEL):你可以在多个事件源中选择一个来触发,例如:CTR=0CTR=PRDCTR=CMPA(上升/下降沿)、CTR=CMPB(上升/下降沿)以及来自DC子模块的事件。
  • 事件预分频(ETPS):你可以设置产生中断或SOC脉冲所需的事件次数。例如,设置为“每2个事件”(INTPRD=2),则只有当选定的事件发生第2次时,才会产生一个中断脉冲。这可以用于降低CPU的中断负载。
  • SOCA/SOCB:这两个信号���ePWM模块输出给ADC模块的专用触发信号。你可以独立配置SOCA和SOCB的事件源和分频。这在多通道交错采样或需要多个采样点的复杂控制算法中非常有用。

典型配置:在PWM周期中心点(对称PWM)触发ADC采样

在电机矢量控制中,为了准确测量相电流,通常希望在PWM开关管导通的中间时刻采样,此时电流纹波最小。对于采用增-减计数模式的PWM,周期中心点就是计数器达到峰值(PRD)的时刻。

// 目标:在TBCTR = TBPRD (周期峰值) 时触发ADC启动转换 EPwm1Regs.ETSEL.bit.SOCASEL = ET_ETSEL_SOCA_CTRU_CMPA; // 选择CMPA匹配(增计数)作为事件源 // 但更常见的做法是直接使用CTR=PRD事件,更直观 EPwm1Regs.ETSEL.bit.SOCASEL = ET_ETSEL_SOCA_CTR_PRD; // 当计数器等于周期值时触发 EPwm1Regs.ETPS.bit.SOCAPRD = ET_ETPS_SOCA_1ST; // SOCA分频器:每个事件都触发 (1st) // 如果需要每2个周期采样一次,则设置为 ET_ETPS_SOCA_2ND EPwm1Regs.ETSEL.bit.SOCAEN = 1; // 使能SOCA信号输出 // 同时,配置ADC模块接收ePWM1的SOCA信号作为触发源 // 假设使用ADCINA0通道 AdcaRegs.ADCSOC0CTL.bit.CHSEL = 0; // 选择ADCINA0 AdcaRegs.ADCSOC0CTL.bit.TRIGSEL = 1; // 触发源选择 ePWM1_SOCA (具体值查手册) AdcaRegs.ADCSOC0CTL.bit.ACQPS = 14; // 设置采样窗口大小

4.2 与Trip-Zone的协同:故障时的安全采样

一个高级技巧是利用ET和TZ的协同。当发生CBC故障时,PWM输出会在当前周期被拉低,但时基计数器仍在运行。你仍然可以配置在CTR=0CTR=PRD时触发ADC采样。这样,即使在限流状态下,你的控制系统仍然能获取电流反馈,这对于实现稳定的峰值电流控制模式至关重要。

5. 实战系统集成:从配置到调试的全流程

理解了各个子模块后,我们需要将其整合到一个完整的ePWM初始化配置中。以下是一个用于电机驱动的ePWM1模块初始化函数框架,它包含了时基、比较、死区、故障保护和事件触发的综合配置。

void InitEPwm1(void) { // 步骤1: 时基子模块 (TB) 配置 EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // 增-减计数模式,生成对称PWM EPwm1Regs.TBPRD = SYSTEM_FREQ / (2 * PWM_FREQ) - 1; // 计算周期值,SYSTEM_FREQ为TBCLK频率 EPwm1Regs.TBPHS.half.TBPHS = 0; // 相位寄存器清零 EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; // 禁止相位加载 EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW; // 周期寄存器使用影子寄存器模式 EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE; // 同步输出选择 // 步骤2: 比较子模块 (CC) 配置 EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; // CMPA使用影子寄存器 EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW; // CMPB使用影子寄存器 EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; // 在CTR=0时加载CMPA影子寄存器 EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; // 在CTR=0时加载CMPB影子寄存器 EPwm1Regs.CMPA.half.CMPA = 0; // 初始化占空比为0% EPwm1Regs.CMPB = 0; // 步骤3: 动作限定器 (AQ) 配置 - 生成对称PWM EPwm1Regs.AQCTLA.bit.CAU = AQ_SET; // 增计数匹配CMPA时,EPWM1A置高 EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR; // 减计数匹配CMPA时,EPWM1A置低 EPwm1Regs.AQCTLB.bit.CBU = AQ_CLEAR; // 增计数匹配CMPB时,EPWM1B置低 EPwm1Regs.AQCTLB.bit.CBD = AQ_SET; // 减计数匹配CMPB时,EPWM1B置高 // 这样配置下,EPWM1A和1B是互补的对称PWM。 // 步骤4: 死区生成器 (DB) 配置 Uint16 deadband_counts = (Uint16)(DEADTIME_NS * TBCLK_FREQ_GHZ); // 计算死区计数值 EPwm1Regs.DBFED = deadband_counts; EPwm1Regs.DBRED = deadband_counts; EPwm1Regs.DBCTL.bit.IN_MODE = DB_IN_MODE_A_ALL; // A为源 EPwm1Regs.DBCTL.bit.POLSEL = DB_POLSEL_ACTIVE_HIGH_CMPL; // AHC模式 EPwm1Regs.DBCTL.bit.OUT_MODE = DB_OUT_MODE_ENABLE; // 使能死区 // 步骤5: 故障保护 (TZ) 配置 EPwm1Regs.TZSEL.bit.OSHT1 = 1; // 使能TZ1为OSHT源 EPwm1Regs.TZSEL.bit.CBC2 = 1; // 使能TZ2为CBC源(假设TZ2接限流信号) EPwm1Regs.TZCTL.bit.TZA = TZ_FORCE_LO; // 故障时强制输出低 EPwm1Regs.TZCTL.bit.TZB = TZ_FORCE_LO; EPwm1Regs.TZEINT.bit.OST = 1; // 使能OSHT中断 EPwm1Regs.TZEINT.bit.CBC = 1; // 使能CBC中断 // 步骤6: 事件触发 (ET) 配置 - 用于ADC采样 EPwm1Regs.ETSEL.bit.SOCASEL = ET_ETSEL_SOCA_CTR_PRD; // 在周期峰值触发SOCA EPwm1Regs.ETPS.bit.SOCAPRD = ET_ETPS_SOCA_1ST; // 每个事件都触发 EPwm1Regs.ETSEL.bit.SOCAEN = 1; // 使能SOCA // 步骤7: 使能PWM输出 EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // 再次确认模式并启动计数器 }

调试流程与问题定位:

  1. 基础验证:首先在不接功率部分的情况下调试。使用CCS的图形化工具(如Graph)查看CMPA、CMPB、TBCTR寄存器的值是否按预期变化。使用示波器测量EPWM1A和1B引脚,验证PWM频率、占空比是否正确。
  2. 死区验证:逐步增加死区时间,观察示波器上两个通道之间的间隔是否随之变化。确保在死区时间内两个信号均为低电平。
  3. 故障保护验证
    • 软件强制:在代码中手动置位EPwm1Regs.TZFRC.bit.OST.CBC,观察输出是否立即被拉低,并且标志位TZFLG是否置位。
    • 硬件模拟:将TZ1/TZ2引脚通过跳线接地,模拟故障信号。观察输出反应和中断是否进入。
    • 恢复测试:对于OSHT,测试在清除标志位后,PWM是否必须通过软件重新初始化才能输出;对于CBC,测试在故障信号移除后,下一个PWM周期输出是否自动恢复。
  4. ADC同步验证:配置ADC在ePWM SOC触发下采样一个已知电压(如分压电阻)。在ADC中断中读取结果,并改变PWM占空比或触发点,验证采样时刻是否精准跟随PWM事件。

最后的忠告:ePWM是一个功能极其丰富的模块,初次接触可能会被其众多的寄存器吓到。我的经验是,不要试图一次性掌握所有功能。先从最核心的TB、CC、AQ、DB开始,搭建一个能输出带死区互补PWM的框架。然后逐步集成TZ保护,最后再添加ET和DC等高级功能。每添加一个功能,就进行充分的测试和验证。在电力电子领域,对PWM控制环的深刻理解和谨慎测试,是保证产品可靠性的不二法门。这些机制不仅仅是芯片提供的功能,更是你构建鲁棒控制系统的基础工具。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/23 18:28:26

当一个小白拿到了香橙派 AIpro

当一个小白拿到了香橙派 AIpro 最近看见了香橙派 AIpro这块AI算法板,作为一块与华为合作的国产算力板,引起了我强烈的好奇心,可作为一名从未使用过香橙派,也未曾深究过AI算法的“小白”,来看我是如何征服这块新的领域吧。 准备工作 当我拿到这块板子之后,首先给我的感…

作者头像 李华
网站建设 2026/7/23 18:23:55

【PyTorch】with torch.no_grad() 详解

在阅读以下内容前,请务必先大致了解计算图机制,特别是叶子节点:pytorch——计算图与动态图机制 with torch.no_grad()在 PyTorch官网 中的定义为: Context-manager that disables gradient calculation. 意思是with torch.no_gra…

作者头像 李华
网站建设 2026/7/23 18:17:23

如何基于小型工控机与openwrt打造家用软路由

前言 何为软路由?顾名思义,区别于一般的家用路由器,软路由由软件实现家用路由器的一系列功能,目前最常见软路由软件就是openwrt了,本质上openwrt不是一个应有软件,而是类似于centos/suse等的基于linux内核的…

作者头像 李华
网站建设 2026/7/23 18:16:25

麒麟信安登录央视, 深度展现为中国信息安全铸“魂”之路

近日,麒麟信安登录央视频道,《麒麟信安——为中国信息安全铸“魂”》在CCTV-4中文国际频道、CCTV-7国防军事频道、CCTV-10 科教频道、CCTV-12社会与法频道、CCTV-17农业农村频道,向亿万观众深度展现麒麟信安为中国信息安全铸“魂”之路。 麒麟…

作者头像 李华
网站建设 2026/7/23 18:14:47

【模拟IC学习笔记】 PSS和Pnoise仿真

目录 PSS Engine Beat frequency Number of harmonics Accuracy Defaults Run tranisent?的3种设置 Pnoise type noise Timeaverage sampled(jitter) Edge Crossing Edge Delay Sampled Phase sample Ratio 离散时间网络(开关电容电路)的噪声仿真方法 PSS PSS…

作者头像 李华