Signalweitergabe in Komponenten

Gast #2746858
Lesenswert?
• ▲
▼
hi,
ich arbeite heute das erste mal mit VHDL, darum verzeihe man mir bitte 
wissenstechnische Unzulänglichkeiten.

Also mein Problem:
Ich habe zwei Komponenten aus denen ich meine Schaltung basteln will.
Allerdings verstehe ich nicht, wie ich sie verknüpfen soll. Mein 
bisheriger Versuch spuckt nur Murks aus (UU - Signal).
1
architecture XY of YX is
2
 component Komponente_1
3
  generic( N : positive := 8);
4
 port (
5
  B : out std_logic_vector( N-1 downto 0));   
6
 end component;
7

8
 componente Komponete_2
9
  generic( N : positive := 8);
10
 port (
11
     A : in std_logic_vector( N-1 downto 0));   
12
 end component;
13

14
 signal kmpl_b : std_logic_vector(N-1 downto 0);
15

16
 begin
17
  K1: Komponente_1 port map (B => kmpl_b);
18
  K2: Komponente_2 port map (A => Kmpl_b);
19

20
 end XY


stimmt das etwa nicht?
lg
Gast #2746880
Lesenswert?
• ▲
▼
Nun ja Ich will einen ADDER/SUBBER bauen, der ja nachdem ob ne '1' oder 
'0' anliegt addiert bzw subtrahiert.
dh. ich brauche:
1. Komplementer.
2. Ripple Carry Adder.
einzeln funktionieren sie ja auch, aber wenn ich sie anwenden will kommt 
Schund raus.

also das uu-bedeutet, dass meine Signale nicht durchgereicht/verarbeitet 
werden?
Gast #2746957
Lesenswert?
• ▲
▼
Aber die Kompilierung ist erfolgreich?

Ich hätte jetzt spontan vermutet, dass das N hier nicht bekannt ist.
1
signal kmpl_b : std_logic_vector(N-1 downto 0);

Aber vielleicht irre ich mich da auch.

Ansonsten schau mal beim Start der Simultation nach, ob die beiden 
Unterkomponenten Komponente_1 und Komponente_2 auch tatsächlich gebunden 
sind.
Gast #2747644
Lesenswert?
• ▲
▼
mc.cm schrieb:
> Nun ja Ich will einen ADDER/SUBBER bauen, der ja nachdem ob ne '1' oder
> '0' anliegt addiert bzw subtrahiert.
Brauchst Du das für die Schule/Uni oder für Dich?

Im zweiten Fall macht man das ungefähr so (ohne tausend verschiedene 
Unterkomponenten):
1
library ieee;
2
use ieee.std_logic_1164.all;
3
use ieee.numeric_std.all;
4

5
...
6

7
  signal select : std_ulogic;
8
  signal a      : unsigned(7 downto 0);
9
  signal b      : unsigned(7 downto 0);
10
  signal result : unsigned(7 downto 0);
11

12
...
13

14
  if select = '1' then
15
    result <= a + b;
16
  else
17
    result <= a - b;
18
  end if;
19

20
...

Duke

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren