mikrocontroller.net

Forum: FPGA, VHDL & Co. Theoretische Fragen zu FPGA


Autor: Dussel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin,
jetzt habe ich endlich mal vor mit einer HDL anzufangen. Das Spartan-3AN 
Board kann ich nehmen, oder? Die Beiträge dazu sehen ja ganz gut aus.

Aber meine Fragen sind:
Kann man einen FPGA ohne Takt betreiben, also praktisch, dass man eine 
(komplexe) Logik programmiert und das Ergebnis nach der Laufzeit am 
Ausgang anliegt. Also programmiert man zum Beispiel nur ein Oder-Gatter 
und verbindet Pin1 und Pin2 (nenne ich einfach mal so) mit den Eingängen 
des Gatters und Pin3 mit dem Ausgangssignal und hat dann dann nach 
wenigen Nanosekunden (Laufzeit) am Pin3 das Ergebnis von Pin1 OR Pin2.

Zweite Frage:
Ist es möglich mit normalen Mitteln einen hohen internet Takt zu 
erzeugen, indem man das Ausgangssignal eines Negierers (NOT) auf den 
Eingang zurückführt? Der müsste dann ja sehr schnell, entsprechend der 
Laufzeit, schwingen. Oder wird sowas durch die Syntheseprogramme oder 
die Architektur verhindert.

Es geht mir nicht darum, ob es sinnvoll ist, sondern nur darum, mehr 
theoretisch über den Aufbau und die Funktion eines FPGAs zu lernen.

Autor: Murkser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Ja, Spartan-3AN ist ok für den Einstieg. Für's Lernen von einer HDL 
(Veriloh, VHDL) brauchst Du mitunter nicht unbedingt ein FPGA Board, 
sondern ein gutes Buch.

Kombinatorische Logik geht natürlich auch mit einem FPGA.

Ja, Du kannst einen Laufzeitoszillator in einem FPGA bauen. Aber warum?

Murkser

Autor: Dussel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Für's Lernen von einer HDL (Veriloh, VHDL) brauchst Du mitunter
>nicht unbedingt ein FPGA Board, sondern ein gutes Buch.
Ich habe schon ein bisschen gelernt, aber ich möchte jetzt auch mal was 
Richtiges machen.

>Aber warum?
Wie ich geschrieben habe, geht es mir nur theoretisch darum. Der Takt 
wäre wahrscheinlich auch zu unsauber und zu schnell. Aber ich habe mich 
gefragt, ob es da von der Soft- oder Hardware Beschränkungen gibt, die 
sowas vermeiden.

Autor: Supergast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Frage 1: Ja, völlig problemlos. Allerdings wird sich der FPGA etwas 
unterfordert fühlen :-)

Frage 2: Kann man, wie der Murkser schon bemerkte, aber warum? Du wirst 
mit Sicherheit viele Warnungen beim Compilieren kriegen, eventuell auch 
Fehler.
Die Hardware kann das, die Software wirds wahrscheinlich zulassen.
Schau dir lieber mal die PLLs an, die auf dem Chip drauf sind. Bei 
Xilinx heissen die glaube ich DCM (Digital Clock Module) und haben die 
Funktion, einen von aussen zugeführten Takt entsprechend aufzubereiten, 
eventuell zu multiplizieren etc und auf die richtigen Taktleitungen zu 
verteilen.
Alles andere mag für ganz spezielle Anwendungen sinnvoll sein, ist aber 
in 99,9% der Fälle Murks.

Autor: Dussel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Allerdings wird sich der FPGA etwas unterfordert fühlen
Ja, das Oder war nur ein Beispiel. Man kann sicher auch einen ganzen 
FPGA mit Logik vollpacken. Wofür weiß ich natürlich nicht ;-)

>Alles andere mag für ganz spezielle Anwendungen sinnvoll sein, ist aber
>in 99,9% der Fälle Murks.
Wie gesagt, theoretisch. Ich denke mal, dass die Laufzeit eines 
Negierers schon ziemlich kurz ist. Damit wird der Takt für (fast) alle 
anderen Module zu hoch sein. Vielleicht könnte man noch einen Taktteiler 
dahintersetzen. Wenn (falls) ich das Board bald mal habe, werde ich es 
ausprobieren und dann wieder vergessen :-)

Autor: Dussel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Übrigens danke für die Antworten.

Autor: Anguel S. (anguel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dussel schrieb:
> Übrigens danke für die Antworten.
Ich würde an Deiner Stelle auch mit einem guten Buch anfangen :-)

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Dussel (Gast)

>Es geht mir nicht darum, ob es sinnvoll ist, sondern nur darum, mehr
>theoretisch über den Aufbau und die Funktion eines FPGAs zu lernen.

Warum glaubst du, mit solchen praxisfremden Problemstellungen was über 
FPGAs zu lernen?

MFG
Falk

Autor: Dussel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ich würde an Deiner Stelle auch mit einem guten Buch anfangen
Ich habe mir verschiedene Tutorials angesehen. Damit habe ich schonmal 
(Zugang zu) Grundlagen. Wenn ich dann das Board habe, sehe ich mal, wie 
weit ich damit komme. Das heißt jetzt nicht, dass ich nichts weiß und 
warte bis ich das Board habe, um zu sehen, ob ich überhaupt einen Anfang 
schaffe. Ich habe Logikschaltungen schon mit einem 'Symboleditor' 
(Logicsim, glaube ich) aufgebaut. Sowas zu übertragen ist dann (soweit 
ich das jetzt sehe) eigentlich nur noch Syntax. Natürlich kann man gibt 
es noch mehr, aber ich denke mit dem Wissen kann ich schon ein bisschen 
was aufbauen. Ich kann mein Wissen jetzt ohne Überprüfung schlecht 
einschätzen, deshalb will ich es halt probieren.

>Warum glaubst du, mit solchen praxisfremden Problemstellungen was über
>FPGAs zu lernen?
Dabei ging es mir um den internen Aufbau.
Die erste Frage bezog sich darauf, ob man auf den Takt verzichten und 
die Ergebnisse von den Pins durch den FPGA direkt auf andere Pins legen 
kann, ohne irgendwelche Flipflops benutzen zu müssen. Ich dachte, es 
gäbe vielleicht an den Pins Flipflops, die man aus irgendeinem Grund 
benutzen muss.
Die zweite Frage war, ob man einen Ausgang auf den Eingang zurückführen 
kann und das mit einem Negierer dann auch wirklich anfängt zu schwingen 
oder ob irgendwas am Aufbau das verhindert.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dussel schrieb:
> Die zweite Frage war, ob man einen Ausgang auf den Eingang zurückführen
> kann und das mit einem Negierer dann auch wirklich anfängt zu schwingen
> oder ob irgendwas am Aufbau das verhindert.
Nein, aber die Tools legen dir da ein paar Steinchen in den Weg... ;-)

> Der müsste dann ja sehr schnell, entsprechend der Laufzeit, schwingen.
Spartan 3 --> etwa 400MHz
http://www.lothar-miller.de/s9y/categories/29-Ringoszillator

Autor: Balduin T. (balduin)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei VHDL bin ich skeptisch ob man das so einfach aus einem "guten Buch" 
lernen kann. Stellenweise verwirren die Bücher mehr als sie für einen 
Anfänger nützen, weil sie nicht sauber zwischen Synthese und Simulation 
trennen.

Die Fragen des OP hätte kein Buch beantwortet.

Und es ist ein großer (Laufzeit) Unterschied ob du deinen Oszillator 
durch eine rückgekoppelte LUT (= Funktionstabelle oder Lookup table) 
oder über rückgekoppelte Aus/Eingänge machst.

Rückkopplungen von Ausgängen auf Eingänge mit Schmitt-Trigger Verhalten 
werden tatsächlich gemacht. Oszillatoren über LUTs sind in der Praxis 
irrelevant.

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Falk Brunner schrieb:
> Warum glaubst du, mit solchen praxisfremden Problemstellungen was über
> FPGAs zu lernen?

Als unbeteiligter Zaungast finde ich solche Grundsatzfragen
schon aufschlußreich.

Mit einem Controller und delay* wird auch niemand auf Dauer
LEDs blinken lassen; trotzdem ist das zum Verständnis sinnvoll.

Autor: Balduin T. (balduin)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klaus Wachtler schrieb:
> Falk Brunner schrieb:
>> Warum glaubst du, mit solchen praxisfremden Problemstellungen was über
>> FPGAs zu lernen?
>
> Als unbeteiligter Zaungast finde ich solche Grundsatzfragen
> schon aufschlußreich.
>
> Mit einem Controller und delay* wird auch niemand auf Dauer
> LEDs blinken lassen; trotzdem ist das zum Verständnis sinnvoll.

Wobei dein Beispiel durch den Quarz des Controllers vorhersagbare und 
temperaturstabile Ergebisse bringt ;)

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... was aber für das Verständnis bei einem Gedankenexperiment
eher n-rangig ist :-)

Falls man überhaupt einen Quarz nimmt und nicht den
internen -nein, ich sage nicht Quartttz- Oszillator.

Autor: Balduin T. (balduin)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wobei man da ein schönes Vergleichsbeispiel daraus machen kann ..

Nehmen wir mal an wir wollen unseren oszillator langsamer laufen lassen 
..

Beim Controller wirst du eine For Schleife n-mal durchlaufen und in der 
Schleife zB einen NOP haben ..

In VHDL baust du dir einen Inverter (Entity).
Instanziierts in einer For Schleife N Inverter und schaltest sie 
hintereinander. Jetzt noch Anfang und Ende verbinden ...
und du kannst damit ein komplettes FPGA mit einem Oszillator auslasten 
;)

Wenn dein FPGA Schmitt Trigger Eingänge hat, kannst du es wie bei TTL 
Bausteinen über externe Kondensatoren machen.

Dies geht natürlich auch bei Controllern mit Komperatoren ;)

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja das ist dann als würde man seinen Ferrari um 30cm höher legen und 
eine Anhängekupplung anschrauben, damit man damit zum Baumarkt fahren 
kann um ein paar Bretter kaufen. :)

Autor: Balduin T. (balduin)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat dein Ferrari eine JTAG Schnittstelle ?
oder wie wird der konfiguriert ?

Autor: Balduin T. (balduin)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mir ging es um die For Schleife ..

Der Controller führt diese Schleife jedes mal aus, nachdem er 
programmiert ist ..

In VHDL ist das nur eine Konstruktion um nicht 6000 Inverter per Hand 
hintereinander schalten zu müssen.
Im FPGA gibts am Ende keine For Schleife mehr sondern nur hintereinander 
geschaltete Inverter.

Autor: tron (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Hat dein Ferrari eine JTAG Schnittstelle ?
Ja, alle aktuellen Ferraris haben gleich mehrere davon. Fast alle 
Steuergeräte haben eine. Allerdings ist die erst zugänglich, wenn du das 
Steuergerät zerlegst. Hab für Ferrari die Türsteuergeräte mitentwickelt.

Autor: Balduin T. (balduin)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
tron schrieb:
>>Hat dein Ferrari eine JTAG Schnittstelle ?
> Ja, alle aktuellen Ferraris haben gleich mehrere davon. Fast alle
> Steuergeräte haben eine. Allerdings ist die erst zugänglich, wenn du das
> Steuergerät zerlegst. Hab für Ferrari die Türsteuergeräte mitentwickelt.

Geht auch schneller, wie die Kiste über CAN zu configurieren und der 
Leiterplattentest via boundary Scan ist auch noch mit dabei.

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.