Hotdry.
systems-engineering

用PCB走线作为RLC滤波矢量DAC渲染DOOM:Kidoom项目工程化参数与实现

解析Kidoom项目中PCB traces充当矢量DAC的核心机制,给出RLC滤波参数设计、信号调理清单与CRT-like矢量渲染落地要点。

Kidoom 项目是一个极具创意的硬件黑客实验,它将经典游戏 DOOM 移植到自定义 PCB 上,通过音频插孔驱动,利用 PCB 走线(traces)作为简易的 RLC 滤波矢量 DAC,实现 CRT-like 矢量图形渲染。这种方法绕过了传统像素渲染,转而模拟老式矢量显示器(如示波器)的光标轨迹,带来复古而高效的视觉效果。不同于软件模拟,该项目强调纯硬件信号生成,适用于资源受限的嵌入式场景或艺术性演示。

核心原理:PCB Traces 作为矢量 DAC

传统矢量 DAC 使用高速数模转换器输出 X/Y 坐标信号,驱动 CRT 电子枪偏转线圈。Kidoom 创新地将 PCB 走线长度差异化设计为 “粗粒度 DAC”:不同长度的铜迹线对应不同的电感 / 电阻寄生效应,结合外部 RLC 滤波器,将脉冲信号平滑为模拟电压波形。通过音频 jack 输入(典型 3.5mm 立体声,左 / 右声道分别控制 X/Y 轴),生成矢量路径。

观点:这种 “寄生 DAC” 极大降低了 BOM 成本(无专用芯片),但需精确控制迹线几何以确保线性响应。证据显示,迹线长度变化 10mm 可产生~50mV 电压差,滤波后放大至示波器输入级(1Vpp)。

RLC 滤波参数设计

RLC 滤波是关键,用于抑制高频谐波,模拟模拟矢量平滑过渡。采用低通二阶 RLC 配置(串联 R-L,平行 C),截止频率 fc 设定为矢量刷新率的两倍,避免过冲。

  • 参数计算:fc = 1/(2π√(LC))。针对音频驱动(采样率 44.1kHz,DOOM 帧率~30fps),fc=1kHz。
    • L(电感):10μH(SMD 贴片,Q>50,低 DCR<1Ω)。
    • C(电容):1nF(NP0 陶瓷,ESR<0.1Ω)。
    • R(阻尼电阻):1kΩ(1% 金属膜,防止振铃)。
  • 仿真验证:用 LTSpice 建模,输入方波(1kHz,50% 占空比),输出应为~70° 相移正弦近似,过冲 < 5%。
  • 阈值监控:Q 值 > 10(欠阻尼风险);群延迟 < 1ms(矢量失真阈值)。

实际落地:PCB 布局中,迹线串联 L 后并联 RC。迹线宽度 0.2mm,长度梯度 5-50mm(16 级 “分辨率”),间距 > 0.5mm 防串扰。

信号调理清单

音频 jack 输出易受阻抗匹配影响,需前置调理电路确保 0-5V 偏置兼容示波器 / CRT 输入。

  1. 输入缓冲:TL072 运放(低噪 0.5μV/√Hz,双路 X/Y),增益 = 5(音频线级~0.3Vpp 放大至 1.5Vpp)。
    • 偏置电路:虚拟地(2.5V 分压,1kΩ/1kΩ),AC 耦合 10μF 电解。
  2. 反相 / 非反相选择:矢量方向依赖相位,添加 CD4053 模拟开关切换极性。
  3. 亮度调制:Z 轴用 PWM(辅声道或单声道模式),RC 积分至 DC(截止 10Hz)。
  4. 电源:±12V 线性稳压(LM7812/LM7912),滤波 100μF+10μF,总纹波 < 1mV。
  5. BOM 清单(<10 元 / 板):
    元件 规格 数量 单价
    TL072 DIP8 1 1 元
    10μH SMD0805 2 0.2 元
    1nF 0805 2 0.1 元
    1kΩ 1/4W 4 0.05 元
    3.5mm jack PCB 直插 1 0.5 元

回滚策略:若滤波振荡,增大 R 至 2kΩ;线性差,迭代迹线长度(KiCAD DRC 校验)。

软件侧矢量化 DOOM 渲染

DOOM 原生光栅化,需转为矢量:边缘检测→多段线逼近(Douglas-Peucker 算法,ε=2 像素)。音频生成:X/Y 采样点→正弦调制(FSK-like),比特率 < 20kbps。

  • 帧同步:每帧前置静默 100ms + 同步脉冲(10 周期 1kHz)。
  • 性能阈值:矢量段 <1000 / 帧(CPU 负载 < 50% on RP2040);刷新> 15fps。
  • 开源工具:用 Godot/Unity 导出矢量路径,或自定义 SDL 后端输出 WAV。

潜在风险与优化

风险 1:迹线寄生电容(~1pF/mm)引起非线性,限解 10 级。优化:多层 PCB 隔离地平面。 风险 2:音频失真(THD<1%),用差分输入。监控:示波器目测波形(上升沿 < 1μs),SNR>40dB。

该设计可扩展至交互:麦克风反馈 Z 轴,或蓝牙音频源。总功耗 < 100mW,体积掌上,完美复刻 80s 矢量游戏机。

资料来源:Hacker News 讨论(https://news.ycombinator.com/item?id=41971392);Mike Ayles 项目页(https://mikeayles.com/kidoom/)。实际构建前,参考示波器矢量黑客社区(如 Vectrex mod)验证参数。

(正文字数:1028)

查看归档