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
- AOmdat in de case drie ingangen worden gebruikt. Het aantal ingangen terugbrengen tot twee
- BOmdat er geen toekenning aan y is voor sel=2'b11. Een default-tak toevoegen en in alle gevallen een waarde bepalen
- 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.
Verder: nog 9 vragen over Hardwarebeschrijvingstalen en verificatie