Sehr geehrte Forummitglieder ich habe zu meinem Audio-Projekt noch offene Fragen. Danke vorab für Ihr Interesse und Beiträge. Vorhaben: Einfache Realisierung ohne extra Ansprüche. ########### Projekt: ########### Taster --> CPLD --> Flash/EEPROM --> R2R --> Lautsprecher Das CPLD wird mit Xilinx Ise Design Suite (Schematic) programmiert. ########### Meine Schwiegigkeiten: ########### (1) Welches Format für das Flash/EEPROM? Wir haben ein Audiofile (ca. 1 sec) als Textdatei im 4Bit-mono-ASCII Format (s. Anhang). Dieses Format will so aber nicht auf das Flash/EEPROM - es müssten "Integerwerte" sein... Hat jmd. einen Tipp zum richtigen Format oder kann diese Datei (s. Anhang) wandeln? (2) Welches Flash/EEPROM? Alternative zum EEPROM AMD 29F010 (soll ganz gut für so ein Projekt sein) (3) Was kommt auf das CPLD? Welcher "Zähler" (Schematic) wird zum Auslesen der Audiofile-Adressen im Flash/EEPROM benötigt? ########### Was wurde bereits getan: ########### Den "Pre-Zähler" zum Takt-Teilen, um das Audiofile mit seiner erstellten Frequenz (11 kHz) auszulesen und das R2R-Netzwerk dürften wir hinbekommen. Aber ohne das "geladene" Flash/EEPROM können wir nicht testen. Ähnliche Audioprojekte wurden mit fertigen IC-Zählern gesichtet aber aus den Datenblättern dieser ICs konnten wir keinen Zähler, passend (Schematic, Ise Design Suite) für uns erkennen. Die Theorie ist verstanden worden! Mit freundlichen Grüßen
Ich hab dein File mal überflogen .. Du willst also Werte von 0,00 bis 9,99 ausgeben und dein File ist 2500 Zeilen lang. Dann brauchst du ein Flash mit 12 Bit Eingang und 10 Bit Ausgang ;) Damit kannst du 4096 Werte im Bereich von 0 bis 1024 ausgeben. 10bit Ausgang gibts aber nicht, also musst du 2 an den Eingängen parallel schalten. Und jetzt rate mal wieviel Bits der Zähler im CPLD haben muss.
Also das komische Format besteht aus 4-Bit-Sample-Werten in wissenschaftlicher Notation. Welches Tool hat denn so einen Schwachfug verbrochen? Kann dieses Tool nicht auch ein sinnvolles Format produzieren? Naja, ansonsten ein kleiner Konverter, der das Teil Zeilenweise ausliest und nach Integer wandelt, dann je zwei Zeilen zu einem Byte kombiniert und das ganze binär speichert, ist keine Raketentechnik. Das Format ist bescheiden, aber trivial zu parsen. Die Frage ist, ob du nicht besser das Kombinieren lässt und die Samples nur in den vier oberen oder unteren Bit eines jeden Byte Ableger, macht alles einfacher. Sonst muss noch ein Muxer zwischen den Speicher und das R2R. Hat dein CPLD noch Kapazitäten dafür? Oder du gönnst deinen Ohren wenigstens 8 Bit... Du hast 1s Sound macht 11000 Samples. Selbst wenn du vier Bit pro Sample verschwendest, macht das nur 11kB. Wozu dann 128kiB Speicher? Den Speicher musst du entweder außerhalb der Schaltung programmieren oder du siehst einen Schreibmodus vor, bei dem WE low gezogen wird und du deine Samples synchron zu deinen 11kHz an die Datenleitungen anlegst.
1 CPLD 1 Flashrom 1 abenteuerlicher 4 Bit Wandler ---> und das Ganze für nen Takt in der 10 kHz Gegend. o je, wer hat denn das bloß erdacht? Für sowas nimmt man besser einen billigen uC. Wenn der TO mal sehen will, wie man platzsparend auch größere Audiostücke speichert, dann bitte mal unter ADPCM oder Sierra SOL googlen oder einfach sich in der "Lernbetty" hier im Forum was anlesen. W.S.
Nach meinem Empfinden fehlt bei der Schaltung der Filter hinter diesem Weltklassewandler in 4 Bit.
Was ich gestern auf dem Handy gar nicht gesehen habe: der Adressbus ist mit 4 Bit natürlich zu klein. Und ja, wenn man ein 8-Bit EEPROM hat, darf man wirklich auch 8-Bit-Sound nehmen. Ist doch kein µC, der gerade noch 4 Pins frei hat.
> Welches Tool hat denn so einen Schwachfug verbrochen? MATLAB >> help wavread heisst das komische Tool. So wurden aus 8bit stereo 4bit mono gebastelt. Sind solche daten besser für das EEPROM? [...] -0.2031 -0.7500 -1.1563 -1.3750 -1.4688 -1.3750 -1.1094 -0.6563 -0.0781 0.4844 0.9375 1.2344 1.3594 [...] > Wozu dann 128kiB Speicher? Weil ich diesen besitzte und das Projekt nur ein Test ist. Speicher wird wieder gelöscht und für ein grösseres Projekt eingesetzt. MfG
> 1 abenteuerlicher 4 Bit Wandler Wenigstens gibts es zu diesem Beitrag eine schematische Skizze, um was es geht, um Missverständnisse zu vermeiden und präzise Antworten zur Fragestellung zu erhalten. > o je, wer hat denn das bloß erdacht? Jmd. der noch nicht viel Ahnung hat, so wie Sie auch einmal zu Beginn. Genau dafür ist ein Forum da - danke hierfür. > [...] größere Audiostücke speichert, [...] Danke für den Hinweis. Da wollen wir später hin. (Fortschritt) Sinn des Projekts ist es, kleine Realisierung und Verstehen durch Ausprobieren. MfG
Das ist beides ca. gleich gut oder schlecht. Was du brauchst ist eine Repräsentation der Samples ohne Fest oder Fließkomma-Krempel und vorzugsweise überhaupt nicht textuell, sondern binär. Beide Varianten lassen sich mit ein paar Zeilen in einer nahezu beliebigen Sprache dahin umwandeln.
Aktueller Stand: Zu meinen Fragen o.g. (1-3) weiss ich bis jetzt hierdurch noch nicht mehr als vorher. Ich versuche jetzt mit HEX-Editoren und meinem WAV-File etwas zu erreichen. Über Probleme im WAV-Header, dass man den rauslöschen muss, habe ich schon gelesen. Ich freu mich natürlich über ein .BIT-File für mein EEPROM (128k) was jmd. von Ihnen hier hochläd. Gerne mit einem "Audio-Wort" wie "Newbee" o.ä.. Programmierung des EEPROM erfolgt mit GALEP 5. Danke hiermit an allen Beitrags-InteressentIn. MfG
bernd r. schrieb: > Ich versuche jetzt mit HEX-Editoren und meinem WAV-File etwas zu > erreichen. > > Über Probleme im WAV-Header, dass man den rauslöschen muss, habe ich > schon gelesen. Das ist ein Ansatz. Sieh dir sonst mal Audacity an (http://audacity.sourceforge.net/), damit kannst du auch im "Raw"-Format, also ohne Header speichern. Genau was du brauchst. Deine Textdatei...vielleicht später, jetzt gibt's Essen
Mit dem Sox von Sourceforge kann man auch Textdaten als Audio abspielen, indem man es zuvor wandelt.
1 | perl -pi -e '$_ = pack "C", $_' < audio_4bit_mono_ascii.txt > audio_8bit_mono_low_4_bits_only.raw |
bernd r. schrieb: > Sinn des Projekts ist es, kleine Realisierung und Verstehen durch > Ausprobieren. O je. Eigentlich erwarte ich von den Leuten, daß sie wissen, was sie tun - bevor sie es tun. Mal auf den Busch zu hauen, um zu sehen, was rauskommt, ist schlecht. In 90% aller Fälle kommt ein Löwe raus und frißt dich. Das war's dann. Mal im Ernst: Eine Sinn-Nutzen-Kosten-Abschätzung am allerersten Anfang wäre dringendst vonnöten. W.S.
Naja, kommt drauf an. Wenn der Weg das Ziel ist und man sich leisten kann, auf diesem Wege erst zu erfahren, was sinnvoll ist und was nicht, ist das doch okay.
bernd r. schrieb: > Sind solche daten besser für das EEPROM? > > [...] > -0.2031 > -0.7500 > -1.1563 > Hat jmd. einen Tipp zum richtigen Format oder kann diese Datei wandeln? Nimm irgendeine Programmier- oder Scriptsprache deiner Wahl und skaliere diese Zahlen in einen Bereich von 0.0 ..15.999. Dann schneidest du einfach die Nachkommastellen ab und füllst die verbleibenden 4 Bit vorne mit Nullen auf 8 Bit auf. Die damit erhaltene Biärdatei mit 2500 Bytes brennst du dann in das Flash und legst deinen Binärzähler an die Adressleitungen an. Fertig.
W.S. schrieb: > Eigentlich erwarte ich von den Leuten, daß sie wissen, was sie tun - > bevor sie es tun. Geh mal zu Bosch. Da wirst Du bestimmt fündig! :-)
Hier die Daten im 8bit binary Format
Hallo! Irgendwas ist oberfaul. Eine Sekunde Audio mit 11 kHz Sample und dann nur 2500 Bytes Data passen nicht zusammen! Solch ein 128 kB Flash kann man schon nehmen. Für besseren Klang alle 8 Bit nutzen. Wenn die einzelnen Audi-Bruchstücke 0,75 Sekunden lang sein dürfen, dann die einzelnen Dateien auf 8192 Bytes beschränken. So passen 16 Audiofiles in den 29C010. Die können über 4 Adressleitungen selektiert und mit einem 12-Bit Binärzähler abgespielt werden. Ganz ohne CPLD - nur Standardlogik.
>Eine Sekunde Audio mit 11 kHz Sample und dann nur 2500 Bytes Data passen nicht >zusammen! Stimmt, aber die vom TO gepostete Textdatei hat halt nur 2500 Datensätze.
Ich würde das über einen sigma delta DAC versuchen, dann wäre das Projekt wenigstens interessant und es würde Sinn machen nen cpld zu verwenden. Wer gibt dir so ein Projekt?Uni?
Eine Möglichkeit, bei reduziertem Platz gute Audiodaten zu speichern, ist, sie in der Dynamik zu komprimieren und später mit einem Expander zu barbeiten, der sich invers verhält. Des Weiteren empfiehlt es sich, die Daten vorzufiltern und zu dithern, um eine Art PDM zu erreichen.
Ich würde einen grösseren R2R-Teiler nehmen. 5 Bits sind ein bischen arg wenig.
Du spielst auf die lange Pause zwischen letztem Beitrag und meinem an, ok. Ich denke aber, dass auch andere an so einem Thema interessiert sind und so wie ich per Suche auf das Thema stoßen. Von der Seite her finde ich es generell zweckmäßiger, zum Thema passende Aspekte dort beizutragen, statt neue threads aufzumachen. Was an der Schaltung meiner Meinung nach auch noch fehlt, ist ein Ausgangsverstärker mit OP. Einen LS einfach so dranzuhängen, bringt enorme Verzerrungen.
Jetzt sind hier soviele Tipps gelaufen, dass es den To verschreckt hat. Sicher sitzt er daheim und hört schon über den 3Bit-R2R-Wandler die tollstens MP3s ab. Mein Tipp lautet, ein schnelles PLD mit nur einem Ausgang und direkt aus SOX oder Audacity ein 1Bit PCM generieren.
Thomas Werner schrieb: > Mein Tipp lautet, ein schnelles PLD mit nur einem Ausgang und direkt aus > SOX oder Audacity ein 1Bit PCM generieren. Mit nur einem Bit braucht es aber eine ungleich höhere Frequenz, die in diesem Fall auch nicht nur 4Bit = Faktor 16 höher sein muss, wie manche meinen. > Was an der Schaltung meiner Meinung nach auch noch fehlt, ist ein > Ausgangsverstärker mit OP. Einen LS einfach so dranzuhängen, bringt > enorme Verzerrungen. wobei es lineare Verzerrungen sind infolge des Frequenzgangs des Systems. Ein OP kann da aber wirklich nicht schaden. Hier hätte ich ein Beispiel für einen Audio-Ausgang beim PLD: http://96khz.org/oldpages/pushpullaudiopldoutstereo.htm
Du betreibst den aber laut Deiner Schaltung nicht wirklich direkt am PLD sondern über einen OPAMP und da gibt es bessere Lösungen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.