====== Infos zur Verwendung von RAM und ROM ====== ===== Nutzung von RAM/ROM in Simulide ===== * Bei Verwendung der Komponente ''RAM/ROM Memory'' in Simulide können die Daten über das Kontextmenu (Rechtsklick aus die Komponente) geladen und abgespeichert werden. * Falls Daten aus einer Datei geladen werden sollen, so sind folgende Varianten möglich: * Variante 1: nicht löschbar - Bei den ''Eigenschaften'' der Komponente ist ''nicht löschbar'' ausgewählt - Daten können dann **vor oder nach dem Start** per Kontextmenu geladen werden * Variante 2: löschbar - Bei den ''Eigenschaften'' der Komponente ist ''nicht löschbar'' **nicht** ausgewählt - Daten können dann nur **nach dem Start** per Kontextmenu geladen werden * Andernfalls wird der Speicher beim Start des Simulation wieder mit 0 gefüllt * Für das Auslesen der Daten muss der Eingang ''/WE'' auf $5\rm~V$ und ''/OE'' auf $0\rm~V$ und gelegt werden. \\ Dann sind folgende Varianten möglich * Variante 1: asynchron - Bei den ''Eigenschaften'' der Komponente ist ''aysnchron'' ausgewählt - Die Daten liegen an ''D0...D7'' direkt an * Variante 1: asynchron - Bei den ''Eigenschaften'' der Komponente ist ''aysnchron'' **nicht** ausgewählt - Die Daten liegen an ''D0...D7'' erst nach einer fallenden Flanke am Eingang ''/CS'' ===== Beispiel in Simulide ===== ==== Konvertierung von *.wav / *.mp3 in *.dat / *.wav ==== Um die Daten zu konvertieren, kann das Freeware Tool {{https://www.audacity.de/downloads/|Audacity}} genutzt werden. In diesme sind folgende Schritte notwendig: - im Footer von Audacity die Audioposition auf ''samples'' stellen (falls dies nicht schon automatisch eingestellt ist) \\ {{drawio>microcontrollertechnik:UmstellenDesFooters.png}} - Datei (wav / mp3) laden. - Hier kann z.B. auf freie, selbst-erzeugte Songs von {{https://suno.com|Suno}} oder Loops aus {{https://freesound.org/|FreeSound.org}} zurückgegriffen werden - Audacity hat mit {{https://github.com/intel/openvino-plugins-ai-audacity/releases|OpenVINO}} auch ein eigenes AI Tool zum lokalen Erzeugen von Musik. Dies ist aber nur bei hinreichend schneller Hardware empfohlen (Ein Laptop von 2021 reicht nicht). - Den gewünschten Bereich markieren und eine separate Spur daraus herstellen (Auswahl mit Maus, ''+X'', ''+V'', Rest löschen über: markieren und '''') - Die Daten über ''Spuren'' >> ''Mix'' >> ''Stereo zu Mono heruntermischen'' auf nur eine Mono-Spur zusammenlegen - Es empfiehlt sich nun die Daten durch ein Tiefpass zu filtern, z.B. mit 4000Hz und : ''Effekt'' >> ''Low-Pass-Filter..'' >> ''Frequenz: 4000,0'' und ''Rolloff: 48 dB/Octave''. \\ Damit kann die Menge an Daten und die Wiedergabefrequenz im Anschluss reduziert werden. - Abspeichern der Daten: - Der Einfachste Weg ist das Abspeichern eines Audiofiles: - ''Datei'' >> ''Audio exportieren'' - Format: ''WAV'', Kanäle: ''Mono'', Abtastrate: ''8000 Hz'', Encodierung: ''Unsigned 8-bit PCM'' - Es gibt aber auch einen umständlichen Weg über den Sample-Export, der im Anschluss noch konvertiert werden muss: - Markieren aller Daten im Track: ''+A'' - ''Werkzeuge'' >> ''Sample-Datenexport'' - Ausgabe beschränken auf die ersten: ''65535'' (oder Samplewert des letzten Samples), Messskala: ''linear'', Datei exportieren nach: ''Pfad + Name eingeben'', Index: ''Aus'', Headerinfo: ''Aus'' - Konvertieren der Daten: Die Daten liegen als float $[-1.00, ... , +1.00]$ vor und müssen auf $[0, ... , 255]$ konvertiert werden. \\ Dazu kann die folgende Excel-Datei genutzt werden: {{microcontrollertechnik:conversiontool.xlsx}} - 8-bit ''*.wav'' Dateien und ''*.data'' Dateien mit Komma-separierten Werten können beide direkt in Simulide in ein RAM Baustein laden: - Rechtsklick auf RAM-Baustein - Daten laden ==== Dateien ==== * Simu-Datei: {{microcontrollertechnik:audio_ram_example.sim1}} * Beispiel-Dateien für Audio: {{microcontrollertechnik:ram_rom_data.zip}} Die Simulide Datei ermöglicht: * ohne Mikrocontroller * die Daten aus einem adressierbaren RAM/ROM Byte für Byte auszulesen * aus diesen 8-Bit Daten Analogwerte zu generieren * diese Analogwerte auf einem Scope und Lautsprecher auszugeben Ich empfehle, zur Performancesteigerung folgendes: * Schaltungsoptionen optimieren: ''Einstellungen'' (⚙️) >> ''Schaltung'' * Farbanimation deaktivieren * Canvas aktualisieren nur mit 10 Bilder pro Sek. * Nicht notwendige Ausgaben entfernen * 7-Segmentanzeige für Adresse und Ausgabe löschen * Oszi löschen