18bits Sigma-Delta DAC设计:架构选型、调制器与数字滤波器全解析
简介这份资源是哈尔滨工业大学2014年工学硕士学位论文《18bits Sigma-Delta DAC的设计》面向具备电子工程基础、对数模转换与Sigma-Delta技术有一定了解的研发人员和技术爱好者帮助读者理解高精度、大带宽数模转换器的系统级设计原理与实现方法。论文围绕一位量化五阶全前馈结构Sigma-Delta调制器展开确定128倍过采样率采用三级数字FIR滤波器级联实现高倍插值并选用六阶贝赛尔模拟低通滤波器基于GF 0.35μm CMOS工艺完成综合、布局布线、电路设计与版图设计仿真显示输入信号-6dB时信噪比达98.26dB。资源包为1个PDF文件大小约3.03MB内容涵盖MATLAB行为级建模仿真、各模块架构对比分析及整体仿真结果适合音频处理、工业控制等高精度数模转换场景的学习与参考。目前已有105人学习下载。1. 18bits Sigma-Delta DAC 的设计为什么高精度音频链路绕不开它做音频模拟前端的人迟早会撞上同一个问题24bit 的 PCM 数据摆在面前手头的 DAC 却只有 16bit 有效精度直接截断吧小信号细节全丢加个数字衰减吧又引入新的量化噪声。这时候 Sigma-Delta 架构就成了绕不过去的选项。它的核心思路不是把每一位都精确还原而是用远高于信号带宽的采样率把量化噪声“推”到高频再用数字滤波器把它切掉最终在音频带内换来远超量化器位数的等效精度。18bits 这个指标放在 Sigma-Delta DAC 里意味着带内信噪比要做到 108dB 以上THDN 要压到 -100dB 以下这对调制器阶数、过采样率、时钟抖动和模拟后端都提出了硬约束。这篇笔记面向的是正在做音频 DAC 选型或自研模块的硬件工程师、IC 设计入门者和嵌入式音频开发者我会把从架构选型到调制器参数、从数字滤波器到版图注意事项的完整链路拆开讲重点放在“怎么算、怎么配、哪里会翻车”。2. 架构选型为什么是 Sigma-Delta 而不是 R-2R 或分段电流舵2.1 三种主流 DAC 架构在 18bits 场景下的真实差距先摆一个结论在 18bits 及以上、信号带宽不超过几百 kHz 的场景里Sigma-Delta 是综合成本最低的方案。R-2R 电阻网络 DAC 的精度直接取决于电阻匹配度要跑到 18bits电阻相对误差要控制在 2^-18 量级也就是约 4ppm这在标准 CMOS 工艺里几乎不可能靠版图匹配实现必须加激光修调成本直接起飞。分段电流舵 DAC 靠温度计码加二进制码混合动态匹配可以做但单元电流源的失配随面积指数下降18bits 意味着要几千个单元面积和功耗都不划算。Sigma-Delta 的聪明之处在于它不要求模拟元件精确而是用时间和反馈来换精度。一个 1bit 量化器只有两个输出电平理论上完全线性所有精度压力转移到过采样率和噪声整形阶数上而这两者都是数字域可以精确控制的。代价是采样率要高输出码率大后端滤波器要处理高频噪声。架构18bits 可达性匹配要求面积功耗适用场景R-2R需修调极高中低中低速精密分段电流舵可达到高大高高速视频Sigma-Delta容易达到低中中音频、精密测量2.2 过采样率与阶数的联合选择过采样率 OSR 和调制器阶数 L 决定了带内噪声抑制能力。对于 L 阶调制器带内量化噪声功率近似正比于 1/(OSR^(2L1))。每翻倍 OSR带内噪声下降 3(2L1) dB。18bits 要求带内 SNR 约 110dB假设量化器为 1bit理想 SNR 上限约 6.02N1.76但 Sigma-Delta 的等效位数由噪声整形决定。实际选型时我一般这样估目标带内噪声底 -110dBFS音频带宽 20kHz。如果选 OSR128采样率 5.12MHz二阶调制器理论带内 SNR 约 100dB不够三阶约 115dB有余量。如果选 OSR256采样率 10.24MHz二阶就能到 110dB 左右。所以常见组合是二阶 256 倍或三阶 128 倍。二阶稳定性好三阶需要更仔细的系数缩放。import numpy as np def sd_ideal_snr(order, osr, quant_bits1): # 理想 Sigma-Delta 调制器带内 SNR 估算 # 量化噪声总功率均匀分布假设 q 1.0 / (2**quant_bits - 1) # 带内噪声功率近似噪声传递函数 |NTF|^2 在带内积分 # NTF (1 - z^-1)^order带内近似 |NTF(f)|^2 ≈ (2*pi*f/fs)^(2*order) # 积分后带内噪声功率 ∝ q^2 * pi^(2*order) / ((2*order1) * OSR^(2*order1)) from math import pi p_inband (q**2) * (pi**(2*order)) / ((2*order1) * (osr**(2*order1))) # 满幅正弦功率 p_signal 0.5 snr 10 * np.log10(p_signal / p_inband) return snr for order in [2, 3, 4]: for osr in [64, 128, 256]: snr sd_ideal_snr(order, osr) print(forder{order}, OSR{osr}, ideal SNR{snr:.1f} dB, ENOB≈{(snr-1.76)/6.02:.1f} bits)这段代码给的是理想上限实际因为量化器非线性、时钟抖动、运放有限增益会掉 10~20dB。参数说明order 是调制器阶数osr 是过采样率quant_bits 是量化器位数1bit 时 q1。跑出来会看到三阶 128 倍理想约 120dB实际做到 110dB 左右是合理目标。如果仿真出来差太远先查积分器系数是否溢出。2.3 连续时间还是离散时间一个容易被低估的选型点离散时间 Sigma-Delta 用开关电容实现系数由电容比决定匹配好但采样保持电路对时钟抖动敏感且运放建立时间要求高。连续时间 Sigma-Delta 把积分器放在环路滤波器里对运放带宽要求低功耗小但系数由 RC 乘积决定工艺偏差大需要调谐。音频应用里离散时间更常见因为采样率不算太高开关电容的建立时间够用且数字后端好接。如果做超低功耗始终开启的音频链路连续时间方案值得考虑但 RC 调谐电路会增加设计复杂度。3. 调制器设计从系数缩放到稳定性仿真3.1 噪声传递函数与信号传递函数的配合Sigma-Delta 调制器的核心是噪声传递函数 NTF 和信号传递函数 STF。理想情况下 STF 在带内平坦NTF 在带内接近零带外增益高。对于二阶调制器NTF 通常取 (1-z^-1)^2但纯微分器在高频增益无限实际要加零点优化。常见做法是用 CRFB 结构系数通过 Schreier 工具箱或自己推导。我一般先用行为级模型跑通再映射到电路。行为级用 Python 或 MATLAB 都行关键是积分器要加饱和限幅否则仿真会发散。下面是一个二阶 1bit 调制器的行为级代码。import numpy as np def sdm2_order2(x, osr256): # 二阶 1bit Sigma-Delta 调制器行为级模型 # x: 输入信号已归一化到 [-1, 1] # 返回 1bit 输出序列 n len(x) y np.zeros(n) # 积分器状态 s1 0.0 s2 0.0 # 系数CRFB 形式a1a20.5 为常见缩放 a1 0.5 a2 0.5 for i in range(n): # 积分器 1 输入输入信号减去反馈 u1 x[i] - y[i-1] if i 0 else x[i] s1_new s1 a1 * u1 # 积分器 2 输入积分器 1 输出 s2_new s2 a2 * s1_new # 1bit 量化器 y[i] 1.0 if s2_new 0 else -1.0 # 状态更新加限幅防止发散 s1 np.clip(s1_new, -2.0, 2.0) s2 np.clip(s2_new, -2.0, 2.0) return y # 测试输入 1kHz 正弦采样率 256*48k12.288MHz fs 12.288e6 osr 256 fin 1e3 n 200000 t np.arange(n) / fs x 0.5 * np.sin(2 * np.pi * fin * t) y sdm2_order2(x, osr) # 计算带内 SNR from numpy.fft import fft, fftfreq Y fft(y * np.hanning(n)) freqs fftfreq(n, 1/fs) # 带内 20kHz inband np.abs(freqs) 20e3 signal_bin np.argmax(np.abs(Y[inband])) p_signal np.abs(Y[inband][signal_bin])**2 p_noise np.sum(np.abs(Y[inband])**2) - p_signal snr 10 * np.log10(p_signal / p_noise) print(f带内 SNR {snr:.1f} dB)逻辑说明每个时钟周期输入减去上一周期反馈进第一积分器再进第二积分器量化器输出 1bit。系数 a1、a2 控制积分器增益太小噪声整形弱太大容易过载。限幅是必须的否则输入稍大就发散。参数说明osr 只影响测试信号生成调制器本身不感知 OSR它只按采样率跑。跑完看 SNR如果只有 80dB 左右检查系数是否太小或输入幅度是否超过 0.6。实际电路里积分器用开关电容系数由电容比实现a1C1/C2 之类。3.2 系数缩放与积分器输出摆幅行为级跑通后下一步是确定积分器输出摆幅。二阶调制器第一积分器输出摆幅通常最大如果超过运放输出范围就会削顶噪声整形失效。经验值是第一积分器输出不超过满幅的 70%。可以通过调整系数或加前馈路径来降低摆幅。常见做法是在第二积分器前加一个本地反馈或者用前馈把输入直接送到量化器减轻积分器负担。仿真时扫输入幅度从 -20dBFS 到 0dBFS看 SNR 曲线。如果某幅度后 SNR 骤降说明过载。记录过载点留 3~6dB 余量作为设计上限。这个余量就是“后悔药”后期调音时不会因为信号峰值削顶。3.3 时钟抖动对 18bits 的致命影响18bits 意味着带内噪声底要压到 -110dB 以下。时钟抖动引入的采样误差会直接调制输入信号产生边带。对于正弦输入抖动引起的 SNR 上限约为 -20log10(2pifinsigma_t)其中 sigma_t 是时钟抖动 RMS。要保证 110dBfin20kHz 时sigma_t 要小于约 1.8ps。这个数字很苛刻普通晶振的抖动可能在 10~50ps 量级必须用低抖动时钟源或加 PLL 净化。很多新手在这里翻车调制器仿真完美一上板子 SNR 只有 90dB查半天发现是时钟源抖动太大。4. 数字滤波器与后端从 1bit 码流到 18bits PCM4.1 抽取滤波器的两级结构调制器输出是 1bit 高采样率码流要变成 18bits 低采样率 PCM需要抽取滤波器。单级实现不现实因为过渡带太窄。常见两级第一级 CIC 滤波器只做降采样通带下垂可接受第二级 FIR 补偿下垂并锐化过渡带。CIC 的降采样比通常取 OSR/4 或 OSR/8剩下的给 FIR。CIC 滤波器参数阶数 N差分延迟 M降采样比 R。通带下垂与 (pifMR/fs)^(2N) 有关。音频应用里 N3~5M1R32~64。CIC 不需要乘法器只用加减和积分面积小。但 CIC 的位宽会增长Nlog2(R*M) 位要预留。import numpy as np def cic_decimator(x, R64, N4, M1): # CIC 抽取滤波器输入 1bit 码流输出降采样后序列 # 积分器级联 integrators [0.0] * N # 梳状器延迟线 combs [[0.0] * M for _ in range(N)] output [] for sample in x: # 积分 v sample for i in range(N): integrators[i] v v integrators[i] # 降采样计数 if len(output) * R len(x): pass # 简化每 R 个样本做一次梳状 # 实际实现要先积分再降采样再梳状这里用直接形式示意 # 更清晰的实现先积分所有样本再降采样再梳状 int_out np.zeros(len(x)) for i in range(N): int_out np.cumsum(int_out x) if i 0 else np.cumsum(int_out) # 降采样 dec int_out[::R] # 梳状 comb_out dec.copy() for i in range(N): delayed np.roll(comb_out, M) delayed[:M] 0 comb_out comb_out - delayed return comb_out # 测试 np.random.seed(0) bits np.random.choice([-1, 1], size100000) out cic_decimator(bits, R64, N4, M1) print(f输入长度 {len(bits)}, 输出长度 {len(out)})这段代码是示意实际 CIC 要先积分再降采样再梳状顺序不能反。参数说明R 是降采样比N 是级数M 是差分延迟。N 越大通带越平但功耗越高。输出位宽要足够否则会溢出。CIC 之后接 FIR 补偿FIR 系数可以用 scipy 设计通带 20kHz阻带 24kHz 开始衰减 100dB 以上。4.2 18bits 输出的位宽管理与舍入抽取滤波器输出位宽通常比 18bits 宽要截断或舍入到 18bits。直接截断会引入直流偏移和量化噪声要用舍入加抖动。抖动噪声要整形到带外否则会抬高带内噪声底。常见做法是加二阶整形抖动把舍入误差推到高频。这一步做不好前面调制器再好也白搭。4.3 模拟后端重建滤波器和输出缓冲18bits DAC 的模拟后端包括重建滤波器和输出缓冲。重建滤波器把高频噪声滤掉通常用二阶或三阶巴特沃斯截止频率 20~24kHz。运放要选低噪声、低失真型号输入噪声密度要小于 10nV/√Hz否则会吃掉动态范围。输出缓冲要能驱动后级负载同时保持线性。这里有个坑运放的非线性在 18bits 下会显现选型时看 THDN 指标要优于 -110dB。5. 避坑与排查18bits Sigma-Delta DAC 设计中最容易翻车的五个点5.1 现象仿真 SNR 达标实测只有 90dB原因时钟抖动超标。调制器对时钟抖动敏感仿真时用理想时钟实测时钟源抖动可能几十 ps。解决换低抖动晶振或加时钟净化 PLL实测抖动要小于 2ps RMS。用示波器测时钟相位噪声积分到 20kHz~20MHz 看 RMS 抖动。5.2 现象小信号时噪声大大信号时正常原因抖动或舍入处理不当。小信号时量化噪声调制更明显如果数字截断没加抖动小信号线性度差。解决在抽取滤波器输出加二阶整形抖动幅度约 1LSB整形到高频。检查抖动是否被后续滤波器滤掉。5.3 现象调制器偶尔发散输出满幅方波原因积分器过载。输入幅度太大或系数缩放不当。解决降低输入幅度或调整系数加限幅。仿真时扫幅度找过载点留余量。实际电路里运放输出摆幅有限要确保积分器不削顶。5.4 现象带内噪声底有离散杂散原因时钟馈通或电源耦合。1bit 码流翻转频繁会通过寄生电容耦合到模拟输出。解决版图上加屏蔽电源加去耦时钟走线远离模拟信号。数字和模拟地分开单点连接。5.5 现象THDN 在低频段差原因运放闪烁噪声或电阻热噪声。18bits 下低频噪声贡献大。解决选低闪烁噪声运放电阻用大阻值但注意热噪声或改用开关电容。版图上输入对管面积加大减小 1/f 噪声。6. 进阶技巧用 FFT 和直方图快速定位调制器问题6.1 用 FFT 看噪声整形斜率跑完行为级仿真先看输出码流的 FFT。理想二阶调制器噪声整形斜率是 40dB/decade三阶是 60dB/decade。如果斜率不对说明阶数没生效或系数错了。带内噪声底应该平坦如果翘起说明有低频噪声源。用 Welch 方法平均多次看更平滑的谱。from scipy.signal import welch import matplotlib.pyplot as plt # 假设 y 是调制器输出fs 是采样率 f, pxx welch(y, fsfs, nperseg8192, noverlap4096) plt.semilogx(f, 10*np.log10(pxx)) plt.xlabel(Frequency (Hz)) plt.ylabel(PSD (dB/Hz)) plt.grid() plt.show()看 20kHz 以内是否平坦20kHz 以上是否按预期斜率上升。如果带内有个凸起查输入信号频率是否泄漏或系数有误。6.2 用直方图看积分器状态分布积分器状态直方图能反映摆幅和稳定性。正常工作时第一积分器状态分布应该集中在零附近尾部不超过限幅值。如果分布偏向一侧说明有直流偏移或系数不对称。第二积分器分布更宽但也不应频繁触碰限幅。用直方图快速判断比看时域波形直观。# 假设 s1_history 是记录的第一积分器状态序列 plt.hist(s1_history, bins100, densityTrue) plt.xlabel(Integrator 1 state) plt.ylabel(Probability) plt.grid() plt.show()如果直方图在限幅值处有尖峰说明过载要降低输入幅度或调整系数。6.3 一个我常犯的错误早期做 18bits 设计时我总把精力花在调制器阶数上觉得阶数越高越好结果三阶调制器系数没调好稳定性余量不足一上电就振荡。后来养成习惯先用二阶跑通全链路测出实际 SNR 和 THDN再决定是否升三阶。二阶 256 倍过采样在音频带内做到 108dB 是可行的前提是时钟抖动和模拟后端都到位。升阶带来的收益往往被模拟非理想因素吃掉不如先把二阶做扎实。每次流片前我都会用行为级模型扫一遍工艺角看系数偏差对 SNR 的影响留够余量。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

单卡跑大模型:airllm分层推理与量化压缩实战指南

单卡跑大模型:airllm分层推理与量化压缩实战指南

1. 单卡跑大模型这件事,到底卡在哪第一次看到 airllm 这个项目的时候,我正在一台只有单张消费级显卡的机器上折腾一个 70B 级别的模型。显存报错几乎是必然的,OOM 的红色提示刷了满屏,那种感觉就像你明明有一整间仓库的货&#xf…

2026/10/15 22:57:23 阅读更多 →
Claude Code + DeepSeek 从零安装教程:面向纯小白,6 步拥有自己的 AI 编程助手|TaoToken 统一 Key 接入

Claude Code + DeepSeek 从零安装教程:面向纯小白,6 步拥有自己的 AI 编程助手|TaoToken 统一 Key 接入

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 22:56:22 阅读更多 →
LOAM前端scanRegistration深度拆解:去畸变、曲率计算与特征提取调参实战

LOAM前端scanRegistration深度拆解:去畸变、曲率计算与特征提取调参实战

1. 从一次调试翻车说起:scanRegistration到底在干什么去年冬天调一个室外建图项目,前端里程计跑着跑着轨迹突然炸开,rviz里点云像天女散花一样乱飞。排查了两天,最后定位到scanRegistration节点输出的曲率计算有问题——边缘点和平…

2026/10/15 22:56:22 阅读更多 →

最新新闻

Python工具链Rust化:五个提升开发效率的新库实战指南

Python工具链Rust化:五个提升开发效率的新库实战指南

这两年 Python 生态里的话题,绕不开一个词:Rust 化。从包管理到 lint 再到数据验证,一堆新库选择直接用 Rust 重写底层,把之前 Python 工具链里让人头疼的慢、复杂、配置繁琐的问题挨个收拾了一遍。我最近在几个项目里把工具链切到…

2026/10/15 23:45:00 阅读更多 →
Unity输入与屏幕设置实战笔记:从旧版Input到Input System

Unity输入与屏幕设置实战笔记:从旧版Input到Input System

我不太喜欢写那种截图铺满的入门教程,这篇更偏向我自己反复会翻的备忘录。主题就两个:一是Unity里的按键操作,二是屏幕设置。搞游戏开发或者做工具类应用的人应该都有同感,这两种需求几乎每个项目都会碰上,但每次写都还…

2026/10/15 23:45:00 阅读更多 →
五个Python新库盘点:uv、marimo、FastHTML、instructor、textual

五个Python新库盘点:uv、marimo、FastHTML、instructor、textual

Python 生态这两年的迭代速度,说实话比我刚入行那会儿快太多了。以前盯住一两个框架就能吃很久,现在隔一阵子不刷社区,就会冒出一批名字崭新的库。新库多不稀奇,稀奇的是其中真正值得花时间去跟的,永远是少数。今天这篇…

2026/10/15 23:45:00 阅读更多 →
基于Spring Boot的Web图书管理系统开题报告写作指南

基于Spring Boot的Web图书管理系统开题报告写作指南

写开题报告最怕什么?不是查重太高,而是被指导老师问一句“你这个基于Spring Boot的Web图书管理系统,到底要解决什么问题?”当场愣住。我帮人改过不少开题报告,发现真正写得稳的,往往不是技术最炫的&#xf…

2026/10/15 23:45:00 阅读更多 →
QMUI iOS 深入解读:基于全局配置表与丰富控件的 UI 开发提效方案

QMUI iOS 深入解读:基于全局配置表与丰富控件的 UI 开发提效方案

移动开发UI组件 【免费下载链接】QMUI_iOS QMUI iOS——致力于提高项目 UI 开发效率的解决方案 项目地址: https://gitcode.com/gh_mirrors/qm/QMUI_iOS 点击查看 免费下载 QMUI iOS 是由腾讯出品的开源 iOS UI 解决方案,核心目标是通过「一份全局配置表…

2026/10/15 23:45:00 阅读更多 →
PyTorch深度学习实战:从环境搭建到模型训练与调试的完整指南

PyTorch深度学习实战:从环境搭建到模型训练与调试的完整指南

1. 从零上手PyTorch:为什么它成了深度学习项目的默认起点如果你最近打算认真做点深度学习相关的项目,不管是图像分类、文本生成还是推荐系统,大概率绕不开PyTorch这个名字。我身边不少做算法的朋友,从早期用别的框架折腾静态图&am…

2026/10/15 23:43:59 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →