www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Frage zum Warning Latch


Autor: Igor (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

eine Frage zum Latch. Ich möchte auf einem 12 bit Ausgang entweder ein 
Signal oder das anderes Signal geben also ein Switch. Im 3 fall soll er 
auf beim letzten Wert bleiben. Dazu habe ich folgendes programmiert :
FLASH_ENABLE                          : in   std_logic;  
-----------
Signal BRAM_WRITE_OR_READ_ENABLE      : std_logic:='0';
Signal BRAM_OUT_DATA_1                : std_logic_vector  (11 downto 0);
Signal SWITCH                         : std_logic_vector (1 downto 0);

 begin
SWITCH <= (BRAM_WRITE_OR_READ_ENABLE, FLASH_ENABLE);


with SWITCH select  
  WEITERGABE_DATEN_BRAM<=  BRAM_OUT_DATA_2     when  "01",
                  BRAM_OUT_DATA_1              when  "11",
                  WEITERGABE_DATEN_BRAM        when others; 



Jetzt kommt die Warnung Latch gefunden... und im Prinzip will ich ja 
auch ein Speicherzustand.

So ist das gutes Design? Oder kann ich die auch schöner umschreiben, so 
das das Signal immer hin und her Schaltet und beim 3 Fall da bleibt wo 
er zu letzt war.



Danke


Gruß Igor

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

Bewertung
0 lesenswert
nicht lesenswert
Was passiert denn, wenn du SWITCH von "11" nach "00" schaltest, und 
zwischendurch ein kurzer Glitch mit "01" auftritt?

> Oder kann ich die auch schöner umschreiben,
Ja, indem du den FPGA-Takt nimmst, und den Speicher 
WEITERGABE_DATEN_BRAM damit synchron taktest.

Autor: Igor (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi, naja der Switch ist kein physikalischer switch, das FLASH_ENABLE 
wird nach eine Trigger erzeugt und dauert dem entsprechend, und 
BRAM_WRITE_OR_READ_ENABLE wird in einem Zustandsautomat definiert. Also 
alles eigentlich mit Takten.


Ändert das was?

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

Bewertung
0 lesenswert
nicht lesenswert
> Ändert das was?
Jain, du wirst trotzdem Glitches haben, denn die Laufzeiten der Signale 
in SWITCH sind sicher unterschiedlich. Ob dein Design das aushält mußt 
du selber bewerten.

Autor: Igor (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,


danke für die Antwort irgendwie funzt das nicht so...


Gruß

Autor: Andreas Bergmann (Firma: www.collion.de) (bergy) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Igor schrieb:
> Hi, naja der Switch ist kein physikalischer switch, das FLASH_ENABLE
> wird nach eine Trigger erzeugt und dauert dem entsprechend, und
> BRAM_WRITE_OR_READ_ENABLE wird in einem Zustandsautomat definiert. Also
> alles eigentlich mit Takten.

Wenn Du eh alles getaktest hast, was hindert Dich dann dein CASE in 
einem getakteten Prozess zu stecken? Damit hast Du die unterschiedlichen 
Latenzen deiner beiden Signale vom Switchvector elemeniert und XST gibt 
auch Ruhe...

Gruß

Andreas

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.