Hi! baue gerade einen PS/2 Controller (Maus). Jetzt verzählt sich aber mein fpga :-X Hier mal mein Programm ohne den ps2 kram, nur das was probs macht: process(clk25mhz) variable count : natural := 0; begin if rising_edge(clk25mhz) then count := count +1; if (count > 32) then led_out <= conv_std_logic_vector(count,8); count = 0; end if; end if end process; Wenn ich das laufen lasse ist count mal 32 und manchmal (!) 33 ?!? Wenn ich also count = 32 als abfrage mache verabschiedet sich das ganze da es manchmal nicht trifft. Wie kommt sowas ? Probleme mit der clock ? Ich bin ratlos :(
Habs jetzt noch ein bissl eingrenzen können: process(clk25mhz) variable count : natural := 0; variable setup_ok : std_logic := '0'; begin if rising_edge(clk25mhz) then if setup_ok = '0' then --do something count := count +1; if end = '1' then count := 0; setup_ok = '1'; end if; else count := count +1; if (count > 32) then led_out <= conv_std_logic_vector(count,8); count := 0; end if; end if; end if; end process; Wenn ich jetzt bei setup_ok if zweig ne andere variable count2 nehme verzählt er sich nicht mehr. Aber wieso wird der setup_ok=0 zweig nochmal aufgerufen ?! das setup_ok kann sich doch nicht mehr ändern ?!?!
d'oh man sollte natürlich nicht davon ausgehen dass in vhdl alles sequentiell abläuft :-X vergesse ich immer wieder g .... if (count > 32) then led_out <= conv_std_logic_vector(count,8); count := 0; else count := count +1; end if; .... schon sieht es vieeeel besser aus :)
Hallo Ssssssss.. bei Deinem Code kommt man leicht durcheinander, was nun eigentlich Register und was Kombinatorik werden soll. Du musst mit den Variablen aufpassen. Nimm doch besser Signale für count bzw. setup_ok ! Die Zeile setup_ok = '1'; sollte sicher heißen setup_ok := '1'; Probier erstmal folgendes : ... signal count : integer range 0 to 100; -- 100 nur als Bsp. ... process(clk25mhz) begin if rising_edge(clk25mhz) then if count >= 32 then count <= 0; led_out <= conv_std_logic_vector(count,8); else count <= count +1; end if; end process;
Hi! Danke für deinen Post! Count habe ich vorhin schon in Signal geändert, da fiel es mir dann direkt auf dass ich da zwei zuweisungen gleichzeitig mache... Jetzt funktioniert es schon besser, bzw ich hab "nur noch" ein Problem mit dem ps2 protokoll 8) Jedenfalls verhält es sich jetzt deterministisch. Bei meiner ersten variante hat wohl manchmal das :=0 und manchmal das := c +1; gewonnen g Interessant 8) Irgendwie mag mich das ps2 protokoll nicht... Wenigstens bekomm ich die Maus mittlerweile in den sende modus geschaltet. Jetzt haperts nur noch am einlesen der 33 datenbits.
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.