Forum: FPGA, VHDL & Co. Zeitverzug bei Mult.


von peter (Gast)


Lesenswert?

Hallo, guten Tga.
Wie sieht bitte der Zeitverzug global aus beim Rechnen im FPGA.
Gibt es da einen Zeitverzug oder läuft da auch wieder alles Parallel?
1
library ieee;
2
use ieee.std_logic_1164.all;
3
use ieee.numeric_std.all;
4
use ieee.std_logic_arith.all;
5
6
entity mult is port(
7
  clock : in  std_logic;
8
  led_g : out STD_LOGIC_VECTOR(7 downto 0)
9
  ); 
10
end mult; 
11
12
architecture Behavioral of mult is
13
signal res : integer range 0 to 255:= 0;
14
signal op1 : integer range 0 to 16:= 3;
15
signal op2 : integer range 0 to 16:= 7;
16
17
signal ergebnis : STD_LOGIC_VECTOR(7 downto 0);
18
signal res1 : integer range 0 to 255:= 0;
19
signal op11 : integer range 0 to 16:= 5;
20
signal op22 : integer range 0 to 16:= 13;
21
22
begin
23
24
process(clock)
25
begin
26
  if rising_edge(clock) then
27
    res <= op1 * op2;
28
    led_g<= std_logic_vector(to_unsigned(res,8));
29
  end if;
30
end process;  
31
32
process(clock)
33
begin
34
  if rising_edge(clock) then
35
    res1 <= op11 * op22;
36
    ergebnis<= std_logic_vector(to_unsigned(res1,8));
37
  end if;
38
end process;  
39
40
end Behavioral;

von Gustl B. (-gb-)


Lesenswert?

Klar läuft das parallel. Aber je nachdem wie das multipliziert wird kann 
es sein, dass das länger braucht wie andere Teile der Logik, also du 
musst dein FPGA vielleicht niedriger Takten. Ob du das musst sagt dir 
der Timing Report, bei 50MHz am Spartan3 hatte ich nie Probleme.

von peter (Gast)


Lesenswert?

------------------------------------
Aber je nachdem wie das multipliziert wird....
------------------------------------

Bezieht sich das auf dem FPGA-Typ, der Beschreibungssprache oder an mir?

Danke.
Gruss

von daniel__m (Gast)


Lesenswert?

peter schrieb:
> Gibt es da einen Zeitverzug oder läuft da auch wieder alles Parallel?

Den Zeitverzug hast du vorgegeben (VHDL Verhaltensbeschreibung)!

Synchrones Design -> (jeweils): 1. Takt Multiplikation, 2. Takt Ausgabe

Ob der FPGA das schafft, sagt die STA, sofern die nötigen Constraints 
angegeben sind.

grüße

von Gustl B. (-gb-)


Lesenswert?

Wie lange das Multiplizieren dauert hängt am FPGA, also ob ein Hardware 
multiplizieren verwendet wird oder nicht, am Speedgrade, und an dir, 
also wie groß die Zahlen sind. Längere Zahlen mit mehr Stellen brauchen 
länger, zumindest theoretisch. Ob du da einen Unterschied merkst hängt 
davon ab wieviel Spielraum du noch hast bei deinem aktuellen Takt. Das 
sagt dir der Timing Report.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

peter schrieb:
> use ieee.numeric_std.all;
> use ieee.std_logic_arith.all;
PETER, LASS DEN SCHEISS!

peter schrieb:
1
process(clock)
2
begin
3
  if rising_edge(clock) then
4
    res1 <= op11 * op22;
5
    ergebnis<= std_logic_vector(to_unsigned(res1,8));
6
  end if;
7
end process;
Diese Beschreibung is EXAKT GNEAU funktionsgleich mit dieser hier:
1
process(clock)
2
begin
3
  if rising_edge(clock) then
4
    ergebnis<= std_logic_vector(to_unsigned(res1,8));
5
    res1 <= op11 * op22;
6
  end if;
7
end process;
Denk da mal ausgiebig drüber nach. Kapitel in deinem VHDL Buch:
"Das scheinbar eigenartige Verhalten von Signalen in Prozessen".

von peter (Gast)


Lesenswert?

Hmm..., es ging mir darum, ob ein Zeitverzug auftritt , je mehr Mult ich 
da reinbringe. Es geht später um eine VGA-Text-Grafik-Darstellung 
640x480.

Danke.
Gruss

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

peter schrieb:
> je mehr Mult ich da reinbringe
Eine einzelne Multiplikation ist eine kombinatorische Anordnung von 
Addiererm. Wenn viele Addierer oder allgemein Logikebenen hintereinander 
geschaltet sind, dann wird die Durchlaufzeit länger und die maximale 
Taktfrequenz des Designs wird niedriger.

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
Noch kein Account? Hier anmelden.