mikrocontroller.net

Forum: FPGA, VHDL & Co. Komponente Warnung: node of sequential type is unconnected in block


Autor: Martina M. (xaiven-be)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich bin blutiger Anfänger, also verzeiht mir bitte eventuelle dumme 
Fragen und Fehler.
Ich habe mir in einer .vhd-Datei folgenden Addierer gebastelt:
entity a1 is 
 Port ( 
  clk: IN std_logic;
  a1_a : in  STD_LOGIC_VECTOR (39 downto 0);
  a1_b : in  STD_LOGIC_VECTOR (39 downto 0);
  a1_sum : out  STD_LOGIC_VECTOR (39 downto 0)
 );
end a1;

architecture Behavioral of a1 is
begin
 process(clk)
 begin
  if (clk'event and clk = '1') then
   a1_sum <= a1_a + a1_b;
  end if;
 end process;
end Behavioral;
In meiner Hauptdatei binde ich diesen ein:
architecture Behavioral of calc is
 component a1
 port (
  clk:   IN std_logic;
  a1_a: in  std_logic_vector (39 downto 0);
  a1_b: in  std_logic_vector (39 downto 0);
  a1_sum: out  std_logic_vector (39 downto 0)
 );
end component;
signal a1_a: std_logic_vector(39 downto 0) :=(OTHERS => '0');
signal a1_b: std_logic_vector(39 downto 0):=(OTHERS => '0');
signal a1_sum: std_logic_vector(39 downto 0):=(OTHERS => '0');
:
begin
 adder1 : a1
   port map (
   clk => clk,
   a1_a => a1_a,
   a1_b => a1_b,
   a1_sum => a1_sum
  );
Dann kommt eine SM, in der die Signal (a1_a, a1_b) mit verschiedenen 
Werten beladen werden. Jetzt kommen hier bei der Synthese sehr viele 
Warnungen:  node ... of sequential type is unconnected in block. Mehr 
als 90 Warnungen sind einfach nicht gut, oder?
Allerdings funktioniert alles, mit einer Testbench getestet.

Was habe ich da "unschönes gemacht"?
Hintergrund:
Ich muss eine komplexe Berechnung in HW realisieren. Dafür muss ich 
hintereinander mehrere Multiplikationen und Addition ausführen. Ich darf 
jeweils nur einen Multiplizierer und Addierer verwenden, weshalb in eine 
SM verwende, die den Eingängen des Multiplizierer und Addieres 
nacheinander verschiedene Werte/Signale aufschaltet.
Software:
Xilinx ISE 10.1.03

Danke für eure Hilfe!!
Viele Grüße
Martina

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du hast die interessanten Teile der Warnungen ausgelassen. Häng die 
gesamten Warnungen doch einfach als Text-File mit an.

Zu deinem Code:
  a1_a : in  STD_LOGIC_VECTOR (39 downto 0);
  a1_b : in  STD_LOGIC_VECTOR (39 downto 0);
  a1_sum : out  STD_LOGIC_VECTOR (39 downto 0)
  :
  if (clk'event and clk = '1') then
     a1_sum <= a1_a + a1_b;
  end if;
  :
Warum muß die Addition getaktet sein? Auf diese Art handelst du dir nur 
1 Takt Latency ein. Die Addition ist ein rein kombinatorischer Vorgang.

Das Ergebnis zweier 40-Bit Additionen sind 41 Bit. Wie gehst du mit 
einem evtl. Übertrag um?

> Allerdings funktioniert alles, mit einer Testbench getestet.
Das bedeutet nur, dass sich deine Beschreibung fehlerfrei simulieren 
lässt. Ob du die fehlerfrei implementiert bekommst, steht auf einem 
anderen Blatt ;-)

Autor: Martina M. (xaiven-be)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

hier meine kompletten Warnungen... Sind noch ne Menge... Arbeite an 
vielen Baustellen gleichzeitig. Auch an unsinnigen Latches, deshalb habe 
ich auch versucht, bei der Addition zu takten, damit hier keine Latches 
entstehen. Vielleicht auch falsch gedacht, vielleicht in der Kombination 
mit der SM falsch.

Gruß
Martina

Autor: Xenu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"node ... of sequential type is unconnected" bedeutet dass die Signale 
keine Ausgänge (direkt oder indirekt) treiben. Kann ein Fehler sein, 
muss aber nicht.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> One or more signals are missing in the process sensitivity list.
Diese Warnung ist kritisch.
Deine Simulation macht nicht das, was die Hardware macht!

Aus den ganzen Warnungen ist zu entnehmen, dass du viel in 
kombinatorischen Prozessen machst. In solchen Prozessen ist es schon mal 
hilfreich, den Ergebnissen vorher einen Defaultwert zuzuweisen. Dann 
wird dafür kein Latch sondern Kombinatorik generiert.
Das Ganze einfach nur zu takten ist dann erstmal nur Makulatur. Denn 
dann werden keine Latches sondern FFs erzeugt und das Ergebnis daraus 
heißt dann Latency.

Autor: Nephilim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
was ich in dem code irgendwie viel kritischer finde ist, dass die ein- 
und ausgangssignale im hauptfile genau gleich heissen wie die in- und 
outputs. also die signale werden dann wohl mit der componente verbunden, 
aber diese dann nicht mit den in- und outputs. oder nimmt er jetzt die 
in- und outputs für die component und lässt die signale links liegen ?

ich wäre zumindest mal dafür eineindeutige namen zu vergeben.

Autor: Nephilim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
argh, die entitiy is ja garnich dabei, hab das mit dem anfangteil der 
componente verwechselt grad

Autor: Martina M. (xaiven-be)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die vielen und schnelle Antworten. Ich habe gemerkt, dass ich 
wohl zu viel für den Anfang wollte. Das hat so keinen wert. Will da 
nicht eure Zeit verschwenden, weil ich da so ein durcheinander habe. 
Habe jetzt noch einmal ganz sauber von vorne angefangen, um Schritt für 
Schritt die aufkommenden Probleme zu lösen. Das erste Problem ist 
nämlich die Berechnung selber und die (eventuell schlechten) Latches. 
Ist wohl auch besser, wenn ich dazu einen neuen Thread öffne.
Das werde ich gleich machen, mit allen Angaben.

Viele Grüße
Martina

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.