计算机硬件小游戏,6 个芯片打造复古经典计算机:215 色显示,能编程能玩小游戏...

本文主要是介绍计算机硬件小游戏,6 个芯片打造复古经典计算机:215 色显示,能编程能玩小游戏...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

机器之心报道

机器之心编辑部

在很多人看来,打造一台家用的计算机需要太多硬件:主板、CPU 等等。但实现一个 8 位的计算机远没有这么复杂。近日,一位名为 Matt Sarnoff 的开发者就仅用了 6 个芯片就组装好了一台计算机。它不仅能有音视频输入输出,还可以完成编程任务。不愧是经典又复古的 8 位电脑。

e46fcfb5b219283a269163b4bf2b0fdb.png

时至今日,8-bit 风格的电脑依然有着不朽的魅力。那么,是否可以使用经典的 CPU 来完成现在的计算任务,同时保留 8-bit 的风格呢?

近日,一位名为 Matt Sarnoff 的开发者开发了一款经典的家用计算机,名为 Amethyst。它有一个集成式的键盘,能够生成声音和图像。其中有一个高级编程语言,能够让用户自己编程。更重要的是,这个计算机只需要 6 块芯片,其中包括一个 ATMEGA1284P 的 CPU,一个 USB 接口芯片,以及 4 个简单的集成电路。

可以看到,你可以在上面完成一些基本操作。这个计算机还可以显示彩色图像。

8118344707246e0fbd90da20a63f6c38.png

那么,怎样用这些简单的硬件组装一台计算机呢?

Amethyst :六个芯片打造家用计算机

据作者介绍,Amethyst 是一种复古风格的家用九三级,围绕 ATmega1284 微控制器打造。它能够合成 NTSC 视频输出,有着高色彩和高分辨率模式、单声道音频输出和一个完整的机械键盘。

1f92ce905e204a875939faa4b8c3a4d2.png

该计算机使用 Forth 编程语言,有图像和声音指令、调试器和屏幕编辑功能。它采用一个 USB Type-B 接口,提供 5V 的电源和与一台 PC 的连接沟通。

此外,Amethyst 兼容 Optiboot (Arduino) bootloader,能够将固件加载到上面,不需要特殊的编程硬件。

硬件配置

在硬件配置上,首先是 CPU。作者使用了 ATMEGA1284P。这是一个 2008 年发布的 CPU,有 128KB 的闪存和 16KB 的内存。它的运行主频最高达到 20MHZ,有一个内置的序列界面控制器以及 32 位的输入/输出 pin。

如何让这个电脑输入和输出视频?作者找出了 4 个 7400 芯片——两个多路复用器和两个并行到串行移位寄存器。

具体而言,他将 CPU 上的 8 个 pin 设置并行,将其同时传入 4 个芯片中,从而将它们转换高速串行比特流。通过这种方式,他能够让计算机在屏幕上显示出 215 种不同的颜色。当然,这样带来的代价也很大,为了跟上屏幕刷新,CPU 只剩下 25% 的算力处理其他任务了。

909fb2774254cde6c9377b3a8a8fd295.png

计算机的整体电路图示。这是一个单板计算机,使用 6 个芯片,生成 215 色视频。键盘直接焊在板子上,同样支持音频和四个串行 I/O 链接,用于外围任务,如游戏控制或存储设备。该电脑使用了自带的 Forth 虚拟机,提供编程环境。

编程语言和环境

由于最终目的是提供一个轻量级的编程环境,所以作者选择了 Forth 而不是 Basic。Forth 是嵌入式系统的语言,具有交互性以及可高效编译代码的功能,可以在有限空间内发挥作用。由于 1284P 不能够直接从 RAM 中执行已编译的代码,因此将代码编译为中间字节代码,之后该字节码将作为数据提供给从 1284P 的虚拟机。虚拟机的代码是用汇编代码编写的,并进行了适当的手动调整以使其尽可能高效。

作者能够使用先进的激光切割机,因此设计以及制造木箱(wooden case)并不是很困难。机械键盘的开关直接焊接在 Amethyst 的单印刷电路板上,这个键盘的空格键在 Enter 键上方。

097cf16d12b82ba645d26110c49f356b.png

作者所用机械键盘的空格键不像一般键盘那样位于中间,而在 Enter 键的上面。

效果展示

bdc93c34c73e32492f0d256376e2b8b8.png

从上图来看,这台电脑提供了一个命令行界面,用户可以进行各种操作。

更有趣的是,电脑还自带了一个游戏。游戏中,玩家扮演机器人「#」,并从一大推字符中寻找「kitten」。

bb9375fc83e31c5b4929c3d195f4aad5.png

寻找 kitten 的游戏界面,可见这个计算机能够完成很多任务,具有一定的性能。

总硬件清单

那么这个别具风格的家用计算机具体需要哪些硬件呢?请看以下硬件清单:

以 14.318 MHz 运行的 ATmega1284 微控制器(8 位)

16KB 内存储器(16352 字节可用于应用程序)

4KB 非易失性 EEPROM 存储

具有 Cherry MX 键开关的机械键盘

NTSC 彩色和单色复合视频输出:

256 色、16 色和 4 色位图图形,分辨率最高为 160x200

分辨率高达 640x200 的单色位图图形

40x25 和 80x25 单色文本模式

40x25 彩色文本模式

40x25 彩色平铺图形模式

单声道音频输出(脉冲波或 PWM)

USB 串行通信速度高达 57600 波特

四个 SPI 扩展端口,用于外设、控制器和存储设备

仅 6 个芯片(ATmega1284、FT320X、2 个 74HC157 和 2 个 74HC166)

完整的原理图、PCB 文件以及系统代码都可以在 Github 里找到。同时,作者也表示欢迎读者通过已提供的信息构建自己的 Amethyst 或者改进其已有的设计。

参考连接:

https://spectrum.ieee.org/geek-life/hands-on/build-this-8bit-home-computer-with-just-5-chips

https://github.com/74hc595/Amethyst/blob/master/README.md

这篇关于计算机硬件小游戏,6 个芯片打造复古经典计算机:215 色显示,能编程能玩小游戏...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/319960

相关文章

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

Java并发编程必备之Synchronized关键字深入解析

《Java并发编程必备之Synchronized关键字深入解析》本文我们深入探索了Java中的Synchronized关键字,包括其互斥性和可重入性的特性,文章详细介绍了Synchronized的三种... 目录一、前言二、Synchronized关键字2.1 Synchronized的特性1. 互斥2.

Python异步编程中asyncio.gather的并发控制详解

《Python异步编程中asyncio.gather的并发控制详解》在Python异步编程生态中,asyncio.gather是并发任务调度的核心工具,本文将通过实际场景和代码示例,展示如何结合信号量... 目录一、asyncio.gather的原始行为解析二、信号量控制法:给并发装上"节流阀"三、进阶控制

Linux虚拟机不显示IP地址的解决方法(亲测有效)

《Linux虚拟机不显示IP地址的解决方法(亲测有效)》本文主要介绍了通过VMware新装的Linux系统没有IP地址的解决方法,主要步骤包括:关闭虚拟机、打开VM虚拟网络编辑器、还原VMnet8或修... 目录前言步骤0.问题情况1.关闭虚拟机2.China编程打开VM虚拟网络编辑器3.1 方法一:点击还原VM

CSS模拟 html 的 title 属性(鼠标悬浮显示提示文字效果)

《CSS模拟html的title属性(鼠标悬浮显示提示文字效果)》:本文主要介绍了如何使用CSS模拟HTML的title属性,通过鼠标悬浮显示提示文字效果,通过设置`.tipBox`和`.tipBox.tipContent`的样式,实现了提示内容的隐藏和显示,详细内容请阅读本文,希望能对你有所帮助... 效

Spring AI与DeepSeek实战一之快速打造智能对话应用

《SpringAI与DeepSeek实战一之快速打造智能对话应用》本文详细介绍了如何通过SpringAI框架集成DeepSeek大模型,实现普通对话和流式对话功能,步骤包括申请API-KEY、项目搭... 目录一、概述二、申请DeepSeek的API-KEY三、项目搭建3.1. 开发环境要求3.2. mav

C#多线程编程中导致死锁的常见陷阱和避免方法

《C#多线程编程中导致死锁的常见陷阱和避免方法》在C#多线程编程中,死锁(Deadlock)是一种常见的、令人头疼的错误,死锁通常发生在多个线程试图获取多个资源的锁时,导致相互等待对方释放资源,最终形... 目录引言1. 什么是死锁?死锁的典型条件:2. 导致死锁的常见原因2.1 锁的顺序问题错误示例:不同

PyCharm接入DeepSeek实现AI编程的操作流程

《PyCharm接入DeepSeek实现AI编程的操作流程》DeepSeek是一家专注于人工智能技术研发的公司,致力于开发高性能、低成本的AI模型,接下来,我们把DeepSeek接入到PyCharm中... 目录引言效果演示创建API key在PyCharm中下载Continue插件配置Continue引言

如何设置vim永久显示行号

《如何设置vim永久显示行号》在Linux环境下,vim默认不显示行号,这在程序编译出错时定位错误语句非常不便,通过修改vim配置文件vimrc,可以在每次打开vim时永久显示行号... 目录设置vim永久显示行号1.临时显示行号2.永www.chinasem.cn久显示行号总结设置vim永久显示行号在li

用Java打造简易计算器的实现步骤

《用Java打造简易计算器的实现步骤》:本文主要介绍如何设计和实现一个简单的Java命令行计算器程序,该程序能够执行基本的数学运算(加、减、乘、除),文中通过代码介绍的非常详细,需要的朋友可以参考... 目录目标:一、项目概述与功能规划二、代码实现步骤三、测试与优化四、总结与收获总结目标:简单计算器,设计