Found 1-bit latch for signal

Gast #683330
Lesenswert?
• ▲
▼
Moin,

ich bin grade dabei ein Projekt für die Uni zu machen und habe ein 
Problem mit Warnings.

WARNING:Xst:737 - Found 1-bit latch for signal <OUT_BUF_FULL>.
WARNING:Xst:737 - Found 16-bit latch for signal <A>.
WARNING:Xst:737 - Found 1-bit latch for signal <MB_DATA_OUT>.
WARNING:Xst:2734 - Property "use_dsp48" is not applicable for this 
technology.
WARNING:Xst:737 - Found 1-bit latch for signal <E_0>.
WARNING:Xst:737 - Found 1-bit latch for signal <E_1>.
WARNING:Xst:737 - Found 1-bit latch for signal <E_2>.
WARNING:Xst:737 - Found 1-bit latch for signal <E_3>.
WARNING:Xst:737 - Found 1-bit latch for signal <E_4>.
WARNING:Xst:737 - Found 1-bit latch for signal <E_5>.
WARNING:Xst:737 - Found 1-bit latch for signal <E_6>.
WARNING:Xst:737 - Found 1-bit latch for signal <E_7>.
WARNING:Xst:737 - Found 1-bit latch for signal <E_10>.
WARNING:Xst:737 - Found 1-bit latch for signal <E_8>.
WARNING:Xst:737 - Found 1-bit latch for signal <E_9>.

Ich weiß zwar das diese Warnings auftreten, wenn man die Signale nicht 
richtig Initalisiert - aber ich habe auch keine Idee wie und wo man das 
Sinnvoll tut..

Ich hoffe die Große des Codes schreckt nicht allzusehr ab.

Danke für Eure Hilfe
Angehängte Dateien:
Admin Persönliche Seite #683355
Lesenswert?
• ▲
▼
1
      if RESET = '0' then 
2
        KEY_DATA_IN_ZUSTAND <= Z_RESET after 20 ns;
3
      elsif(GeneratePseudoInput = '1') then
4
        KEY_DATA_IN_ZUSTAND <= Z_PSEUDO after 20 ns;
5
      elsif(GeneratePseudoInput = '0' and KEY_DATA_IN_ZUSTAND = Z_PSEUDO
6
and KEY_DATA_IN_FZUSTAND = Z_RESET) then
7
        KEY_DATA_IN_ZUSTAND <= KEY_DATA_IN_FZUSTAND after 20 ns;
8
      elsif  (KEY_CLK_IN = '0' and KEY_CLK_IN'event ) then
9
          KEY_DATA_IN_ZUSTAND <= KEY_DATA_IN_FZUSTAND after 20 ns;
10
      end if;

Ich fürchte du bist völlig auf dem Holzweg.
1. Es darf im Normalfall nur zwei Arten von Prozessen geben:
- kombinatorische: alle Signale in die sensitivity list, jedes Signal 
muss in jedem if-Zweig zugewiesen werden (sonst Latch), keine 
Taktflankenabfrage
- getaktete: nur clk und reset in die sensitivity list, maximal ein 
asynchroner Reset, nur eine Taktflankenabfrage
2. Man verwendet nur dann mehrere Takte im Design wenn es unbedingt 
notwendig ist
3. "after" ist nicht synthetisierbar

Schau dir mal http://www.vhdl-online.de an, insbesondere das Kapitel 
RTL-Style.
Gast #683369
Lesenswert?
• ▲
▼
Hallo Andreas,

danke für Deine Antwort, aber wie kann ich
1
      elsif(GeneratePseudoInput = '1') then
2
        KEY_DATA_IN_ZUSTAND <= Z_PSEUDO after 20 ns;
anders schreiben? Ich kann ja aus einem Anderen Prozess nicht darauf 
zugreifen? Oder meinst du einfach nur das Signal GeneratePseudoInput aus 
der sensitivity list?
Gast #683547
Lesenswert?
• ▲
▼
@Frank

Ja klar, aber ich muss ja auch den Zustand irgendwie ändern...

Wieso Std_Logic_Vector? Dachte der große Vorteil bei bit_vector ist das 
ich keine probleme mit gleichzeitigem schreiben habe?
#683578
Lesenswert?
• ▲
▼
Halte dich an die Regeln, die Andreas aufgeschrieben hat und weise jedes 
Signal in jedem Fall eines kombinatorischen Prozesses zu.

Du meinst die X und U in den Signalen? Naja, du hast vielleicht dann 
keine Probleme mit dem gleichzeitigen Schreiben, dafür der FPGA, wenn er 
versucht eine Leitung gleichzeit auf 0 und 1 zu ziehen...
#683732
Lesenswert?
• ▲
▼
@ Steffen (Gast)

>@Frank

Warum verwechseln mich Dutzende Leute mit Frank?

>Ja klar, aber ich muss ja auch den Zustand irgendwie ändern...

Sicher, aber das kann immer nur ein Prozess. Für andere Sachen 
(Handshake whatever) braucht es dann mehrere Signale und Multiplexer.

>Wieso Std_Logic_Vector?

Weil man damit vor allem für die Simulation wihtige Werte darstllen 
kann, wie 'Z'; X , U etc.

> Dachte der große Vorteil bei bit_vector ist das
>ich keine probleme mit gleichzeitigem schreiben habe?

Nein.

MfG
Falk
Gast #686459
Lesenswert?
• ▲
▼
Moin,

ich habe das Problem gelöst. Das Problem war das ich nicht CLK - 
Synchron auf die Variablen zugegriffen habe und wenn man sich das 
Prinzip der huffmanschen Normalform mal ansieht wird das auch sehr 
schnell klar :)

Danke
Steffen

Antwort schreiben

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.

Formatierung
  • [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 einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.