在 FPGA 上重生的经典:实现 Z80 与 8051 单板电脑

FPGA技术江湖 2026-03-19 08:52

项目背景

在 FPGA 上重生的经典:实现 Z80 与 8051 单板电脑图1

在 1970s 至 1980s,像 Zilog Z80 和 Intel MCS-51(8051) 这样的 8 位处理器广泛用于家用电脑、嵌入式设备和各种单片机系统。

在 FPGA 上重生的经典:实现 Z80 与 8051 单板电脑图2

它们设计简单、指令清晰、学习曲线浅,是许多人的入门 CPU。

在 FPGA 上重生的经典:实现 Z80 与 8051 单板电脑图3

而现在,随着 FPGA 的普及,我们可以在 FPGA 内核中重新实现这些经典 CPU,并构建真实可运行的单板计算机。

在 FPGA 上重生的经典:实现 Z80 与 8051 单板电脑图4

这个项目正是这样的一个尝试:

在一块 Intel MAX 10 FPGA 开发板上实现 Z80 或 8051 单板计算机(SBC),让它能运行原始汇编程序、驱动外围设备、显示输出并与用户交互。

项目使用的硬件平台

主板采用的是 Intel MAX 10 FPGA:

在 FPGA 上重生的经典:实现 Z80 与 8051 单板电脑图5
  • 是一款基于 Intel 14nm 工艺的低功耗 FPGA

  • IDE 支持 Quartus Prime

  • 支持配置 Flash、SD 卡、GPIO 等外设

在 FPGA 上重生的经典:实现 Z80 与 8051 单板电脑图6

开发者选用这块板子的原因是:

✔ 成本低

✔ 易于学习 FPGA

✔ 有足够的资源用于模拟 8 位 CPU

✔ 支持丰富引脚扩展

在 FPGA 上重生的经典:实现 Z80 与 8051 单板电脑图7

💡 SBC 核心架构

项目实现了两套单板计算机系统:

🧠 1️⃣ Z80 单板电脑

典型架构包括:

  • Zilog Z80 CPU 软核

  • 内存(RAM / ROM)

  • 串口 UART

  • 视频输出控制器

  • 键盘输入模块

整个 CPU 子系统在 FPGA 内部运行,执行传统汇编指令,像真实的 Z80 一样工作。

在 FPGA 上重生的经典:实现 Z80 与 8051 单板电脑图8

🕹️ 2️⃣ MCS-51 (8051) 单板电脑

类似地,这部分实现包括:

  • 8051 CPU 软核

  • 程序 ROM

  • I/O 模块

  • 串口 / UART

  • 计时器和控制逻辑

8051 是最经典的单片机之一,也是微控制器课程教学中的主力架构之一。

在 FPGA 上重生的经典:实现 Z80 与 8051 单板电脑图9
在 FPGA 上重生的经典:实现 Z80 与 8051 单板电脑图10

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 / 单片机架构

✔ 喜欢复古计算与硬件实现

✔ 想做软硬件协同系统实验

这个项目都有很强的启发意义。

END

声明:内容取材于网络,仅代表作者观点,如有内容违规问题,请联系处理。 
FPGA 电脑
more
曝某车企多员工电脑被远程控制!
联想 2025 年 Q3 营收同比增长 15%;PC、智能手机和平板电脑推动 12% 增长
网传某车企疑似「养龙虾」致员工电脑集体失控;有人购买iPhone后换屏退货赚差价?苹果回应;曝梁文锋将携DeepSeek V4撞上姚顺雨
2025年中国车载电脑行业产业链、重点企业及未来前景展望:汽车智能化浪潮兴起,车载电脑规模达143.68亿元[图]
“养龙虾”惹的祸?网传某车企员工电脑集体失控!
华为MatePad Edge官宣:平板秒变笔记本电脑,搭载PC级麒麟 9 芯片
双11配置推荐第五期:给女/男朋友配的电脑
【电脑】Q3全球PC市场TOP5排名出炉 你用的哪家电脑?
戴尔,商用电脑全线提价!
2025年第三季度全球平板电脑市场出货量同比增长4%,2026年前景强劲
Copyright © 2025 成都区角科技有限公司
蜀ICP备2025143415号-1
  
川公网安备51015602001305号