Flipdots and Core-memory - old tech meets old techOhm2013 was at the start of August. I had a chat with Erik, who runs Electrologica, about computer history and flipdots. At one stage I was explaining how the flipdots work and he made a rather good remark: "that is just like core-memory".
Why didn't I think of that before? He was absolutely right. Core-memory uses a square hysteresis loop core to record the direction of the magnetic field for storing ones and zeros. A flipdot uses a square hysteresis loop magnet to flip the dot (the dot is also called disc which is a permanent magnet). All that remained after that chat was to try it out and see if it could be done.
Just a reminder how core-memory works:
Each core has an X and Y wire running through. Each X/Y-wire carries 50% of the current, which will flip a core at the intersection. Reading the content is destructive, in which you flip the core to a zero and see if it changed. A read cycle is (almost) always followed by a write cycle to restore the content.
A sense-line, woven through all cores, sees a different current profile, depending on whether the core flipped the magnetic field or not. This difference is due to the changed core-saturation behavior. Alternatively, one could just look at the current-profile directly, which will see a different induction depending the state of the core.
Figure 1: Setup overview
Using flipdots as core-memory will not be very fast. Actually, it will be three orders of magnitude slower than the "recent" (ahum) core-memory, but, with 1.2ms cycle time it would still be awesome to see the actual content of the memory and see it change over time.
A small setup was created to test the hypothesis whether flipdots could be used as core-memory. If yes, then the flipdot controller should "see" a different current-profile, depending the previous state.
The firmware of the controller was modified to allow non-flipping coil activation. Normally, the controller does not flip a dot if it knows that the new state is the same as the current state.
Figure 2: Measurement closeup; grey wire: sense-line with 10:1 probe attached; 0.1Ω current-sense-resistor with 1:1 probes attached (plus 2x100nF filter capacitance)
The corner (left below) flipdot is flipped constantly in alternating in a 110010 and 001101 pattern at maximum possible speed. Two other dots are flipped at start and end of the sequence for oscilloscope sync purposes. A 0.1Ω resistor is placed in the matrix supply GND line to be used as a current sense resistor. Secondly, a sense-line (like real core-memory) is woven through one row of flipdots (the grey wire) and is connected directly to a probe.
Figure 3: Measurement (click to enlarge); top-trace: flipdot coil-current [~200mA/div]; bottom trace: sense-line voltage [20mV/div]
It works, as shown in figure 3. The current is very much distinguishable between a flip that causes the magnetic field to change versus a flip that does nothing. The sense-line also induces a significant longer pulse when a change-of-magnetic-state is performed.
It is probably easiest to amplify the current-sense voltage and to use a threshold (comparator) at 300..350mA. The time it takes to reach this level is significantly longer when the magnetic polarity must reverse. This is due to the increased induction seen and therefore saturation is postponed. A quick measurement sets the magnetic change to about 250µs whereas a stable situation takes 55..100µs. The difference is large enough to do reliable state-detection.
An interesting observation is that the first flipdot pulse (a stable pulse) is current-wise different from the other stable pulses. This is due to 1) the recharge-period before the next pulse and 2) the magnetic stabilization period before the first pulse.
The first cause, recharge-period, is set as low as allowed for consistent flipdot operation, assuming that each dot is flipped once with reasonable time in between (normally 30 frames/s max.). Using core-memory interaction would probably be prudent to tune the timing to fit the cores optimally.
The second cause, magnetic stabilization, is caused by the reaction of the core and residual currents. The coil will shed the residual energy when the current is shut off, which takes time. Some of the magnetic field will fade with time because the coil and coil-core(s) will return some energy back to the power supply and convert some energy to heat until a stable situation is achieved. This problem is why a sense-line is more difficult than a current-sense-resistor.
Next up - trying to do real reads and making a new old computer :-)
This is my current idea of memory controller:
Figure 4: Suggested memory controller (click to enlarge)
It uses the same basic setup as FlipDemo but takes real power in and has a complete interface. The flipdots are mounted perpendicular to the controller so that you can mount eight strips next to each other, creating seven 8-bit registers. Interconnection is done with a ribbon-cable (reusing old ATA cables seems like a good idea here).
Doing the controller in discrete logic will require some substantial work. I started a thread on DP asking for input. The micro-controller needs to do a bit of work with the exact right timing. Using discrete logic makes it a lot harder and rather inflexible. However, if too many complain I may reconsider.
|Overengineering @ request||Prutsen & Pielen since 1982|