Forum: FPGA, VHDL & Co. [Anfängerfrage] Sind auch mehrere (verschiedene) Instanzen einer Komponente möglich?


von MuePlus (Gast)


Lesenswert?

Hallo,

ich habe einen einfachen Multiplexer mit einer über eine GENERIC MAP 
parametrierte Busbreite entworfen:

...
GENERIC (
  busbreite: natural := 32
);
PORT ( ...


In meinem Gesamtdesign benötige ich mehrere Instanzen davon. So weit 
funktioniert das auch.

Aber sobald ich zusätzlich noch eine Instanz mit einer anderen Busbreite 
erzeugen möchte, mault Quartus und besteht auf die in der ersten Instanz 
vereinbarte Busbreite.

Was mache ich (oder Quartus) falsch?

Schon einmal Danke
MuePlus

von Duke Scarring (Gast)


Lesenswert?

Mit Deiner Methode hast Du erstmal einen default-Wert vorgegeben.
Den must Du bei der Instanzierung ggf. überschreiben:
1
modul_inst0: modul
2
generic map (
3
  busbreite => 16
4
)
5
port map (
6
...
7
);

Duke

von MuePlus (Gast)


Lesenswert?

Eigentlich mache ich das ja:
1
inst0 : mux
2
GENERIC MAP(portbreite => 32
3
      )
4
PORT MAP(auswahl => sel0,
5
     ein1 => a,
6
     ein2 => b,
7
     aus => c);
8
9
10
inst1 : mux
11
GENERIC MAP(portbreite => 5
12
      )
13
PORT MAP(auswahl => sel1,
14
     ein1 => e,              --   <== Fehler in Zeile 43
15
     ein2 => f,
16
     aus => g);

Dummerweise sagt mir Quartus: Error (10344): VHDL expression error at 
muxtest.vhd(43): expression has 5 elements, but must have 32 elements

MuePlus

von Klaus (Gast)


Lesenswert?

Wie sieht die Entity komplett aus? Wie sieht die Component Deklaration 
aus? Wie sind die Signale deklariert, die du mit den Instanzen verbinden 
möchtest?

Soll heißen: Es wäre leichter wenn man nicht nach jeder Codezeile 
einzeln fragen müsste, sondern gleich vollständigen Code zu Gesicht 
bekäme ;-)

von ... (Gast)


Lesenswert?

Hast du dich vertippt oder müsste es nicht

busbreite anstatt portbreite heißen?

von MuePlus (Gast)


Lesenswert?

Ich habe jetzt meinen Muxertest einmal auf das wesentliche reduziert und 
schon lässt er sich übersetzen.

Ich schaue mir daher noch einmal das "Umfeld" an. Dummerweise ist das 
ein von Quartus aus einem Shcematic generierter VHDL-Quelltext (sonst 
klappt die Simulation nicht).

Vielen Dank für die bisherige Hilfe. Nin jetzt einen großen Schritt 
weiter.

MuePlus

von MuePlus (Gast)


Lesenswert?

Mein Problem liegt in der automatischen Erzeugung der VHDL-Datei aus 
einem Schematic! Die Komponentenbeschreibung hat zwar noch einen 
GENERIC-Teil, dummerweise wird aber die Busbreite fest eingetragen. 
Damit hat eine spätere GENERIC MAP bei der Instanzierung keine Chance 
mehr.

Ich bin aber auf die Konvertierung aus der Schematik angewiesen, da ich 
laut Quartus-Hilfe nicht direkt aus einem Schematic in die Simulation 
per Modelsim gehen kann. Daher lasse ich mir dafür extra dafür eine 
VHDL-Datei aus dem Schematic erzeugen.

Das Problem habe ich jetzt gefunden, eine Lösung sehe ich aber leider 
nicht.

Installiert ist Quartus II 12 mit SP2.

von Duke Scarring (Gast)


Lesenswert?

MuePlus schrieb:
> Das Problem habe ich jetzt gefunden, eine Lösung sehe ich aber leider
> nicht.
Verzichte auf Schematic und schreib den Code selbst.

Duke

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.