Forum: FPGA, VHDL & Co. Signalweitergabe in Komponenten


von mc.cm (Gast)


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

von Christian R. (supachris)


Lesenswert?

Naja, das Ausgangssignal der Komponente_1 ist offenbar uninitialisiert, 
deswegen das 'U'. Was genau beinhalten denn die Komponenten, speziell 
die _1?

von mc.cm (Gast)


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?

von Christian R. (supachris)


Lesenswert?

uu bedeutet uninitialisiert, also niemand "schreibt" etwas auf das 
Signal, es hängt quasi in der Luft jedenfalls zu dem Zeitpunkt, zu dem 
das u angezeigt wird. Ohne deinen Vollständigen Code kann man aber nicht 
viel sagen.

von dito (Gast)


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.

von mc.cm (Gast)


Lesenswert?

danke, das wars, er hat die Komponente, die das Komplement bilden soll 
nicht mit gebunden :)
da fragt man sich ob man weinen oder lachen soll...

von Duke Scarring (Gast)


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

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.