Idee gesucht: Speichern und resetten

OP #723420
Lesenswert?

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?
Admin Persönliche Seite #723431
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren