Multiplikation

Gast #931970
Lesenswert?

Hallo

Eigentlich hat der Spartan ja Multiplizierer drin und laut User Guide 
sollte ISE diese auch verwenden, wenn ein Multiplikationszeichen 
vorkommt.

Nun bekomm ich allerdings folgenden Fehler:

ERROR:HDLParsers:808 - "H:/VHDL/vga/framebuffer_addrgen.vhd" Line 46. * 
can not have such operands in this context.

1
architecture Behavioral of framebuffer_addrgen is
2
  signal saddr : std_logic_vector(16 downto 0);
3
begin
4
  generate_address : process(clk)
5
  begin
6
    if clk = '1' and clk'event then
7
      saddr <= row * 320; -- <== Zeile 46
8
    end if;
9
  end process;
10
  addr <= saddr;
11
end Behavioral;

Was läuft hier falsch?

Gruss
Michael
Gast #931980
Lesenswert?

Im Userguide steht folgendes Beispiel:
1
library ieee;
2
use ieee.std_logic_1164.all;
3
use ieee.std_logic_arith.all;
4
use ieee.std_logic_unsigned.all;
5

6
entity mult18x18sio is
7
  port ( a : in std_logic_vector(7 downto 0);
8
         b : in std_logic_vector(7 downto 0);
9
         clk : in std_logic;
10
         prod : out std_logic_vector(15 downto 0));
11
  end mult18x18sio;
12

13
  architecture arch_mult18x18sio of
14
    mult18x18sio is
15
    begin
16
      process(clk) is begin
17
        if clkevent and clk = 1 then
18
          prod <= a*b;
19
        end if;
20
      end process;
21
  end arch_mult18x18sio;

Genau die selben Bibliotheken habe auch ich verwendet und auch die 
restliche Struktur ist soweit ich es sehen kann, genau gleich.
#931987
Lesenswert?

@ mr.chip (Gast)

>Genau die selben Bibliotheken habe auch ich verwendet und auch die
>restliche Struktur ist soweit ich es sehen kann, genau gleich.

Du multiplizierst aber mit einer Konstanten. Versuch mal

saddr <= row * conv_std_logic_vector(320,9);

MFG
Falk
Gast #932737
Lesenswert?

Aber ehe Du einen Multiplikator dafür verbrätst, verwende doch
1
-- x*256 + x*64 = x*320
2
saddr <= std_logic_vector( (row sll 8) + (row sll 6) );
Da brauchst Du nur einen Adder (row sollte unsigned sein).

Rick

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