基于Intel MAX 10 FPGA实现Z80与8051单板计算机
以下文章来源于OpenFPGA,作者碎碎思
项目背景
在 1970s 至 1980s,像 Zilog Z80 和 Intel MCS-51(8051) 这样的 8 位处理器广泛用于家用电脑、嵌入式设备和各种单片机系统。

它们设计简单、指令清晰、学习曲线浅,是许多人的入门 CPU。
而现在,随着 FPGA 的普及,我们可以在 FPGA 内核中重新实现这些经典 CPU,并构建真实可运行的单板计算机。

这个项目正是这样的一个尝试:
在一块 Intel MAX 10 FPGA 开发板上实现 Z80 或 8051 单板计算机(SBC),让它能运行原始汇编程序、驱动外围设备、显示输出并与用户交互。
项目使用的硬件平台
主板采用的是 Intel MAX 10 FPGA:
是一款基于 Intel 14nm 工艺的低功耗 FPGA
IDE 支持 Quartus Prime
支持配置 Flash、SD 卡、GPIO 等外设

开发者选用这块板子的原因是:
成本低
易于学习 FPGA
有足够的资源用于模拟 8 位 CPU
支持丰富引脚扩展

SBC 核心架构
项目实现了两套单板计算机系统:
Z80 单板电脑
典型架构包括:
Zilog Z80 CPU 软核
内存(RAM / ROM)
串口 UART
视频输出控制器
键盘输入模块
整个 CPU 子系统在 FPGA 内部运行,执行传统汇编指令,像真实的 Z80 一样工作。

MCS-51 (8051) 单板电脑
类似地,这部分实现包括:
8051 CPU 软核
程序 ROM
I/O 模块
串口 / UART
计时器和控制逻辑
8051 是最经典的单片机之一,也是微控制器课程教学中的主力架构之一。


Zilog Z80 SBC 基于 MAX10 FPGA
对于运行 Microsoft BASIC 4.7b 版本的最小 Z80 单板计算机,需要 8kB 的 ROM 空间和 4kB 的 RAM 空间。此外,还有大量的逻辑元件和存储位可用,这有利于未来的扩展。
SBC 系统使用 Quartus II 18.1 版本编译和测试。只需打开 Quartus II 并恢复归档文件即可。
项目文件夹还包含 SRAM 目标文件 (SOF) 和可编程目标文件 (POF),无需编译即可使用。
将 Micro USB 数据线连接到 MAX10 开发板,并写入 SOF 或 POF 文件。SOF 文件在断电重启后会丢失。POF 文件会存储在 FLASH 闪存中,每次上电后都会被激活。
下面这段 BASIC 代码只是在 Z80 SBC I/O 端口上从 0 计数到 255。
05 REM COUNT 0 To 255 on PORT 145 (Z80) 10 FOR I = 0 TO 255 20 PRINT I, 30 OUT 145, 255-I 35 FOR J = 0 TO 99 : NEXT J 40 NEXT I 45 FOR K = 0 TO 4095 : NEXT K 46 OUT 145,255 50 END
以下代码使用 Microsoft BASIC 4.7b 版本,在 Z80 上实现 ASCIIART 功能,并采用循环方式运行。要退出循环,请按 Ctrl+C。
10 FOR Y=-12 TO 12 20 FOR X=-39 TO 39 30 CA=X*0.0458 40 CB=Y*0.08333 50 A=CA 60 B=CB 70 FOR I=0 TO 15 80 T=A*A-B*B+CA 90 B=2*A*B+CB 100 A=T 110 IF (A*A+B*B)>4 THEN GOTO 200 120 NEXT I 130 PRINT" "; 140 GOTO 210 200 IF I>9 THEN I=I+7 205 PRINT CHR$(48+I); 210 NEXT X 220 PRINT 230 NEXT Y 240 PRINT 250 GOTO 10
基于 MAX10 FPGA 的 Intel MCS-51 单板计算机
有两个项目镜像可供直接使用。英特尔最初将 BASIC-52 Ver 1.1 发布到公共领域。但该代码包含大量漏洞和隐藏的恶意信息。
最后一个版本是 BASIC-52 Ver 1.31,由 Hans-Jürgen Böhling 于 2001 年 2 月发布。Hans-Jürgen Böhling 还发布了 I2C 支持的扩展代码。
8kB ROM 和 32kB RAM,频率 50 MHz:
此镜像仅包含 8kB 代码内存,不支持任何 I2C 扩展。系统包含 32kB RAM 用于用户程序。系统时钟频率为 50MHz,由 MAX10 内部锁相环 (PLL) 从 12MHz 频率转换而来。
16kB ROM 和 16kB RAM,频率为 11.059200 MHz:
此镜像包含 16kB 代码内存,支持 I2C 扩展。系统包含 16kB RAM 用于用户程序。系统时钟频率为 11.059200 MHz。即使在 11.059200 MHz 的频率下,该系统的性能也比传统的 12T 内核快 10 倍。I2C 功能在 11.059200 MHz 的系统时钟频率下运行良好。
以下程序使用 BASIC-52 语言,在 PORT1 端口上将一个 LED 从最低有效位 (LSB) 移到最高有效位 (MSB),并重复执行。PORT1 端口映射到 8 个 LED。
01 REM 8 LED SHIFT 02 REM SHIFT LEFT AND RIGHT 10 LED = 1 20 IF LED <= 80H THEN PORT1 = 0FFH.XOR.LED ELSE GOTO 1000 30 LED = LED * 2 40 FOR J = 0 TO 999 : NEXT J 50 GOTO 20 900 REM RIGHT SHIFT 1000 LED = 080H 1100 IF LED >= 1 THEN PORT1 = 0FFH.XOR.LED ELSE GOTO 10 1120 LED = LED/2 1130 FOR J = 0 TO 999 : NEXT J 1200 GOTO 1100
以下程序是使用 BASIC-52 编写的 ASCIIART 程序。
01 REM ASCII ART SOFT CPU 02 REM ASCII ART FOR MAX10 03 XTAL=50000000 05 TIME=0 : CLOCK 1 10 FOR Y=-12 TO 12 20 FOR X=-39 TO 39 30 CA=X*0.0458 40 CB=Y*0.08333 50 A=CA 60 B=CB 70 I=0 80 T=A*A-B*B+CA 90 B=2*A*B+CB 100 A=T 110 IF (A*A+B*B)>4 THEN GOTO 150 120 I=I+1 : IF I<=15 THEN GOTO 80 130 PRINT " ", 140 GOTO 170 150 IF I>9 THEN I=I+7 160 PRINT CHR(48+I), 170 NEXT X 180 PRINT 190 NEXT Y 200 PRINT TIME 210 GOTO 10 220 END
我们可以注意到上面列出的 Z80 BASIC 和 BASIC-52 之间只有非常细微的差别。如果单板计算机运行在 11.059200 MHz 频率,则需要注释掉第 3 行。上述程序适用于 50 MHz 系统。
否则,我们可以在命令提示符中声明系统频率。
XTAL = 50000000
上述ASCIIART代码计算程序运行所需的时间(以秒为单位)。因此,为了精确计算时间,我们需要设置系统时钟频率。
我们还可以根据需要实现其他功能以及 ROM、RAM 组合。
可用链接
https://github.com/mit41301/10M08SAM153C8G_Zilog-Z80_Intel-8051
https://www.hackster.io/mit41301/z80-and-mcs-51-sbc-on-a-max-10-fpga-742a9c
结语
这个项目展示了一个非常有趣且实用的方向:
用 FPGA 重建经典单板计算机,让你从软核 CPU 到外设设计全面理解嵌入式系统。
对于:
FPGA 初学者
想理解 CPU / 单片机架构
喜欢复古计算与硬件实现
想做软硬件协同系统实验
这个项目都有很强的启发意义。
- 基于Intel MAX 10 FPGA实现Z80与8051单板计算机
- 高压开关柜触头母排电缆接头电力测温解决方案:小体积+无需布线+户外防水
- GTC最大彩蛋!黄仁勋闪电出手,终结“龙虾”安全危机
- 南芯科技推出大带宽高精度集成式电流传感器SCS81XX系列
- 基于瑞萨R7FA2E1A72DFL MCU的智能空调伴侣方案(下)
- MOSFET热载流子效应退化测试解析
- 基于无线级联方案的 DMX512 灯光控制系统设计与实现
- 从20%到85%:室内钙钛矿利用效率跃升的关键——微光充电芯片
- 功率放大器在空气耦合超声波斜入射的钢板缺陷检测中的应用
- 一文看懂PCIe中断机制
- 光谱椭偏术在二维材料光学表征中的应用:从石墨烯到TMDs
- 智能建筑中的直流固变(DC-SST):面向800V直流配电系统的微型化设计与能效评估
- 天硕详解高可靠国产平台SSD的“可溯源”价值,70%的疑难故障与固件相关?
- 国民N32G435 MCU微控制器LED大灯电源驱动与控制方案
- 如何打造高可靠性连接器
- MWC2026:6G狂飙!华为、高通、英伟达等五大巨头,亮出哪些突破性技术