/pcb-rom

Generate Eagle board file for inductively-coupled PCB ROM

Primary LanguagePython

pcb-rom - generate Eagle board file for inductively-coupled PCB ROM

Copyright 2016-2017 Eric Smith spacewar@gmail.com

pcb-rom development is hosted at the pcb-rom Github repository.

Introduction

Before Read Only Memory (ROM) was available in integrated circuit form, a number of interesting technologies were used, including core rope memory (aka wire braid memory) used in the Apollo Guidance Computer. For the IBM System/360 computers announced in 1964, IBM used Card Capacitor Read Only Store (CCROS), Balanced Capacitor Read Only Store (BCROS), and Transformer Read Only Store (TROS). TROS was conceptually quite similar to core rope memory, but designed to be more easily assembled.

When HP introduced the HP 9100A desktop programmable scientific calculator in 1968, it used two forms of ROM. A small microcode ROM, 64 words of 29 bits, used core rope memory, and a larger main firmware ROM, 512 words of 64 bits, used an inductively coupled printed circuit board (PCB) ROM. The PCB ROM is also conceptually similar to core rope memory, though different in detail.

The HP 9100 PCB ROM used a 16-layer printed circuit board with eight pairs of layers. Of each pair, one layer is devoted to drive lines, for word addressing, and the other to sense lines, for bits of output data. The overall density of the ROM exceeded 1000 bits per square inch.

This program generates an Eagle CAD ".brd" file for a four-layer PCB with a single pair of drive and sense lines, for a 64 word x 64 bit ROM (4096 bits total), using a 512 byte binary file as input. Layers one and two of a four-layer board are used because the prepreg separating those layers can be much thinner than a normal two-layer board.

As of 2017-05-28, no board design generated by this program has actually been fabricated, so it is unknown whether the generated design is actually workable.

Limitations:

  • while there are command line arguments intended to allow parameterized board design, the program will likely not work correctly with any non-default settings

License information:

This program is free software: you can redistribute it and/or modify it under the terms of version 3 of the GNU General Public License as published by the Free Software Foundation.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.