Hallo, ich bin gerade dabei Verilog zu lernen, allerdings habe ich das Problem das ich bisher noch nicht wirklich sehr viel in Digitaltechnik gelernt habe. Es geht bei mir um ein BA Studium und der Betrieb verlangt von mir Verilog zu lernen, wobei ich in meiner Theorie Phase bisher noch nicht sehr viel in Digitaltechnik also mit Logik Gattern zu tun hatte. Meine frage ist nun, wie man eine Flankenerkennung programmiert bzw. Wie diese aufgebaut ist und welche Funktionsweise sie hat. Das gleiche moechte ich gern interessehalber fuer den Johnson Bit Counter wissen. Ich habe quasi das problem das ich ein Schieberegister habe welches ich in einer STate Machine betreiben muss. Im Zustand Shift moechte ich genau 10 mal shiften und danach in einen anderen Zustand wechseln. Ich moechte aber keine Integer Variable nutzen die ich einfach bis 8 Inkrementiere bzw. von acht auf null dekrementiere, da ich denke das dies einen haufen logik erfordert und ich der meinung bin es muss auch einfacher gehen. Deshalb moechte ich gerne etwas ueber den Johnson Zaehler wissen :) Die flankenerkennung wuerde mich auch sehr stark interessieren, auch wenn ich weiss das Verilog dies schon automatisch macht mit posedge clk... ich waere euch sehr sehr dankbar :) vlg der Ulrich
Ich gehe mal davon aus der Code soll synthesierbar sein und zur Flankenerkennung geht es nicht darum die Flanke des Clocksignals zu erkennen, sondern die irgendeines anderen Signals. Ein Weg für die steigende Flanke ist dieser: ... input signal; reg signal_reg; wire edge; always @(posedge clk) begin signal_reg <= signal; end always edge = signal & ~signal_reg; Das Signal edge signalisiert eine steigende Flanke des Eingangssignals signal.
Alban wrote: > Ein Weg für die steigende Flanke ist dieser: > > ... > > input signal; > > reg signal_reg; > wire edge; > > always @(posedge clk) begin > signal_reg <= signal; > end > > always edge = signal & ~signal_reg; > > > Das Signal edge signalisiert eine steigende Flanke des Eingangssignals > signal. Ich glaube, das funktioniert so nicht sicher. Angenommen, signal steigt kurz vor einer postiven Taktflanke auf HIGH. Edge geht dann mit etwas Verzögerung erst nach der Taktflanke auf High und wird dann gleich wieder durch die Übernahme von signal in das Register signal_reg zurückgesetzt. Damit kann der HIGH-Pegel von edge nicht bei einer positiven Taktflanke berücksichtigt werden. Wie man die Erkennung sicher durchführen kann, zeigt der Artikel http://www.mikrocontroller.net/articles/VHDL_Flankenerkennung
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.