Forum: FPGA, VHDL & Co. Xilinx CPLD und Arduino


von Thomas W. (diddl)


Lesenswert?

Bitte nicht gleich auslachen oder Verweise aufs Datenblatt (das hab ich 
schon gelesen), ich bin ein Software Mensch, mit Hardware hab ich es 
nicht so …


Ich möchte einen Arduino mit einem CPLD verbinden.
Das ganze soll aber mit 5V laufen.


Ich habe einen Xilinx 95144XL gewählt, weil der noch 5V tolerant ist.
Das Board habe ich gewählt, weil da SRAM drauf ist, und ich nicht löten 
muß.

CPLD Board:
https://de.aliexpress.com/item/32956386167.html


Ich habe mich ein bisschen mit VHDL beschäftigt.
Das Board programmiere ich mit einem Xilinx DLC9LP.
Funktioniert soweit ganz gut.

=========

Nun möchte ich den Arduino anschliessen an dem CPLD Board, und möglichst 
alles richtig machen, darum frage ich hier nach ...


- es werden 12 IO Verbunden (8x Data, 4x Control)
- die Datenübergabe soll bi-direktional funktionieren




+ Worauf sollte ich achten?

+ Ist es besser OC (open collector) am AVR zu benutzen oder geht direkt 
auch?

+ brauche ich Widerstände in Serie? Wenn ja welcher Ohm Wert?

+ oder ist es besser doch Pegel Konverter zu benutzen?

von Christoph M. (mchris)


Lesenswert?

>+ Ist es besser OC (open collector) am AVR zu benutzen oder geht direkt
>auch?

Warum OC? Push-Pull ist besser.

>+ brauche ich Widerstände in Serie? Wenn ja welcher Ohm Wert?

Der AVR verkraftet so ziemlich jeden Kurzschluss. Wie es beim FPGA 
aussieht weiß ich nicht.
Ich kenne die Faustregel 68 Ohm in den Datenleitungen zur Unterdrückung 
von Reflexionen.

von Mike Minibrain (Gast)


Lesenswert?

Thomas W. schrieb:
> + brauche ich Widerstände in Serie? Wenn ja welcher Ohm Wert?

Ja, der CPLD kann nur wenige mA ab, Und nicht nur auf den einzelnen Pin 
starren sondern auch bedenken das der Gesamtstrom über die GND-Pins 
muss.
Also rechne mal r = U/I  mit 5V und  1 mA.

von Christoph M. (mchris)


Lesenswert?

Mike Minibrain (Gast)
>Ja, der CPLD kann nur wenige mA ab, Und nicht nur auf den einzelnen Pin

Der AVR kann auch nur einen begrenzten Strom, aber trotzdem überlebt er 
einen Kurzsschluss ( Im Datenblatt gibt's Kennlinien für die Spannung 
des belasteten Anschlusses ).
Ich nehme an, dass der TO die Schaltung nicht im Dauerkurzschluss 
betreiben will ( der  dann auftritt, wenn man sich "verprogrammiert").
Es macht also keinen Sinn, die Dauerstromwerte aus dem Datenblatt für 
den Sonderfall zu verwenden. Das macht keiner und fällt in die Kategorie 
"Over-Engineering-Angstschaltung"

von Thomas W. (diddl)


Lesenswert?

Christoph M. schrieb:
> Ich nehme an, dass der TO die Schaltung nicht im Dauerkurzschluss
> betreiben will ( der  dann auftritt, wenn man sich "verprogrammiert").

Nee!
Auf gar keinen Fall.

Ein Pin ist für die Datenrichtung.
Der CPLD ist in jedem Fall schneller als der AVR sein kann.

Der Plan ist Wr zu setzen und dann den Port auf Ausgang zu schalten.
Wie man es bei einem SRAM machen würde.


Danke für die Tipps

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


Lesenswert?

Thomas W. schrieb:
> Ich habe einen Xilinx 95144XL gewählt, weil der noch 5V tolerant ist.
Lass doch einfach deinen uC mit 3,3V laufen. Das kann der tadellos...

> + brauche ich Widerstände in Serie? Wenn ja welcher Ohm Wert?
Tu das. Irgendwas zwischen 47 und 470 Ohm passt je nach per Bitbanging 
(einen richtigen Bus hat der AVR ja nicht nach aussen) erreichbarer 
Geschwindigkeit locker.

von Thomas W. (diddl)


Lesenswert?

Lothar M. schrieb:
> Lass doch einfach deinen uC mit 3,3V laufen. Das kann der tadellos...

Klar geht das, ich mach das im Moment auch so.


Aber der Endausbau besteht aus drei Komponenten:

- CPLD Board
- Arduino
- 5V Retro Hardware


Zur Zeit simuliere ich die Retro Hardware mit dem Arduino.
Aber letztlich muss die mit dem CPLD verbunden werden.
Und die läuft definitiv nur mit 5V.

Der Arduino dient dann nur noch dazu, um den RAM zu beschreiben (und zu 
lesen).

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.