
Claude 为第六代游戏机设计 FPGA 视频缩放板,已能输出 1080p60
来源标题:Claude designed FPGA scaler board for 6th-gen consoles
Claude 设计出一款面向 PS2、Xbox、GameCube 等第六代游戏机的 FPGA 视频缩放板,可将 480i 分量视频与立体声转为 1080p60 HDMI 输出,延迟约 2 毫秒。该板基于 Sipeed Tang Mega 138K 模块(Gowin GW5AST-138)并搭载 ESP32-C5 提供 Wi-Fi,硬件、FPGA 设计、CPU 软件与固件均已开源。截至 2026 年 11 月 12 日,C-B 版板卡已实机跑通 PS2 的画面与声音输出。
以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。
为第六代游戏主机(PlayStation 2、Xbox、GameCube)设计的FPGA视频缩放器:输入480i分量视频和立体声,输出1080p60 HDMI,相对主机延迟约2 ms。核心是一块Sipeed Tang Mega 138K SOM(Gowin GW5AST-138),搭载在自行设计的载板上,另配一块Seeed XIAO ESP32-C5负责Wi-Fi。板卡、FPGA设计、FPGA内置CPU的软件以及ESP32的固件全部开源在此。
主机:分量视频(YPbPr,480i)+ 立体声音频 -> ADV7181D解码器、PCM1808音频转换器 -> GW5AST-138 FPGA 场写入DDR3 -> 运动自适应去隔行 + 降噪 -> SMAA -> FSR 1放大(EASU)-> FSR 1锐化(RCAS)-> 屏幕文字 -> HDMI编码 其硬核RISC-V CPU:启动、设置、帧锁定、屏幕文字 -> FPGA收发器 -> SN65DP159 -> 带声音的HDMI 1080p60 XIAO ESP32-C5:Wi-Fi、网页、更新、JTAG;通过SPI与CPU通信
状态(2026-11-12):板卡(rev C-B)已制成,可将主机的画面和声音输出到显示器和采集设备。下表是它目前在板卡上的实际表现。已测试的主机为PlayStation 2;Xbox或GameCube使用其分量线缆输出相同信号(480i、YPbPr、59.94 Hz),尚未尝试。
板卡rev C-B(hardware/av-board/),设计图(渲染图及俯视图)与实物:散热片下是SOM,右侧是XIAO及其天线;后边缘依次为HDMI输出、两个音频插孔、电源(USB-C)和三个分量视频插孔。
一帧送往显示器的画面,屏幕显示已开启(直接从FPGA读回:未经过相机,也未经过采集设备)。
输入 480i分量(YPbPr)经ADV7181D输入,以13.5 MHz行锁定采样;立体声模拟音频经PCM1808输入。解码器的采样相位可设置,也可针对主机的像素进行调优(在静态画面上尝试所有相位,保留最锐利的)。
去隔行 基于最近四个场的运动自适应,场数据保存在SOM的DDR3中:场内的行按原样使用,行间的行在无运动处取自前一场,有运动处取自相邻行。也可选择Bob和Weave方式。
降噪 在画面静止处,每个采样与前一帧的同一采样取平均(可关闭,或三档强度)。
抗锯齿 在480线画面上运行SMAA 1x:亮度边缘、正交与对角图案、保留角点。另有一个视图可在画面原位标出检测结果(边缘、混合),用于调优。
缩放 FSR 1的边缘自适应上采样(EASU)至1440 x 1080(4:3)或1920 x 1080(16:9,用于游戏宽屏模式)。可显示源画面的任意部分:游戏画面周围的黑边会被测量并排除,使画面填满屏幕(也可手动设置区域)。
锐化 对亮度运行FSR 1的RCAS,16档,含噪声项(像素为噪声而非细节时减弱)。
时序 输出帧与输入场保持同步(CPU微调时钟发生器:误差在10 us内,不重复也不丢场)。一帧由仍在输入的场生成:从采集一行到送出约2 ms(使用整场则为16.8 ms)。
输出 由FPGA自带的收发器输出1080p60(59.94 Hz)HDMI;主机声音作为HDMI音频(两声道L-PCM);包含AVI和音频InfoFrame。
屏幕显示 屏幕显示:输入与输出信息、对画面所做的处理、延迟、锁定状态、FPGA温度。
控制 XIAO上的网页:所有设置(更改即生效,掉电保持)、状态、从FPGA读回的输出屏幕截图、通过Wi-Fi更新固件。
效果对比 《杀戮地带》(PS2,宽屏模式)的两帧冻结画面,各含输入与输出。“普通方式”是主机送出的两个480i场,织成一帧并拉伸到1080p(双线性),大致相当于简单缩放器或显示器所做的。“本缩放器”是其1080p输出(运动自适应去隔行、中等降噪、SMAA开启对角与角点、边缘阈值12、FSR 1锐化8/16)。未经过任何相机或采集设备:场从FPGA内存读出,输出从最后一级逐像素读回(gateware/tools/still.py)。
拖动对比:一个页面上并排显示普通画面与缩放器画面,中间有一条可拖动的线,最大可放大到每像素四个屏幕像素(docs/compare/index.html)。
图片本身位于docs/compare/:
画面的处理路径是逻辑(gateware/rtl/):每个像素,输出148.5 MHz。每个模块在Python中有一个模型(gateware/sim/),整条路径与模型逐像素仿真对比:去隔行器、SMAA、缩放器和锐化给出的画面与模型完全一致。
其余一切运行在FPGA的硬核CPU上(GW5AST内的Andes A25 RISC-V,gateware/sw/,无操作系统):它初始化板卡上的芯片、保存设置、寻找画面边框、调优采样相位、保持输出与输入同步、写入屏幕文字。新程序一秒内即可加载,无需新的比特流。
XIAO ESP32-C5(firmware/xiao-wifi/)是入口:Wi-Fi、网页、更新,以及用于加载比特流的JTAG。它通过SPI以小型消息与CPU通信,在断电期间保存设置,并承载CPU的程序。
该设计占用FPGA 16%的逻辑、75%的块RAM和15%的乘法器。
延迟 画面顶部2.0 ms(底部约2.5 ms,由两种扫描速率导致),此时画面由正在输入的场生成;使用整场则为16.8 ms。数据来自FPGA自身对帧起始与场的计时;尚未从外部测量,且显示器会额外增加延迟。
帧锁定 锁定在其标记的10 us内,时钟微调约-57 ppm(此主机对此板卡);从偏差5 ms开始,约20 s后同步。
降噪
(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。