Forum: Mikrocontroller und Digitale Elektronik Mehrere Signale synthetisieren


von Jasko M. (jasko)


Lesenswert?

Hallo Leute

Ich möchte ein Funktionsgenerator bauen für ein Projekt,dabei dachte ich
an ein 12 bit D/A Wandler und ein IC.

Aber leider suche ich noch immer eine passende Lösung da ich mehrere 
verschieden Signale auf einmal erzeugen will  :
Signal 1: bis 50 kHz
Signal 2: bis 100 kHz
Signal 3 : bis 100 kHz

Die formen der Signale würde ich vorher bestimmen und in ein LookUp 
Tabelle einfügen.(Jedes signal hat eine eigene Form fur eine Periode)

Warum kein AD von Analog?
Weil ich keine Sägezahn,Sinus,Rechteck,Dreieck erzeugen will sondern 
andere willkürlich Formen die ich gerne in ein Look Up Tabelle einfügen 
will.

Was für ein Plattform würdet ihr mir vorschlagen?(Welche DAC welchen IC 
oder FPGA)
Mir ist schon klar das ich hier über einer Seriellen Schnittstelle mit 
dem DAC kommunizieren soll da ich zu wenig Pins verfüger?

Hoffe hab genug Infos gegeben.

P.S. DAnke für jede beliebige Hilfe :D

: Bearbeitet durch User
von Achim S. (Gast)


Lesenswert?

Jasko M. schrieb:
> Warum kein AD von Analog?
> Weil ich keine Sägezahn,Sinus,Rechteck,Dreieck erzeugen will sondern
> andere willkürlich Formen die ich gerne in ein Look Up Tabelle einfügen
> will.

Den Satz muss man nicht verstehen, oder? (Oder wolltest du schreiben: 
"warum kein DDS-IC von Analog?")

Jasko M. schrieb:
> Aber leider suche ich noch immer eine passende Lösung da ich mehrere
> verschieden Signale auf einmal erzeugen will  :

Was bedeutet das. Willst du 3 verschiedene Signale parallel erzeugen 
(also einen Mehrkanal DAC?) Oder willst du drei Signale überlagern (also 
z.B. numerisch addieren und die Summe zum DAC geben)?

Jasko M. schrieb:
> Was für ein Plattform würdet ihr mir vorschlagen?(Welche DAC welchen IC
> oder FPGA)

Wenns bis 100kHz gehen soll kannst du es mit jedem FPGA erledigen und 
auch viele µController schaffen das. Hast du denn schon mit irgend einem 
Baustein (µC, FPGA) selbst gearbeitet?
Falls nein: fang mit einem kleineren Projekt an.
Falls ja: mit welchem µC war das, vielleicht reicht er ja

Jasko M. schrieb:
> Mir ist schon klar das ich hier über einer Seriellen Schnittstelle mit
> dem DAC kommunizieren soll da ich zu wenig Pins verfüger?

Wir ist leider nicht klar, ob das jetzt eine Aussage oder eine Frage 
ist. Und mir ist auch völlig unklar, wie du schon wissen kannst, dass du 
zu wenig Pins hast, wenn du noch gar nicht weißt, mit welche Plattform 
du arbeitest.

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


Lesenswert?

Jasko M. schrieb:
> in ein Look Up Tabelle einfügen
Wie groß muss diese Lookuptabelle sein? Wieviele Punkte musst du für 
einen kompletten Kurvenzug speichern? Was ist die niedrigste Frequenz? 
Wie bekommst du die Wellenformdaten in die Lookuptabelle?

> (Welche DAC welchen IC oder FPGA)
Das ist eigentlich unkritisch, weil das ganze so schnarchlangsam ist. 
Wenn du 100kHz hinten rausbekommen willst, dann musst du mindestens 
200kHz am DAC haben. Wenn bei 100kHz noch die komplette Kurvenform 
erkennbar sein muss, dann muss der DAC um den Faktor "Länge der 
Lookuptabelle" schneller sein...

> Mir ist schon klar das ich hier über einer Seriellen Schnittstelle mit
> dem DAC kommunizieren soll da ich zu wenig Pins verfüger?
Ein FPGA dürfte auf jeden Fall genug Pins für einen parallelen DAC 
haben. So ein LTC1666 ist dann auch leicht an ein gemeinsames 12-Bit 
Interface anschließbar. Nur drei zusätzliche Leitungen sind dann für die 
drei Clocks nötig. Und mit 50MHz wäre der auf jeden Fall schnell 
genug... ;-)

von Jasko M. (jasko)


Lesenswert?

Sry das mein Post verwirrend ist, wenn ich es jetzt nochmals lese stimme 
ich dir völlig zu xD

Natürlich hab ich vorher diesen Forum halbwegs durchgelesen und Infos 
gesammelt und die meisten Infos sind über "IC oder mit FPGA nur einen 
periodischen Signal erzeugen" und deswegen dachte ich mir das ich 
vielleicht euch um Rat bitte und frage gibt es eine Plattform wo ich 3 
verschiedene Signale parallel erzeugen kann egal.(Zu Info die 3 Signale 
simulieren den Output von 3 Sensoren)

Mit einem uC hab ich schon einmal gearbeitet aber mit einem FPGA aber 
ist auch Momentan egal bin bereit alles zu lernen aber will von nicht 
sofort auf dem falschen weg sein deswegen hoffe ich das ihr mich in 
diesen Fall beratet.

@Müller
Ich hab mir ganz ehrlich nicht so viele Gedanken gemacht hmm zb 250 
Punkte.
Frequenz beim ersten 50khz und bei den beiden anderen 50-100 khz.
was meinst du mit "gemeinsames 12-Bit Interface anschließbar" :D


Danke :D

von Jobst M. (jobstens-de)


Lesenswert?

Gibt es fertig. Nennt sich Arbiträrgenerator. Gibt es auch fertige 
Bausteine für ...


Gruß

Jobst

von Achim S. (Gast)


Lesenswert?

Jasko M. schrieb:
> was meinst du mit "gemeinsames 12-Bit Interface anschließbar"

er meint, dass du einen 12 Bit breiten Bus vom µC aus nutzen kannst, und 
alle drei DACs parallel daran anschließen. Dann brauchst du nur noch 3 
individuelle Steuersignale (also insgesamt 15 freie IOs) um drei Kanäle 
anzusteuern. Wenn du diese 15 Pins frei hast kriegt auch so ziemlich 
jeder µC die Ansteuerung der DACs hin. Wenn du stattdessen über serielle 
Ansteuerung gehen willst, muss deren Frequenz relativ hoch werden. Da 
muss man dann etwas genauer überlegen, ob der ausgewählte 
Ansteuerbaustein das kann.

Jasko M. schrieb:
> Mit einem uC hab ich schon einmal gearbeitet aber mit einem FPGA aber
> ist auch Momentan egal bin bereit alles zu lernen aber will von nicht
> sofort auf dem falschen weg sein deswegen hoffe ich das ihr mich in
> diesen Fall beratet.

Du unterschätzt die Einarbeitungszeit ins FPGA-Design deutlich. Wenn du 
µC-Erfahrung hast: schreib ein kleines Programm für deinen µC das im 
5µs-Takt Zahlenwerte an IOs legt. (Versuche also die Ansteuerung eins 
LTC1666 hinzukriegen). Dann schaust du per Simulator oder mit dem Oszi, 
ob du das Timing an den IOs wirklich einhältst. Falls ja: bau deinen 
Generator mit genau deinem µC auf. Falls nein: versuch zu verstehen, was 
die Performance begrenzt (z.B. zu wenig Speicher im µC oder zu langsame 
IO-Zugriffe oder schlicht zu geringe Taktrate des µC) und wähle den 
nächst besseren, der die Performance bringt.

Den ersten Test mit deinem vorhandenen µC hast du innerhalb eines halben 
Tags erledigt. Wenn du dir stattdessen ein FPGA besorgst bis du erst mal 
ein paar Wochen am Einarbeiten, bevor irgendwas klappt. Nichts gegen 
FPGAs: ich bin ein großer Fan von denen. Aber ich setze sie nur ein, 
wenn sie auch wirklich gebraucht werden ;-)

von Jasko M. (jasko)


Lesenswert?

@Jobst Arbiträrgenerator sind mir zu wenig flexibel

@Achim S, @ Lothar Miller
Super, auf diese art hab ich nicht nachgedacht ich war zu sehr auf die 
SPI Schnittstelle fokussiert um so mehrere DACs anzusteuern(LTC1257 
hatte gedacht das ich zu wenig Samples pro Signal bekomme wenn ich 3 
ansteuere).

Ich werde es dann so versuchen, mit einem uC und LTC1666(gibt es ein DAC 
mit höherer Ref Spannung ? bis 15-20V)
Das 5µs-Takt hast du nur wegen den versuch angegeben? Ist das richtig 
das ich für meine 100 khz bei 256 Samples pro Periode einen takt von 
40ps brauche am IO? Wenn ich jetzt 2 mal Signale von 100 kHz ausgebe 
brauche ich dann 80ps Sample zeit und das zweite Signal wird für 1 
Sample versetzt sein(Was nicht so schlimm ist). Ist das so Korrekt ? Wie 
werde ich hier den 50 kHz Signal koordinieren ?


Vielen Dank diese Infos haben mich schon weitergebracht :D

: Bearbeitet durch User
von Achim S. (Gast)


Lesenswert?

Jasko M. schrieb:
> gibt es ein DAC
> mit höherer Ref Spannung ? bis 15-20V)

wenn es einen gibt, dann ist das ein Exot. Nimm lieber einen 
Standard-DAC und verstärke die Ausgangsspannung mittels OPV, um die 15V 
hinzukriegen.

Jasko M. schrieb:
> Ist das richtig
> das ich für meine 100 khz bei 256 Samples pro Periode einen takt von
> 40ps brauche am IO?

Jetzt beginnt es interessant zu werden. Die 100kHz sind also nicht die 
Bandbreite des Signals sondern die Periodendauer, und die Bandbreite 
(und damit auch die Samplerate) soll Größenordnungen darüber liegen? Das 
hatte ich falsch verstanden.

Aber (zu Glück) hast du auch falsch gerechnet: 100kHz entsprechen 10µs 
Periodendauer. Wenn du das mit 256Samples füllen willst, brauchst du 
eine Samplerate von 25MS/s. Pro Sample hast du also 40ns Zeit. Wenn du 
den Bus multiplext um die drei Kanäle zu füttern bleiben dir vielleicht 
noch 10ns. Das ist dann tatsächliche für viele µC zu viel des Guten, und 
selbst mit dem FPGA ist es nicht mehr ganz trivial (aber immer noch gut 
machbar).

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


Lesenswert?

Ich würde um Fall von 40ns aber eher jeden der Wandler extra 
anschließen. Das FPGA hat dafür sicher genügend Pins...

von Jasko M. (jasko)


Lesenswert?

Ja leider soll die Ausgangsfreuquenz der 2 Signale am ende Max 100 kHz 
betragen mit den Kurvenformen.

Also schaft ein uC es nicht ? (Falls welche gibt dann schickt mir bitte 
ein Link zum Produkt)


Könnte ihr mir einen FPGA vorschlagen Ich hätte da so einen gefunden 
"Spartan-3AN Starter Kit"  könnte ich das umsetzen mit dem Starter Kit ? 
Irgendwie ist ja da alles drauf und das verwirt mich es gibt DAC 12bit 
LTC2624 SPI Übetragung mit 4 Ausgängen ist er zu langsam mit SPI?(50Mhz 
Clock)
Oder am Besten schlagt ihr einfach vor welche teile ich benötige(das 
wäre mir am liebsten xD) wie zB 3x LTC1666.

von Jobst M. (jobstens-de)


Lesenswert?

Jasko M. schrieb:
> @Jobst Arbiträrgenerator sind mir zu wenig flexibel

Und welche Flexibilität fehlt Dir?

Jasko M. schrieb:
> Ja leider soll die Ausgangsfreuquenz der 2 Signale am ende Max 100 kHz
> betragen mit den Kurvenformen.

Also wird der Ausgabetakt bei 25MHz liegen

> Also schaft ein uC es nicht ? (Falls welche gibt dann schickt mir bitte
> ein Link zum Produkt)

Es gibt schon µCs, die das können. ARMs, C2000
Ein FPGA macht es mit Links. Jeder.

Deine Teile wirst Du Dir aber selber aussuchen müssen ...


Gruß

Jobst

von Achim S. (Gast)


Lesenswert?

Jasko M. schrieb:
> Irgendwie ist ja da alles drauf und das verwirt mich es gibt DAC 12bit
> LTC2624 SPI Übetragung mit 4 Ausgängen ist er zu langsam mit SPI?(50Mhz
> Clock)

Natürlich ist das viel zu langsam (oder: deine Anforderungen sind viel 
zu hoch). 50MHz Clock auf SCK bedeutet, dass du 20ns brauchst,um ein 
einzelnes Bit zu übertragen. Um eine Spannung zu setzen musst du aber 
beim LTC2624 24Bit übertragen. Um 3 Spannungen zu setzen musst du 3*24 
Bit übertragen.

3*24*20ns = 1,44µs. Du könntest also bestenfalls alle 1,44µs einen neuen 
Spannungswert ausgeben. Laut deinen Anforderungen willst du es aber alle 
39ns schaffen (1/(256*100kHz)). Vielleicht hast du dir bei den 
Anforderungen aber auch mehr vorgenommen als du wirklich brauchst und 
wirklich realisieren willst?


Auch die Analogbandbreite des LTC2624 wäre mit 180kHz viel zu lahm für 
einen Arbiträrgenerator, der eine Grundfrequenz von 100kHz hat: dessen 
Bandbreite muss auch Harmonische bei Vielfachen der 100kHz abdecken, 
sonst sieht jede arbiträre Kurvenform am Ende ungefähr so aus wie ein 
Sinus.

von Jasko M. (jasko)


Lesenswert?

Danke.

Ich bleibe beim FPGA dann.

Kannst du mir das noch einmal genauer erklären sorry:

"Auch die Analogbandbreite des LTC2624 wäre mit 180kHz viel zu lahm für
einen Arbiträrgenerator, der eine Grundfrequenz von 100kHz hat: dessen
Bandbreite muss auch Harmonische bei Vielfachen der 100kHz abdecken,
sonst sieht jede arbiträre Kurvenform am Ende ungefähr so aus wie ein
Sinus."

Ja ich könnte sein "FX2 Hirose FX2 connector" nutzen um den LTC1666 
anzusteuern?
Habt ihr einen Board der noch mehr I/O Pins zu Verfügung stellt weil 
hier werden sie unnötig verschwendet da es ein Starter Kit ist.


DAnke :D

von Achim S. (Gast)


Lesenswert?

Die niedrigste Frequenz in deinem Signal beträgt 100kHz (anfangs hatte 
ich dich falsch verstanden und dachte, dass du damit die höchste 
Frequenz meinst). Wenn dein Signal ein reiner Sinus wäre, dann müssten 
die analogen Teile (Verstärker) in deiner Signalkette auch nur eine 
Bandbreite von mindestens 100kHz haben.

Aber wenn dein Signal irgendeine Kurvenform darstellt, dann beinhaltet 
es auch höhere Frequenzanteile als die 100kHz, und entsprechend 
schneller müssen deine analogen Verstärker sein (inklusive der 
Analogbandbreite des DAC).

Jasko M. schrieb:
> Habt ihr einen Board der noch mehr I/O Pins zu Verfügung stellt weil
> hier werden sie unnötig verschwendet da es ein Starter Kit ist.

du kannst z.B. bei Trenz-Elektronik mal nach FPGA Mikromodulen suchen. 
Viele davon haben deutlich mehr IOs rausgeführt, als du für deine 
DAC-Ansteuerung brauchst.

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.