Generate Anweisung (Vhdl)

Gast #4217570
Lesenswert?

Hallo,

ich habe eine frage zu der Generate Anweisung bzw. ich habe ein Problem 
damit. Ich möchte ein Addiererbaum bauen der von 4 werten auf einen 
runtergeht. Die Skizze soll das mal darstellen:

   ----
--|    |
  |    |- -
--|____|   |
           |    ----
            ---|    |
               |    |-
            ---|____|
   ----    |
--|    |   |
  |    |- -
--|____|

Dieses soll später auch Flexibel sein. Darum dachte ich kann ich das mit 
einer Generate Anweisung machen und Arrays.

Die Komponente wäre diese
1
component  Addier_Baustein is
2
    Port ( NUM1 : in  signed(4 downto 0);    
3
           NUM2 : in  signed(4 downto 0);    
4
           SUM : out  signed(5 downto 0));   
5
end component Addier_Baustein;
6

7
architecture Behavioral of Addier_Baustein is
8
begin
9

10
    SUM <= ('0' & NUM1) + ('0' & NUM2);
11

12
end Behavioral;
Jetzt wollte ich mir ein Array erstellen um die berechneten Werte zu 
speichern und an die Komponente zu übergeben
1
type Array1 is array (0 to 3 of signed(4 downto 0);  
2
Signal Array1Sig : Array1 :=(others => (others => '0'));
3
type Array2 is array (0 to 1 of signed(5 downto 0);  
4
Signal Array2Sig : Array2 :=(others => (others => '0'));
1
Adder1:  for i in 0 to 3 generate
2
 even: if i mod 2 = 0 generate 
3
   Addier_Baustein port map(Array1Sig(i), Array1Sig(i+1), Array2Sig); 
4
 end generate even;
5
end generate Adder1;

Jetzt bekomme ich Fehler beim Port map:

ERROR:HDLParsers:164 parse error, unexpected PORT, expecting OPENPAR or 
TICK or LSQBRACK


Deswegen meine Frage kann man Arrays beim Portmap benutzen oder kann das 
irgendwein andere Fehler sein? Oder kann das daran liegen, dass die 
Array werte signed sind und die von der komponenten std_logic_Vector?
Gast #4217778
Lesenswert?

Lothar M. schrieb:
> Christian schrieb:
>> kann das irgendwein andere Fehler sein?
> Ja, er wird sogar gemeldet:
>> unexpected PORT
> Das Wort PORT darf an dieser Stelle nicht stehen...
>
> Sieh dir mal an, wie Andere das machn:
> http://www.ics.uci.edu/~jmoorkan/vhdlref/generate.html
> Was kommt vor PORT? Und was davor?

Oh man das war natürlich richtig dummer Fehler. Ja das es was mit dem 
Port zu tun hat dachte ich mir nur konnte den Fehler nicht deuten. War 
sogar auf der Seite und habe das nicht gesehen -.-. Danke für den 
Hinweis.
Gast #4217978
Lesenswert?

Valko Z. schrieb:
> Hi
>
> wenn du SIGNED verwendest musst du auch die "Sign Extension" korrekt
> machen also nicht
>
> ('0' & NUM1)
>
> sondern
>
> (NUM1'HIGH & NUM1)
>
>
> Gruß
Danke für den Tip aber wenn das mache bekomme ich immer Fehler

ERROR:HDLCompiler:1731 - found '0' definitions of operator "&", cannot 
determine exact overloaded matching definition for "&"

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