mikrocontroller.net

Forum: FPGA, VHDL & Co. Found 1-bit latch for signal


Autor: Steffen (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Für allgemeine Anregungen zum Coding Style wäre ich auch dankbar!

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das warning soll Dir nur sagen, daß Du überlegen sollst, ob dieses 
Register wirklich nur ein Latch ist. Wenn es so sein soll, muss das 
nicht wegdesigned werden !

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
      if RESET = '0' then 
        KEY_DATA_IN_ZUSTAND <= Z_RESET after 20 ns;
      elsif(GeneratePseudoInput = '1') then
        KEY_DATA_IN_ZUSTAND <= Z_PSEUDO after 20 ns;
      elsif(GeneratePseudoInput = '0' and KEY_DATA_IN_ZUSTAND = Z_PSEUDO
and KEY_DATA_IN_FZUSTAND = Z_RESET) then
        KEY_DATA_IN_ZUSTAND <= KEY_DATA_IN_FZUSTAND after 20 ns;
      elsif  (KEY_CLK_IN = '0' and KEY_CLK_IN'event ) then
          KEY_DATA_IN_ZUSTAND <= KEY_DATA_IN_FZUSTAND after 20 ns;
      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.

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Andreas,

danke für Deine Antwort, aber wie kann ich
      elsif(GeneratePseudoInput = '1') then
        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?

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Steffen (Gast)

>anders schreiben? Ich kann ja aus einem Anderen Prozess nicht darauf
>zugreifen?

Zugreifen schon, aber eben nur lesen. Und nimm keine bit_vector, nimm 
std_logic_vector.

MfG
Falk

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Jan M. (mueschel)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Erstmal vielen Dank für eure Antworten ich werde morgen bzw. am WE mal 
den Code überarbeiten.

@Falk

Sorry hab wohl mal wieder zu schnell gelesen...

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

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.