━━━━
8位计算一直有一个特别的吸引力:你可以组装一个独立的系统,该系统功能强大,易于使用,操作简单,用户可以自行组装并编写程序。如今,大多数业余爱好者组装的8位计算机都采用经典的CPU,这个CPU来自20世纪80年代。当时正是家用计算机的英雄时代,数以百万计的电视机被征用作为显示器。我利用摩托罗拉6809自行组装了一台8位计算机。我试图使用尽可能少的芯片,但是仍然需要13个支持集成电路来实现RAM或串行通信等功能。于是我开始琢磨:如果我放弃使用经典的CPU,转而使用现代的8位的CPU呢?最低可以使用多少个芯片?
结果就是Amethyst。像经典的家用计算机一样,它有一个集成键盘,可生成音频和视频。它还有一个内置的高级编程语言,供用户自行编写程序。它只使用了6个芯片——1个ATMEGA1284P CPU、1个USB接口和4个简单的集成电路。ATMEGA1284P(以下简称1284P)芯片大约在2008年推出,程序存储器的闪存为128千字节, RAM为16千字节。它可运行高达20兆赫、配有内置串行接口控制器,并有32个数字输入/输出引脚。
由于有板载存储器和串行接口,我可以省去一大堆支持芯片。我可以以不同频率开关I/O引脚来产出音调,进而直接生成基础音频,只不过产生的方波十分刺耳。但是如何生成模拟视频信号呢?这肯定需要一些专用硬件吧?然后,在2018年底,我偶然发现了20世纪70年代史蒂夫•沃兹尼亚克(Steve Wozniak)用来给苹果II提供彩色图形功能的方法。该方法被称为国家电视系统委员会(NTSC)人工色彩,它可以追溯到20世纪50年代,美国彩色电视广播就采用了这种方法。最初,美国广播电视都是黑白的,使用的都是一个相当简单的NTSC标准。电视阴极射线管的光束扫描屏幕表面,一行接着一行。接收视频信号的振幅决定光束在行间给定点的亮度。然后在1953年,NTSC得到了升级,支持彩色电视,同时保持现有黑白电视的可识别性。兼容性是通过以高频正弦信号的形式编码颜色信息来实现的。相对于每行开始之前传输的参考信号(colorburst),在给定点信号的相位决定了颜色的基础色调。信号的振幅决定了颜色的饱和程度。然后,这种高频彩色信号被添加到相对低频的亮度信号中,以创建所谓的合成视频,如今仍被用作许多电视机和生产线上廉价显示器的输入信号。对于黑白电视来说,彩色信号就像是噪声一样,被忽略了。但是,彩色电视可以通过滤波电路分离出彩色信号与亮度信号。在20世纪70年代,工程师们认识到这种滤波电路可用于消费类计算机,因为它可以用数字方波信号复制合成模拟信号的大部分效果。当阴极射线管(CRT)逐行扫描时,由计算机发送到电视机的一连串0,可解释为持续的模拟低电压,表示为黑色。所有的1将被视为持续的高电压,生成纯白色。当位速率足够快时,更复杂的二进制模式可使高频滤波电路生成彩色信号。这一技巧可以让苹果II最多显示16种颜色。起初,我想快速开关I/O引脚来直接生成视频信号。不过,我很快就意识到,我的1284P运行时钟速度是14.318兆赫,我无法以足够快的开关速度来显示4种以上的颜色,因为内置串行接口发送一位数据需要两个时钟周期,这会将我的速率限制在7.159兆赫。(苹果II使用快速直接存储器访问,当CPU忙于内部处理时,将外部存储器芯片连接到视频输出,但我计算机的RAM是集成到芯片上的,所以这种方法并不是一个好的选择。)于是,我翻了翻抽屉,找出了4个7400芯片——两个多路复用器和两个并串变换移位寄存器。我可以设置8个1 284P的并行引脚,同时发送到多路复用器和移位寄存器,将它们转换成高速串行位流。通过这种方式,我可以生成高速位流,在屏幕上显示215种不同的颜色。其代价是,维持视频扫描线需要耗费大量的计算能力:只有大约25%的CPU时间可以用于其他任务。
因此,我需要一个轻量级的用户编程环境,我选择了Forth而不是传统的Basic。Forth是一种古老的嵌入式系统语言,它具有交互性强、代码编译效率高等优点。你可以在很小的空间里做很多事情。由于1284P不允许直接从其RAM执行已编译的计算机代码,因此用户编码被编译成中间字节码。然后,该字节码作为数据输送到在1284P闪存中运行的虚拟机。该虚拟机的代码是用汇编代码编写的,并经过人工优化,使其速度尽可能快。作为一名在Glowforge公司工作的工程师,我有机会使用先进的激光切割机,所以设计和制造木质外壳对我来说是一件很简单的事情(这也算是对Atari 2600木纹饰面的一种敬意)。机械键盘开关直接焊接在Amethyst计算机的单板上;它有一个特点是没有空格长条键,但是在<Enter>键上方有一个空格按键。我的GitHub库里有完整的电路图、印刷电路板(PCB)文件和系统代码,所以你完全可以动手组装自己的Amethyst计算机,或者改良我的设计。你能把芯片数量再减少一两个吗?IEEE Spectrum
《科技纵览》
官方微信公众平台