mikrocontroller.net

Forum: FPGA, VHDL & Co. Frage zu Register aus D FF


Autor: Chris R. (mrgreen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
warum erzeugt der folgende Code die Warnung
"Warning (10631): VHDL Process Statement warning at E_Register.vhd(23): 
inferring latch(es) for signal or variable "Q", which holds its previous 
value in one or more paths through the process"
Save: process(D, Reset, Clk)
  begin
  
    if(Reset = '1') then
      Q <= (others=>'0');
    elsif (Clk'Event and Clk = '1') then  
    
      for i in n-1 downto 0 loop
        Q(i) <= D(i);
      end loop;
    end if;

  end process;


Was ist an der for-Schleife so schlimm? Kann ich sie einfach weglassen?
Die Zuweisung Q <= D; sollte das gleiche machen, oder...?

Autor: Mathi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das sagt nut das Du nicht für alle Fälle dem Q einen Wert zuweist... 
Deswegen generiert Dir das Synthesetool ein Latch...

Außerdem gehört das D nicht in die Sensitivity-List. In synchrone 
Prozesse gehört nur Clk und maximal noch ein Reset.

Autor: Mathi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach ja... Das for ist auch überflüssig. Schreibt einfach Q <= D. Das 
tuts auch ;)

Autor: Chris R. (mrgreen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok danke soweit,
aber ist ein D FF nicht "transparent", wenn der Takt high ist? Das heißt 
jede Änderung vom D-Eingang wird währen Takt=1 am Ausgang sichtbar?
Dann müsste der Prozess doch auch auf D lauschen...

Autor: glücklicher (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das wäre ein latch, kein flipflop

Autor: Mathi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Muss nicht... Das ist ja implementierungsabhängig. Ich kenne D-FF 
eigentlich nur Flankengetriggered. Kannste aber auch mal implementieren. 
Dazu muss nur das Clk'event raus.

Autor: Chris R. (mrgreen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
glücklicher wrote:
> Das wäre ein latch, kein flipflop

Ohja, Asche auf mein Haupt :)

Autor: FPGA-Jeck (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das D in der sensetivity list ist falsch, das verursacht das latch

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ FPGA-Jeck (Gast)

>das D in der sensetivity list ist falsch,

Ja, es ist überflüssig.

> das verursacht das latch

Nein.

Mfg
Falk

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.