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

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