Forum: FPGA, VHDL & Co. Componet OR3 Simulation :-(


von Sebastian (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

eigentlich ist es doch ganz einfach eine Componete z.B. OR3 in einen
VHDL-Code einzubinden. Die folgende Variante funktioniert perfekt in
der Simulation:

....
component OR3 is
port (O : out STD_ULOGIC;
    I0 : in STD_ULOGIC;
    I1 : in STD_ULOGIC;
    I2 : in STD_ULOGIC);
end component OR3;

begin
OR3_INSTANCE_NAME : OR3 port map (OUTPUT0,INPUT0, INPUT1,INPUT2);
end Behavioral;

Hier sind OUTPUT0 und INPUTn phsikalisch vorhandene Ports. Im Anhang
ist eine VHDL Code, der auch die Component OR3 benutzt. Allerdings ist
OUTPUT0 ersetzt durch ein Signal uhelp, welches ich dann in einem
Process weiter verarbeiten möchte. XST synthetisiert korrekt allerdings
hängt sich immer die Simulation auf, an der Stelle wo sie die Lib von
OR3 laden möchte.

Ich hab' keine Idee mehr was ich falsch mache...

Danke schon mal für Eure Antworten,
Sebastian

von FPGAküchle (Gast)


Lesenswert?

Ist die unsim komplett für deinen Simulator (welcher?) compiliert?
Check mal mit dem Librarybrowser des Simulators, ob die unisim sichtbar
ist und ob sie eine entity namens or3 enthält.

von Klaus F. (kfalser)


Lesenswert?

Hallo,
wenn Du die Verwendung von Components üben willst, geht Dein Code in
Ordnung, ansonsten geht es viel, viel einfacher mit

Output1 <= Input1 or Input2 or Input3;

Tip am Rande :
Obwohl der Xilinx Editor die Zeilen

use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

automatisch einfügt, sollte man sie löschen und bei Bedarf besser mit
dem Paket numeric_std arbeiten.

Grüße
Klaus

von Sebastian (Gast)


Lesenswert?

Ok Danke,

ich hab's gefunden.

process
begin
  if uhelp = '1' then
     OUTPUT1 <= '1';
  else
    OUTPUT1 <= '0';
  end if;
end process;

OUTPUT1 ist ein physikalischer Port. Den darf man in einem Process
nicht verweden sondern nur Signale...

Aller Anfang ist schwer....
Sebastian

von Klaus F. (kfalser)


Lesenswert?

Ich weiss nicht was Du meinst, Ports darf man in Prozessen genau so
verwenden wie Signale.
Du solltest aber in jedem Fall schreiben :

OUTPUT1 <= uhelp;

Ohne einen Prozess !!

Grüße
Klaus

von FPGA-User (Gast)


Lesenswert?

sollte es nicht heißen :

process(uhelp)
begin
...

?

von Sebastian (Gast)


Lesenswert?

Hallo,

im "VHDL Kompakt.pdf" von der uni hamburg; Kapitel 6.2 Seite 42 steht
geschrieben:

Die Verbindung von Prozessen mit der Außenwelt (andere Prozesse,
instanziierte Komponenten, Ports der umgebenden Entity. . . ) geschieht
ausschließlich über Signale. Dabei sind beim schreibenden Zugriff, also
bei Signalzuweisungen durch den Prozess, einige Punkte zu
beachten.

Vielleicht habe ich das aber auch falsch verstanden.
Sebastian

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.