基于FPGA的电子琴设计:从DDS波形生成到PWM发声与排错
简介基于FPGA的电子琴设计资源以Verilog硬件描述语言为核心面向数字电路设计学习者与电子音乐制作爱好者展示如何利用Altera FPGA实现音符生成、频率合成与音效处理等完整功能。压缩包共69个文件包含Quartus工程文件qpf/qsf、Verilog源码v/tdf、编译过程报告map/fit/asm的rpt与summary以及大量辅助设计数据库文件hdb/cdb/sci等包体约211KB便于查看完整工程结构。资源已获得421人学习具备可观参考价值。通过这份资料可以了解电子琴设计从音乐原理到硬件电路模块划分的完整思路包括键盘输入转换、音符到波形的映射、滤波器与音效处理的实现方法还可借助sof/pof配置文件直接下载到FPGA验证并学习Quartus II下FPGA工程的综合、布局布线及下载流程。适合课程设计、电子设计竞赛或FPGA音乐合成项目入门参考。1. 基于fpga的电子琴设计为什么仿真波形全对喇叭就是不出声很多人在做“基于fpga的电子琴设计”时都会遇到同一个怪现象按键扫描、分频计数、波形仿真的结果都很完美可一旦下载到开发板上喇叭要么不响要么发出刺耳的嘶嘶声。问题往往不是代码没写完而是把数字逻辑和音频链路当成了两件事。FPGA电子琴本质上是一条“按键输入 → 音高编码 → 波形生成 → PWM/解码输出 → 扬声器”的完整信号链任何一环没接好声音都不对。这篇文章会沿着选型、代码、硬件、排错的顺序把这台琴从仿真拉到真实发声适合正在做课设、数字逻辑实验或者想用手头板子完成一件能听作品的人。2. 先定方案再写代码DDS查表、PWM输出与I2S解码的取舍实现电子琴的常见方案有三条路计数器分频、DDS查表、I2S加音频解码芯片。计数器分频的好处是代码短但每个音高都要一套独立分频链改音色基本无从下手I2S音质上限高可你得先搞定codec芯片的I2C寄存器配置对起步项目来说容易卡在“芯片不出声”的黑匣子里。我更推荐用DDS加PWM输出逻辑资源消耗小音高由频率控制字决定后面加和弦、加音色都只是改参数的事。先讲怎么把音阶频率算成FPGA能用的数字。2.1 音阶频率怎么算十二平均律与频率控制字表音阶频率按十二平均律生成以A4等于440Hz为基准相邻半音之间是2的1/12次方倍率。频率公式是 f 440 × 2^((midi-69)/12)C4是261.63Hz每高一个八度频率翻倍。你要做的不是记住这些小数而是把频率转成DDS的频率控制字。用N位相位累加器时输出频率 f_out 与频率控制字 FCW 的关系是f_out FCW × f_clk / 2^N。反过来FCW f_out × 2^N / f_clk。N取32、系统时钟50MHz时C4对应的FCW是22475A4对应37796一个八度内的音都能用32位整数精确表示频率分辨率约0.012Hz足以覆盖所有音准误差。音符频率 (Hz)FCW (N32, f_clk50MHz)C4261.6322475D4293.6625227E4329.6328315F4349.2330000G4392.0033673A4440.0037796B4493.8842426C5523.2544947如果板子上不是50MHz晶振把所有FCW按比例换算即可比如25MHz时钟就把上表数值翻倍。我一般先把这张表用脚本生成好再拷进Verilog的case语句避免手算抄错。2.2 用相位累加器生成任意频率DDS核心模块实现DDS的核心是相位累加器每个时钟周期把FCW累加一次累加器溢出一次就是一个完整波形周期频率由FCW决定。相位累加器的高8位作为256点正弦查找表的地址就能还原一个正弦波。这个查找表可以用verilog语法读取十六进制文件配合Python小脚本生成import math with open(sine_256.hex, w) as f: for i in range(256): v int(127.5 127.5 * math.sin(2 * math.pi * i / 256)) f.write(f{v:02X}\n)生成的文件每一行是一个字节的十六进制数范围0x00到0xFF对应正弦波一个周期的256个采样点。下面把这个查找表塞进DDS模块同时完成PWM输出module dds_note ( input wire clk, // 系统时钟50MHz input wire rst_n, // 复位低有效 input wire [3:0] note, // 音高编码0C4, 1D4 ... output reg pwm_out // PWM音频输出 ); reg [31:0] phase; reg [31:0] fcw; reg [7:0] sine_val; reg [7:0] sine_rom [0:255]; initial $readmemh(sine_256.hex, sine_rom); always (*) begin case (note) 4d0: fcw 32d22475; // C4 4d1: fcw 32d25227; // D4 4d2: fcw 32d28315; // E4 4d3: fcw 32d30000; // F4 4d4: fcw 32d33673; // G4 4d5: fcw 32d37796; // A4 4d6: fcw 32d42426; // B4 4d7: fcw 32d44947; // C5 default: fcw 32d0; // 无按键时静音 endcase end always (posedge clk or negedge rst_n) begin if (!rst_n) phase 32d0; else phase phase fcw; end always (*) begin sine_val sine_rom[phase[31:24]]; end reg [7:0] pwm_cnt; always (posedge clk or negedge rst_n) begin if (!rst_n) pwm_cnt 8d0; else pwm_cnt pwm_cnt 8d1; end always (posedge clk or negedge rst_n) begin if (!rst_n) pwm_out 1b0; else pwm_out (sine_val pwm_cnt) ? 1b1 : 1b0; end endmodule这段代码把正弦采样值和一个自由运行的8位计数器做比较产生占空比随正弦波变化的PWM信号。pwm_cnt从0到255循环载波频率是50MHz除以256约195kHz远高于音频范围方便后面用低通滤波还原波形。phase[31:24]是相位累加器的高8位ROM深度256每个时钟采样一次输出频率严格等于FCW乘f_clk除以2的32次方。参数调整的核心点有两个一个是N取32位频率分辨率足够细想省资源可以降到24位但音准会略差另一个是ROM点数256点时谐波噪声还能接受想更干净可以换1024点查找表地址用phase[31:22]ROM资源会翻四倍。PWM的载波频率取决于pwm_cnt位数目前8位是195kHz改成9位就是97.7kHz载波更低但PWM分辨率更高滤波要求和听感会跟着变。2.3 琴键状态不能直接送DDS按键消抖与音高锁存物理按键按下和松开时金属触点会抖动十几毫秒如果直接把按键电平送进fcw的caseDDS会在抖动期间频繁切换频率输出“噗噗”的爆音。为此要加一个20ms的消抖模块用计数器确认电平稳定后才更新输出module debounce ( input wire clk, input wire rst_n, input wire key_in, output reg key_out ); reg [19:0] cnt; reg key_sync1, key_sync2, key_sync2_prev; always (posedge clk or negedge rst_n) begin if (!rst_n) begin key_sync1 1b0; key_sync2 1b0; key_sync2_prev 1b0; cnt 20d0; key_out 1b0; end else begin key_sync1 key_in; key_sync2 key_sync1; key_sync2_prev key_sync2; if (key_sync2 ! key_sync2_prev) begin cnt 20d0; end else if (cnt 20d1_000_000) begin key_out key_sync2; end else begin cnt cnt 20d1; end end end endmodule代码先用两级触发器把按键信号同步到时钟域消除亚稳态然后检测同步后的电平是否发生跳变跳变一次就把计数清零只有连续100万个时钟周期电平不变也就是20毫秒稳定才认为按键确实按下或松开。20ms是常用取值快速连弹时会感觉有点迟钝可以降到10ms即20d500_000但消抖可靠性会差一些。这里的细节是必须比较key_sync2和key_sync2_prev也就是相邻两个时钟周期的输入值而不是比较key_sync2和key_out。如果拿输出做比较输出不更新时条件永远满足不了计数器永远清不到稳定值这就是一个典型的消抖逻辑翻车现场。3. 从代码到出声开发板选型、按键矩阵与音频输出电路DDS模块在仿真里能跑出正弦波形不等于接上喇叭就有音乐。FPGA引脚出来的是数字PWM信号后面还缺模拟侧的滤波和功放。这一章讲怎么把资源需求理清、把引脚分配对、把音频链路搭出来。3.1 资源评估与引脚规划先看看你的板子够不够用做电子琴的FPGA资源门槛很低几千个逻辑单元的单芯片就绰绰有余真正的约束在IO数量和音频输出方式上。如果你手头的板子只有8个LED和2个按键那独立按键不够用最好外接一个4x4矩阵键盘8个IO就能覆盖16个琴键。按键矩阵需要行列扫描代码量比独立按键多一个扫描状态机但IO省一半。模块逻辑资源IO需求备注独立按键 x8极少8消抖逻辑占用约几十个LE矩阵键盘 4x4较少8需扫描状态机DDS核心 ROM约几百个LE0ROM用块RAM实现PWM输出极简1建议分配在普通IO即可I2S解码较多42需配置codec寄存器起步不建议引脚规划时我会先把PWM输出引脚定下来它要靠近音频电路避免跨越整个板子去接喇叭。按键引脚用普通IO矩阵键盘的列引脚最好选支持中断的IO方便后续扫描优化。综合工具一般都有图形化的引脚规划器打开器件视图后逐个锁定位置就行。注意先确认板载蜂鸣器是有源还是无源。有源蜂鸣器内部自带振荡源只能响固定频率PWM信号送进去基本只会出噪音无源蜂鸣器能用但频响窄音色偏弱。最省心的做法是从FPGA引脚直接引出信号接自己搭的RC滤波和功放。3.2 音频输出链路RC低通参数与功放接法PWM输出是195kHz的方波脉冲串直接接喇叭听起来像在放静电必须先用低通滤波器把高频载波滤掉只留下音频包络。最省料的是无源一阶RC低通截止频率 f 1 / (2πRC)按这个公式可以算几组常用值RC截止频率听感表现1kΩ10nF15.9kHz高音亮载波残余略明显1kΩ100nF1.6kHz声音发闷高音乐器表现差100Ω10nF159kHz几乎不过滤嘶嘶声明显我一般选1kΩ加10nF保留人耳能听到的20kHz以下频段同时把大部分195kHz载波压掉。如果手头有耳机放大器板子把RC滤波后的信号接到功放输入输出推小喇叭音量就够用了。没有功放时可以临时把滤波输出直接接高阻抗耳机声音偏小但能听清楚足够调试。音频链路还有一个容易忽略的点FPGA IO推挽输出会叠加直流电平如果直接驱动无源蜂鸣器直流分量会一直通电喇叭纸盆偏向一侧声音发干。在PWM输出和喇叭之间串联一个几微法的电解电容负极接喇叭就能把直流隔掉。3.3 从仿真到上板最小可发声工程的操作顺序我建议把“固定音高发声”作为上板验证的第一步先不要接按键。写一个测试用的顶层模块把note固定成4d5也就是A4综合下载后直接听有没有440Hz的声音。这一步能确认工具链、引脚约束和音频电路三个环节是否正常比一上来就全系统联调好定位问题。综合之前要在约束文件里写下时钟和引脚信息以厂商IDE常见的XDC语法为例set_property PACKAGE_PIN M18 [get_ports {clk}] set_property PACKAGE_PIN N15 [get_ports {pwm_out}] set_property IOSTANDARD LVCMOS33 [get_ports {pwm_out}] create_clock -period 20.000 [get_ports {clk}]第一条把时钟信号绑到板子的晶振引脚第二条把PWM输出绑到你选定的扩展IO第三条声明IO电平标准是3.3V最后一条告诉工具时钟周期是20纳秒也就是50MHz。这里M18和N15是示意引脚名字实际要用你板子原理图里的封装名。create_clock的周期如果和板上晶振不一致时序分析会给出错误结果严重时内部逻辑采样出错频率会变得很怪。上板后先用示波器点一下PWM引脚能看到195kHz的方波说明DDS在工作。没有示波器也没关系把PWM引脚临时绑到一个LED上如果LED亮度稳定不闪说明PWM占空比基本不变再接上滤波和喇叭听音调。这个过程能把数字侧和模拟侧隔离开哪一段坏了当场就能判断。4. 示波器看不到、耳朵能听出的坑音频雷区与排查流程仿真波形能通过声音却总不对这是FPGA音频项目最常见的卡点。数字波形在示波器上像是正确的但人耳对底噪、爆音、音准极度敏感。以下五条都是我反复踩过的坑按从“完全无声”到“声音难听”的顺序排。4.1 上电就有持续嘶嘶声数字地噪声与载波残余现象不按任何按键时喇叭就有持续的“嘶嘶”声或电流声按下按键后声音里一直混着一种高频毛刺。示波器测FPGA引脚波形完全正常看不出异常。原因一是USB口供电纹波通过地回路串进了音频电路FPGA数字IO每毫秒都在翻转地线上有大量毛刺二是RC低通只滤掉了一部分195kHz载波剩下的高频分量让声音发毛。解决音频电路的参考地要和FPGA数字地单点连接不要在功放附近形成大面积地环路供电可以串一个10Ω电阻加10uF电容组成简单的LC滤波进音频部分RC低通如果还想压载波就再加一级RC把截止频率降到20kHz左右两级滤波效果比一级好很多。调试时先断开功放只接RC滤波和示波器确认输出端已经没有明显的高频成分再逐步接回负载。4.2 按键按下瞬间有“噗”的爆音消抖与相位连续性的双重问题现象按下琴键时喇叭先“噗”一声再进入正常音调松开时又有一声闷响音头音尾都不干净。原因两个因素叠加。第一个是消抖没做好按键抖动让fcw在多个频率间快速切换DDS输出被打断。第二个是相位累加器没有保持连续性如果每次按键都在fcw切换时把phase清零波形会从0相位重新开始输出包络产生一个跳变这就是“噗”声的来源。解决先确认消抖模块的计数器逻辑正确用200ms延时做实验性测试然后让DDS的phase保持自由运行切换音高时只改fcw绝对不要在按键状态变化时复位phase。如果还想要更干净的音头可以在输出端加一个短暂的增益缓起几毫秒内从0升到满幅相当于软启动成本低效果好。4.3 音阶明明是按表算的弹出来却跑调现象用调音软件实测某个音A4不是440Hz而是偏高或偏低更离谱的是不同按键偏差方向还不一致。原因绝大多数情况是FCW计算用的时钟频率和板上晶振实际频率不一致。有的板子标称50MHz实际晶振是49.8MHz或50.2MHz偏差直接反映在音高上。还有一种情况是代码里有两套时钟一处分频模块用了50MHz另一处DDS用了25MHz的使能脉冲FCW就会差一倍。解决不要猜先测。把DDS的phase最高位引到一个空闲IO相当于把输出频率二分频然后用频率计或示波器数出实际周期。比如标称50MHz的板子A4的二分频输出实测是219.8Hz而不是220Hz反推出实际时钟约49.95MHz。有了真实f_clk把FCW表重新算一遍音准立刻回来。如果手头没有频率计手机上的调音软件也能辅助先把C4校准其他音是等比关系C4准了全音阶基本就对了。4.4 后按的键总把前一个音顶掉单音DDS被抢占现象先按住C4声音正常再按G4C4马上停掉而且松开G4时C4也不会恢复要重新按一次才行。原因fcw只有一个寄存器case语句按优先级选择音符后按的键通过消抖后把前一个键的fcw覆盖了。这本质上是“单音琴”的行为电子琴如果只能弹单音连最简单的双音和弦都出不来。解决先明确做成单音琴还是复音琴。单音琴可以保留现状但要定义“最后按键优先”策略松掉最后按的键时重新扫描哪个键还按着把fcw切回去。复音琴就要例化多个DDS实例每个实例各管一个音输出先相加再进PWM比较器。四个8位正弦值相加最大是1020需要一个11位的加法链路再按比例缩放到0~255做PWM比较。注意所有DDS实例共享同一个pwm_cnt否则PWM相位不齐会引入拍频干扰。4.5 仿真一切正常上板却一个字都没有引脚约束和有源蜂鸣器现象testbench里能清楚看到PWM波形的占空比变化综合实现也报了成功但喇叭死活不出声。测量FPGA引脚时发现PWM输出引脚根本没有波形翻转或者只在下载瞬间响了一声。原因最常见的是引脚约束没生效。综合工具里代码端口叫pwm_out但引脚规划器里绑到的是一个已经被其他外设占用的引脚或者PACKAGE_PIN名字敲错下载后信号根本没引出来。另一个高频原因是板载蜂鸣器是有源的它自带振荡器对输入PWM只响应包络甚至完全不响应。解决先用万用表或示波器直接量FPGA引脚确认引脚上有波形。如果引脚没波形回头查约束文件和综合报告里的IO信息确认pwm_out确实分配到了目标引脚。如果引脚有波形但接了喇叭就不出声换成外部音频电路再试。我自己常用的笨办法是把pwm_out临时改到LED并让FCW低一点看着LED亮度变化验证逻辑通路通没通再切回音频频率。5. 让它能弹一首歌多音色切换、延音踏板与简易节拍器单音链路跑通之后这台FPGA电子琴就能弹旋律了。接下来加三个低成本功能可玩性会明显提升。5.1 一个ROM换三种音色正弦、三角波、方波音色的本质是波形形状。正弦波干净三角波柔和方波明亮且带明显奇次谐波。生成三份hex文件用一个开关选择$readmemh加载哪份或者更省资源地直接在代码里根据开关对ROM输出做映射。方波最简单直接取phase最高位就能得到但听起来偏硬配RC低通反而有复古味。三种音色切换我用一个拨码开关按位选音色sound[1:0]信号送进DDS顶层。5.2 延音踏板的简化实现别再让旋律一抬手就断弹单音旋律时抬手音就断很不好听。用一个按键当延音踏板松开琴键时不让音量立刻归零而是按指数规律衰减。简化Verilog实现如下reg [15:0] vol; reg key_on; // 按键按下的锁存信号 reg pedal; // 延音踏板 reg env_48k; // 48kHz采样率使能脉冲 always (posedge clk) begin if (key_on) vol 16d30000; else if (pedal env_48k) vol vol - (vol 12); // 时间常数约85ms适合短延音 end代码不在每个时钟周期都衰减而是用48kHz的使能脉冲控制避免衰减速度失控。vol 12的衰减量决定了延音长度想更接近钢琴踏板就把12改成14时间常数会拉到约340ms。这个包络再乘到DDS输出上就能得到自然的余音。5.3 节拍器简单BPM计数与LED闪拍练习时没有节拍器很难受。FPGA做节拍器只是计数的事BPM为120时每拍0.5秒50MHz时钟对应2500万个周期。计数器到25_000_000翻转一次LED同时触发出一个短促的“滴”声DDS的音高用一个短时控制字包络就能实现。把BPM做成可调参数用两个按键加减速度练琴的体验会好很多。回顾整个项目最想提醒后来者的是别一上来就追求复音、音色、延音这些功能叠加。我第一次做的时候把四音和弦和I2S解码器一起上结果在三周时间里反复折腾codec的寄存器配置最后发现连单音PWM都没真正验证过。把“按键→消抖→DDS→PWM→RC滤波→扬声器”这条单音链路先走通再逐步加功能节奏会顺很多。希望这篇笔记能帮你少走这段弯路。本文还有配套的精品资源点击获取

相关新闻

AI辅助开发:不写代码的交付,需求与边界才是关键

AI辅助开发:不写代码的交付,需求与边界才是关键

有句话憋了很久:AI 辅助开发真正费神的,从来不是怎么让 AI 写出代码,而是怎么在一堆“能跑”的代码里,把需求、边界和验收标准一针一针地缝清楚。最近我用 AI 端到端交付了一个项目,从需求访谈、数据表设计、接口生成、…

2026/10/13 13:48:29 阅读更多 →
智能体护栏体系全解析:输入、行为、资源与输出四层防御实战

智能体护栏体系全解析:输入、行为、资源与输出四层防御实战

1. 从“6.agent 护栏”说起:为什么智能体需要一道安全防线第一次看到“6.agent 护栏”这个标题,很多人会愣一下:agent 我懂,护栏是什么?是给机器人装个物理围栏吗?其实不是。这里的“护栏”是一个软件层面的…

2026/10/13 13:48:29 阅读更多 →
Python零基础入门:从安装环境到跑通第一个程序

Python零基础入门:从安装环境到跑通第一个程序

经常有人问我:Python到底怎么入门?想学编程,第一个程序到底该写什么?我的回答向来是:先别去啃语法书,也别急着搞懂那些抽象的概念。先把Python环境装好,敲出第一行能跑的代码,让屏幕…

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

最新新闻

aspWebServer:Win11下免IIS调试经典ASP的轻量级方案

aspWebServer:Win11下免IIS调试经典ASP的轻量级方案

简介:本资源是一款专为ASP开发者打造的轻量级本地测试服务器工具aspWebServer,面向Web初学者、ASP传统项目维护人员及需脱离IIS快速验证脚本的开发人员,解决ASP网站在无IIS环境下的本地调试难题。压缩包共23个文件,含4个可执行程序…

2026/10/13 14:43:55 阅读更多 →
VS Code 调试 TypeScript 断点不生效?sourcemap 与 launch 配置全解析

VS Code 调试 TypeScript 断点不生效?sourcemap 与 launch 配置全解析

简介:这份资源面向希望在 Visual Studio Code 中高效调试 TypeScript 的开发者,尤其适合刚接触 TS 调试配置、需要快速跑通断点调试流程的初中级前端或 Node.js 工程师。包内共 10 个文件,以 5 个 json 配置、2 个 ts 源码为主,另…

2026/10/13 14:43:55 阅读更多 →
AnyPS5:面向PS5的轻量级本地API接口层设计与实践

AnyPS5:面向PS5的轻量级本地API接口层设计与实践

项目标题:“AnyPS5”这个名称本身带有强烈的指向性与模糊性并存的特征——它既像一个技术代号、产品命名,又像某种非官方生态的统称。在当前主流消费电子语境中,“PS5”是索尼PlayStation 5游戏主机的通用缩写,具有高度辨识度和用…

2026/10/13 14:43:55 阅读更多 →
Anaconda与Python版本对应关系及稳定环境搭建指南

Anaconda与Python版本对应关系及稳定环境搭建指南

很多刚接触 Python 的朋友,第一次装环境大概率都会卡在同一个地方:Anaconda 装完了,Python 也“有了”,但项目一跑就报错,去网上搜解决方案,满屏都是“版本不匹配”“依赖冲突”“换个 Python 版本试试”。…

2026/10/13 14:43:55 阅读更多 →
Python二级高频错题的认知根源:执行上下文、对象身份与隐式转换

Python二级高频错题的认知根源:执行上下文、对象身份与隐式转换

1. 这不是刷题笔记,而是一份Python二级考试的“认知地图”很多人把Python二级选择题当成纯记忆型考题——背语法、记函数名、默写缩写。我带过几届备考学生,发现一个反直觉现象:错得最多的选择题,往往不是冷门知识点,而…

2026/10/13 14:43:55 阅读更多 →
Paramics动态交通分配(DTA)从配置到收敛的实战指南

Paramics动态交通分配(DTA)从配置到收敛的实战指南

早高峰路网仿真相对于静态分配,永远是两个江湖。用过Paramics的同行应该都见过这种场面:模型搭得很细,信号周期也对得上,可当你把四阶段法分好的OD矩阵往路网上一放,奇怪的事情就来了——有的路段车子堵得水泄不通&…

2026/10/13 14:42:54 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 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/12 21:05:09 阅读更多 →
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/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练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/12 18:11:17 阅读更多 →