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?