Replace Tristate by Logic - was wird genau implementiert?

#418472
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.
Gast #418473
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.
Gast #418475
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.
Gast #418476
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))
#418477
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren