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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Peter B. (funkheld)


Angehängte Dateien:

Lesenswert?

Hallo, guten Tag .
Ich möchte einen Art Gatterbaukasten haben zum Spielen in VHDL.
Hiermit wird schon etwas dargestellt:
1
library ieee; 
2
use ieee.std_logic_1164.all; 
3
use ieee.numeric_std.all; 
4
5
entity logi is
6
    
7
port(
8
  sw0 : in  std_logic;
9
  sw1 : in  std_logic;
10
  sw2 : in  std_logic;
11
  sw3 : in  std_logic;
12
  led : out  std_logic
13
);
14
end logi;
15
16
architecture behavioral of logi is
17
18
signal sig1 :std_logic;   
19
signal sig2 :std_logic;  
20
signal sig3 :std_logic;  
21
22
begin
23
  sig1 <= sw0  and sw1; 
24
  sig2 <= sw2  and sw3; 
25
  led  <= sig1 xor sig2;
26
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

von Christian R. (supachris)


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.

von Lothar M. (lkmiller) (Moderator) Benutzerseite


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
von Christoph Z. (christophz)


Lesenswert?

Z. B. so:
1
entity top is
2
  
3
end entity top;
4
5
architecture structural of top is
6
  -- Die component Deklaration könnte auch in einem Package stehen
7
  component logi is
8
    port (
9
      sw0 : in  std_logic;
10
      sw1 : in  std_logic;
11
      sw2 : in  std_logic;
12
      sw3 : in  std_logic;
13
      led : out std_logic);
14
  end component logi;
15
16
  -- Dazu passende Signale deklarieren
17
  signal sw0 : std_logic;
18
  signal sw1 : std_logic;
19
  signal sw2 : std_logic;
20
  signal sw3 : std_logic;
21
  signal led : std_logic;
22
  
23
begin  -- architecture structural
24
25
  -- Die Komponenten "logi" einbinden und Signale zuweisen
26
  logi_1: logi
27
    port map (
28
      sw0 => sw0,
29
      sw1 => sw1,
30
      sw2 => sw2,
31
      sw3 => sw3,
32
      led => led);
33
34
end architecture structural;

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

von Lothar M. (lkmiller) (Moderator) Benutzerseite


Angehängte Dateien:

Lesenswert?

Oder gleich fertig vorgekaut zum direkten Runterschlucken:
1
library ieee; 
2
use ieee.std_logic_1164.all; 
3
4
entity Dual_AND_Gate is
5
  port( A : in  std_logic;
6
        B : in  std_logic;
7
        Y : out  std_logic);
8
end Dual_AND_Gate;
9
architecture behavioral of Dual_AND_Gate is
10
begin
11
  Y <= A AND B; 
12
end behavioral;
13
14
----
15
16
library ieee; 
17
use ieee.std_logic_1164.all; 
18
19
entity Dual_OR_Gate is
20
  port( A : in  std_logic;
21
        B : in  std_logic;
22
        Y : out  std_logic);
23
end Dual_OR_Gate;
24
architecture behavioral of Dual_OR_Gate is
25
begin
26
  Y <= A OR B; 
27
end behavioral;
28
29
----
30
31
library ieee; 
32
use ieee.std_logic_1164.all; 
33
34
entity Dual_XOR_Gate is
35
  port( A : in  std_logic;
36
        B : in  std_logic;
37
        Y : out  std_logic);
38
end Dual_XOR_Gate;
39
architecture behavioral of Dual_XOR_Gate is
40
begin
41
  Y <= A XOR B; 
42
end behavioral;
43
44
----
45
46
library ieee; 
47
use ieee.std_logic_1164.all; 
48
49
entity NOT_Gate is
50
  port( A : in  std_logic;
51
        Y : out  std_logic);
52
end NOT_Gate;
53
architecture behavioral of NOT_Gate is
54
begin
55
  Y <= NOT A; 
56
end behavioral;
57
58
----
59
60
library ieee; 
61
use ieee.std_logic_1164.all; 
62
63
entity logik is
64
port(
65
  sw0 : in  std_logic;
66
  sw1 : in  std_logic;
67
  sw2 : in  std_logic;
68
  sw3 : in  std_logic;
69
  led : out  std_logic
70
);
71
end logik;
72
73
architecture behavioral of logik is
74
75
  component Dual_AND_Gate is
76
    port ( A : in  std_logic;
77
           B : in  std_logic;
78
           Y : out std_logic);
79
  end component;
80
81
  component Dual_OR_Gate is
82
    port ( A : in  std_logic;
83
           B : in  std_logic;
84
           Y : out std_logic);
85
  end component;
86
87
  component Dual_XOR_Gate is
88
    port ( A : in  std_logic;
89
           B : in  std_logic;
90
           Y : out std_logic);
91
  end component;
92
93
  component NOT_Gate is
94
    port ( A : in  std_logic;
95
           Y : out std_logic);
96
  end component;
97
98
  signal sig1 :std_logic;   
99
  signal sig2 :std_logic;  
100
101
begin
102
  UND1 : Dual_AND_Gate
103
  port map ( A => sw0,
104
             B => sw1,
105
             Y => sig1);
106
              
107
  UND2 : Dual_AND_Gate
108
  port map ( A => sw2,
109
             B => sw3,
110
             Y => sig2);
111
  
112
  XOR1 : Dual_XOR_Gate
113
  port map ( A => sig1,
114
             B => sig2,
115
             Y => led);
116
end behavioral;
Nur müsste man dann konsequenterweise auch das XOR aus Invertern und 
Gattern aufbauen (siehe Bild Logik3.png)...

von Lothar M. (lkmiller) (Moderator) Benutzerseite


Angehängte Dateien:

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
von Peter B. (funkheld)


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]
  • [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.