在20世纪80年代初,我活着和呼吸了Apple II,Atari 800,Commodore 64和他们的弟兄们的世界。我可以像没有人的生意一样窥探和戳那些机器,我花了无数的小时写作课程,玩游戏,或者只是摆弄。与当今的PC相比,该时代的计算机邀请Tinkerers,具有相对简单的硬件设计和在启动时的基本提示。
作为大学的计算机工程专业,我了解了数字逻辑设计的细节。我甚至在一个建模套装上建造了一个基本的计算机,内置于手提箱中:麻省理工学院的臭名昭着的“书呆子套件”。但在学期结束时,它都被拆除了,我继续在软件中致力于职业生涯,这就是这样。
最近,我了解到各种项目,以构建类似于那些80机器的简单计算机,完全由离散逻辑芯片(如计数器,加法器,触发器和盖茨)构成。这里没有奔腾或Powerpcs-这些人从地上建立了自己的CPU,以及内存子系统,I / O和所需的所有其他计算机。我偶然发现了CPU的世界世界。要创建这样的计算机需要详细的微架构设计,自定义指令集设计,如装配商和编译器等自定义软件工具,当然当然是一个自定义电路板或三个填充大量的脂肪蘸芯片和一个大乱码的电线。像Magic-1,D16 / M和Mark 1 Forth电脑这样的项目向我展示了这条路。
我决定建立一个自己的CPU电脑。这是一个大的乱码。
施工被记录在100个博客帖子中,从原始想法通过数十个挫折到2009年制造商Faire的数千人的最终演示。
Big Mass O'Wires 1是原始CPU设计。它不使用任何商业CPU,而是有一个自定义CPU从数十个简单的逻辑芯片构造。此基础围绕为键盘,声音,视频和外部外设构建了一台全电脑。
能够运行“真实”程序,而不是4位CPU或玩具机。
启动到一个简单的整数基本程序,能够交互式编辑和运行自己的程序。
初始设计始于2007年11月,具有CPU内部设计的高级素描。简化的Verilog硬件仿真证明了关键设计细节。 2008年2月,建设在2008年2月开始,使用大型线包装板来互连需要50码码码。 4月,使用简单的基于ROM的程序,第一次启动了半成品BMOW 1,第一次启动,计算Fibonacci(12)= 144。满足原始系统目标和延伸目标,包括VGA视频,三个语音音频,基本和引导加载程序,用于与连接的PC通信。 BMOW 1最终获得了在2009年2月结束的主要建设阶段编写的复杂计划的能力,完成了定制案件来容纳一切。截至2009年3月,大型乱码1是完全正常的,但可能永远不会“完成”。
BMOW 1借阅来自其他自主设计的自由,以及斯蒂芬病房和Robert Halstead的书籍计算结构中的设计。数据总线是8位宽,地址总线是24位。四个8位寄存器用于一般数据,三个24位寄存器存储程序计数器,堆栈指针和划痕/工作地址指针。寄存器和算术和逻辑单元由一个数据总线互连,而RAM,ROM和内存映射的硬件设备使用第二数据总线。 ALU还专用了左右数据输入总线。
机器语言指令实现为一系列微型指令,存储在三个并行ROM中以创建24位微码字。每个时钟周期执行一个微指令,并且微指向比特直接使用,作为启用,选择输入以控制机器中的所有芯片。可能需要最多16个微指令来实现单机语言指令。
注意:此处未显示一些其他设备,包括VGA显示电路和实时时钟。
24位地址允许高达16MB的内存,但仅安装了1MB的组合RAM和ROM。地址的最重要的字节称为Bank字节,通常对程序不可见。标准指令集呈现16位接口到程序,大多数指令隐含地引用当前银行。跨银行参考是可能的,但尴尬(思考X86段寄存器)。
512K ROM包含一个引导加载程序/菜单程序。基于FTDI芯片的USB-to-TTL接口提供了一种将数据移动到连接的PC和从连接的PC移动的简单方法。带有PS / 2连接器的标准PC键盘用于键盘输入,24×2字符文本LCD用作调试输出显示。自定义视频电路驱动标准VGA监视器,最大分辨率为512 x 480.三个语音可编程声音发生器提供音乐和声音。
BMOW 1建于武器覆盖板上,预先填充成千上万的绕线销。将芯片推入电路板而不会焊接,并且可以轻松移除,类似于原型面包板。与面包板不同,根据电路设计的需要,销钉单独连接在电路板的下侧。线包装工具用于将剥离的线缠绕在每个销周围。在错误的情况下,可以轻松地删除电线。 BMOW 1包含约2500个此类电线包装。
BMOW框图 - 显示BMOW 1自定义CPU的系统总线和数据路径。
视频系统框图 - 显示BMOW 1视频显示电路的设计,机器中最复杂的子系统。
布局 - 显示BMOW 1系统板上的每个芯片的位置,由子系统进行颜色编码。更多对布局的讨论在这篇文章中。
示意图 - 整个ENCHILADA:详细的图表显示每个芯片,每个PIN和每个连接。
线列表 - 在机器中记录每根电线的电子表格,其端点以及电线的订单。导航疯狂老鼠的接线嵌套必不可少的必要条件。 (电子表格已经嵌入式宏。Excel可能会警告你。)
GAL编程方程 - 在整个BMOW 1中使用的各种可编程逻辑元件的数据。
Microcode - Microdode的源列表,用于实现BMOW 1的高级机器指令。每个高级(程序员可见)指令都实现为1到16微型指令的小程序。在此微码中实现的高级指令集是一个关闭表达式到6502个汇编语言。
Microcode汇编程序 - 一个读取微码源列表的PC托管工具,并生成要编程到微代码ROM中的二进制数据。它是微码的自定义汇编程序。
BMOW模拟器(需要Microsoft .NET Framework 2.0运行时) - 基于PC托管的GUI的BMOW 1硬件模拟器。加载ROM图像,单步模拟机器,设置断点,查看Callstacks,参考源代码等等。
PC Bootloader - 用于将程序下载到BMOW 1的RAM并执行它的PC托管GUI工具。
程序汇编程序 - 用于将BMOW 1源代码组装为可执行程序的PC托管命令行工具。它是ACME 6502汇编程序的自定义版本,具有BMOW 1特定的扩展。
软件示例 - BMOW 1程序的源列表,包括在BMOW 1硬件上运行的引导加载程序客户端,以及音频/视频演示。
原型Verilog描述 - BMOW 1 CPU核心早期原型的Verilog模型。这是糟糕的时间,现在有几个地方我作弊并写了不合成的代码,所以你无法直接从中制作硬件。主要是为了历史兴趣。
修改的Atari字体图 - 最初用于BMOW的128×128像素字体图,取自Atari 8位计算机。 每个字母为8×16,字体图中有128个字母。 这里所示的图像实际上是256×256,必须减少50%。 此外,Font Map的原始二进制版本已降低,并使用PNG标题删除。 8×16字体图 - 用于BMOW的最终版本的128×128像素映射,适用于X-Windows字体。 每个字母为8×16,字体图中有128个字母。 这里所示的图像实际上是256×256,必须减少50%。 此外,Font Map的原始二进制版本已降低,并使用PNG标题删除。 Microsoft Basic for Bmow - Pagetable.com在2008年为许多不同的6502个基于3502个计算机进行了反向设计的这个优秀的,重新批准版本的MSBasic。我将BMOW添加为新目标,它使用上面的修改的ACME 6502汇编程序组装。