Forum: FPGA, VHDL & Co. Digitales Mischpult mit FPGA


von Tobias (Gast)


Lesenswert?

Hallo zusammen,

ich "entwickle" zur Zeit für einen Bekannten ein digitales Mischpult. 
Der Grund ist, dass es ein Mischpult mit 64 Kanälen sein muss, welches 
vom Anschaffungspreis her einfach jeden erträglichen Rahmen sprengt. 
Außerdem ist es für mich als "Hifi-Freak" ein tolles Projekt, wo man 
sich richtig austoben kann.

Zum Problem:
Die Eingangsmodule (jeweils 4 Kanäle), welche aus dem ADC bzw. digitalem 
Receiver, sowie EQ und anderen Effektgeräten bestehen, sind fertig 
entwickelt und auch schon einzeln erprobt. Da das Mischpult bis zu 64 
Kanäle haben soll, müssen also bis zu 16 Eingansmodule irgendwie 
verbunden werden.
Der Plan sieht so aus, dass jedes Modul einen "serial data output" 
besitzt, der im TDM4 Modus läuft.
Nun sollen alle 16 dieser seriellen Datenströme in einen FPGA geleitet 
werden, welcher nun jeden der Kanäle auf die Ausgänge verteilt. Es gibt 
insgesammt 24 Ausgänge, weshalb 64*24 Multiplikationen pro Sample 
erfolgen müssen. Bei geplanten 48kHz müssten es also ca. 75 MMAC´s sein.

DSP scheiden leider aus, da sie meist nicht genügend Eingänge bieten.
Da ich mich auf dem Gebiet der FPGA´s nicht auskenne, würde ich von euch 
gerne wissen, ob FPGA´s für so etwas geeignet sind und ob so etwas als 
Anfänger möglich ist?

Zu erfüllende Punkt:
- 16 SDI´s im TDM4 Modus
- 75 MMAC´s mit mindestens 32x28 Bit
- 6 SDO im TDM4 Modus

Würde mich über eure Hilfe freuen!
Gruß Tobias

von Georg A. (georga)


Lesenswert?

> ob FPGA´s für so etwas geeignet sind

Sicher. Die Multiplier-Units werden sich aber ziemlich langweilen und 
besonders viele Pins werden auch nicht benutzt ;)

> und ob so etwas als Anfänger möglich ist?

Prinzipiell ja, weil es alles sehr regelmässige Strukturen und Timings 
sind. Das macht das Design recht einfach, wenn man ein paar Regeln 
beachtet, zB. nur genau EINEN Takt zu benutzen, zB. 48kHz*2048=98.34MHz, 
das ist für neue FPGAs (Spartan6&Co) noch eher gemächlich. Der Takt ist 
dann auch die Basis fürs ADC-Timing. Die müssen im Slave-Mode laufen, 
d.h. MCLK/SCK/LRCK gehen vom FPGA zu den ADCs. Mastermode (vom 
FPGA-MCLK) geht zwar auch, braucht aber mehr Logik, um sich darauf zu 
synchronisieren. Der SCK sollte als echter Takt im FPGA nicht benutzt 
werden, Clock-Domain-Crossings sind als Anfänger eher frustrierend.

Allerdings solltest du dir noch überlegen, wie die Koeffizienten 
eigentlich ins FPGA kommen ;)

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Vorneweg:
Tobias schrieb:
> Der Grund ist, dass es ein Mischpult mit 64 Kanälen sein muss, welches
> vom Anschaffungspreis her einfach jeden erträglichen Rahmen sprengt.
Das kann niemals ein Grund sein. Denn wenn du die Funktionen eines 
solchen Mischers brauchst, diese alle fehlerfrei implementieren und das 
Ganze dann noch in ein ansehnliches Gehäuse bauen mußt, dann wird dich 
dein Eigenbau hinterher garantiert mehr kosten.
Wenn du gesagt hättest: die am Markt erhältlichen sind zu groß oder zu 
energiehungrig oder überladen, dann wäre eine Eigenentwicklung evtl. 
sinnvoll. Aber nur wegen des Preises: niemals.

Zur Sache:
Tobias schrieb:
> ob FPGA´s für so etwas geeignet sind
Ja. Du kannst darauf die Hardwareanbindung in Hardware und die 
Signalverarbeitung als Softcore-CPU laufen lassen.
> und ob so etwas als Anfänger möglich ist?
Klar. Allerdings bist du, wenn das dann läuft, garantiert kein Anfänger 
mehr. Auch die Lernkurve ist ziemlich steil...

> Bei geplanten 48kHz müssten es also ca. 75 MMAC´s sein.
Da reichen wesetlich weniger aus, denn du kannst die Berechnungen ja 
pipelinen. D.h. ein MAC rechnet erst mal den einen Kanal, dann andere, 
und insgesamt so viele, wie im 48kHz Raster möglich sind.

> DSP scheiden leider aus, da sie meist nicht genügend Eingänge bieten.
Du könntest ein (kleines) FPGA ja auch einfach zur Harewareanbindung 
deiner IO-Module verwenden, und dieses FPGA dann per DMA an einen DSP 
anklinken...

von JBB (Gast)


Lesenswert?

Du kannst das alles sequenziell innerhalb eines Audio-Samples mischen. 
Einen FPGA dazu zu nehmen ist overkill.

von Georg A. (georga)


Lesenswert?

> Da reichen wesetlich weniger aus, denn du kannst die Berechnungen ja
> pipelinen. D.h. ein MAC rechnet erst mal den einen Kanal, dann andere,
> und insgesamt so viele, wie im 48kHz Raster möglich sind.

Hm, seine Rechnung passt doch. Wenn er 24 getrennte Ausgänge hat, die je 
einen beliebigen Downmix der 64 Eingänge haben sollen, sind es 24*64 
Multiplikationen (das A lass ich mal weg, das interessiert nur Leute mit 
echtem DSP ;). Und das im 48kHz-Raster, also umara 74Mio pro s. Das 
können mittlere DSPs ala Blackfin auch noch.

Ein FPGA hätte aber schon ein paar Vorteile, insb. wenn man noch 
SPDIF/ADAT-Ausgänge haben will (SPDIF-Coding ist simpel) oder evtl. doch 
noch ein paar Summeneffekte. Gerade bei den potentiellen IOs ist ein 
FPGA viel flexibler als ein DSP.

von Herold (Gast)


Lesenswert?

Georg A. schrieb:
> SPDIF-Coding ist simpel
opensorurce hat einen core

von Thomas Riesche (Gast)


Lesenswert?

Herold schrieb:
>> SPDIF-Coding ist simpel
>
> opensorurce hat einen core
Hast Du den eingesetzt? Erfahrungen?

von Dogbert (Gast)


Lesenswert?

Das ist zu anspruchslos für ein postmodernes lowcost FPGA mit 
.5-10GMac/s.
Da müssen noch ein paar Spektrumanalyzer, Effektgeräte, Klangsynthese 
und ein physical Modeling Klangerzeuger mit rein.

Wenn es nicht aus der Stimme von Dieter Bohlen die von Peter Hofmann 
macht ist das FPGA nicht ausgereizt.

von J. S. (engineer) Benutzerseite


Lesenswert?

Dogbert schrieb:
> s ist zu anspruchslos für ein postmodernes lowcost FPGA mit
> .5-10GMac/s.
Naja, ein Realtime Mischer mit Entjitterung auf Datentaktebene im 
MHz-Bereich braucht schon ein FPGA, das ordentlich taktet. So ganz 
trivial ist das nicht. Und ausgelastet ist es auch, zumindest 
timingmässig.

> Da müssen noch ein paar Spektrumanalyzer, Effektgeräte, Klangsynthese
> und ein physical Modeling Klangerzeuger mit rein.
Bitte sehr:
http://www.96khz.org/cyclone3platform.html


> Wenn es nicht aus der Stimme von Dieter Bohlen die von Peter Hofmann
> macht ist das FPGA nicht ausgereizt.

Das geht mit keinem FPGA der Welt :-)

Wenn, dann würde ich auch nicht  nach Hofmann, sondern nach Renee 
Fleming convertieren. Das schalte ich mir dann als plugin dazwischen, 
wenn ich wieder mal eine Nachwuchssopranistin produziere :-)

von Dogbert (Gast)


Lesenswert?

Jürgen Schuhmacher schrieb:
> Naja, ein Realtime Mischer mit Entjitterung auf Datentaktebene im
> MHz-Bereich braucht schon ein FPGA, das ordentlich taktet. So ganz
> trivial ist das nicht. Und ausgelastet ist es auch, zumindest
> timingmässig.

Oh, da hab ich ja gar nich dran gedacht, wo doch der OP von nur 64*24 
MACS pro Sample sprach.

Von TBC/Resampling/Synchronisation keine Rede?

Naja, vielleicht lebt er in einer synchronen Welt.

Aber mit so einem total audiophilen TBC/Resampler kann man bestimmt 
jedes FPGA füllen, oder?

von Audio Hans (Gast)


Lesenswert?

Dogbert schrieb:
> Jürgen Schuhmacher schrieb:
>> Naja, ein Realtime Mischer mit Entjitterung auf Datentaktebene im
>> MHz-Bereich braucht schon ein FPGA, das ordentlich taktet. So ganz
>> trivial ist das nicht. Und ausgelastet ist es auch, zumindest
>> timingmässig.
>
> Oh, da hab ich ja gar nich dran gedacht, wo doch der OP von nur 64*24
> MACS pro Sample sprach.
Von welchen Frequenzen sprecht ihr hier?

64x24 Multiplikationen und einige Additionen erfordern für 48kHz gerade 
um die 80MHz, wenn man es total sequenziell macht und die schafft ein 
mittelmässiger FPGA ohne grosse Verrenkungen. Und wenn es schneller sein 
muss, nimmt man 4 units und packt auch die angestrebten 192kHz bequem 
mit moderaten FPGA-Taktfrequenzen.

Mit audiophil hat das wenig tun tun - eher schon mit Mathe :-)

Beseitigung von Jitter ist ein anderes Thema. Das braucht man nur für 
externe Quellen. Umgekehrt braucht es dafür aber dann einen hochgenauen 
Takt im FPGA.

von P. M. (o-o)


Lesenswert?

Tobias schrieb:
> Da ich mich auf dem Gebiet der FPGA´s nicht auskenne, würde ich von euch
> gerne wissen, ob FPGA´s für so etwas geeignet sind und ob so etwas als
> Anfänger möglich ist?

Ohne intensive Einarbeitung: Nein.

Zwei Dinge sind wichtig:

1. Arbeite dich gut in das Prinzip der FPGA-Entwicklung ein: Synchrones 
Schaltungsdesign, Finite State Machines, Trennung von sequentieller und 
kombinatorischer Logik, Trennung von Daten- und Kontrollpfad, usw.

2. Achte darauf, eine gute Testumgebung aufzubauen! Testbench, 
Simulator, notwendige Skripts, um Testdaten zu generieren und 
auszuwerten.

Wenn du dich da seriös herantastet, dann ist das Projekt schon machbar.

von Fredo (Gast)


Lesenswert?

Bevor man sich an zeitkritische Anwendungen macht, sollte man das FPGA 
Design wirklich beherrschen, oder mit was Anderem beginnen. Ich gehe 
aber mal davon aus, dass der TE nicht ganz unbefangen ist. Rund um's 
FPGA gäbe es da aber noch ein wenig mehr zu tun. Diese SDI Interfaces 
scheinen mir auch nicht Ohne!

von J. S. (engineer) Benutzerseite


Lesenswert?

Audio Hans schrieb:
> 64x24 Multiplikationen und einige Additionen erfordern für 48kHz gerade
> um die 80MHz,
32 x 28 Bit braucht aber 2 MULs und etwas Addition und das geht nur in 
schnellen FPGAs in einem Takt. pipeline Argument greift nicht, weil die 
Kanalsumme gebildet werden muss, also muss komplett fertig gerechnet 
werden, bevor es in den nächsten Kanal geht.

Mit einem Spartan 3 oder Cyclone III ist das gar nicht und mit einem 
S6/C4 gerade so zu machen. Sagen wir mal besser 2 Takte in 50MHz x 1500 
OPs = 60us. Für eine 192kz data rate sind es schon >8 parallele 
Einheiten + post Summation. Beim S3 würden da die Multiplier schon gar 
nicht mehr reichen.

von J. S. (engineer) Benutzerseite


Lesenswert?

Dogbert schrieb:
> Da müssen noch ein paar Spektrumanalyzer, Effektgeräte,
Nehmen wir mal einen guten EQ auf der Basis eines linearphasigen 
FIR-Filters:

Die in einem Spartan 6 verfügbaren 18x25 Bit Multiplier reichen singulär 
nur für 16 Bit Audio, wegen der erforderlichen Koeffizientenbreite. 
Diese muss ausreichend hoch sein, damit die Fehler nicht aufgrund der 
hohen TAP-Zahl kummulieren und mehr digitale Fehler induziert werden, 
als das Filter eigentlich hätte.

Grob gerechnet kann man von der Wurzel der TAP-Zahl ausgehen, bei 1024 
also 5Bit oder mehr besser mehr, sagen wir 7. Wir hätten also einen 
16x24 Bit Multiplier je Kanal. Das packt ein Spartan 3 bei 50 MHz locker 
und berehnet je Sample einen solchen EQ in der Mastersumme.

Für 24 Bit Audio und 128kHz brauchen wir aber die 8fache Leistung! 
Theoretisch arbeitet der S6 z.B. auch 200MHz, aber nicht mehr für 2 
verkette Multiplier-Addierer, die wir aber brauchen, wegen 24 Bit x 32 
Bit.

Also so ganz easy und entspannt ist das auch in FPGAs nicht :-)

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
Noch kein Account? Hier anmelden.