PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Signalerzeugung



hacker
20.10.2008, 16:30
Hallo zusammen,

ich hab folgendes Problem:

Ich muss beliebige Kurvenformen erzeugen können. Max. Amplituden sind +-10V, die max. Frequenz ist 20Hz.

Jedoch sollte das ganze mit 14Bit aufgelöst sein. Das heißt aber auch ich muss bei max. Frequenz ca. alle 1,5µs ein neuen Spannungspegel ausgeben können.

Ich dachte zuerst an folgenden DAC:

http://focus.ti.com/lit/ds/symlink/dac8801.pdf

Jedoch hat der eine Settling Time von 0,5µs. Da diese Zeit sehr stark im Gebiet meiner "Refresh-Time" ist befürchte ich da ziemliche Schwankungen? Ist das berechtigt. Die auszugebende Kurven werden keine plötzlichen Sprünge haben.

Wenn ich immer 16Bit Words in das Register des DACs schreibe (er kann 16bit annehmen, verwertet aber nur 14) dann brauch ich einen SPI Takt von mindestens ca. 10,5MHz.

Könnt ihr mir da einen µC empfehlen, der das zu stande bringt? Er soll die ganzen Spannungswerte vor dem Senden an den DAC aus einem beliebigen Speicher holen. Für einen AVR mit 16MHz wird das wohl zu viel und ARM wäre wohl schon wieder ein overkill.


Habt ihr noch Ideen, wie das ganze noch anders realisiert werden könnte?

Ich bin auf eure Anregungen gespannt.

Viele Grüße,
hacker

thewulf00
20.10.2008, 17:21
Ich würde es mal mit einem AtTiny2313 versuchen, der bis zu 20 MHz kann. Evtl. hilft hier ein wenig Übertaktung, aber ehrlich gesagt glaube ich nicht, dass es reichen würde. :-)

Besserwessi
20.10.2008, 17:24
Für einen AVR dürfte das zu schnell sein. Außerdem ist der Umgang mit viel Speicher auch nicht gerade die Stärke der AVRs. Ein kleiner ARM Controller wären durchaus passend, man muss ja nicht die maximale Geschwindigkeit nehmen. Die alternative wäre sonst ein DAC mit parallelem Interface und den Speicher direkt mit dem DAC zu verbinden. Wenn man 128 Datenworten (= 256 bytes) klarkommt könnte man sogar direkt die Daten aus einen SPI Flash speicher auslesen.

askazo
20.10.2008, 17:38
Brauchst Du die 14 Bit Auflösung wirklich auch auf der Zeitebene?
Bei einem 20 Hz-Signal sind über 16.000 Werte pro Periode eigentlich sehr überdimensioniert. 12 Bit sollten da eigentlich auch reichen, dass könntest Du mit Deinem DAC auch locker hinbekommen. Eventuell würde da sogar ein ATMega mit 16MHz als Controller reichen, wenn der nicht noch allzuviel mehr tun muss. Allerdings bräuchtest Du dann noch ein externes SRAM.

askazo

hacker
25.10.2008, 15:24
14 Bit bräuchte ich schon.

Ich werde nun die Daten in einem externen EEPROM speichern und dieser hängt direkt an einem DAC mit parallem Input. Die Ansteuerung der Andressen des EEPROMS soll ein Zähler übernehmen.

Jetzt muss ich "nur" noch eine variable Frequenz auf den Zähler geben. Das entpuppt sich aber nun doch zu einem größeren Problem. Da man über den µC ja nur ganzzahlige Teiler der Quarzfrequenz haben kann.

Besserwessi
25.10.2008, 15:45
Ein EEPROM als externer Speicher ist nicht unbedingt eine gute Wahl, für einen Schnellen Zugriff wäre wohl eine CMOS SRAM besser geeignet.

Die Variable Frequenz könnte man z.B. per PLL erzeugen. Da hat man dann konstante Freuenzschritte. Zum Teil könnte man sich da auch was sparen, wenn man die auszugebenen Daten entsprechend anpaßt. Gerade wenn die Daten keine scharfen Sprünge haben, könnte man auch die daten jeweils auf eine Feste Abtastfrequenz umrechenen und immer mit einer Antastfrequenz auskommen.