Hardwarebeschrijvingstalen en verificatie

Dit is zoals hierboven geschreven als een combinatorische schakeling bedoeld. Welk mogelijk probleem is juist?

always @(a)
    y = a & b;
  1. Ab wordt uit de schakeling verwijderd en y wordt gelijk aan a
  2. BDe synthese geeft een foutmelding en er wordt geen schakeling gemaakt
  3. CAls alleen b verandert, wordt y in de simulatie niet bijgewerkt, zodat het gedrag afwijkt van de gesynthetiseerde schakeling (waarin y verandert als b verandert)
Antwoord en toelichting tonen

Antwoord: C. Als alleen b verandert, wordt y in de simulatie niet bijgewerkt, zodat het gedrag afwijkt van de gesynthetiseerde schakeling (waarin y verandert als b verandert)

Een simulator voert het blok alleen uit bij verandering van de signalen in de sensitivity list, dus als alleen b verandert, blijft y op de oude waarde staan. Logische synthese kijkt daarentegen niet naar de lijst maar maakt uit de inhoud van het blok een AND-poort, zodat in de werkelijke schakeling ook de verandering van b in y zichtbaar wordt. Het is een gevaarlijke toestand waarin de simulatie juist lijkt maar de schakeling zich anders gedraagt. Met '@(*)' wordt dit voorkomen.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Hardwarebeschrijvingstalen en verificatie

  1. Als dit zoals hierboven wordt geschreven als combinatorische schakeling, wat ontstaat er dan bij logische synthese?
  2. Welke combinatie van de reden waarom in de bovenstaande beschrijving een latch ontstaat en de tegenmaatregel is juist?
  3. Welke schrijfwijze wordt veel gebruikt om onbedoelde latches in een always-blok van een combinatorische schakeling te voorkomen?
  4. Welke van de volgende Verilog-beschrijvingen wordt door logische synthese niet tot een schakeling gemaakt maar genegeerd (een beschrijving voor simulatie)?
  5. Wat voor schakeling ontstaat als de bovenstaande beschrijving, die het aantal enen in de 8-bits d telt, logisch wordt gesynthetiseerd?

Vergelijkingen bij dit onderwerp