mikrocontroller.net

Forum: FPGA, VHDL & Co. Altera Cyclone II Takt erhöhen


Autor: erwin86 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe mehrere 32 Bit Addierer auf einem Altera Cyclone II Baustein in 
Betrieb. Leider ist es nach Synthese usw. nicht möglich den Takt höher 
als 50 MHz einzustellen, da die maximale Taktrate mit 63MHz angegeben 
wird.

Gibt es eine Möglichkeit eine Optimierung der Schaltung durchzuführen, 
um die Schaltung z. B. mit 100 MHz oder mehr durchzuführen? Oder kann 
die Taktrate einfach höher eingestellt werden? Ich vermute allerdings, 
dass es dabei zu Hasards kommen könnte.

Vielen Dank für eure Hilfe...

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

Bewertung
0 lesenswert
nicht lesenswert
erwin86 schrieb:
> Gibt es eine Möglichkeit eine Optimierung der Schaltung durchzuführen,
> um die Schaltung z. B. mit 100 MHz oder mehr durchzuführen?
Dazu ist so ohne weiteres keine Aussage möglich, weil die Aufgabe und 
deren Umsetzung nicht bekannt ist.

> Gibt es eine Möglichkeit eine Optimierung der Schaltung durchzuführen,
> um die Schaltung z. B. mit 100 MHz oder mehr durchzuführen?
Pipelining wäre ein Stichwort.
Es kommt allerdings darauf an, ob du deine Rechenoperationen alle in 
einem Takt abgeschlossen haben mußt...

Autor: erwin86 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lothar Miller schrieb:
> Es kommt allerdings darauf an, ob du deine Rechenoperationen alle in
> einem Takt abgeschlossen haben mußt...

Es handelt sich um rückgekoppelte Addierer, also wird das erste Ergebnis 
einer Addition mit dem nächsten Wert der am Addierer anliegt wieder 
addiert. Dadurch liegt ein korrektes Ergebnis frühstens nach 2 Takten 
an.

Ich würde halt gerne diesen Bereich mit einer höheren Taktfrequenz 
betreiben.

Autor: erwin86 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
erwin86 schrieb:
> .

Wie ist es denn möglich Pipelinig im FPGA durchzuführen. Ich kenne das 
nur aus dem Bereich µC, das halt mehrere Befehle parallel abgearbeitet 
werden können.

Beim FPGA wird das doch sowieso schon gemacht, oder?

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

Bewertung
0 lesenswert
nicht lesenswert
erwin86 schrieb:
> Beim FPGA wird das doch sowieso schon gemacht, oder?
In deinem Design offenbar schon, denn du schreibst ja:
erwin86 schrieb:
> Es handelt sich um rückgekoppelte Addierer

Hast du da noch irgendwelche Multiplexer drin, weil ein Addierer allein 
(und seien es 32 Bit) sollte schon noch schneller sein...

Bei einem langsamen Spartan3 komme ich damit auf 200MHz:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;

entity adder23bit is
    Port ( clk : in  STD_LOGIC;
           a : in  STD_LOGIC_VECTOR (31 downto 0);
           r : out  STD_LOGIC_VECTOR (31 downto 0));
end adder23bit;

architecture Behavioral of adder23bit is
signal l : unsigned(31 downto 0) := (others=>'0');

begin
  process begin
    wait until rising_edge(clk);
    l <= l + unsigned(a);
  end process;
  r <= std_logic_vector(l);
end Behavioral;

Autor: Stefan R. (stefripp)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welchen Geschwindigkeitscode hat dein Cyclone II?

Autor: erwin86 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lothar Miller schrieb:
> Hast du da noch irgendwelche Multiplexer drin, weil ein Addierer allein
> (und seien es 32 Bit) sollte schon noch schneller sein...


Okay, es gibt noch andere Komponenten in der Schaltung wie einfache 
Verzögerungen und Zähler, hatte aber als zeitkritische Komponente die 
Addierer vermutet, da alle anderen Vektoren nicht so breit sind. Werde 
dann mal die Zähler auf die Geschwindigkeit hin überprüfung und die 
Addierer auch noch mal.

Vielen Dank erst mal.

Autor: erwin86 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan R. schrieb:
> Welchen Geschwindigkeitscode hat dein Cyclone II?

Wo kann ich den denn erfahren?

Autor: Stefan R. (stefripp)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auf der allerletzten Seite im Data Sheet steht der Schlüssel, welchen 
Cyclone 2 du genau hast.

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

Bewertung
0 lesenswert
nicht lesenswert
erwin86 schrieb:
> hatte aber als zeitkritische Komponente die Addierer vermutet,
Da mußt du nichts vermuten.
Sieh dir mal die statische Timinganalyse an, dort werden die kritischen 
Pfade aufgeführt (zumindest bei Xilinx, aber ich denke, da kochen alle 
mit dem selben Wasser)...

Autor: Sym (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Am Addierer selbst kanns nicht liegen, der müsste über 200 MHz schaffen, 
selbst im langsamsten Cyclone II.
Schau mal im Classic Timing Analyzer oder Timequest nach, wo genau der 
kritische Pfad liegt.

Autor: Tilo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und dann versuchen den kritischen Pfad, eventuell mit Pipelining zu 
verkürzen.
Ich hab schon knapp 350MHz aus nem Cyclone II rausholen können, das 
wurde aber schon sehr eng.

Autor: Stefan R. (stefripp)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hatte kürzlich auch Probleme mit der eigentlich unkritischen 
Frequenz von 27MHz aus dem Videowandler. Durch eine entsprechende 
Einstellung im Fitter ließ es sich aber schnell beheben.

Assignments - Settings - Fitter Settings -> Optimize Hold Time auf All 
Paths und  Fitter Effort auf Standart Fit

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.