www.mikrocontroller.net

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


Autor: Martin Kohler (mkohler)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: T.M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Martin Kohler (mkohler)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: T.M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: FPGAküchle (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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))

Autor: Thomas B. (paraglider)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Martin Kohler (mkohler)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.