Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Naar inhoud springen

Verilog

Uit Wikipedia, de vrije encyclopedie

Verilog is een hardwarebeschrijvingstaal (HDL) en wordt gebruikt om elektronische systemen te modelleren. Verilog is gestandaardiseerd als IEEE 1364 en wordt vooral gebruikt bij het ontwerpen en de verificatie van digitale circuits op het register-transferniveau van abstractie. Het wordt ook gebruikt bij de verificatie van analoge schakelingen en mixed-signalcircuits.

Een kort hello world-programma ziet er als volgt uit:

module main;
  initial
    begin
      $display("Hello world!");
      $finish;
    end
endmodule

Dit is een eenvoudige beschrijving van twee flip-flops:

module toplevel(clock,reset);
  input clock;
  input reset;

  reg flop1;
  reg flop2;

  always @ (posedge reset or posedge clock)
    if (reset)
      begin
        flop1 <= 0;
        flop2 <= 1;
      end
    else
      begin
        flop1 <= flop2;
        flop2 <= flop1;
      end
endmodule

De "<=" operator in Verilog vloeit voort uit het feit dat dit een hardwarebeschrijvingstaal is en geen gewone procedurele programmeertaal. Deze operator stelt een "niet-blokkerende toewijzing" voor. Het resultaat van deze toewijzing is pas zichtbaar in de volgende simulatiecyclus. Als gevolg hiervan is de volgorde van de toewijzingen onbelangrijk en zal het simulatieresultaat altijd hetzelfde zijn. De twee flip-flops zullen bij elke klokcyclus hun waarden omwisselen.

De andere operator voor toewijzingen is "=" en stelt een blokkerende toewijzing voor. Als men dit soort toewijzing gebruikt, wordt de waarde van het linker lid onmiddellijk aangepast. Als in het bovenstaande voorbeeld de blokkerende "="-operator gebruikt zou zijn, zouden de waarden van flop1 en flop2 niet omgewisseld worden. In plaats daarvan zou, net als in een traditionele programmeertaal, de waarde van flop 1 gelijk worden aan flop 2.