Forum: FPGA, VHDL & Co. Replace Tristate by Logic - was wird genau implementiert?


von Martin K. (mkohler)


Lesenswert?

Hallo,
die FPGAs der Spartan 3E Familie enthalten im Gegensatz zu den Spartan
2 keine internen Tristate Buffer mehr.

Um Designs mit Tristate Buffern zu implementieren werden die TBUFs
automatisch durch Logik ersetzt.

Die Frage: Welche Art Logik wird genau eingesetzt?

Ich frage deshalb, weil mir unklar ist, wie ich einen internen Bus mit
mehreren Sourcen 'Z' Zustände in VHDL darstellen sollte, damit der
"Umweg" mit der Umwandlung TBUF->Logik gar nicht gemacht werden
muss.

Oder ist es gängige Praxis, trotzdem TBUFs zu verwenden und diese dann
ersetzen zu lassen.

von T.M. (Gast)


Lesenswert?

In der GUI kann man irgendwo was einstellen dazu. Das gilt aber nur wenn
der FPGA Tristates hat, die kann man dann trotzdem durch Logik ersetzen
lassen. Wenn er eh keine hat, machen die Synthese / Mapper Tools das
automatisch. Also wie gehabt modellieren und das Tool machen lassen.


T.M.

von Martin K. (mkohler)


Lesenswert?

Danke für die Antwort - diese beantwortet die Frage jedoch nicht.

Es geht ja eben genau um das, was das Tool automatisch macht.

Der Rest ist schon klar, dass das einstellbar ist bei vorhandenen
TBUFs.

Weitere Ideen?

von T.M. (Gast)


Lesenswert?

Frage war:
"...
Oder ist es gängige Praxis, trotzdem TBUFs zu verwenden und diese dann
ersetzen zu lassen..."
Antwort war:
"...Also wie gehabt modellieren und das Tool machen lassen...."

Um zu wissen, was die Tools draus machen, musst du ins Datenblatt der
jeweiligen FPGAs und der Tools schauen. Ich nehme mal an, dass es mit
Multiplexern realisiert wird.

von FPGAküchle (Gast)


Lesenswert?

Die TBUF sind schon mit spartan3 rausgefallen, dafür tauchten der F7 und
F8 Multiplexer auf (die gab es bei Spartan2e nicht). Lt. einem Xilinx
eigenen Guru waren die TBUF's in Wirklichkeit Muxer, und aus diesen
hätte man den F7/F8 Muxer gemacht.

Zeitlich soll es aber probs geben, ein ungewandelter TBUF in spartan3
soll langsamer als ein orginaler spartan2e TBUF.

Wenn möglich würde ich das design umbauen, mich also nicht auf die
Toolübersetzung verlassen (Da war mal das problem das Xilinx (Mapper)
die TBUFs umbauen kann, aber das vorgelagerte Synthesetool (precision)
davon nichts wusste und seine Arbeit einstellte wenn es in einem design
ein internes 'Z' sah und für spartan3 synthetisieren sollte. Da haben
wir dann die synthese angelogen und behauptet es wäre für Spartan2e.
(das macht allerdings die optimnierung obsolet))

von Thomas B. (paraglider)


Lesenswert?

Hallo Martin,
in der Tat gibt es bei den Spartan 3/3E keine interne Tri-State-Logik.
Folglich müssen mehrere auf einen Bus wirkende Tri-State-Treiber mit
Multiplexern realisiert werden. Multiplexer wiederum werden aus einer
Reihe LUTs und den hardwaremäßig vorhandenen MUXF5, MUXF6, MUXF7 und
MUXF8 realisiert, wobei letztere alle 2-zu-1 Multiplexer sind, nur in
verschiedenen Ebenen. Details gehen aus den Datenblättern hervor.
Außerdem empfiehlt es sich, einfach mal Multiplexer mittels "when ..
select" in VHDL zu beschreiben und zu schauen, was daraus
synthetisiert wird. Hierbei fällt auf, dass zumindest das WebPack nicht
immer die optimale Lösung synthetisiert, so dass es manchmal besser ist,
einen tieferen MUX als Entity zu beschreiben und mittels "keep
hierarchy on" diesen genau so synthetisieren zu lassen - auch wenn
dann ein Eingang gar nicht benötigt wird.

von Martin K. (mkohler)


Lesenswert?

Danke für die Antworten. Diese waren sehr hilfreich für mich.

Das leuchtet noch ein, dass die TBUFs (immer schon) als MUX
implementiert werden/wurden.
Hätte ich auch selbst drauf kommen können.

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.