Forum: FPGA, VHDL & Co. Signal_vergleich in VHDL


von sensor (Gast)


Lesenswert?

Hi Leute,

ich will zwei signale vergleichen. Die sind eingentlich  Signale die ich 
von einem sensor( inkremental Drehgeber) bekommen.Aber es ist die Frage 
die Drehrichtung eines Drehgeber zu bestimmen und dafür muß ich wissen 
welchen von den 2 erfasste Signale schneller als das andere ist.
Die Signale sind Rechteckig und deshalb als Frequenz zu betrachten.

Wie kann man das ganze im VHDL umsetzen??
wie wäre dies??
1
Process(signal_A, signal_B)
2
begin
3
Richtung < = '0';
4
5
 if signal_A> signal_B then
6
7
Richtung <='1';-----Rechtslauf
8
  else 
9
Richtung <='0';-----Linkslauf
10
11
12
end if;
13
14
end Process;

ich freue mich auf ihre Meinungen

von Christian R. (supachris)


Lesenswert?

Wie man inkrementelle Drehgeber in VHDL narrensicher auswertet, steht 
hier: 
http://www.mikrocontroller.net/articles/Drehgeber#Beispielcode_in_VHDL

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


Lesenswert?


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


Lesenswert?

> Wie kann man das ganze im VHDL umsetzen??
Ich könnte mir eine funktionsfähige Quick-And-Dirty Variante auch so 
vorstellen:
1
Process(signal_A)
2
begin
3
  if rising_edge(signal_A) then
4
    if (signal_B='1') then Richtung <='1';-----Rechtslauf
5
    else                   Richtung <='0';-----Linkslauf
6
    end if;
7
  end if;
8
end Process;
Allerdings sollte dann das Signal Richtung auf den FPGA-Takt 
einsynchronisiert werden...

von sensor (Gast)


Lesenswert?

Danke an euch , es hat mir viel geholfen und besonder die Code von 
Miller
Noch mal dankeschön

von Weltbester FPGA Pongo (Gast)


Lesenswert?

ich denke, du hast schon eingangs einen denkfehler: Die takte aus dem 
drehgeber sind nicht unterschiedlich schnell, sondern es gibt nur eine 
phasendifferenz.

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.