KX-11 光钟 FPGA 架构报告

工程化重构理念:从测试代码到航天级定型

本区域概述了KX-11原子物理激光项目的FPGA架构演进核心思想。早期的测试代码为了快速打通链路,模块之间高度耦合(如面条式代码)。为了满足航天产品的极高可靠性与可维护性,我们引入了“整洁架构(Clean Architecture)”思想,彻底重构了控制流与数据流。

五层彻底解耦

自上而下划分为应用、算法、互联、驱动和HAL层。业务状态机统一收归应用层,算法层变为无状态纯计算。改需求只需改应用层单模块。

收敛互联与CDC

设立专属“互联层”作为全系统立交桥。集中处理片内总线分发、协议解析及异步FIFO跨时钟域(CDC)隔离,杜绝布线拥堵与时序违例。

契约防污染设计

核心模块通过SystemVerilog Interface接收标准化数据。更换外部ADC/DAC芯片只需替换驱动层,核心稳频算法和流程一行代码无需修改。

当前资源痛点与瘦身依据

本节展示了测试代码阶段Vivado综合后的真实物理资源占用情况。通过数据可视化,揭示了为何必须进行算力瘦身,并证明了“Slice逻辑资源枯竭”是一个伪命题,为引入MicroBlaze软核和CORDIC算法提供了物理依据。

DSP48E1 算力危机剖析 (总计 840)

揭示 12通道 GTX_DFS 高速堆砌导致的乘法器资源枯竭

全局逻辑与存储资源余量评估

展示真实的 LUT/Register 占用极低,BRAM海量富余

交互式五层架构沙盘

本区域是架构设计的逻辑核心视图。请点击下方的架构层级(块),查看每一层的具体核心职责、对外暴露的契约边界,以及它“不关心”的底层细节。这种依赖倒置(DIP)设计确保了系统的高内聚低耦合。

↓ 契约调用 / ↑ 状态反馈
↓ 时序控制 / ↑ 数据采集
顶层控制中枢

应用层 (Application Layer)

系统的“大脑”。负责业务流程编排与决策。例如:决定何时进行激光锁定点探寻(ST01),何时切入闭环(ST02),以及失锁后的重试策略。非常适合由MicroBlaze软核运行C语言实现。

对外暴露: 控制参数设定、全局状态指示。
绝对不关心: 算法底层公式怎么算、底层数据经过哪条总线传输过来。

关键工程重构策略

本区域解释了在确立五层架构后,如何通过具体的RTL微架构设计来解决测试代码遗留的物理资源和时序问题。

多通道 PID 算法的时分复用 (Time-Multiplexing)

原测试代码为 6 路主激光实例化了 6 个完全并行的纯硬件 PID 模块,消耗了海量 DSP48E1 乘法器。在工程重构中,利用 200MHz 时钟的高速特性(单拍 5ns)与 500ns 的系统容忍延迟,我们只编写 1个 流水线 PID 计算核心。

// 利用海量闲置 BRAM 存储各通道状态
Tick 0~4: 读出 Ch0 参数 -> 送入唯一 PID 核 -> 存回 Ch0 积分量
Tick 5~9: 读出 Ch1 参数 -> 送入唯一 PID 核 -> 存回 Ch1 积分量
...
收益:DSP 占用直接砍掉 80%,彻底解决布线拥堵危机。

实战案例:隔离变化的终极防御

假设联调期面临双重致命打击:

  • 物理学家要求:更改移频PDH锁定点探寻(ST01)的电压判断阈值。
  • 硬件组通知:14位并行高速ADC缺货,临时更换为16位串行SPI ADC。

面条式旧代码

必须打开巨大且唯一的顶层模块。既要修改状态机 if-else 嵌套,又要重写底层采样时序。改完后时序极有可能违例,导致原有核心 PID 逻辑崩溃,需重新耗费数日全盘仿真测试。

五层新架构响应

1. 仅在应用层修改探寻阈值参数。
2. 仅在驱动层替换SPI驱动代码,对齐 Interface 契约数据格式。
核心的算法层(PID)与互联层连重新仿真的必要都没有!牵一发而绝不动全身。