www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Abarbeitung eines Prozesses


Autor: Brutus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi @ all

Ich arbeite eigendlich schon länger mit FPGA´s mehr oder weniger
erfolgreich :-). allerdings sind da bei mir noch 3 Fragezeichen offen.
Evtl könnt ihr sie ja erlöschen.

1 Frage:
In einem Prozess werden die enthaltenen befehle ja sequenziell
abgehandelt. Mein problem liegt in der Abarbeitungsgeschwindigkeit.
Wenn ich zum Beispiel eine Statemachine gebastelt hab und da steht in
dem einen Status:
A := a + 1;
B := C & D;
Wie lange ist dann die verzögerung bei der abarbeitung der
Befehlsschritte? Das gleiche gilt auch für eine Funktion. Wie lange ist
da ein Taktzyclus oder unter was findet man diese Angabe im Datenblatt?

2. Frage:
Ich habe mitlerweile schon mitbekommen, das man in den Properties sehr
viel an seinem Code "Tunen" kann. allerdings stehe ich noch vor den
einstellungen wie "Ochs vorm Berge". Gibt es ein gutes Buch in dem
auch  auf solche sachen eingegangen wird? VHDL Bücher gibt es ja viele,
aber zu den Properties... oder bleibt mir da nur der Blick in das manual
von Xilinx?

3. Frage:
Ich habe vor kurzen hier gesehen, das jemand bei der übergabe der
Signale von der Komponente in das Toplevelmodell nicht genug Signale
zur verfügung hat. Warum gibt es da eine begrenzung? Eigendlich werden
doch eh die Komponenteneinteilungen nur für die User zur
verständlichkeit verwendet. Im Mapping geht die Komponentenaufteilung
doch eh verloren oder?


Sory das es so viele Fragen geworden sind, aber das sind die stellen,
an denen es noch gewaltig bei mir zwickt :-)

Ansonsten noch einen schönen Tag...

Brutus

Autor: Ines (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zu Deiner ersten Frage: Das mit dem sequentiellen Abarbeiten hat nichts
mit irgendwelchen Durchlaufzeiten o.ä. auf der Hardware zu tun. Es
bezieht sich nur auf die logische Zuweisung der Signale. Dein Beispiel
ist dafür nicht ganz geeignet, deshalb:

process (in)
begin
  a <= in;
  b <= a;
end process;

Würden die Zuweisungen in einer paralleln Umgebung stehen (ohne den
Prozess drumzu), könnte man dafür auch gleich
b <= in;
schreiben. In einer sequentiellen heißt das aber, das "in" erst beim
zweiten Prozessdurchlauf (also wenn sich "in" zum 2. Mal ändert)
"b" zugewiesen wird.

Bei Dir gibt es real überhaupt keine Verzögerung, zumal Du mit
Variablen arbeitest. Hätte ich mein Beispiel mit Variablen aufgebaut,
würde sich auch wieder "b <= in" ergeben.

Ich hoffe, ich konnte Dir helfen und habe Dich nicht noch mehr
verwirrt!

Ines

Autor: Brutus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Ines... ok ich denke Frage 1 kann gestrichen werden :-) Da bin ich
schon mal um einiges schlauer :-)
Danke dir...

Autor: Sven Johannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin...

zu 2.
Bevor man anfängt zu "tunen" sollte man sauberen Code produzieren.
Welche Properties meinst du jetzt konkret?

zu 3.
Einen Engpass bei den Signalen kann es so eigenlicht nicht geben. Die
abstrakte Logik wird beim Mapping sowieso auf die Primtives
plattgehauen und dann in den Chip per Map übertragen. Alte Versionen
von Xilinx Schematic hatten das Problem nicht über die Grenzen ihrer
Blöcke hinaus zu optimierern. Irgendwann hat man schlicht nicht mehr
genug Routings im Chip und dann ist Schicht. Auf abstrakter VHDL Ebene
ist das komplett egal.

--
 Sven Johannes

Autor: Brutus (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
So da bin ich wieder :-)

@ Sven
zu 2:
Ich meine Speziell die Properties des Mappings. Hier soll man ja sehr
viele Einstellungen zur Reduzierung des Platzbedarfs vornehmen können.
Oder ist das alleine mit Properties nicht zu machen?

zu 3:
Ich lege mal in den anhand das Summary (erzeugt mit Webpack 7.1.03) in
den Anhang.
Unter "Number of bonded IOBs:" stehen mit maximal 173 zur Verfügung.
Das ist aber genau die Anzahl der IO Pins meines Spartan 3 (glaube
ich). Eigendlich dürfte er also nur "error"-melden, wenn ich diese
Entity auch wirklich für IO´s nutze. In meinem Fall soll es aber nur
zur internen Datenkommunikation dienen. Kannst du dir das erklären?
Warum zählt er die Ein und ausgänge zu den IO´s obwohl es als
Komponente verwendet wird?

Autor: Sven Johannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin...

2.
Bei den Mapping Optionen kannst du festlegen ob und wie er die Logik
abbildet. Also Zeit oder Platzoptimiert. Wenn du auf Zeit gehst kann es
sein das er Logik doppelt oder n-fach anlegt um Routings zu sparen. Oder
er haut Logik richtig platt statt sie in mehreren Schriten
abzuarebeiten, die Optionen sind da sehr vielfältig, man legt aber eher
die grundlegende Struktur fest. Wenn die Optimierung auf Area steht
macht er das schon so klein "wie möglich". Die meisten Optimierungen
laufen eher auf die Geschwindigkeit hinaus, die langsamsten Strukture
sind auch fast immer die kleinsten.

3.
Da sehe ich jetzt kein Problem? Wenn du eine Entity baust die mehr als
173 Ports hat kannst du die nicht als Top-Hierachie synthetisieren, und
das wars. Die Xilinx Software hüpft gerne mal in der Navigation von File
zu File und vor dem Klicken muss man drauf achten was gerade angewählt
ist. Oder habe ich das Problem jetzt nicht erfasst?

--
 Sven Johannes

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.