0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于Intel MAX 10 FPGA实现Z80与8051单板计算机

FPGA技术江湖 来源:OpenFPGA 2026-03-20 09:26 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

以下文章来源于OpenFPGA,作者碎碎思

项目背景

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

919e0f54-232e-11f1-90a1-92fbcf53809c.png

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

91fd36b4-232e-11f1-90a1-92fbcf53809c.png

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

92596510-232e-11f1-90a1-92fbcf53809c.png

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

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

项目使用的硬件平台

主板采用的是 Intel MAX 10 FPGA:

92b93206-232e-11f1-90a1-92fbcf53809c.png

是一款基于 Intel 14nm 工艺的低功耗 FPGA

IDE 支持 Quartus Prime

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

9313347c-232e-11f1-90a1-92fbcf53809c.png

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

成本低

易于学习 FPGA

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

支持丰富引脚扩展

93720bb4-232e-11f1-90a1-92fbcf53809c.png

SBC 核心架构

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

Z80 单板电脑

典型架构包括:

Zilog Z80 CPU 软核

内存(RAM / ROM

串口 UART

视频输出控制器

键盘输入模块

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

93cdf0e6-232e-11f1-90a1-92fbcf53809c.png

MCS-51 (8051) 单板电脑

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

8051 CPU 软核

程序 ROM

I/O 模块

串口 / UART

计时器和控制逻辑

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

942c998e-232e-11f1-90a1-92fbcf53809c.png

9489a340-232e-11f1-90a1-92fbcf53809c.png

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

喜欢复古计算与硬件实现

想做软硬件协同系统实验

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    20378

    浏览量

    255610
  • FPGA
    +关注

    关注

    1664

    文章

    22571

    浏览量

    640757
  • 单片机
    +关注

    关注

    6078

    文章

    45629

    浏览量

    675361
  • 单板电脑
    +关注

    关注

    0

    文章

    11

    浏览量

    7865

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

文章出处:【微信号:HXSLH1010101010,微信公众号:FPGA技术江湖】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    GE最新双核Intel Core处理器的单板计算机

    继最近发布三款基于四核第三代Intel Core处理器的加固单板计算机之后,GE智能平台发布了最新的基于双核Intel Core处理器的单板计算机。SBC625, XVR15 和 XC
    发表于 06-19 09:32 2563次阅读
    GE最新双核<b class='flag-5'>Intel</b> Core处理器的<b class='flag-5'>单板计算机</b>

    【作品合集】赛昉科技VisionFive 2单板计算机开发板测评

    赛昉科技VisionFive 2单板计算机开发板测评作品合集 产品介绍: 昉·星光 2是全球首款集成了3D GPU的高性能量产RISC-V单板计算机,搭载昉·惊鸿-7110(型号:JH-7110
    发表于 09-04 09:08

    基于PowerPC的单板计算机该怎样去设计?

    基于PowerPC的单板计算机该怎样去设计?实时操作系统VxWorks的BSP开发过程是怎样进行的?
    发表于 04-27 06:37

    如何使用工业相机和单板计算机组建视觉采集系统,通过利用labview实现该系统的远程控制和图像采集?

    前面板来实现。请问各位老哥这种方法可行吗?或者有什么更好的思路可以交流一下。另外听说可以通过单板计算机运行wince系统实现labview的嵌入式开发,这样是否可行?
    发表于 05-08 17:21

    构建基于WDC65C02S和Z80 CPU的微型计算机

    描述Gerber_PCB_CPLD_EPM3064_Programmer_PCB我正在寻找一些旧零件来构建基于 WDC65C02S 和 Z80 CPU 的微型计算机。这些板将帮助我对一些
    发表于 08-31 06:20

    什么是单板计算机

    单板计算机基于单一电路板而构建的完整计算机,包括微处理器、内存、以太网、I/O、视频和音频输出。设计的核心架构是微处理器。第一台真正的单板计算机可能是基于 Intel 8080 CPU
    发表于 03-09 14:51 1.8w次阅读

    2014国外创客最具创意10大DIY单板计算机项目

    在2014即将结束之际,厂商积极抓住机会发布新的单板计算机(SBC)设计。此外,今年创客DIY设计的单板计算机同样很吸引眼球。本文是国外10大有创意的项目。
    的头像 发表于 12-29 16:57 4.1w次阅读
    2014国外创客最具创意<b class='flag-5'>10</b>大DIY<b class='flag-5'>单板计算机</b>项目

    基于Intel处理器技术的高性能单板计算机产品

    英国并行科技公司(CCT)作为生产高性能嵌入式系统的世界级企业,相对于其它公司产品全面的各层次覆盖,并行公司专注于设计和开发基于Intel处理器技术的高性能单板计算机产品。
    的头像 发表于 04-13 07:56 3195次阅读

    STD Bus 8085单板计算机开源分享

    电子发烧友网站提供《STD Bus 8085单板计算机开源分享.zip》资料免费下载
    发表于 08-11 09:34 3次下载
    STD Bus 8085<b class='flag-5'>单板计算机</b>开源分享

    Z80 MBC3单板计算机开源

    电子发烧友网站提供《Z80 MBC3单板计算机开源.zip》资料免费下载
    发表于 11-17 10:23 5次下载
    <b class='flag-5'>Z80</b> MBC3<b class='flag-5'>单板计算机</b>开源

    单板计算机为什么对于嵌入式计算设计很重要?

    几乎所有计算解决方案都嵌入了单板计算机。从智能设备到交互式数字标牌,有大量的应用程序在幕后部署了单板计算机。为什么将单板计算机嵌入到所有这些应用程序中?主要原因是它是所有应用程序的“大
    的头像 发表于 09-27 16:15 1924次阅读
    <b class='flag-5'>单板计算机</b>为什么对于嵌入式<b class='flag-5'>计算</b>设计很重要?

    如何选择适合教育用途的单板计算机?

    在当今数字化时代,计算机科学和编程已经成为教育中不可或缺的一部分。为了帮助学生培养解决问题的能力、创造力和创新思维,单板计算机(SBCs)成为了一种强大的工具。单板计算机(SBCs)是一种集成
    的头像 发表于 09-01 10:26 1734次阅读

    单板计算机是什么?它与其他计算机有何不同?

    单板计算机是什么?它与其他计算机有何不同? 单板计算机(Single Board Computer,SBC)是一种集成了所有计算机部件的完整计算机
    的头像 发表于 12-15 09:58 3366次阅读

    使用逻辑和转换优化单板计算机(SBC)系统

    电子发烧友网站提供《使用逻辑和转换优化单板计算机(SBC)系统.pdf》资料免费下载
    发表于 09-21 11:28 1次下载
    使用逻辑和转换优化<b class='flag-5'>单板计算机</b>(SBC)系统

    贸泽电子开售全新Arduino UNO Q单板计算机

    贸泽电子开售全新Arduino UNO Q单板计算机。Arduino UNO Q单板计算机(SBC)将高性能计算与实时控制结合,提供理想的创新平台。
    的头像 发表于 11-08 09:50 1690次阅读