Zeitverzug bei Mult.

Gast #3836419
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;
Gast #3836446
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
#3836505
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.
Moderator (Firma: Titel) Persönliche Seite #3836669
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".

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