Hardwarebeschrijvingstalen en verificatie

Welke combinatie van de reden waarom in de bovenstaande beschrijving een latch ontstaat en de tegenmaatregel is juist?

always @(*) begin
    case (sel)
        2'b00: y = a;
        2'b01: y = b;
        2'b10: y = c;
    endcase
end
  1. AOmdat in de case drie ingangen worden gebruikt. Het aantal ingangen terugbrengen tot twee
  2. BOmdat er geen toekenning aan y is voor sel=2'b11. Een default-tak toevoegen en in alle gevallen een waarde bepalen
  3. COmdat always @(*) wordt gebruikt. Veranderen in always @(posedge clk)
Antwoord en toelichting tonen

Antwoord: B. Omdat er geen toekenning aan y is voor sel=2'b11. Een default-tak toevoegen en in alle gevallen een waarde bepalen

sel is 2 bits en kan vier waarden aannemen, maar het geval 2'b11 is niet geschreven, dus y moet dan de vorige waarde behouden en er ontstaat een latch. Door met 'default: y = 0;' de waarde voor alle overige gevallen te bepalen, of vóór de case een standaardwaarde aan y toe te kennen, ontstaat een combinatorische schakeling. Latches door weggelaten voorwaarden zijn een fout die beginners in HDL vaak tegenkomen.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Hardwarebeschrijvingstalen en verificatie

  1. Welke schrijfwijze wordt veel gebruikt om onbedoelde latches in een always-blok van een combinatorische schakeling te voorkomen?
  2. Welke van de volgende Verilog-beschrijvingen wordt door logische synthese niet tot een schakeling gemaakt maar genegeerd (een beschrijving voor simulatie)?
  3. Wat voor schakeling ontstaat als de bovenstaande beschrijving, die het aantal enen in de 8-bits d telt, logisch wordt gesynthetiseerd?
  4. Welke uitspraak over het soort reset en de werking in de bovenstaande beschrijving is juist?
  5. Welke uitspraak over het verschil tussen synchrone en asynchrone reset is juist?

Vergelijkingen bij dit onderwerp