www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Signal wird nicht verzögert


Autor: BK (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,
ich hab ein kleines Problem. Ich möchte ein Signal verzögert darstellen. 
Über mein Frequenzgenerator hole ich mir einen Takt. Diesen möchte ich 
mit Hilfe von VHDL(FPGA: Cyclone II, ALTERA) im 6ms verzögern. Hier mal 
kurz mein Code:


LIBRARY ieee;
LIBRARY STD;
USE ieee.std_logic_1164.ALL;
USE ieee.numeric_std.ALL;
USE STD.STANDARD.ALL;

ENTITY Test is
  port(     Eingang : IN STD_LOGIC;
      Ausgang : OUT STD_LOGIC
    );
end Test;



ARCHITECTURE Test_beh OF Test IS

begin

Ausgang <= Eingang AFTER 6ms;

end Test_beh;

Das Signal am Port Ausgang überprüfe ich am Oszi. Aber das Signal ist 
nicht verzögert. Woran könnte das liegen?

Besten Dank.
Gruß BK

Autor: Jan M. (mueschel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Daran, dass du den Eingang direkt dem Ausgang zuweist? After-Statements 
sind nicht synthetisierbar.

Autor: BK (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
was muss ich dann ändern im Code?

Danke.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ BK

Du musst vielleicht mit Signalen arbeiten !?

Autor: BK (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
diese Idee hatte ich auch schon. Hab ich mal ausprobiert und es 
funktioniert immer noch nicht.

Wie verzögere ich denn ein Signal?

Gruß BK

Autor: thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du musst einen getakteten Prozess erstellen und einen Counter laufen 
lassen um die 6 ms Verzögerung zu realisieren.

Autor: BK (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo Thomas,
und wie realisiere ich die 6ms. Die Verzögerungszeit ist ja nicht immer 
gleich. Sie wird berechnet. Wie funktioniert das?

Danke.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ BK (Gast)

>ich hab ein kleines Problem. Ich möchte ein Signal verzögert darstellen.

Was meinst du mit darstellen? Auf einem Oszi?

>Über mein Frequenzgenerator hole ich mir einen Takt. Diesen möchte ich
>mit Hilfe von VHDL(FPGA: Cyclone II, ALTERA) im 6ms verzögern.

"um 6ms"

Wozu? Wie hoch ist die Frequenz?

>Das Signal am Port Ausgang überprüfe ich am Oszi. Aber das Signal ist
>nicht verzögert. Woran könnte das liegen?

An deinem falschen Verständnis von VHDL und Digitaltechnik.

Das "after" Statement ist nicht synhetisierbar, es wird nur für 
Simulationen verwendet. Eine Verzögerung von Signalen geht im 
Wesentlichen nur über Abtastung, Speicherung (Schieberegister) und 
Ausgabe. Mit Takten sollte man sowas aber besser nicht machen. Was soll 
denn das Ganze werden?

MFG
Falk

Autor: BK (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Falk,

>> An deinem falschen Verständnis von VHDL und Digitaltechnik.
Das glaube ich wohl kaum. Ich programmiere viel in VHDL aber dies habe 
ich noch nie gebraucht.

>> Was soll denn das Ganze werden?
Ich habe ein PWM Modul programmiert. Jetzt möchte ich eine 3phasige PWM 
und sie sollen jeweils um 120° gegeneinander verschoben sein. Verstehst 
du?

Gruß BK

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ BK (Gast)


>>> An deinem falschen Verständnis von VHDL und Digitaltechnik.
>Das glaube ich wohl kaum. Ich programmiere viel in VHDL aber dies habe
>ich noch nie gebraucht.

Es gibt Leute die viel Auto fahren und die doch schlechte Autofahrer 
sind.

>Ich habe ein PWM Modul programmiert. Jetzt möchte ich eine 3phasige PWM
>und sie sollen jeweils um 120° gegeneinander verschoben sein. Verstehst
>du?

Ja. Sowas wie Kollege Tuan aus dem Thread?

Beitrag "Logische Schaltung mit verzögertem Ausgang"

Und du behautest allen Ernstes, fit in Digitaltechnik und VHDL zu sein?
Der Herr belieben zu scherzen.

Aber zurück zum Problem. Das Ganze läuft, wie bereits gesagt, über 
Zähler oder Schieberegister, welche die Signale über eine bestimmte 
Anzahl von Takten verzögern. Wenn du beispielsweise 1 MHz Systemtakt 
hast und 6 ms Verzögerung haben willst, dann sind das nach Adam Riese 
6000 Takte. Sinnvollerweise macht man das über einen Zähler/State 
Machine, welcher zur rechten Zeit die Signale schaltet, den ein 
Schieberegister mit 6000 Bit ist ein wenig gross.

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.