Forum: FPGA, VHDL & Co. SPI DAC MCP4821 an DE0 Nano FPGA


von Dave (Gast)


Lesenswert?

Moin Leute,

ich versuch jetzt schon seit längeren einen MCP4821 DAC an einem De0 
Nano lauffähig zu bekommen. Dafür habe ich mir von www.lothar-miller.de 
den SPI Master genommen und etwas modifiziert. Leider klappt es nicht:

An TX_Data geht mein Sägezahn DDS (der mir aktuell einen Sägezahn mit 1 
kHz ausgibt), an clk meine 50 MHz Systemclock, MOSI, geht an SDI vom 
DAC, SS an CS vom DAC und SCLK an SCK vom DAC. MISO und TX_Done hab ich 
nicht angeschlossen, da ich vom DAC keine Rückmeldung bekomme (oder vllt 
doch...ich weiß es nicht. Es gibt am DAC noch einen LDAC Ausgang, hab 
aber noch nicht wirklich verstanden wofür der gut ist)

Ich denke mein Hauptproblem ist, das ich nicht weiß, wie ich TX_Start 
anschließen soll. Wenn ich es richtig sehe, müsste ich doch alle 4,2 MHz 
(so schnell läuft mein Sägezahn_DDS) ein Startsignal erzeugen, oder?

Über Hilfe würde ich mich freuen.

Beste Grüße
Dave

von Chris B. (dekatz)


Lesenswert?

Dave schrieb:
> Es gibt am DAC noch einen LDAC Ausgang, hab
> aber noch nicht wirklich verstanden wofür der gut ist)
>

Mit LDAC werden die Eingabedaten aus den SPI-Transferlatches synchron 
auf den jeweiligen DAC geschaltet.

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


Lesenswert?

Dave schrieb:
> TX_Done hab ich nicht angeschlossen, da ich vom DAC keine Rückmeldung
> bekomme
Der TX_Done bedeutet, dass das Senden fertig ist und du mit einem 
TX_Start das nächste Wort senden kannst.
Wenn du bisher den TX_Start noch nie bedient hast, dann wurde sicher 
noch nichts abgeschickt...

> Ich denke mein Hauptproblem ist, das ich nicht weiß, wie ich TX_Start
> anschließen soll.
Sieh dir den VHDL Code und/oder das Bild dort an:
http://www.lothar-miller.de/s9y/categories/45-SPI-Master
Und beantworte dann die Frage:
Was macht der TX_Start und wozu brauchst den?

> Wenn ich es richtig sehe, müsste ich doch alle 4,2 MHz
> (so schnell läuft mein Sägezahn_DDS) ein Startsignal erzeugen, oder?
Kann dein DAC so schnell?
Nein, man findet schon ganz am Anfang des Datenblatts zwei wichtige 
MAXIMALWERTE:
Settling Time 4.5us und SPI Clock 20MHz

Und vor Allem: du brauchst es gar nicht so schnell. Denn das ist ja 
schnarchlangsame NF:
> An TX_Data geht mein Sägezahn DDS (der mir aktuell einen Sägezahn mit 1
> kHz ausgibt)
Ich fahre mit dem Ferrari ja auch nicht laufend 280, nur weil er es 
kann. Sondern ich fahre so schnell, wie ich es brauche.
Für deinen DAC bedeutet das: du müsstest bestenfalls dann einen neuen 
Wert ausgeben, wenn sich der Wert ändert (beim Ferrari: Stadtfahrt) 
und schlimmstenfalls kannst du so schnell Werte ausgeben, wie dein DAC 
es hergibt (beim Ferrari: freie neue gerade Autobahn).

Also sag dir: es reicht CD-Qualität und deshalb eine Abtastrate von 
44kHz für den Sägezahn. Und dann zupfst du mit 44kHz am TX_Start. Weil 
sonst im FPGA alles synchron ist, musst du dir um den dann jeweils 
aktuellen DDFS Wert keine Gedanken machen.

Die SPI-Taktfrequenz würde ich nicht höher als 1MHz machen. Das reicht 
für die 44kHz locker aus und du musst dich nicht um das TX_Done kümmern, 
weil der SPI vor dem nächsten Start sicher mit der vorigen Übertragung 
fertig ist.

: Bearbeitet durch Moderator
von Dave (Gast)


Lesenswert?

Hey, es funktioniert :)
Vielen Dank.

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.