Hallo, ich bin an einem async Memory Controller bei. Leider habe ich ein kleines Problem. Ich muesste drei Prozesse in einem Zustand abfragen. Leider wird ein Signal synchron unanhaengig vom Clock abgefragt. Meine State Maschine arbeitet auf steigende Flanke des Clock Signal's. Hier mal ein kleiner Auszug: when Xnibble => if read = '1' then if highlow = '1' then UB <= '1'; UL <= '0'; state_next <= read; end if; end if; if write = '1' then if highlow = '1' then UB <= '1'; UL <= '0'; state_next <= write; end if; end if; -- next state Mein Problem ist das jetzt highlow nicht mehr synchron zum Clock abgefragt wird. Hat jemand vielleicht ein Tip? Das komplette ISE7.1 Projekt koennte ich heute abend zur Verfuegung stellen falls es zur Fehleranalyse benoetigt wird. Gruß, Dirk
Hi, habe vergessen zu Fragen ob es sinnvoller ist den Fall abzufragen das Write and Read = '1' sind? if read = '1' and write = '0' then .... .. .. end if; if read = '0' and write = '1' then .... .. .. end if; Theoretisch sollte es nicht vorkommen das beide Signale '1' sind. Eigentlich sollte dieses spaeter in der Main Control State Maschine verhindert werden. Gruß, Dirk
wenn deine FSM mit dem Clock CLK läuft dann wird highlow ja auch mit CLK "abgefragt". Das Problem ist nur, wo kommt "highlow" her ? Eigentlich sollte man das am Signalnamen erkennen, der ist aber nicht sinnvoll gewählt. Also wenn "highlow" direkt von einem externen Pin kommt, wird deine FSM evt. nicht sicher funktionieren. (Grundregel: nie asynchrone Signale in einer FSM abfragen!) Noch ne Frage: können "read" und "write" gleichzeitig 1 sein ? Durch Deine Beschreibung hat read eine höhere Priorität als write, was aber keine Rolle spielt, wenn beide nie gleichzeitig 1 sind oder wenn es so gewollt ist. Man könnte auch schreiben : if highlow ='1' then if read = '1' then ... elsif write = '1' then ... end if; end if;
da warst Du schneller als ich mit dem 2. Beitrag, also vergiss meine Frage mit read und write = 1
Hi, danke fuer deine Hilfe. Stimmt der Name highlow ist schlecht gewaehlt. Highlow stellt ein Input Pin da der wiederum von der Main Control State Maschine gesteuert werden soll. Die Main Control State Maschine soll eigentlich auf Clk synchron arbeiten, somit sollte "highlow" synchron arbeiten. Ich kann leider erst heute abend die Aenderungen pruefen und werde dann nochmal berichten ob es nun Synchron alles ist. Gruß, Dirk PS.: Langsam macht VHDL richtig spass auch wenn es manchmal frustierend ist. Gruß, Dirk
hallo Dirk, wie soll ein Input-Pin voaten einer Statemachine gesteuert werden? Das hab ich noch nicht verstanden...
Hallo, endlich ist der process auch synchron zum Clock. Ich haette aber gleich noch Fragen zu eine Variable: Ich hab mir eine Shared Variable Integer deklariert SHARED variable bitvariable: integer := 7 Kann man sich Variablen nicht in Modelsim anschaun? nur Prozesse und Signale? Gruß, Dirk
Je mehr ich mich mit der FSM und der SRAM Ansteuerung beschäftige, desto mehr kommt bei mir der Verdacht auf, das dieser Ansatz (FSM) nicht gerade der Beste ist. Ein Clk Cycle vergeht, bis die state gewechselt hat (read-write zB) und ein weiterer, bis die Signale (en, wr zB) gesetzt sind, wenn ich die Ausgänge synchronize. Oder habe ich den "Dreh" noch nicht raus? Wie macht Ihr das? Viele Grüße Olaf
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.