mikrocontroller.net

Forum: FPGA, VHDL & Co. Spielerein mit Gatter : And ,Or usw in VHDL?


Autor: Peter B. (funkheld)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, guten Tag .
Ich möchte einen Art Gatterbaukasten haben zum Spielen in VHDL.
Hiermit wird schon etwas dargestellt:
library ieee; 
use ieee.std_logic_1164.all; 
use ieee.numeric_std.all; 

entity logi is
    
port(
  sw0 : in  std_logic;
  sw1 : in  std_logic;
  sw2 : in  std_logic;
  sw3 : in  std_logic;
  led : out  std_logic
);
end logi;

architecture behavioral of logi is

signal sig1 :std_logic;   
signal sig2 :std_logic;  
signal sig3 :std_logic;  

begin
  sig1 <= sw0  and sw1; 
  sig2 <= sw2  and sw3; 
  led  <= sig1 xor sig2;
end behavioral;

Nun möchte dieses Gatterkonstrukt mehrmals einbinden für eine 
Kettenreaktion. Wie kann man das machen?
Ich möchte mir eine Gattersammlung anlegen , die ich dann nach belieben 
verbinden kann auch mit einem Takt.

danke.
Gruss

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wozu soll das denn gut sein? VHDL und Verilog sind ja u.a. dazu da, um 
Logik als Text darzustellen. Wenn du unbedingt willst, kannst dir 
natürlich für jedes erdenklich Gatter als VHDL Modul schreiben und das 
dann instanziieren. Aber das ist ja zwei mal von hinten durch die Brust 
ins Auge.

Autor: Lothar M. (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Christian R. schrieb:
> Wozu soll das denn gut sein?
Vermutlich "Back to the roots!"

Nach dem AND, OR und NOT dann ein XOR, dann ein Halbaddierer, daraus ein 
Volladdierer, daraus ein Multiplizierer, und daraus dann eine 
Motorsteuerung. Alles hübsch strukturell beschrieben. Wie bei den Amis, 
die hier immer wieder mal aufschlagen...

Innovationstiefe? 0
Lerneffekt? ~0
Nutzen? <<0

Peter Bierbach schrieb:
> Ich möchte einen Art Gatterbaukasten haben zum Spielen in VHDL.
Den hast du doch: verwende einfach die "eingebauten" Schlüsselworte AND, 
NOT, OR, NOR, NAND, XOR und XNOR.

: Bearbeitet durch Moderator
Autor: Christoph Z. (christophz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Z. B. so:
entity top is
  
end entity top;

architecture structural of top is
  -- Die component Deklaration könnte auch in einem Package stehen
  component logi is
    port (
      sw0 : in  std_logic;
      sw1 : in  std_logic;
      sw2 : in  std_logic;
      sw3 : in  std_logic;
      led : out std_logic);
  end component logi;

  -- Dazu passende Signale deklarieren
  signal sw0 : std_logic;
  signal sw1 : std_logic;
  signal sw2 : std_logic;
  signal sw3 : std_logic;
  signal led : std_logic;
  
begin  -- architecture structural

  -- Die Komponenten "logi" einbinden und Signale zuweisen
  logi_1: logi
    port map (
      sw0 => sw0,
      sw1 => sw1,
      sw2 => sw2,
      sw3 => sw3,
      led => led);

end architecture structural;

Auch nach zu lesen im Reichardt&Schwarz Kapitel 7 "Struktureller 
VHDL-Entwurf"

Autor: Lothar M. (lkmiller) (Moderator) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Oder gleich fertig vorgekaut zum direkten Runterschlucken:
library ieee; 
use ieee.std_logic_1164.all; 

entity Dual_AND_Gate is
  port( A : in  std_logic;
        B : in  std_logic;
        Y : out  std_logic);
end Dual_AND_Gate;
architecture behavioral of Dual_AND_Gate is
begin
  Y <= A AND B; 
end behavioral;

----

library ieee; 
use ieee.std_logic_1164.all; 

entity Dual_OR_Gate is
  port( A : in  std_logic;
        B : in  std_logic;
        Y : out  std_logic);
end Dual_OR_Gate;
architecture behavioral of Dual_OR_Gate is
begin
  Y <= A OR B; 
end behavioral;

----

library ieee; 
use ieee.std_logic_1164.all; 

entity Dual_XOR_Gate is
  port( A : in  std_logic;
        B : in  std_logic;
        Y : out  std_logic);
end Dual_XOR_Gate;
architecture behavioral of Dual_XOR_Gate is
begin
  Y <= A XOR B; 
end behavioral;

----

library ieee; 
use ieee.std_logic_1164.all; 

entity NOT_Gate is
  port( A : in  std_logic;
        Y : out  std_logic);
end NOT_Gate;
architecture behavioral of NOT_Gate is
begin
  Y <= NOT A; 
end behavioral;

----

library ieee; 
use ieee.std_logic_1164.all; 

entity logik is
port(
  sw0 : in  std_logic;
  sw1 : in  std_logic;
  sw2 : in  std_logic;
  sw3 : in  std_logic;
  led : out  std_logic
);
end logik;

architecture behavioral of logik is

  component Dual_AND_Gate is
    port ( A : in  std_logic;
           B : in  std_logic;
           Y : out std_logic);
  end component;

  component Dual_OR_Gate is
    port ( A : in  std_logic;
           B : in  std_logic;
           Y : out std_logic);
  end component;

  component Dual_XOR_Gate is
    port ( A : in  std_logic;
           B : in  std_logic;
           Y : out std_logic);
  end component;

  component NOT_Gate is
    port ( A : in  std_logic;
           Y : out std_logic);
  end component;

  signal sig1 :std_logic;   
  signal sig2 :std_logic;  

begin
  UND1 : Dual_AND_Gate
  port map ( A => sw0,
             B => sw1,
             Y => sig1);
              
  UND2 : Dual_AND_Gate
  port map ( A => sw2,
             B => sw3,
             Y => sig2);
  
  XOR1 : Dual_XOR_Gate
  port map ( A => sig1,
             B => sig2,
             Y => led);
end behavioral;
Nur müsste man dann konsequenterweise auch das XOR aus Invertern und 
Gattern aufbauen (siehe Bild Logik3.png)...

Autor: Lothar M. (lkmiller) (Moderator) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Lothar Miller schrieb:
> Nur müsste man dann konsequenterweise auch das XOR aus Invertern und
> Gattern aufbauen (siehe Bild Logik3.png)...
Wenn man sich mal so richtig selber weh tun will: siehe Anhang... ;-)

: Bearbeitet durch Moderator
Autor: Peter B. (funkheld)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jup, vielen dank.

Ist sehr interessant für mich, daraus kleine Schaltungen herzustellen.

Danke.
Gruss

: Bearbeitet durch User

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.