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


von Igor (Gast)


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 :
1
FLASH_ENABLE                          : in   std_logic;  
2
-----------
3
Signal BRAM_WRITE_OR_READ_ENABLE      : std_logic:='0';
4
Signal BRAM_OUT_DATA_1                : std_logic_vector  (11 downto 0);
5
Signal SWITCH                         : std_logic_vector (1 downto 0);
6
7
 begin
8
SWITCH <= (BRAM_WRITE_OR_READ_ENABLE, FLASH_ENABLE);
9
10
11
with SWITCH select  
12
  WEITERGABE_DATEN_BRAM<=  BRAM_OUT_DATA_2     when  "01",
13
                  BRAM_OUT_DATA_1              when  "11",
14
                  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

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


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.

von Igor (Gast)


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?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


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.

von Igor (Gast)


Lesenswert?

Hallo,


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


Gruß

von Andreas B. (Firma: www.collion.de) (bergy) Benutzerseite


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.