Hallo ,
ich will bei jedem 2,5 Clocksignal das Ausgangsignal rücksetzen , ist es
möglich ?
Bitte ergänzen Sie das folgende Programm dann. Ich kann nur bei 2 nicht
bei 2,5.Wie ist es mit dem halben??
Vilen Dank im Voraus.
KIT schrieb:> ich will bei jedem 2,5 Clocksignal das Ausgangsignal rücksetzen , ist es> möglich ?
Worauf? CPLD? FPGA?
Welcher Hersteller?
Woher kommt der Takt? Welche Frequenz hat er?
Wozu brauchst du das?
Du könntest einen Clockmanager verwenden, den Takt verdoppeln und dann
jeweils 5 Takte '1' und 5 Takte '0' ausgeben.
@ KIT (Gast)
>ich will bei jedem 2,5 Clocksignal das Ausgangsignal rücksetzen , ist es>möglich ?>Bitte ergänzen Sie das folgende Programm dann. Ich kann nur bei 2 nicht>bei 2,5.Wie ist es mit dem halben??
Dazu braucht man zwei Prozesse, einen auf der steigenden, einen auf der
fallenden Flanke, das Ergebnis wird dann verodert.
1
-- Zaehler mit steigender FLanke
2
process(clk)
3
begin
4
ifrising_edge(clk)then
5
ifcount=4THEN
6
count<="000";
7
else
8
count<=count+1;
9
endif;
10
endif;
11
endif;
12
endprocess;
13
14
-- einfache Verzögerung mit fallender FLanke
15
16
process(clk)
17
begin
18
iffalling_edge(clk)then
19
clk_del<=count(1);
20
endif;
21
endif;
22
endprocess;
23
24
clk_2_5<=count(1)orclk_del;
In normaler Logik kann man keine halben Takte verarbeiten, ist aber auch
nicht nötig.
MFG
Falk
Hallo ,
schon Danke für die Reaktion.
Eigentlich ist mein Siganl nicht da Clocksignal von Osci. Er ist die
Erfassung eines Sensors(Inkrementaldrehgeber), dessen Signal rechteckig
ist und am Port eines FPGA angeschlossen ist. Da die Auflösung für das
Schrittwinkel(1.8°) genau 2,5 Steigende Flanke verlangt, will ich dann
bei jedem 2.5 Flanke, die Schrittanzahl zählen. Daraus war meine Idee
bei jedem 2.5 clock signal zu zählen.
@ KIT (Gast)
>Eigentlich ist mein Siganl nicht da Clocksignal von Osci. Er ist die>Erfassung eines Sensors(Inkrementaldrehgeber), dessen Signal rechteckig>ist und am Port eines FPGA angeschlossen ist.
Ja vielen Dank, dass du SOOO zeitig mal den Mund aufkriegst und mal
wirklich sagt, worum es geht!
Lies mal was über Netiquette!
> Da die Auflösung für das>Schrittwinkel(1.8°) genau 2,5 Steigende Flanke verlangt, will ich dann>bei jedem 2.5 Flanke, die Schrittanzahl zählen. Daraus war meine Idee>bei jedem 2.5 clock signal zu zählen.
Das ist Käse. Basierend auf einem falschen Verständnis eines
Drehgebers. Lies den Artikel und staune.
MfG
Falk
Falk Brunner schrieb:> Lies mal was über Netiquette!
Noch wissen wir nicht einen Bruchteil der Aufgabe:
>>> Worauf? CPLD? FPGA?>>> Welcher Hersteller?>>> Woher kommt der Takt? Welche Frequenz hat er?>>> Wozu brauchst du das?
Aber ich hatte schon den Verdacht, dass da was nachkommt... :-/
> Eigentlich ist mein Siganl nicht da Clocksignal von Osci.
Dann wird auf so einem Takt nicht mit einer rising_edge() oder einer
falling_edge() gearbeitet. Punkt. Und schon gleich überhaupt nicht, wenn
du noch ein VHDL-Anfänger bist.
> Er ist die Erfassung eines Sensors(Inkrementaldrehgeber),
Mach es so, wie im bereits genannten Artikel beschrieben, und sieh dir
das auch mal an: http://www.lothar-miller.de/s9y/categories/46-Encoder
Und jetzt bitte erst mal nachvollziehen, was da gemacht wird. Und dann
bei Unklarheiten fragen...
Vielen Dank Falk und Miller,
jetzt noch eine Frage, da ich nach jedem 2ten Highpegelsignal des
Drehgebers erst inkrementieren will, reicht dieses code aus??
@ KIT (Gast)
>jetzt noch eine Frage, da ich nach jedem 2ten Highpegelsignal des>Drehgebers erst inkrementieren will, reicht dieses code aus??
Nein. Nimm einfach einen Zähler mit einem Bit mehr und ignorier das Bit
0.
MFG
Falk
Hallo Falk,
schon mal danke für deine Idee,
was meisnt du genau mit :
>Nimm einfach einen Zähler mit einem Bit mehr und ignorier das Bit
bitte setz mal deine Ide in VHDL um, ich bin ja nur Anfänger in VHDL.
Ich danke dir schon für deine Mühe.
KIT schrieb:> Hallo Falk,> schon mal danke für deine Idee,> was meisnt du genau mit :>>Nimm einfach einen Zähler mit einem Bit mehr und ignorier das Bit>> bitte setz mal deine Ide in VHDL um, ich bin ja nur Anfänger in VHDL.> Ich danke dir schon für deine Mühe.
Und du wirst auch ewig Anfänger bleiben wenn du nichts selbst machst.
Das ist nun keine schwere Aufgabe, setz dich hin und probiere es bis es
klappt. Von Falk wirst du wahrscheinlich keinen fertigen Code bekommen.
>>> Signal_A <= inkr_A ; -- Zusammenfassen der Eingänge A
Was soll denn hier zusammengefasst werden?
Später stellt sich heraus, dass das ein ordinäres einzelnes Bit ist...
Das hier ist schon falsch:
>>>> nach jedem 2ten Highsignal_A, zählen <<<<
Es müsste m.M. bestenfalls heißen:
>> jede 2. Flanke an Signal_A zählen <<
Warum denn nur jede 2.?
Seis drum. Das hier zählt jede fallende Flanke:
1
processbegin-- Zählen
2
waituntilrising_edge(clk);
3
ifold_A='1'andin_A='0'then-- fallende Flanke am Eingangssignal
4
p<=p+1;
5
endif;
6
endprocess;
7
position<=std_logic_vector(to_signed(p,32));
Und wenns unbedingt nur jede 2.Flanke sein soll, dann würde ich das so
ändern:
1
position<=std_logic_vector(to_signed(p/2,32));
EDIT
D. I. schrieb:> Und du wirst auch ewig Anfänger bleiben wenn du nichts selbst machst.
Das dient nur der Sicherung meines Arbeitsplatzes ;-)
Danke Miller,
du bis ein Angel.
Ja du hast ja recht. Für jeden 2ten Signal , kann ich einfach der Zähler
halbieren.
Kurz Erklärung über mein Projekt:
Also ich benutze ein Ink-Drehgeber, der 500 (Striche)Impulse hat und ein
H-Schriitmotor, der 1.8° pro schritt macht.Wenn die genau messwerte der
schritten von dem Drehgeber erfassen werden sollen, mußt dann nach jedem
2 oder 2.5 impulsen ein Schritt erfasst werden. schaut mal: der
Drehgeber macht 360/500= 0.72° pro impuls und für 1.8°jedes mal zu
erfassen braucht er dann immer 1.8/072 = 2.5 impulse.
Deswegen meine Idee :
>bei jedem 2ten abgetastete signal_A soll ein schritt gezält werden.
Diese gezälte Werte die ich mal 1.8° um die tasätchliche Drehwinkel zu
berechen, werde ich dann beim Stillstand( Abbruch im Progarmm) des
S-Motor mit dem Soll-Drehwinkel( gezählte Werte der Anzahl der
Taktfrequenz, die die Transistor der H-Brücke von Ansteuerplatine
ansteuern) vergleichen und feststellen ob es Verlust entsteht oder
nicht.
Ich glaube ich denn hier meine fasst mein Projekt verrat