
开源项目CYAN用FPGA完整实现SGI Indigo工作站
来源标题:Project Cyan: A Complete Indigo R4K Workstation as an FPGA SoC in RTL Verilog
开源项目CYAN在FPGA上完整实现了SGI Indigo/IP20兼容工作站,并非纯软件模拟器。其RTL已在Xilinx KCU105上综合运行,可启动IRIX 5.3、运行Xsgi并输出1024x768桌面。CPU子系统HaterMIPS运行频率100MHz。
以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。
CYAN 是一个开源的 FPGA 实现,兼容 SGI Indigo/IP20 工作站。该设计包含 R4000 级 CPU 子系统、内存与 I/O 控制器、兼容 LG1 的图形、SCSI、以太网、串行输入,以及兼容 DSP56001 的音频通路。主要目标平台是 Xilinx KCU105。CYAN 是一个独立项目,与 Silicon Graphics、MIPS、Motorola、AMD 或 Xilinx 无隶属关系,也未获其背书。本项目不接受打赏。如果你有真实的 SGI 硬件或其他复古计算硬件愿意捐赠给一个合适的归宿,请联系 src@lispm.net。
CYAN 是一个可运行的工作站实现,而非外设集合或纯软件模拟器。公开的 RTL 已在 KCU105 上综合并配合原版 IRIX 5.3 软件栈运行:它能到达图形 PROM、从模拟 SCSI 磁盘启动、启动 Xsgi、通过 HDMI 呈现一致的 1024x768 桌面、通过模拟 SCC 接受键盘和鼠标输入、拉起 guest 侧的 SEEQ 以太网,并正常运行。HaterMIPS CPU/缓存岛运行在 100 MHz,在整数核心、CP0/TLB、缓存和浮点单元上具备广泛的架构级、差分、原版诊断和全系统覆盖。CYAN 的 LG1、HPC1、存储、网络、RTC、中断、DMA 和 DSP56001/音频通路均为生产级 RTL,配有针对子系统和组合系统的回归测试。DSP 通路执行已安装的固件协议、常规 DMA、SSI 帧和 S/PDIF 生成;剩余的物理音频与穷尽式遗留行为验证被明确跟踪,而非用桩代码代替。硬件在很大程度上已经稳定、快速且正确。CYAN 是一个完整的工作站级 SoC,而非 CPU 演示。仓库包含面向机器的 IP20 硬件,以及在 KCU105 上运行它所需的面向板卡的适配器。
flowchart LR CPU["R4000-class CPU<br/>TLB, FPU, I/D/S caches"] MC["IP20 memory controller"] HPC["HPC1, INT2 and DMA"] PROM["512 KiB PROM ROM"] NVRAM["93CS56 NVRAM"] RTC["IP20 real-time clock<br/>calendar, timers and RAM"] SCSI["WD33C93 SCSI<br/>raw-disk target"] SD["SD card over SPI"] ENET["HPC1 / SEEQ 80C03 Ethernet<br/>GMII MAC and SGMII"] SCC["Z8530 SCC<br/>console, keyboard and mouse"] DSP["DSP56001<br/>host, DMA, SSI and S/PDIF"] LG1["LG1 graphics<br/>REX, VC1, XMAP and palette"] VRAM["DDR4-backed framebuffer"] HDMI["1024x768 scanout<br/>ADV7511 HDMI"] DDR["KCU105 DDR4 / MIG"] MGMT["Raw-Ethernet management<br/>telemetry, input, capture and trace"] CPU <--> MC PROM --> MC MC <--> DDR MC <--> HPC HPC <--> NVRAM HPC <--> RTC HPC <--> SCSI <--> SD HPC <--> ENET HPC <--> SCC HPC <--> DSP DSP <--> RTC MC <--> LG1 <--> VRAM VRAM <--> DDR VRAM --> HDMI MGMT -.-> CPU MGMT -.-> SCC MGMT -.-> LG1 MGMT -.-> HDMI Loading
包含的机器硬件
子系统 本仓库中存在的硬件
CPU 一个 64 位 R4000 级 CPU 核心,包含 CP0、异常、TLB、整数 ALU、乘除法、浮点单元,以及独立的指令缓存、数据缓存和二级缓存。在 KCU105 构建中,CPU/缓存层级作为一个 100 MHz 的独立时钟岛运行,而模拟机器的其余部分保持在 50 MHz。
内存 IP20 内存控制器、CPU 的缓存与非缓存通路、一致性 DMA 接口、PROM 映射,以及通往 KCU105 512 位 DDR4 MIG 接口的仲裁。主内存和图形帧缓冲通过显式的板级仲裁器共享 DDR4。
系统 I/O HPC1、INT2 中断控制、定时器和 DMA 机制,包括存储、以太网、DSP、图形与 CPU/缓存流量之间的协调。
存储 一个兼容 WD33C93 的 SCSI 控制器、HPC1 SCSI DMA、一个裸 SCSI 磁盘目标,以及一个 SD/SPI 块后端。磁盘镜像和操作系统软件不随项目分发。
网络 一个兼容 SEEQ 80C03 的 guest 以太网接口、HPC1 以太网寄存器与 DMA、一个字节流 GMII MAC,以及 KCU105 SGMII/PHY 集成。CYAN 管理帧与 guest 以太网流量相互隔离。
串行与输入 一个兼容 Z8530 的 SCC、串行控制台路由、键盘和鼠标字节通路、事件跟踪,以及一个主机输入桥。在 KCU105 上,控制器输入经由管理端点到达,并沿模拟 SCC 通路传递。
图形 一条可综合的 LG1 流水线:REX 命令前端与上下文队列、绘图迭代器、线/矩形后端、裁剪与写掩码、行缓存与写合并器、VC1 时序/状态、XMAP/DID 选择、调色板解析、硬件光标,以及帧缓冲扫描输出。
显示 DDR4 支撑的 LG1 VRAM、独立的 64 MHz LG1 串行时钟域与 65 MHz 视频时钟域、精确的帧/标签处理、1024x768 HDMI 呈现流水线、ADV7511 配置,以及 RGB/帧捕获插桩。
DSP 与音频 一个兼容 DSP56001 的核心,包含解码器、ALU、地址生成单元、程序/数据存储器、主机接口、中断、DMA、外设、SSI 帧,以及向 KCU105 HDMI 输出发送 S/PDIF 的传输通路。
非易失状态 一个兼容 93CS56 的串行 EEPROM,由外部提供的 128 字镜像初始化。不随项目分发任何机器特定的 EEPROM 内容。
计时 一个 IP20 实时时钟,具备兼容 DP8572A 的分组寄存器、BCD 日历计数器、百分之一秒滴答、时间保存状态和可分页 RAM。DSP 通过其兼容 DP8573 的 Y 内存窗口访问同一时钟。该设计还包含 HPC1 8254 可编程定时器和 MC RPSS 计数器。
管理与可观测性 一个带版本号的裸以太网端点,提供板卡/视频/扫描输出状态、帧与点捕获、键盘/鼠标注入、SCC 与 LG1 跟踪、调试探针,以及受保护的可变控制项。独立的网络侦听命令为只收模式。
KCU105 实现 板级顶层将机器连接到以下物理资源:
主要生成的时钟域为:CPU/缓存岛 100 MHz、IP20 机器 50 MHz、LG1 串行逻辑约 64 MHz,
(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。