Programmierbare Logik

Verilog

aus Wikipedia, der freien Enzyklopädie

Wechseln zu: Navigation, Suche

Verilog HDL ist neben VHDL die weltweit meistgenutzte Hardwarebeschreibungssprache.

Inhaltsverzeichnis

[Bearbeiten] Geschichte

Verilog HDL wurde 1983/84 von Phil Moorby bei Gateway Design Automation ursprünglich als Simulationssprache entworfen. Gateway Design Automation wurde dann 1990 von Cadence Design Systems aufgekauft. Cadence war nun Besitzer der Rechte an Verilog und des Logiksimulators Verilog-XL.

Parallel zu Verilog HDL wurde die Beschreibungssprache VHDL immer populärer und Cadence entschied sich 1995, Verilog in einen freien Standard umzuwandeln. Verwaltet von der Organisation Open Verilog International (OVI) (auch bekannt als Accellera). Verilog wurde bei der IEEE eingereicht und wurde im selben Jahr als IEEE Standard 1364-1995 (Verilog-95) verabschiedet.

Aufgrund von Einschränkungen, die von den Nutzern bemängelt wurden, veröffentlichte die IEEE im Jahr 2001 eine Erweiterung des Standards unter der Bezeichnung IEEE Standard 1364-2001, bekannt als Verilog 2001.

Im Juni 2002 erschien SystemVerilog 3.0, eine Erweiterung für den IEEE Standard 1364-2001. Mit SystemVerilog war es nun möglich Hardware nicht nur zu beschreiben, sondern auch zu verifizieren. Verilog wurde durch SystemVerilog somit zur ersten Hardware-Beschreibungs- und Verifikationssprache (Hardware Description and Verification Language, kurz HDVL genannt).

Seit der letzten Version unterstützt Verilog (Verilog-AMS) nun auch Analog/Mixed-Signal-Design.

[Bearbeiten] Funktionsweise

Verilog HDL erlaubt es Hardware (z. B. ICs) auf einer höheren Abstraktionsebene zu beschreiben, als es mit einem Schematic-Entry-Programm möglich wäre. Die Architektur, das Verhalten und niedrigere Abstraktionslevel auf Gatterebene können beschrieben werden.

Beispiel für ein UND-Gatter (and gate)

// Dies ist ein Verilog HDL Kommentar

// Deklaration der Variablen als einfache Leitung
wire result, a, b; 

// Es gibt 3 Varianten um ein (bitweises) UND-Gatter zu beschreiben
// Möglichkeit 1
assign result = a & b; // kontinuierliche Zuweisung

// Möglichkeit 2
and instanzname(result,a,b); // Instanzierung eines vorhandenen Moduls (hier ein eingebautes primitive)

// Möglichkeit 3
always@(a or b) // Verhaltensbeschreibung
//reagiert auf jede Änderung von a oder b (Bei kombinatorischer Logik)
  begin
   result = a & b;
  end

always@(a or b) // alternative Verhaltensbeschreibung
//reagiert auf jede Änderung von a oder b (Bei kombinatorischer Logik)
  begin
   if (a) then result = b;
   else result = 1'b0;
  end


Beispiel für eine Verhaltensbeschreibung eines Flipflops (synthetisierbar)

// Deklarationen
reg register_value; // als Register oder Speichervariable
wire reset, clock, set, en, datain; // als Leitung

// Flipflop mit asynchronem Rücksetzen, synchronem Setzen und synchronem Enable
always @(posedge clock or negedge reset) 
begin 
// Register reagiert auf positive clock-Flanke oder fallende reset-Flanke.
        if (!reset) //asynchroner Rücksetzen, wenn reset = LOW
                register_value <= 1'b0;
        else if (set) // synchrones Setzen, wenn set = HIGH
                register_value <= 1'b1;
        else if (en) // synchrones Übernehmen des Wertes von datain, wenn en = HIGH
                register_value <= datain;
end


Neben den Beschreibungsmöglichkeiten für Hardware, bietet Verilog HDL auch Merkmale aus anderen Sprachen, die z. B. für das Debugging oder für die Bereitstellung einer Testumgebung genutzt werden können. So ist es beispielsweise möglich Textmeldungen auszugeben.

module hello ;                    // Module Deklaration mit dem Schlüsselwort "module" <name> ;
initial $display (“Hallo Welt“);  // Einmalig ausführen, $display ist vergleichbar mit printf in c
endmodule                         // Module ende Deklaration mit dem Schlüsselwort endmodule

[Bearbeiten] Literatur

[Bearbeiten] Siehe auch

[Bearbeiten] Externe Links

Copyright © 2005-2010 Hardware-Aktuell. Alle Rechte vorbehalten.