Altera Cyclone II Takt erhöhen

Gast #2021503
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...
Moderator (Firma: Titel) Persönliche Seite #2021516
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...
Gast #2021550
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.
Moderator (Firma: Titel) Persönliche Seite #2021808
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:
1
library IEEE;
2
use IEEE.STD_LOGIC_1164.ALL;
3
use IEEE.NUMERIC_STD.ALL;
4

5
entity adder23bit is
6
    Port ( clk : in  STD_LOGIC;
7
           a : in  STD_LOGIC_VECTOR (31 downto 0);
8
           r : out  STD_LOGIC_VECTOR (31 downto 0));
9
end adder23bit;
10

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

14
begin
15
  process begin
16
    wait until rising_edge(clk);
17
    l <= l + unsigned(a);
18
  end process;
19
  r <= std_logic_vector(l);
20
end Behavioral;
Gast #2022048
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.
Gast #2029026
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.
#2030305
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren