Forum: FPGA, VHDL & Co. DDS-ICs mit digitalem Ausgang


von Edi M. (Gast)


Lesenswert?

Kennt jemand einen ASIC, der Sinus als Digitalwerte ausgibt?

Mit FPGAs geht es bekanntlich nur bis 100MHz. Mit ASICs müsste sich das 
10fache machen lassen.

von Fpgakuechle K. (Gast)


Lesenswert?

Edgar M. schrieb:
> Kennt jemand einen ASIC, der Sinus als Digitalwerte ausgibt?
>
> Mit FPGAs geht es bekanntlich nur bis 100MHz. Mit ASICs müsste sich das
> 10fache machen lassen.

Mir fällt grad kein IC ein der parallele datenworte mit 1 GHz ausgibt. 
Seriell geht natürlich mehr, aber das kann auch ein  FPGA. In deinem 
fall würd ich einen schnellen standard-DSP nehmen der eine Sinustabelle 
ausliest, da dürfte kein ASIC schneller sein. MfG,

von Edi M. (Gast)


Lesenswert?

Die App (IQ) soll in einem FPGA laufen, daher müssen die Daten parallel 
rein. Klar geht das intern mit einem NCO oder extern mit einem DSP, aber 
eine Sinustabelle ist nicht beliebig genau und muss noch gefiltert 
werden, oder sie wird gigantisch gross. In jedem Fall wird immer ein 
grosses RAM benötigt und man kommt trozdem bei 300-400 MHz Taktfrequenz 
auf kaum mehr, als 3-5 MHz, wenn man etwas Anspruch an den Sinus hat. 
Aber auch dann nimmt der Filter viel Zeit und Platz weg.

Billiger ginge es sicher mit einem DDS-Chip, aber die, die ich 
recherchiert habe, kommen leider nur analog raus. Von der Taktfrequenz 
liegen sie >Faktor5 besser und bei einem schnellen digitalen Filter 
liessen sich auch hohe Güten erreichen, bei vertretbarer Latenz 
(Reaktion auf Änderung).

Ich bin nicht so der Fachmann fürs Filtern, aber bei einer 
Frequenzkonstellation von 300 MHz zu 30MHz habe ich mal so ca. 600 Taps 
veranschlagt.-> 2us Latenz, und habe angeblich überall >60dB 
Filterwirkung.

Als Asic liesse sich ein 4 mal tieferes Filter einbauen und man kame 
unter 1us Latenz, zudem wäre die Abtastfrequenz viel höher. Dasselbe 
Filter liefert bei 1200 / 30 schon >80dB. Eine Sinustabelle in einem 
Chip mit 2^24 Punkten hat bei 1% Aussteuerung gerechnete >60dB SFDR, 
Zusammen >140dB.

von Fpgakuechle K. (Gast)


Lesenswert?

> Als Asic liesse sich ein 4 mal tieferes Filter einbauen und man kame
> unter 1us Latenz, zudem wäre die Abtastfrequenz viel höher. Dasselbe
> Filter liefert bei 1200 / 30 schon >80dB. Eine Sinustabelle in einem
> Chip mit 2^24 Punkten hat bei 1% Aussteuerung gerechnete >60dB SFDR,
> Zusammen >140dB.


Also wenn ich rechts verstehe willst du 24 bit parallel mit 1 GHz. 
Schaut mal mal grob über die IO-Specs rüber, könnte des ein GDDR3-2133 
grade so erfüllen (vom Takt, von der Wortbreite bin ich grad überfragt). 
ASIC-Küchen arbeiten üblicherweise mit langsameren Strukturen als 
High-End Speicherfabrikanten. Daher bezweifle ich das einen Chip mit 
dieser Schnittstellenspec gibt. Intern ist 1 GHz nicht das problem, ...

MfG,

von Weltbester FPGA-Pongo (Gast)


Lesenswert?

Fpga Kuechle schrieb:
> 24 bit parallel mit 1 GHz

Wie willst du die denn intern verarbeiten?

von Edi M. (Gast)


Lesenswert?

Fpga Kuechle schrieb:
> Also wenn ich rechts verstehe willst du 24 bit parallel mit 1 GHz.

Es reichen eigentlich 300 MHz mit (analogen) 20 bit Präzision.

Wie gesagt, die DDS chips produzieren eigentlich die gewünschte 
Genauigkeit, geben aber nur analog aus. Nur mit einem guten Filter und 
gutem ADC liesse sich das wieder im FPGA verwenden.

Ich will es halt direkt haben.

von Edi M. (Gast)


Lesenswert?

So, habe noch ein wenig recherchiert:

Der schnellste DDS Chip, den ich gefunden habe ist der 9910 von Ad, mit 
1GHz bei 14 Bit. Sowas hätte ich gerne digital und dazu einen Chip mit 
programmierbarem Filter von 400MHz an abwärts.

Momentan mache ich es mit einem FPGA, was aber sehr viel Fläche 
verschlingt.

von Helmut S. (helmuts)


Lesenswert?

Wozu soll denn das Filter gut sein?
Wenn du mittels DDS die digitalen Werte einer sinusförmigen Spannung 
erzeugt hast, dann repräsentieren diese genau ein Sinussignal mit der 
gewünschten Frequenz.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Die ersten DDS-Chips hatten noch keinen DA-Wandler, aber auch nur 8 bis 
10 Bit

z.B. der SP2001 von Plessey/Mitel
http://www.datasheetarchive.com/  -> nach SP2001 suchen
350MHz clock, max 100MHz out mit interner Sinustabelle

Hier ein Artikel von 1998 mit Messungen zu verschiedenen damaligen DDS
http://www.ttcla.org/vsreinhardt/Sine%20Output%20DDSs%20a%20Survey%20of%20the%20State%20of%20the%20Art.pdf

z.B in GaAs-Technik der STEL-2373 1 GHz Takt, 12 Watt Leistungsaufnahme

von Edi M. (Gast)


Lesenswert?

Helmut S. schrieb:
> Wozu soll denn das Filter gut sein?
> Wenn du mittels DDS die digitalen Werte einer sinusförmigen Spannung
> erzeugt hast, dann repräsentieren diese genau ein Sinussignal mit der
> gewünschten Frequenz.

Die Daten werden interpoliert und mit noch höhere Auflösung gefahren und 
parallel berechnet. daher brauche ich den Sinus so schnell und genau und 
hochaufgelöst, wie möglich.

Christoph Kessler (db1uq) schrieb:
> 350MHz clock, max 100MHz

Ja, muss mal schauen, ob mir das eine Verbesserung bringt. Ich denke 
aber , eher nicht.

von MJF (Gast)


Lesenswert?

Hallo,

bei aktuellen FPGAs kann ein Sinus-Signal mit vertretbaren Aufwand 
erzeugt werden. Die Genauigkeit der Erzeugung wird durch den SFDR 
angegeben. Basis
einer DDS ist eine Tabelle mit Stützstellen des Sinus. Hierbei reicht 
ein Speichern des ersten Viertel einer Periode ab, da die restlichen 
Teile durch Spiegelung und Invertierung bestimmt werden. Werden nur 
Stützstellen
verwendet, bringt jede Verdoppelung der Tabellengröße ein um 6 dB 
besseres SFDR. Besser ist die Verwendung von zwei Tabellen mit 
Stützstellen und Steigung des Sinus und einer anschliessenden linearen 
Interpolation. Dort wird mit jeder Verdoppelung der Tabellengröße das 
SFDR um 12 dB besser.

Mit diesen Zahlen kann sehr grob die nötige Tabellengröße für ein 
gefordertes SFDR abgeschätzt werden:

z. B. SFDR von 120 dBc gefordert -> 120/12 = 10 bit Adressen der 
Tabellen
-> nur ein Viertel der Periode gespeichert -> Mit zwei Tabellen mit 
jeweils 256 Werten (Stuetz- und Steigungstabelle) kann ein Sinus mit ca. 
120 dBc erzeugt werden. Es wird noch ein DSP-Slice zur Berechnung der 
linearen Interpolation benötigt. Eine Faustformel ist auch, dass die 
Stuetzstellen mit deutlicher mehr Bits quantisiert werden müssen, als 
die Steigungen. Mit etwas Geduld können die Fehler hergeleitet werden.

Aufwand zur Erzeugung eines Sinus-Signals sind also zwei Tabellen, ein 
DSP-Slice (z. B. DSP48E bei Xilinx) und ein wenig Logik für das 
Invertieren und Spiegeln (XOR Operationen) der gespeicherten 
Viertelwelle.

Soll die Abtastrate erhöht werden, muss diese Struktur mehrfach 
instanziert werden. In Virtex5-FPGAs habe ich schon diverse dieser 
Algorithmen mit einer Taktrate von 250 MHz realisiert.

Noch mehr kann man sparen, wenn mit Dithersignalen in der Phase 
arbeitet, aber das ist ein etwas komplexeres Thema.

Ich hoffe das hilft. Die exakte Dimensionierung (Wortbereiten) ist noch 
etwas aufwendiger, kann aber mit Fleiss gelöst werden.

Noch eine Anmerkung: Würde man keine lineare Interpolation verwenden, 
müsste die Tabelle für 120 dBc

120/6 - 2 = 18 bit

haben. Der Aufwand ist also ca. 500 mal größer. Das fand ich beim ersten 
Nachdenken darüber überraschend ;-)

Gruss

Markus

von Martin K. (mkmannheim) Benutzerseite


Lesenswert?

MJF schrieb:
> Würde man keine lineare Interpolation verwenden

Ist es nicht zweckmäßiger, eine quadratische Interpolation zu benutzen?

von MJF (Gast)


Lesenswert?

Martin K. schrieb:
> MJF schrieb:
>> Würde man keine lineare Interpolation verwenden
>
> Ist es nicht zweckmäßiger, eine quadratische Interpolation zu benutzen?

Hallo Martin,

bei einer abschnittsweisen Näherung einer Funktion mit Polynomen (und 
das ist auch die Lineare Interpolation), sinkt der Interpolationsfehler 
mit steigenden Grad der verwendeten Polynome. Wenn Du also statt a + b*x 
ein Polynom mit a + b*x + c*x^2 nimmst wirst Du genauer werden. Aber du 
benötigst mehr Tabellen (drei statt zwei) und zwei Multiplizierer mehr 
(Quadrierung und Gewichtung). Die Tabellen können aber kleiner sein.

Bei der Näherung mit Polynomen gibt es eine Regel, dass der Fehlerterm 
immer bei Erhöhung zu einem Polynom mit ungeraden Grad am stärksten 
sinkt.
Man spricht von der Ordnung des Fehlerterms. Der nächste wirklich gute
Schritt wäre ein Polynon a + b*x + c*x^2 + d*x^3. Deshalb werden bei 
Splines oft diese Polynome verwendet.

Aber genug Theorie. Aus HW-Sicht ist der Schritt von Interpolation 0-ter 
Ordung zum linearen Interpolation am lohnesten. Danach wird's 
kompliziert und der Gewinn ist nicht mehr so gross. In Xilinx-FPGAs (ich 
arbeite nicht für Xilinx!!!! aber arbeite oft mit Ihren FPGAs) sind die 
Block-RAMs 1k*36 bit gross. Da es Dual-Port-RAMs sind, kann in einem 
Block-RAM die Steigungs- und die Stuetzstellen-Tabelle abgelegt werden. 
Mit dieser Tabelle kann ein Sinus mit ca. 130 dBc erzeugt werden. 
Kleinere Tabellen bringen keinen Vorteil, da die Verwendung eines halben 
Block-RAMs keinen Ressourcenvorteil bringt.

Viele Gruesse

Markus

von Ingenieur (Gast)


Lesenswert?

E. M. schrieb:
> Ja, muss mal schauen, ob mir das eine Verbesserung bringt. Ich denke
>
> aber , eher nicht.

Du kannst versuchen, bei AD nachzufragen, ob sie sowas OEM bauen. Wir 
aben mit TI schon einiges gemacht. Die produzieren Dir sofort einen 
ASIC, wenn die Abnahmemenge stimmt.

von J. S. (engineer) Benutzerseite


Lesenswert?

MJF schrieb:
> Besser ist die Verwendung von zwei Tabellen mit
> Stützstellen und Steigung des Sinus und einer anschliessenden linearen
> Interpolation.

So in etwa handhabe ich das bei Minianwendungen, um z.B. für 
Schrittmotoren einen geeigneten Sinus zu bauen. Die Tabelle hat dann 4-8 
Werte für 90 Grad (ja, das reicht, wenn man linear interpoliert und mit 
einem Exponentialfilter nacharbeitet) und besteht quasi nur aus LUTs. 
Dabei zeigt sich, dass man bei wenigen Werten besser wegkommt, wenn man 
Stützstellen und Steigung komplett implementiert und auf die 
Fallunterscheidung 90 Grad <-> 360 Grad verzichtet.

Wenn man es genau haben will und grosse Tabellen benutzt, würde ich 
nicht mehr linear arbeiten, sondern in 2 Richtungen interpolieren und 
dabei die benötigte Steigung direkt aus der Tabelle ziehen. Wir wollen 
ja Sinüsse erzeugen und deren Ableitung, die bekanntlich Cosinus heisst, 
steht 90 Grad weiter in der Tabelle, was zudem noch simpel ist, wenn man 
ohnehin nur 90 Grad abgelegt hat und somit nur umdeuten muss. Dies 
kostet fast keine Logik weil die zur Ansteuerung / Interpretation der 4 
Viertelbereiche nötige Logik schon implementiert ist.

Wer IQ-Modulation betreiben möchte, muss überdies Sin/Cos parallel zur 
Verfügung stellen und hat die gegenseitigen Steigungen schon parat.

von Edi M. (Gast)


Lesenswert?

MJF du hast schon recht, das geht prima in FPGAs, aber wenn sie genau 
sein soll, die DDS wird es flächenintensiv und in massenhaft 
produzierten CHIPs, ist das alles viel billiger. Du siehst doch, was die 
AD-Chips kosten: mit 15,- hast Du einen 1GH-Chip. Daher die Vorstellung, 
dort einen D-ausgang anzuzapfen.

still searching ....

von MJF (Gast)


Lesenswert?

Hallo E. M.,

ich bin leider fälschlicherweise von der Annahme ausgegangen, dass ein 
FGPA zur Verfügung steht. Wenn nicht, hilft meine Antwort nicht weiter.

Trotzdem noch eine Anmerkung:
Ein DDS-Baustein wird von den Herstellungskosten immer deutlich 
günstiger als ein FPGA sein. Aber wenn die 15€ für eine DDS stimmen, 
sehe ich schon Möglichkeiten, eine SIN-Erzeugung mit 1GHz im FGPA für 
weniger zu realisieren. Da mir aber nicht alle Fakten bekannt sind, ist 
es nur eine grobe Annahme. Alles steht und fällt mit Stückzahl der 
FPGAs, die Du pro Jahr verbauen willst. Wenn Du im Bereich 1-5k/Jahr 
kommst, sind kleinere FPGAs schon für deutlich unter 10$ zu haben. Z. B. 
in einen Spartan-3AN (e. g. XC3S200AN) sind 16 Multiplizierer eingebaut. 
Es gibt auch genügend Block-RAM. Der Baustein kann auch im niedrigsten 
Speed-Grade mit 128 MHz getaktet werden. Somit wäre als Abtastrate der 
DDS 16*128 MHz = 2048 MHz denkbar. Hier ist wohl die Begrenzung, wie die 
Daten aus dem Chip kommen.

Aber wie gesagt, das hängt extrem von den Stückzahlen und den 
Verhandlungen mit dem FGPA-Hersteller zusammnen. Und natürlich kostet 
das Entwickeln der DDS Zeit (=Geld). Für Einzelstücke ist es der falsche 
Ansatz und Du darfst meine Postings als Bullshit in dem Kopf vermerken 
;-)

Viele Grüße

Markus

von Edi M. (Gast)


Lesenswert?

FPGAs stehen selbstredend zur Verfügung und werden ja verbaut. Ich 
dachte nur, dass man mit einem DSS Chips kleiner und billiger wird. Es 
ist wirklich ein Ärger, dass man an deren Digitalteil nicht dran kommt.

Zu Deinem Vorschlag: Du willst 16 parallel DDS in einem so kleinen FPGa 
verbauen? Das Tabellellesen muss ja dann geschachtelt werden -> 
128MHZ/16 -> 16 MHz.

von MJF (Gast)


Lesenswert?

Hallo E. M.,

mit Hilfe von lin. Interpolation benötigt man sehr kleine Tabellen (1k 
Tabelle -> SFDR>120 dBc). Die Dual-Port-RAMs in den vogeschlagenen FPGA 
haben eine Größe von 1k*18bit. Diese DP-RAMs können locker mit 128 MHz 
ausgelesen werden. Soll die Abtastrate der DDS höher als 128 MHz sein, 
werden mehrere dieser DDS-Blocke (und somit auch mehrere RAMs) parallel
aufgebaut. Jedes DP-RAM hat den gleichen Inhalt (ist ja kein Problem, es 
sind ja genügend DP-RAMs im FPGA vorhanden). Somit werden mehrere 
Ausgangs-werte der DDS parallel berechnet, wobei in jedem DDS-Block mit 
der vollen Rate Ausgangswerte erzeugt werden. Somit ist die maximale 
Abtastrate nur dadurch begrenzt, wieviele DDS-Bloecke du in das FPGA 
bekommst. Da der einzelene Block sehr klein ist (1 DP-RAM, 1 
Multiplizierer und ein wenig Logik für Addition und Rundung), gehen 
selbst in kleine FPGAs mehrere dieser Blöcke hinein (z. B. das 
vorgeschlagene SPARTAN-FPGA hat 16 Multiplizierer und 16 DP-RAM-Bloecke 
-> 16 DDS-Bloecke parallel -> bei Taktrate von 128 MHz ergibt sich eine 
Abtastrate von 16*128 MHz = 2048 MHz). Da es DP-RAMs sind können sich 
zwei DDS-Blöcke ein RAM teilen, d. h. sie teilen sich Tabellen mit den 
Stuetzstellen und Steigungen.

Ich hoffe, ich habe es gut erklärt. Ich habe auch ein Bild dazu, muss es 
aber erst so wandeln, dass man es hochladen kann. Mach im am Donnerstag.

Gruss

Markus

von Edi M. (Gast)


Lesenswert?

Mir ist schon klar, was du schreibst, aber ich sehe immer noch nicht 
ein, warum ich die DDSen parallel schalten soll. Wenn, dann müsste in 
jeder was anderes stehen (Zwischenfrequenzen).

Ich möchte ja (mindestens) sowas haben:

500MHz x 32 Bit mit jedem Takt, oder 250MHz x 2 x 32 Bit (2 Worte) oder 
was an eben vernünftig ins FPGA bekommt.

Ein zusätzliches FPGA wäre ok, zwar Kostenfaktor aber naja - gfs auch in 
dasselbe rein.

Gehen wir mal von einer Frequenz 300MHz ... 500 MHz aus, Auflösung 1 Hz 
reicht, dann würde man mit einem entsprechend genauen Akkumulator + 
Interpolation schon hinkommen. Aber wie liest man die Tabelle?

von Helmut S. (helmuts)


Lesenswert?

E. M. schrieb:
> Mir ist schon klar, was du schreibst, aber ich sehe immer noch nicht
> ein, warum ich die DDSen parallel schalten soll. Wenn, dann müsste in
> jeder was anderes stehen (Zwischenfrequenzen).
>

Genau so ist es.

Du hast z.B. 4 DDS. Jede addiert den gleichen Frequenzwert aber deren 
DDS(Akkumulator) ist jeweils um 1/4 des Frequenzwertes versetzt 
gestartet.
Natürlich braucht jede der DDS auch seine eigene Sinus-Tabelle da auch 
die nur maximal mit 250MHz gelesen werden kann.

von Edi M. (Gast)


Lesenswert?

Genau so dachte ich mir das, aber das führt ja noch zu mehr Fläche.

von Helmut S. (helmuts)


Lesenswert?

Anders geht das halt nicht. Parallel ausführen benötigt immer N-mal die 
Hardware. Andere machen das übrigens auch so. Einfach ein "fettes" FPGA 
nehmen und gut ist.

von J. S. (engineer) Benutzerseite


Lesenswert?

>fettes FPGA
Ihr Verschwender :-)

Ich weiss ja nicht, wie genau Du die Frequenzinformationen brauchst, 
aber es sollte möglich sein, dass Du mit einem genügend grossen 
Akkumulator und einer Anzahl RAMs/Ramzugriffen zzgl Filterung jede 
gewünschte Auflösung schaffst. Die DDS-Tabellen müssen in der Tat alle 
dasselbe enthalten, dahinter steckt dann eine intelligente 
Interpolation, z.B. "inner-outer" und abgesehen von der Latenz, würdest 
Du soviele dieser Architekturen parallel instanziieren müssen, wie du 
Bandbreite brauchst. Wenn z.B. die DPRAMs mit 250 MHz berieben werden 
(DP für SIN/COS = Wert/Steigung) dann musst Du den Phasenakku jeweils um 
4x den Inkrementalwert erhöhen, und davon abgeleitet 4 Phasenvektoren 
bilden, die mit jeweils p+0, p+1, p+2 und p+3 gleichzeitig und 4 
benachbarte DDS-Werte zugreifen. Für Frequenzen unterhalb der 
Samplefrequenz/ Tabellenlänge, bei der nur maximal 1 Wert weitergezählt 
wird, reicht es aber, 2 DDS-Tabellen zu benuzten und diese mit 
Überbreite auszulesen. Beide Tabellen wären um die halbe / volle 
Überbreite versetzt anzulegen, um die RAM-Grenze beim Zugriff zu 
überwinden.

Wenn Du es ganz geschickt machst (Interpolationssteigung berechnen und 
Werte vorsorglich aus dem Ram ziehen), reicht eine einzige Tabelle mit 
einigen Pufferregistern dahinter. Für 2*fs/l benötigte man dann die 
doppelte Überbreite usw.  Natürlich brauchst du hernach gfs noch 
parallel instanzierte Filter, die aus den 4+1 (dem alten Wert) die 4 
neuen gefilterten Werte produzieren. Dann hättest Du mit quasi 1GHz 
Sinus-Werte als 4fach Wort parat. Ich habe sowas mal als "200 MHz 
Multiplex-DDS" in einem langsamen Cyclone II aufgebaut, weil der nicht 
mehr als 50MHz konnte. Ein späteres Design läuft auf einem Virtex mit 
den angebenen 250MHz.

Das funktioniert sehr gut, der Nachteil ist freilich der Resourcenbedarf 
und der Umstand, dass Frequenzänderungen nicht fein aufgelöst werden, 
weil diese sich nur alle 4 Werte ändern kann. Eine Erweiterung wäre die 
frequency-look-ahead DDS, wie ich sie nenne, wo die Frequenzen auf der 
Basis der vorherigen Änderungen extrapoliert - also geschätzt - werden, 
um nichtlinear extrapolierte Werte für die Frequenzvektoren zu 
generieren. Insgesamt ist das aber eine eher akademische Lösung, weil 
man dann nicht mehr so einfach interpolieren kann und dazu die 
Interpolatorvorschriften parallel braucht.

Wenn Du das wirklich als ASIC brauchst, solltest Du mal mit TI oder AD 
reden. Viele Halbleiterhersteller bauen customized ASICs für Kunden, die 
sie dann zusammenfassen und passend einhäusen, sodass sie auf genügende 
Stückzahlen kommen, dass sich eine Produktion lohnt. Jeder Kunde bekommt 
dann einen individuell gebondeten Chip und weiss im Prinzip nichts von 
der Restapp des anderen Kunden. Diese Chips gibt es aber nicht im 
Katalog der Hersteller. Wenn Du Glück hast, gibt es sowas und Du kannst 
da was bekommen. Ich kann mir sehr wohl vorstellen, dass für Hersteller 
von TimeToDigital-Convertern, SDR-Transceivern und Spektrumanalyzern 
sowas als ASIC gebaut wird und nicht jeder Hersteller produziert seine 
eigenen ASICs.

von René D. (Firma: www.dossmatik.de) (dose)


Lesenswert?

E. M. schrieb:
> Genau so dachte ich mir das, aber das führt ja noch zu mehr Fläche.

Der Cordic Algorithmus kann sehr schnell und zeitgleich den Sinus und 
Cosinus Wert berechnen.

Cordic kann auch den "Wert drehen" und so als Demodulator eingesetzt 
werden und das ohne eine Multiplikation im FPGA zu benutzen.
Das ist dann eine andere Implementation. Die Mathematiker haben auch den 
Fall betrachtet. Zählt auch zum Cordic Algorithmus, obwohl er etwas 
anders aufgezogen wird.

http://www.dossmatik.de/cordic/cordic_flyer.pdf

von Paul (Gast)


Lesenswert?

Was unterscheidet Deinen Cordic Algo von dem z.B. von Xilinx?

Ist mit sowas überhaupt Geld zu verdienen?

von Helmut S. (helmuts)


Lesenswert?

Es ist mir ein Rätsel warum hier ein serielles Verfahren wie Cordic 
vorgeschlagen wird.
Wie soll man denn da mit 1GHz Rate 20bit Sinus-Werte bekommen?
Da müsste man ja 100 CORDIC Generatoren parallel fahren.

von J. S. (engineer) Benutzerseite


Lesenswert?

Helmut S. schrieb:
> Da müsste man ja 100 CORDIC Generatoren parallel fahren
Nicht unbedingt. Den CORDIC kann man ja wie die meisten anderen ALgos 
ebenfalls als pipeline fahren, er wirft also pro Takt einen Wert aus. 
Man braucht nur, wie bei der Tabelle, einen Block je Kanal, also z.B: 
wieder 200MHz 5fach parallel für die Daten zu 1GHz.

Der CORDIC hat aber gfs eine recht lange pipeline, die die Reaktion auf 
Änderungen einschränkt. Daher bevorzuge ich z.B. Tabellen-basierte und 
generische Systeme.

CORDIC ist aber einfach in der Gesamtschau (Platz, Geschwindigkeit, 
Implementierungsaufwand, Synthetisierbarkeit, Übertragbarkeit) das 
Effektivste. Bei high speed DDS-Applikationen, wo moduliert werden soll, 
scheidet er aber schnell aus.

von FPGA-Berater (Gast)


Lesenswert?

Mir ist immer noch ein wenig schleierhaft, warum und wozu man eine 
höhere Datenrate im FPGA benötigt, als das FPGa verarbeiten kann. Die 
nachfolgenden Stufe ist ja mithin auch nicht schneller, als die 400MHz 
o.ä daher reicht es doch, wenn das/ein FPGa auch mit dieser Raten 
sin/cos erzeugt.

von Edi M. (Gast)


Lesenswert?

FPGA-Berater schrieb im Beitrag #2393242:
> Mir ist immer noch ein wenig schleierhaft, warum und wozu man eine
>
> höhere Datenrate im FPGA benötigt, als das FPGa verarbeiten kann.
Weil man parallel arbeitet und zweitens die Chip-Elektornik auch weniger 
Latenz hätte.

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.