Hardwarebeschrijvingstalen en verificatie

Wat is de juiste reden waarom in de bovenstaande beschrijving van een toestandsmachine aan het begin van het tweede always-blok 'next = state;' wordt geschreven?

always @(posedge clk)
    state <= next;
always @(*) begin
    next = state;
    case (state)
        IDLE: if (start) next = RUN;
        RUN:  if (done)  next = IDLE;
    endcase
end
  1. AOm aan te geven dat bij niet van toepassing zijnde voorwaarden in de huidige toestand wordt gebleven, en om latches te voorkomen door in alle gevallen next een waarde te geven
  2. BOm de toestand telkens terug te zetten naar IDLE
  3. COm de klok te stoppen
Antwoord en toelichting tonen

Antwoord: A. Om aan te geven dat bij niet van toepassing zijnde voorwaarden in de huidige toestand wordt gebleven, en om latches te voorkomen door in alle gevallen next een waarde te geven

Het is een gangbare vorm om een toestandsmachine te splitsen in een registerblok dat de toestand bijwerkt en een blok met een combinatorische schakeling dat de volgende toestand bepaalt. Aan de combinatorische kant ontstaat een latch als er geen toekenning aan next is wanneer start of done 0 is. Met 'next = state;' aan het begin wordt duidelijk aangegeven dat bij geen enkele voorwaarde in de huidige toestand wordt gebleven, en wordt tegelijk een latch voorkomen.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Hardwarebeschrijvingstalen en verificatie

  1. Welke uitspraak over de kenmerken van een toestandsmachine van het Mealy-type is juist?
  2. Welke uitspraak over de kenmerken van one-hot-codering bij het coderen van toestanden van een toestandsmachine is juist?
  3. Welke combinatie van het aantal flipflops dat nodig is om de toestand te onthouden bij een toestandsmachine met drie toestanden is juist (binaire codering/one-hot-codering)?
  4. Wat wordt count bij de bovenstaande 4-bits teller wanneer de klok stijgt terwijl count 15 is?
  5. In Verilog worden de 8-bits signalen a en b opgeteld en wordt het resultaat aan het 8-bits signaal s toegekend (assign s = a + b;). Welk aandachtspunt is juist?

Vergelijkingen bij dit onderwerp