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
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
Hi Ines... ok ich denke Frage 1 kann gestrichen werden :-) Da bin ich schon mal um einiges schlauer :-) Danke dir...
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
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?
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.