一、外部晶振与内部振荡器选型及使用
MCU与CPLD联合编程场景下,整颗芯片只需配置一路时钟源,支持外部无源晶振、外部有源晶振、内部振荡器三种时钟模式,时钟资源为MCU与CPLD共用,无需为CPLD单独配置晶振。芯片内置振荡器存在一定频率误差,校准后误差可控制在5%以内,可满足低精度时钟需求场景。外部晶振的基础配置逻辑与纯MCU开发场景完全一致。

1. 外部无源晶振配置
无源晶振适用频率范围为4MHz~16MHz,硬件上需对接芯片OSC_IN、OSC_OUT专用时钟引脚。软件配置仅需在VE工程中直接定义系统主频参数,无需额外配置旁路宏定义。目前开发板默认采用该配置方案。
2. 外部有源晶振配置
有源晶振无固定频率限制,适配更广的时钟需求,根据硬件接入引脚不同,对应两套软件配置方案:
接入OSC_IN引脚:VE工程中配置HSECLK参数为有源晶振实际频率;同时在platformio.ini中添加宏定义:-D BOARD_HSE_BYPASS=SYS_HSE_BYPASS_ON,开启时钟旁路模式。
接入普通IO引脚(如PIN_2):VE工程中需同时配置HSECLK(外部晶振频率)与PLL_CLKIN(PLL时钟输入源)参数;同时在platformio.ini中添加宏定义:-D BOARD_HSE_BYPASS=SYS_HSE_NONE。
注:-D 为宏定义标识,标识与宏定义内容之间可加空格或直接连接,配置效果一致。
3. 内部振荡器配置
芯片内部振荡器经校准后频率精度在5%以内,无需外接硬件,可降低硬件成本,仅适用于时钟精度要求不高的业务场景。
软件配置:VE工程中添加配置PLL_CLKIN PIN_OSC,无需配置HSECLK参数;同时在platformio.ini中添加宏定义:-D BOARD_HSE_BYPASS=SYS_HSE_NONE。
内部时钟自动校准限制条件:
逻辑编译压缩:需在platformio.ini中开启配置 board_logic.compress = true;
烧录方式限制:校准功能仅支持SWD接口、官方专用软件烧录,UART烧录方式不支持校准;全新芯片或擦除后芯片烧录时,可查看具体校准信息;
烧录器兼容性:J-Link、DAP烧录器校准效果稳定,第三方通用烧录器可能存在校准偏差,不建议使用。
二、PLL倍频与分频工作机制
芯片内置唯一PLL倍频模块,为MCU、CPLD共用资源。PLL倍频、分频逻辑由系统底层封装,用户无需、也不能手动配置时钟树参数,仅需根据业务需求配置各模块所需时钟频率即可。
1. 时钟倍频分频原理
系统会自动汇总MCU、CPLD所有用到的时钟频率,计算所有频率值的最小公倍数,该值即为PLL目标倍频频率。系统以外部时钟/内部振荡器为输入基准,通过PLL倍频至目标频率,再基于该高频基准时钟,通过分频方式为MCU各外设、CPLD提供对应工作时钟。
2. 用户可配置时钟范围
MCU时钟:仅需配置系统主频,在VE工程中通过SYSCLK参数设定,为MCU核心工作频率;各外设时钟均基于系统主频二次分频生成,具体规则参考对应外设驱动文档。
CPLD时钟:默认支持5路独立时钟输入。其中默认输入的sys_clock与MCU SYSCLK主频完全同步;Bus_clock为二次分频时钟(对应底层PLLCLK3),用于适配CPLD低速运行需求,避免逻辑电路因主频过高运行异常。
Bus_clock配置规则:VE工程中定义的BUSCLK频率,必须为SYSCLK的整数分频;若未配置BUSCLK参数,则Bus_clock与sys_clock频率一致。
三、CPLD五路独立时钟资源说明
CPLD总计可调用5路PLL时钟资源,包含默认同步系统时钟与4路可自定义独立时钟,各时钟存在功能占用互斥规则,具体适配逻辑参考《AGRV2K_逻辑设置.pdf》。五路时钟资源定义及使用限制如下:
PLLCLK0(sys_clock):系统默认主时钟,完全复用MCU SYSCLK配置频率,无占用限制,全程可用;
PLLCLK1:通用自定义时钟;若MCU开启USB功能,该时钟会被USB独占(固定60MHz),用户无法使用;USB关闭时可自由配置;
PLLCLK2:通用自定义时钟;若MCU开启MAC网络功能,该时钟会被MAC独占(固定25MHz/50MHz),用户无法使用;MAC关闭时可自由配置;
PLLCLK3(Bus_clock):可作为通用自定义时钟,若手动配置BUSCLK参数,则该时钟被总线时钟占用,不可复用;
PLLCLK4:独立通用自定义时钟,无功能独占限制,可自由配置使用。
自定义时钟配置示例
在VE工程中直接配置对应参数,即可自定义PLLCLK3、PLLCLK4时钟频率,配置完成后,CPLD工程入口会生成对应时钟信号,可像sys_clock一样正常调用:
# 自定义PLLCLK3为40MHz、PLLCLK4为60MHz
PLLCLK3 40
PLLCLK4 60
# 导出时钟信号至CPLD入口
PLL_CLKOUT3 pll_clk3
PLL_CLKOUT4 pll_clk4
四、时钟配置约束条件与计算规则
系统PLL倍频频率需满足固定公式与阈值限制,所有自定义时钟频率必须适配PLL基准频率,否则编译报错。
1. 核心约束公式
PLL目标频率计算公式:$$PLL = HSE \times X \div Y$$
约束条件:X、Y 均为正整数;PLL最终频率 ≤ 1200MHz;所有MCU、CPLD用到的时钟频率,必须能被PLL目标频率整除。
2. 配置示例
场景:MCU主频100MHz、开启MAC(50MHz)、开启USB(60MHz)、CPLD自定义PLLCLK3=80MHz、PLLCLK4=60MHz。
频率集合:100MHz、50MHz、60MHz、80MHz,最小公倍数为1200MHz,即PLL目标倍频频率为1200MHz,满足≤1200MHz的阈值要求,配置合法可编译。
特殊频率适配方案:若业务需要特殊固定频率,可微调其他辅助时钟频率,使所有频率可整除PLL目标频率,适配编译规则。
五、CPLD最高运行频率说明
芯片MCU核心最高运行主频固定为248MHz;CPLD无固定最高频率上限,极限运行频率由内部逻辑电路复杂度决定。
纯组合逻辑电路:无时钟时序依赖,不存在时钟频率限制;
时序逻辑电路:运行频率取决于单时钟周期内的逻辑运算耗时。例如100MHz时钟对应单周期10ns,设计需保证所有逻辑动作可在10ns内完成;简单时序逻辑电路优化后,最高可稳定运行200MHz以上频率。