Hi, ich steh grad etwas auf dem Schlauch :) Ich habe einen Zähler. Dessen Ausgangsvektor will ich speichern, sobald ein Enable-Signal kommt. Mit dem gleichen Signal soll der Zähler aber auch zurückgesetzt werden. Also: Enable kommt --> Vektor speichern --> ganz kurz danach Zähler resetten. Aber sogar schon in der funktionalen Simulation speichert mir das Register nur 0, weil der Zähler halt wieder zurückgesetzt wird. Zwischen Zähler und Speicher ist noch etwas kombinatorische Logik, sodass es spätestens in der GateLevel Simulation gar nicht mehr klappen würde. Würde ich das Signal, das den Reset auslöst, durch ein FF verzögern? Darf man sowas machen? Oder würde ich direkt nach den Speicher ein Register setzen, das den Wert solange hält, dass ich ihn im "Ausgangs"register speichern kann?
Bei einem asynchronen Reset sollte man das nicht, der kommt direkt an einen FlipFlop-Reset-Eingang und sonst nichts. Verwende ein synchrones Signal und mach es z.B. so:
1 | if rising_edge(clk) then |
2 | -- ggf. noch Überlauf behandeln
|
3 | counter <= counter + 1; |
4 | |
5 | if reset = '1' then |
6 | out_reg <= counter; |
7 | counter <= (others => '0'); |
8 | end if; |
9 | end if; |
Bitte mach doch nicht für jede Kleinigkeit einen neuen Thread auf, das hätte man auch gut im Zähler-Thread diskutieren können.
@Andreas: counter <= counter + 1 sollte im else-Zweig sein. if reset = '1' then out_reg <= counter; counter <= (others => '0'); else counter <= counter + 1; end if; Grüße, Kest
Ist egal, in einem process ist immer die letzte Zuweisung gueltig.
Egal? Also mir wäre das nicht egal. Außerdem, bilde ich mir ein, dass ModelSIM schneller simuliert. Aber okay, jedem das seine, Grüße, Kest
Kest wrote: > Egal? Also mir wäre das nicht egal. > Außerdem, bilde ich mir ein, dass ModelSIM schneller simuliert. Ich glaube auch, dass das Einbildung ist, der Code wird ja nicht umsonst vorher compiliert.
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.