Core Memory im Eigenbau

Es gibt nicht viele Projekte von denen ich sofort begeistert bin, aber das Arduino Core Memory Shield von Jussi Kilpeläinen ist definitiv eines davon. Core Memory oder Kernspeicher ist eine frühe Form eines nichtflüchtigen Speichers, der etwa von 1954 bis 1975 eingesetzt wurde. Der Speicher besteht aus hartmagnetischen Ringkernen, die auf Drähte gefädelt sind. Durch elektrische Ströme in den Drähten werden diese ummagnetisiert und können ausgelesen werden. Das Vorzeichen der magnetischen Remanenz der einzelnen Ringkerne repräsentiert den Speicherinhalt.

Der Bausatz kostet USD 39,90 (ca. 32,50 EUR) und enthält eine Platine und alle benötigten Bauteile. Ein ausführliches Handbuch und Software kann von Jussis Website herunterladen werden. Der Preis ist durchaus angemessen, denn die Bauteile kosten schon mindestens 15 EUR, hinzu kommt noch die Platine mit Versand aus China etc. Nicht mit dabei ist natürlich ein Arduino, es kann ein Arduino Uno oder auch ein Arduino Mega 2560 verwendet werden. Die zusätzlichen Kosten beschränken sich also auf ca. 10-15 EUR.

Der Aufbau ist gut beschrieben. Bis auf vier Gleichrichter sind alle Bauteile THT, allerdings ist der Aufbau nicht ganz so trivial, wie man anfangs vermuten mag. Die Bauteile sind genau abgezählt. Nur von den Ferritkernen wird ausreichend Ersatz mitgeliefert. Es kann durchaus sein, dass bei der Montage ein Kern zerbricht. Der mitgelieferte Fädeldraht ist lang genug, ein paar cm mehr hätten es aber gerne sein können. Es ist durchaus genug Draht vorhanden, um den einen oder anderen gespannten Draht noch einmal neu zu ziehen. Muss man aber den durchgezogenen Lese-Draht (Sense-Wire) noch einmal neu spannen oder gar die gesamte Matrix, dafür reicht die Reserve dann leider nicht. Also direkt von Anfang an entsprechend vorsichtig arbeiten!

Die ersten Bauteile, ein paar Widerstände, sind schnell gelötet, danach muss die Core Memory Matrix aufgebaut werden. Hierzu werden zunächst jeweils acht Kerne auf vier horizontalen Drähte aufgefädelt. Obwohl die Kerne nur etwas über 1mm groß sind, ist das noch der einfache Teil. Als nächstes werden acht vertikale Drähte derart durch die Kerne gefädelt, dass diese jeweils abwechselnd nach rechts bzw. links zeigen. Ohne gute Lupe muss man dieses gar nicht erst probieren. Ich habe eine Lupe mit 8 Dioptrien verwendet, mit 5 Dioptrien sollte es aber auch noch gut zu schaffen sein. Zuletzt wird der Lese-Draht durch das Geflecht gefädelt. Hier muss man besonders vorsichtig sein, um die anderen Drähte nicht zu beschädigen und vor allem auch keinen Kern zu beschädigen.

Ist die Core Memory Matrix fertig gefädelt, werden die restlichen Bauteile aufgelötet. Vier Gleichrichter sind in SMD ausgelegt, aber einfach zu löten. Die anderen Bauteile sind klassisch in THT. Die Verbindungen zum Arduino sind allerdings nicht gut gelöst. Hier wären klassische Pin-Header sehr viel besser gewesen.

Nachdem das Arduino Core Memory Shield auf einen Arduino aufgesteckt und die Software geladen wurde, kann der Speicher schon ausprobiert werden. Hier gibt es einen weiteren (dicken) Minuspunkt: Es wird keine Beschreibung zur Bedienung mitgeliefert. Tipp: Damit das Menü der Software funktioniert, muss im Arduino Monitor das Zeilenende ausgeschaltet und die Geschwindigkeit auf 115200 Baud gestellt sein.

Die einzelnen Menüfunktionen sind ebenfalls nicht erläutert und müssen dem Quellcode entnommen werden:

c – pulse core by core (write 0, write 1), until any input
# – prints text in the console until \r reached
e – extended test core by core
v – toggle displaying actions on each core access
f – toggle error reporting in some modes (T mode and corewise test)
m – exchange (read-write) data 120000 times (for time measurement)
s – pulse core with address set by A and a commands (write 0, write 0, write 1, write 1)
a – increase core address for pulse
A – decrease core address for pulse
R – read word
W – write word
X – exchange word
r – read bit
w – write bit
t – test bit-wise
T – test word-wise
U – random test until any input
z – reset error counter

Mit dem Kommando „W“ wird ein 32-Bit-Wert (also alle vorhanden Bits) geschrieben [W <return> Hex-Wert<return>]. Mit „R“ wird dieser gelesen. Ein einzelnes Bit kann mit „w“ bzw. „r“ geschrieben bzw. gelesen werden [w<return>Adresse binär (00000-11111)<return>0/1<return>].

Praktisch wären Testpunkte auf auf der Platine, damit man den Schreib- und Lesevorgang auf einem Oszilloskop nachverfolgen kann. So muss man die passenden Punkte selbst ermitteln. Anfangs konnten bei einem 32-Bit Schreib-/Lesevorgang einige Bits nicht fehlerfrei gelesen werden. Im Handbuch erfährt man, dass man bei diesem Problem den Arduino versuchsweise mit einem externen Netzteil betreiben soll, was auch zum Erfolg führte.

Fazit: Eine schöner Bausatz, der zeigt, wie Core Memory funktioniert. Für den Aufbau sollte man mindestens 2-3 Stunden einplanen. Eine gute Lupe ist Voraussetzung.

In der Übersicht sehen die Vor- und Nachteile wie folgt aus:

Vorteile Nachteile
  • komplettes Kit mit allen Bauelementen
  • umfangreiche Aufbau-Anleitung
  • Anleitung enthält eine Beschreibung zum technischen Background von Core Memory
  • Beschreibung der Software unzureichend
  • Steckverbindung zum Arduino nicht optimal
  • keine Testpunkte auf der Platine vorhanden
  • fehlerfreier Betrieb nur mit externen Netzteil möglich

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.