Hardwarebeschrijvingstalen en verificatie

always @(*) begin
    sum = sum + in;
end

Bovenstaande code is geschreven met de bedoeling een accumulator te maken die de ingang in blijft optellen. Welke combinatie van het probleem met deze code en de oplossing ervan is juist?

  1. AEr is geen probleem; er wordt een schakeling gesynthetiseerd die in bij elke verandering van in één keer bij sum optelt
  2. BEr ontbreekt een signaal in de sensitivity list, zodat simulatie en synthese niet overeenkomen; herschrijf het als @(in)
  3. CDe uitgang van de opteller wordt zonder flipflop naar zijn eigen ingang teruggevoerd, zodat de waarde nooit stabiliseert; schrijf sum <= sum + in; binnen always @(posedge clk) om eenmaal per klok op te tellen
Antwoord en toelichting tonen

Antwoord: C. De uitgang van de opteller wordt zonder flipflop naar zijn eigen ingang teruggevoerd, zodat de waarde nooit stabiliseert; schrijf sum <= sum + in; binnen always @(posedge clk) om eenmaal per klok op te tellen

always @(*) beschrijft een combinatorische schakeling, dus deze code wordt een schakeling waarin een opteller met sum als ingang zijn uitgang rechtstreeks op sum aansluit. Zonder flipflop verandert elke verandering aan de uitgang van de opteller ook zijn ingang, en de waarde blijft rondgaan zonder te stabiliseren: een combinatorische lus. Statische timinganalyse kan dit niet verwerken, en veel lint-tools en tools voor logische synthese geven waarschuwingen of fouten. Een schakeling die waarden optelt, heeft een flipflop nodig die de waarde eenmaal per stijgende klokflank bijwerkt: gebruik een non-blocking assignment binnen always @(posedge clk) en leg ook de beginwaarde vast met een reset.

Dit onderwerp oefenen Naar de onderwerppagina

Verwante rekentools

Meer vragen over Hardwarebeschrijvingstalen en verificatie

  1. Welke uitspraak over het belangrijkste verschil tussen een beschrijving in een HDL zoals Verilog en een softwareprogramma in bijvoorbeeld C is juist?
  2. Welke uitspraak over het doel van het gebruik van een module in Verilog is juist?
  3. Welke uitspraak over het verschil tussen het wire-type en het reg-type in Verilog is juist?
  4. Welke uitspraak over de schakeling die door het bovenstaande Verilog-assign-statement wordt voorgesteld, is juist?
  5. Welke uitspraak over de schakeling die door logische synthese uit de bovenstaande Verilog-beschrijving ontstaat, is juist?

Vergelijkingen bij dit onderwerp