Latch mit CPLD

Gast #389153
Lesenswert?
• ▲
▼
Hallo! Ich versuche zur Zeit mir ein Latch mit dem XC9572XL von Xilinx
aufzubauen. Den Quelltext habe ich hier definiert. Fällt jemanden dabei
irgendwas auf, was nicht in Ordnung ist?
Das Ale soll bei der negativen Flanke, die Anweisung ausführen!
Danke schon mal vorab!

AB       : out    STD_LOGIC_VECTOR (7 downto 0)
DB   : inout  STD_LOGIC_VECTOR (7 downto 0)
ALE    : in      STD_LOGIC;

process (ALE)
begin
if (ALE'event and ALE ='0') then
AB(7 downto 0) <= DB(7 downto 0);
end if;
end process;
#389156
Lesenswert?
• ▲
▼
Wenn bei Dir ein "Latch" ein D-FF ist, ist Deine
Beschreibung ok.

Unter einem "Latch" versteht man aber manchmal
(normalerweise?) auch ein zustandsgesteuertes FF (nicht
ein flankengesteuertes FF wie oben bschrieben). Diese Art
der Latche ist nicht immer einfach zu behandeln, man
versucht sie zu vermeiden wenn möglich.

Wie gesagt, als Register, das aus (flankengesteuerten)
FFs (oder D-FFs) besteht, ist Deine Beschreibung ok.

Gruss,

Alex
Gast #389157
Lesenswert?
• ▲
▼
Ok! Danke für die Bestätigung!
Allerdings habe ich trotzdem noch Probleme.
Die Eingangssignale kommen am Ausgang ( Adress- und Datenbus ) leider
nicht heraus.
Falls ich die PORTS einmal 1:1 durchschalte ist das System wiederrum in
Ordnung.
Hast Du vielleicht noch ne Idee, woran das liegen könnte?
Gast #389159
Lesenswert?
• ▲
▼
wenn du
1
process (ALE)              
2
begin                 
3
  if (ALE'event and ALE ='0') then        
4
    AB(7 downto 0) <= DB(7 downto 0);        
5
  end if;
6
end process;

schreibst, dann bekommst du ein flankengesteuertes DFF.
Dieses legt den Eingang nur bei jede fallende Flanke an den Ausgang.

...wenn du aber
1
process (ALE)              
2
begin                 
3
  if ALE ='0' then        
4
    AB(7 downto 0) <= DB(7 downto 0);        
5
  end if;
6
end process;

schreibst, dann bekommst du ein zustandsgesteuertes Latch.
Dieses legt den Eingang an den Ausgang, wenn ALE = 0 ist, das heißt, es
wirkt transparent, weil jede Veränderung vom Eingang bei ALE=0 direkt
auf den Ausgang wirkt.

Nun kommt es drauf an, welches Verhalten von dir gewünscht ist. Latches
versucht man (eigentlich) zu vermeiden, weil sie oft nicht dem
entsprechen was man will und weil sie nicht wirklich einem synchronen
Entwurfsstil entsprechen.
Gast #389160
Lesenswert?
• ▲
▼
@T.M
Danke für Deinen Beitrag. Ich möchte gerne ein flankengesteuertes DFF
haben. Genau so habe ich es auch programmiert!
Die Eingangssignale liegen 100% an.
Nur der Ausgang streikt. Habe auch schon die Timming Diagramme
kontrolliert...alles im grünen Bereich !

Hat die Sofware von Xilinx eventuell nen Problem ?
Habe sonst keine Ahnung wie ich mein Problem in den Griff bekommen
sollte.....und bin für jede Hilfe dankbar !

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 20 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.