Forum: FPGA, VHDL & Co. VHDL generic


von Philipp Helle (Gast)


Lesenswert?

Hi Leuts,
Ich brauche ein und-Gatter entity von dem ich Instanzen mit einer
beliebigen Anzahl von Eingängen erstellen kann.
Also irgendwie sowas:

entity g_and is
  generic(numInp: positive := 2);
  port (
    inp : in std_logic_vector(numInp downto 1);
    outp : std_logic_vector
  );
end entity;

architecture arch_g_and of g_and is
begin
  -- und nu ?
end architecture;


Nur, wie schreib ich die architecture ?

von Philipp Helle (Gast)


Lesenswert?

outp soll natürlich kein Vektor sein :)

von Philipp Helle (Gast)


Angehängte Dateien:

Lesenswert?

So, im weiteren Fortschreiten auf meinem Holzweg ist nun dies
herausgekommen. Jemand schaue es sich an und zeige mir wie es einfacher
geht. Danke,

Phil

von Henrik (Gast)


Angehängte Dateien:

Lesenswert?

Bin selbst noch nicht so ganz firm inder Materie. Mit erweiterbaren
Komponenten habe ich noch keine Erfahrung. Im Anhang siehst du meinen
"Schnell-Schuss". Keine Ahnung, ob der sich "Fitten" lässt.

Gruß Henrik

von Philipp Helle (Gast)


Lesenswert?

Das hab ich auch schon versucht. Daraus wird leider nur ein einziges
und-Gatter mit 2 Eingängen. Der eine Eingang ist mit einem Eingang der
entity Verbunden und in den anderen ist der Ausgang des und-Gatters
zurückgekoppelt; also nicht ganz die gewünschte Funktion ;).
Die "temp" Variable bleibt ein einziges Signal, welches in jedem
Schleifendurchlauf mit sich selbst und dem nächsten Eingang ver-und-et
wird :(.
Meinen strukturellen Ansatz könnte man verbessern, indem man nicht wie
jetzt pro und-Gatter einen einzigen weiteren eingang verrechnet,
sondern irgendwie einen Binärbaum aufbaut.. so ein Käse!

Sowas muss es doch fertig geben, oder wie ver-und-et ihr alle bits
eines Vektors mit variabler Breite ?

von Henrik (Gast)


Angehängte Dateien:

Lesenswert?

Sehe ich nicht so. Wenn ich hingehe und width = 5 setze, das compiliere
und mir die RTL-Schematik ansehe, sehe das im Anhang. Das ist für
meinen Geschmack ein AND mit 5 Eingängen. Du solltest eine Variable für
Temp nehmen, kein Signal.

Gruß Henrik

von Philipp Helle (Gast)


Lesenswert?

Ah, geht ja doch :)
Dann hab ich beim ersten Versuch wohl mist gebaut.

danke,
Phil

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.