066
11.01.2015, 16:22 Uhr
Micha
|
Die gefühlte Verantwortung aufgrund des (für mich unerwarteten) großen Interesses hat mich dazu getrieben, die letzten Tage noch mal gründlich in das Thema hineinzuschauen, über das Grundkonzept nachzudenken, Messungen mit Teilschaltungen auf Breadboard durchzuführen u.s.w. Nach all dem hab ich eine konsolidierte Meinung wie es mit dem Projekt weitergehen wird. Ich werde versuchen, das hier möglichst verständlich darzulegen. Wem die folgende „Bleiwüste“ zu lang wird: am Ende des Textes versuche ich in der Zusammenfassung die wichtigsten Fakten als „Fast Food“ auf den Punkt zu bringen.
Ich bitte alle Interessenten, die Zusammenfassung zu lesen und bei Interesse dann hier noch mal explizit Signal zu geben. Der einzige Unterschied zwischen der aktuellen Version und der Version 2.0 besteht darin, dass letztere Slots zur Bestückung für max. 2MB SRAM haben wird.
1. Ursprüngliches Konzept -------------------------------- Der KC85 Recorder ist Mitte 2014 aus der Idee entstanden, einen fehlenden Kassettenrecorder durch eine selbst gebastelte Kiste zu ersetzen. Eine Kiste auf der man „Play“ oder „Record“ Tasten hat um Programme zu laden oder zu speichern. Als Speichermedium war von Anfang an die SD-Card vorgesehen, die ist in meinem Bastel-Repertoire gegenwärtig das Standard-Medium für solche Zwecke. Da die blockweisen Zugriffe auf die SD-Card selber Zeit benötigen, wurde das Gerät mit einem SRAM konzipiert, der die Daten zwischenpuffert - um zeitkritische Abläufe beim Datenaustausch zwischen KC85 und SD-Card zu entkoppeln. Die Größe dieses SRAM ist ein kritischer Faktor, worauf im folgenden eingegangen wird.
Von Anfang an war dieser Recorder nur als maßgeschneiderte Lösung für den KC85 geplant. Bzw. sogar noch mehr eingeschränkt - eine Lösung für das Standard-Aufzeichnungsverfahren am KC85. Sprich: falls es ein Turbo-Tape für den KC85 geben sollte, würde dieses zumindest vorläufig nicht unterstützt werden. Genau diese Spezifikationen sind inzwischen (Januar 2015) auch erfüllt. Das Gerät funktioniert zuverlässig am KC85/4 sowie am KC85/3 - wobei sich herausgestellt hat, dass die Ladeschaltung des 85/4 im Vergleich zum 85/3 wesentlich toleranter ist bezüglich Signalpegel.
2. Neuere Erkenntnisse ---------------------------- Der Prototyp wurde mit Bauelementen realisiert die aus der „Bastelkiste“ verfügbar waren. Dabei sind z.B. der Typ des eingesetzten Operationsverstärkers oder die Größe des verbauten SRAM nicht unbedingt kritisch hinterfragt worden - solange alles funktionierte wie es im Rahmen des ursprünglichen Konzepts vorgesehen war.
Von Jens Müller gab es in diesem Thread bereits vor längerer Zeit im Beitrag #018 eine Anregung, die letzten Endes auf „RLE“ hinausläuft (RLE = Run Length Encoding, also Zeiten zwischen Rechteck-Flanken in einer Datei als Folgen von Bytes aufzuzeichnen). In dem Beitrag ist das nicht sofort offensichtlich, RLE wird dort nicht explizit erwähnt, sondern das CSW-Container Format das RLE als Code assimiliert hat. Aber RLE ist letzten Endes genau das, was mein Microcontroller primär kann! Mir war nur damals noch nicht klar dass das RLE heisst.
Allerdings gab es diesbezüglich mit meinem Prototyp bisher eine Merkwürdigkeit: zwischen Low und High Flanken gab es eine systematische Abweichung. Die einen Halbwellen fielen jeweils immer länger aus, die anderen kürzer. Was konkret beim KC85 unwichtig ist, da jedes Bit aus zwei Halbwellen zusammengesetzt wird - der Effekt hebt sich also auf. Jüngstens hab ich alternativ zu dem ursprünglich eingesetzten Operationsverstärker vom Typ TL062 den Typ LM833N getestet. Mit sehr ermutigendem Ergebnis: die Signalflanken sind steiler, das Ausgangssignal hat größere Spannbreite. Hier mal die Links zu entsprechenden Fotos: Signalform mit TL062 vs LM833N, für 2KHz Rechteck-Welle, die höchste der drei beim KC85 verwendeten Frequenzen:
TL062: https://drive.google.com/file/d/0B3UbDrsUF0GVN1JwcXBHU0NMVUU/view?usp=sharing LM833N: https://drive.google.com/file/d/0B3UbDrsUF0GVNVNvV0RmU3oybmc/view?usp=sharing
RLE Aufnahme, bei Verwendung eines TL062 vs LM833N OpAmp:
TL062: https://drive.google.com/file/d/0B3UbDrsUF0GVYmk3R0wyRE40NWM/view?usp=sharing LM833N: https://drive.google.com/file/d/0B3UbDrsUF0GVRXFlWGJ1b191VDA/view?usp=sharing
Man erkennt, dass der LM833N das Rechteck-Signal steiler und mit größerer Amplitude abbildet. Was zur Folge hat dass der systematische Fehler in den RLE Aufzeichnungen fast verschwindet. Falls jemand hier einen noch besseren OpAmp für den Zweck empfehlen kann - immer her mit der Empfehlung! Wobei ich vermute mit dem LM833N bin ich nahe genug am Ziel...
SRAM Größe: in das ursprüngliche Design des Recorders kam ein 512KB SRAM aus den einfachen Gründen, weil er vorhanden war und sich einfach in das Konzept einbinden liess. Der SRAM muss das gesamte Programm zwischenpuffern können, um KC und SD-Card bezüglich zeitkritischer Abläufe zu entkoppeln. Für die KC85 maßgeschneiderte Anwendung sind 512KB eigentlich total überdimensioniert. Wenn das KC85 Signal logisch ausgewertet wird, beträgt der Speicherbedarf KC:Recorder praktisch fast 1:1. Wenn allerdings ein unbekanntes Signal mittels RLE aufgezeichnet werden soll, erhöht sich dieses Verhältnis enorm. Meine empirischen Untersuchungen legen für den KC85 ein Verhältnis von 1:25 nahe, d.h. der Recorder kann mit seinen 512K RAM max. 20 KB große KC Programme auf diese Art zwischenbunkern. Um max. 64 KB große Programme von einem Heimcomputer auf diese Art erfassen zu können, ist eine Speichergröße von ca. 2MB nötig. Die Version 2 des Recorders wird Sockel für 4 x 512MB SRAM bekommen.
Aufname KassettenRecorder -> DigitalRecorder: Ermutigt durch die Verbesserungen mit dem Einsatz des OpAmp vom Typ LM833N hab ich das Thema dieses WE noch mal angefasst. *Eigentlich* lautete ja meine ursprüngliche Ansage, ich möchte das hier nicht in den Projektumfang aufnehmen. Aber interessant war die Fragestellung dann doch, ob man auch von einem Kassettenrekorder aufnehmen könnte... Zunächst hab ich per Messung festgestellt: * vom KC bekommt man ein Signal das vom Pegel etwas schwach auf der Brust ist (ca. 0,4V) aber praktisch störungsfrei * vom Kassettenrecorder bekommt man ein Signal bis zu 5V Pegel (im System gemessen), das allerdings hochfrequentes Chaos mit kleiner Amplitude oben drauf hat.
Die Möglichkeit, auch Daten von einem Kassettenrecorder aufzuzeichnen, hat mich dieses WE dazu getrieben damit zu experimentieren. Ich hab es sogar hinbekommen, bin aber skeptisch ob das nicht besser ein extra Thema bleiben sollte. Die triviale Feststellung zuerst: man braucht dann ein DIN-Kabel mit überkreuzten Leitungen für Recorder-Recorder, während man für Recorder-KC ein direkt durchverbundenes Kabel braucht. Was die Aufnahmeschaltung angeht: mit dem KC ist eine invertierende OpAmp Schaltung ohne Feedback optimal. Mit einem Kassettenrecorder ist ein Feedback Widerstand um 100K-Ohm optimal, um das Rauschen rauszufiltern. Nachdem ich paar Aufnahmen erfolgreich hinbekommen hatte, war ich zunächst euphorisch. Bis ich begriff: da fängt man sich Fehler im Blindflug ein! Das ist Murks. Das Thema Kassette -> Recorder ist das Thema Datenrettung, wenn es garnicht anders geht. Da sollte man noch mal extra mit viel mehr Mühe drüber nachdenken. Daher möchte ich das Thema, trotz einiger empirischer Erfolge, weiterhin ausklammern.
Zusammenfassung ---------------------- Der vorliegende KC85 Recorder kann für den Mühlhausener KC85 die drei Formate Maschinenprogramm, Basic-Programm, Listing. Kein Turbo-Format! Eine Unterstützung für andere Heimcomputer ist vorläufig nicht gegeben. Auch wenn es technisch machbar ist und vermutlich sogar relativ einfach umsetzbar wird derzeit nicht daran gearbeitet. Die generische Unterstützung unbekannter Rechtecksignal-Aufzeichnungen wird derzeit vorbereitet. Mit dieser Art der Aufzeichnung unbekannter Signale kann der Recorder geschätzt max. 20KB große Programme erfassen. Die Version 1.0, mit 512K SRAM ist das was hier ab sofort als Platine bestellbar ist. Die Version 2.0 (vermutlich fertig bis Garitz) des Recorders, wird 2MB SRAM erhalten; 4 Stück 512MB SRAM. Damit wird es möglich sein die max. 64 KB Speicher eines Heimcomputers per RLE Verfahren am Stück aufzuzeichnen. Ansonsten wird es keine wesentlichen Unterschiede geben. Dieser Beitrag wurde am 11.01.2015 um 17:08 Uhr von Micha editiert. |