www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Toggle FF


Autor: T.M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich glaub ich hab grad ne Denkblockade...folgender Code soll ein T-FF
darstellen, hat meines Erachtens auch schon vor einiger Zeit schonmal
funktioniert, nun zeit mir Modelsim aber am Ausgang immer 'U'. Was is
da los? Kann mir jemand nen Tip geben?
entity NRZI is
Port (CLK, DATA_IN : in std_logic;
      DATA_OUT: out std_logic);
end NRZI;

architecture Verhalten of NRZI is
signal NRZI_INT: std_logic;
signal FF_INPUT: std_logic;

begin

KOMB: process(DATA_IN, NRZI_INT)
begin
    case DATA_IN is
  when '1' => FF_INPUT <= NRZI_INT;
  when others => FF_INPUT <= DATA_IN xnor NRZI_INT;
    end case;
end process KOMB;

DFF: process (CLK, DATA_IN)
begin
  if CLK'event and CLK = '1' then
    NRZI_INT <= FF_INPUT;
  end if;
end process DFF;

DATA_OUT <= NRZI_INT;

end Verhalten;

Danke schonmal...

Autor: T.M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat sich erstmal erledigt, muss das Signal NRZI_INT natürlich mit '1'
initialisieren....nun hab ich nur noch nen anderes Problem. Bei
folgendem Code soll der Datenstrom, der in obigen Code reingeht wieder
decodiert werden. Das funktioniert auch, hab nur in der Simulation
Störspitzen bei Data_out = '0' im Takt von CLK. Was is denn da los?
entity DENRZI is
port(CLK, DATA_IN: in std_logic;
     DATA_OUT: out std_logic);
end DENRZI;

architecture Verhalten of DENRZI is
signal DENRZI_INT: std_logic := '1';

begin

DENRZI: process(CLK)
begin
  if CLK'event and CLK = '1' then
    DENRZI_INT <= DATA_IN;
  end if;
end process DENRZI;     

DATA_OUT <= DENRZI_INT xnor DATA_IN;

end Verhalten;

Autor: TobiFlex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mir kommt diese Zeile sehr komisch vor:
 when others => FF_INPUT <= DATA_IN xnor NRZI_INT;
probier lieber mal:
 when others => FF_INPUT <= not NRZI_INT;

Viele Grüße
TobiFlex

Autor: T.M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So, jetzt hab ich es. Ich hab den Prozess DENRZI folgendermassen
geändert:
DENRZI: process(CLK)
begin
  if CLK'event and CLK = '1' then
    DENRZI_INT <= DATA_IN;
   DATA_OUT <= DENRZI_INT xnor DATA_IN;
  end if;
end process DENRZI;
und schon sind die Störspitzen weg. Also einfach ne
Ausgangssynchronisation.

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.