You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CycloneV SX双核HPS裸机系统:如何让两核获取同步IRQ并执行不同任务

针对Cyclone V SX双核HPS同步中断问题的解决方案

电平触发相关疑问解答

  • 问题1:电平触发的信号要求
    对于ARM GIC的电平触发中断,只需要信号在GIC采样到有效电平即可,不需要全程保持到中断服务程序(ISR)结束。FPGA可以在发送有效电平后自行复位信号,但要注意:电平持续时间必须超过GIC的采样周期(Cyclone V的HPS GIC采样周期在ns级,远小于50us),确保GIC能捕捉到中断请求。如果信号持续时间过短可能漏触发,但也无需保持到ISR完成,否则可能导致GIC重复触发同一中断(除非ISR中主动清除中断状态)。

  • 问题2:更优解决方案推荐
    以下几种方案更适配高频同步场景,比延时或单纯电平触发更可靠:

    1. 共享中断+核间同步
      无需给两个核分别发中断,只输出一个共享中断到GIC(配置为多核共享的边缘/电平触发)。当任意一个核响应中断后,通过HPS内部的SCU(Snoop Control Unit) 核间机制(比如sev/wfe指令、共享内存标记、全局中断)通知另一个核进入同步逻辑。这种方式从根源上避免了GIC对同时到达的同优先级中断的调度冲突,且无额外延时。
      核心逻辑示例:

      • FPGA仅输出一个同步脉冲到GIC共享中断通道
      • Core0响应中断后执行sev指令,唤醒处于wfe低功耗等待状态的Core1
      • 双核对齐同步点后,各自完成中断状态清除
    2. GIC中断路由与优先级微调
      若坚持使用两个独立中断,可给两个中断设置微差优先级(比如Sig1比Sig2高1级),同时配置GIC的分发模式为“按核轮询”。优先级差控制在最小档位,带来的调度延迟在ns级,完全不会影响50us周期的同步精度,且能让GIC依次响应两个中断。

    3. FPGA侧合并中断+Mailbox触发
      FPGA不生成两个独立中断,而是通过HPS的Mailbox外设触发同步:FPGA写入Mailbox寄存器后,硬件会同时触发两个核的Mailbox中断,这种方式由HPS硬件保证双核中断触发时序完全一致,彻底规避GIC的调度问题。

额外注意事项

  • 50us高频中断下,ISR必须极简,仅做同步标记即可,复杂逻辑放到主循环处理,避免中断堆积。
  • 若采用电平触发,需在FPGA侧保证信号脉冲宽度足够,同时在HPS中断配置中开启“电平中断自动清除”(部分GIC版本支持),或在ISR中主动向GIC发送清除命令,防止重复触发。

内容的提问来源于stack exchange,提问作者Alex_Chun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 20:42:55