Forum: FPGA, VHDL & Co. FPGA/CPLD Pin Mapping beliebig möglich?


von Andi (Gast)


Lesenswert?

Hallo Zusammen,

ich habe eine generelle Frage zum Pinmapping bei FPGA´s und CPLD. Ist es 
korrekt, dass intern in einem CPLD bzw FPGA die Pins beliebig 
zusammengeschaltet werden können? Ich rede von den normalen GPIOs, nicht 
von den dedizierten Pinnen wie zb CLK/RST/ etc. Oder ist dies abhängig 
von den Bänken und man kann nur die an ein und der selben Bank 
angeschlossenen Pins beliebig innerhalb dieser Bank mappen oder 
zusammenschalten?
Ich plane sowas wie ein universelles DevelopmentBoard mit FPGA/CPLD und 
µC, wo die Einzelkomponenten der Schaltung (µC etc) an einem CPLD/FPGA 
enden und man die Pins intern im CPLD/FPGA beliebig zusammenschalten 
kann. So könnte ich zB LEDs und Buttons für den CPLD und für den µC 
nutzen, quasi multiplexen.

Ich würde mich über jeden Tip freuen...
LG Andi

von Klaus (Gast)


Lesenswert?

Ja, man kann nur Pins innerhalb einer Bank miteinander verschalten. Das 
kann man sich quasi so vorstellen, als wenn du je Bank ein komplett 
isoliertes einzelnes FPGA im Chip hättest...

von Andi (Gast)


Lesenswert?

Danke für die schnelle Antwort...

Und selbst im zb VHDL kann man nicht sagen, dass sich PinX aus BankX mit 
PinY aus BankY identisch verhalten soll?
Also wenn zb PinX high ist, soll PinY auch high "gehen" ?

Besten Dank nochmal

von Andi (Gast)


Lesenswert?

...ist das bei CPLDs identisch? Oder gilt das mit den Bänken nur für 
CPLDs?
Mich interessiert brennend, ob man in VHDL nicht einfach per 
Gatter/Buffer beliebige Pins miteinander "verbinden" kann. 2 Signale und 
2 Pins???

LG Andi

von Christian R. (supachris)


Lesenswert?

Quatsch, man kann natürlich alle Pins mit allen verbinden, also was 
normale GPIOs sind. Und das geht auch quer über alle IO-Bänke hinweg. 
Wäre ja schlimm, wenn das nicht ginge. Nur ist das nicht immer optimal, 
weil dann die Durchlaufzeiten natürlich stark ansteigen können. Aber für 
so ein universelles Board spielt das sicher keine allzu große Rolle.
Bei richtigen Projekten wird man dann z.B. einen externen Speicher an 
nur eine Banl anschließen, und dann gehts auch nach der I/O Spannung, 
denn pro Bank kann man nur eine Spannung benutzen.

von Andi (Gast)


Lesenswert?

Herzlichen Dank für die erfreuliche Info.
Wie ist denn die Abhängigkeit der Durchlaufzeiten der Signale von der 
Anzahl der gerouteten Signale? Nano- bis wenige µs oder eher 
Millisekunden? Bin absoluter Neuling im CPLD und FPGA Bereich. Ich habe 
2 FPGAs auf einem DevBoard hier (Altera Cyclone und Xilinx Spartan 3). 
Mit einem CPLD habe ich schon ein wenig gespielt und nun soll eine 
eigenes DevBoard her.
Danke nochmal für eure Hilfe.

von user (Gast)


Lesenswert?

Jede Bank kann eine andere Versorgungsspannung (I/O Spannung) haben. Du 
kannst in deinem VHDL code jeden Pin in jeder Bank ansprechen. Wenn du 
die Pins einer Bank verwendest sind die Timing-mäßig näher zusammen, 
also weniger Zeitlicher unterschied beim Umschalten.

von FelixW (Gast)


Lesenswert?

Gibt nen Timingreport wenn du dein VHDL Code übersetzt und 
implementierst.
Wenn du keinen großen Blödsinn baust Laufzeit im FPGA deutlich unter 
1us, eher XXns

von Gruener rubin (Gast)


Lesenswert?

Pauschal nein, es gibt immer wieder Pins die aus der Reihe tanzen, Dual 
use pins, local clocking, input only, differntial pairs. Dann ist dass 
interne routing zu BRAMS etc. unterschiedlich gerade memorycontroller 
sind anspruchsvoll.

Am besten pining vor pcb anlegen und DRC drüber laufen lassen. Da gibt 
es inzwischen recht bunte clicky clacky programme z.b. xilinx pace.

MfG

von Leonard Lebewohl (Gast)


Lesenswert?

Christian R. schrieb:
> Quatsch, man kann natürlich alle Pins mit allen verbinden

Nein, alles mit alles geht nicht; insbesonders kann man keine zwei Input 
pins miteinander verknüpern um wired OR oder dergleichen zu machen, da 
klopft schnell das synthesetool mit "multiple sources" auf die Finger.

Die "Switching Matrix für einen FPGA wie du sie beschreibst sollte im 
Prinzip gehen, wobei  es aber schon vorkommen kann das zwischen den 
leitungen eines Busses durch das PLD-Routing ein zeitversatz von einigen 
Nanosecs entsteht oder aud einem voreilenden bitclk ein nacheilendes 
wird :-(

MfG,

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


Lesenswert?

Leonard Lebewohl schrieb:
> Christian R. schrieb:
>> Quatsch, man kann natürlich alle Pins mit allen verbinden
> Nein, alles mit alles geht nicht;
Das hast du jetzt aber ein wenig aus dem Zusammenhang gerissen...  :-o
Der Satz ging weiter mit "was normale GPIOs sind". Und das geht 
natürlich. Interessant wird es dann bei Takteingängen und 
differentiellen Signalen, oder solchen, die spezielle Pegel brauchen...

Andi schrieb:
> Wie ist denn die Abhängigkeit der Durchlaufzeiten der Signale von der
> Anzahl der gerouteten Signale?
Da gibt es keine feststellbare Abhängigkeit. Wenn der Baustein voll ist, 
kann es bestenfalls sein, dass nicht mehr alle Signale geroutet werden 
können...
> Nano- bis wenige µs oder eher Millisekunden?
Die Laufzeiten im FPGA und auch in das und aus dem FPGA spielen sich im 
ein- bis zweistelligen ns Bereich ab.

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.