Zum Inhalt springen

„Verilog“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
[gesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
KKeine Bearbeitungszusammenfassung
+Lückenhaft: Analoge Anwendungen; -interwikis
Zeile 1: Zeile 1:
{{Lückenhaft|Es fehlen sämtliche Information und Beispiele zum Einsatz bei analogen Schaltungen in der Simulation und Verfikation. Zudem wären Softwareiplementierung hilfreich. <small><tt>'''[[Benutzer:wikidienst|WikiDienst]]'''</tt><sup>[[Benutzer Diskussion:wikidienst| ?!]]</sup> 02:55, 19. Mär. 2013 (CET)</small>}}
'''Verilog HDL''' ist neben [[Very High Speed Integrated Circuit Hardware Description Language|VHDL]] die weltweit meistgenutzte [[Hardwarebeschreibungssprache]].

'''Verilog HDL''' ist neben [[Very High Speed Integrated Circuit Hardware Description Language|VHDL]] die weltweit meistgenutzte [[Hardwarebeschreibungssprache]].


== Geschichte ==
== Geschichte ==
Zeile 8: Zeile 10:
Durch Zusammenführen von Verilog-A (Modellierungssprache für analoge Schaltungen) und Verilog zu Verilog-AMS steht seit 1998 (erste Version) auch eine relativ leistungsfähige Sprache für Analog/Mixed-Signal-Designs zur Verfügung. Für den Analogbereich stehen jedoch keine Synthese-Tools zur Verfügung. Für den Digitalbereich lieferte Synopsys bereits 1988 ein Synthese-Werkzeug für Verilog aus.
Durch Zusammenführen von Verilog-A (Modellierungssprache für analoge Schaltungen) und Verilog zu Verilog-AMS steht seit 1998 (erste Version) auch eine relativ leistungsfähige Sprache für Analog/Mixed-Signal-Designs zur Verfügung. Für den Analogbereich stehen jedoch keine Synthese-Tools zur Verfügung. Für den Digitalbereich lieferte Synopsys bereits 1988 ein Synthese-Werkzeug für Verilog aus.


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.
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 elegant zu verifizieren. Verilog wurde somit durch SystemVerilog zur ersten Hardwarebeschreibungs- und Verifikationssprache (Hardware Description and Verification Language, kurz HDVL genannt).
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 elegant zu verifizieren. Verilog wurde somit durch SystemVerilog zur ersten Hardwarebeschreibungs- und Verifikationssprache (Hardware Description and Verification Language, kurz HDVL genannt).
Zeile 19: Zeile 21:
<source lang="verilog">
<source lang="verilog">
// Dies ist ein Verilog HDL Kommentar
// Dies ist ein Verilog HDL Kommentar

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

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

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

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

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


'''Beispiel für eine Verhaltensbeschreibung eines [[Flipflop]]s (synthetisierbar)'''
'''Beispiel für eine Verhaltensbeschreibung eines [[Flipflop]]s (synthetisierbar)'''
<source lang="verilog">
<source lang="verilog">
// Deklarationen
// Deklarationen
reg register_value; // als Register oder Speichervariable
reg register_value; // als Register oder Speichervariable
wire reset, clock, set, en, datain; // als Leitung
wire reset, clock, set, en, datain; // als Leitung

// Flipflop mit asynchronem Rücksetzen, synchronem Setzen und synchronem Enable
// Flipflop mit asynchronem Rücksetzen, synchronem Setzen und synchronem Enable
always @(posedge clock or negedge reset)
always @(posedge clock or negedge reset)
begin
begin
// Register reagiert auf positive clock-Flanke oder fallende reset-Flanke.
// Register reagiert auf positive clock-Flanke oder fallende reset-Flanke.
if (!reset) //asynchrones Rücksetzen, wenn reset = LOW
if (!reset) //asynchrones Rücksetzen, wenn reset = LOW
register_value <= 1'b0;
register_value <= 1'b0;
else if (set) // synchrones Setzen, wenn set = HIGH
else if (set) // synchrones Setzen, wenn set = HIGH
register_value <= 1'b1;
register_value <= 1'b1;
else if (en) // synchrones Übernehmen des Wertes von datain, wenn en = HIGH
else if (en) // synchrones Übernehmen des Wertes von datain, wenn en = HIGH
register_value <= datain;
register_value <= datain;
end
end
</source>
</source>
Zeile 66: Zeile 68:
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.
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.
<source lang="verilog">
<source lang="verilog">
module hello ; // Module Deklaration mit dem Schlüsselwort "module" <name> ;
module hello; // Module Deklaration mit dem Schlüsselwort "module" <name>;
initial $display (“Hallo Welt“); // Einmalig ausführen, $display ist vergleichbar mit printf in C
initial $display (“Hallo Welt“); // Einmalig ausführen, $display ist vergleichbar mit printf in C
endmodule // Module ende Deklaration mit dem Schlüsselwort endmodule
endmodule // Module ende Deklaration mit dem Schlüsselwort endmodule
</source>
</source>


Zeile 91: Zeile 93:
* [http://www.mikrocontroller.net/articles/Verilog Verilog Tutorial bei Mikrocontroller.net] ger.
* [http://www.mikrocontroller.net/articles/Verilog Verilog Tutorial bei Mikrocontroller.net] ger.
* [http://www.icarus.com/eda/verilog/index.html Icarus Verilog]
* [http://www.icarus.com/eda/verilog/index.html Icarus Verilog]

<!--Kategorien-->
<!--Interwikies-->


[[Kategorie:Beschreibungssprache]]
[[Kategorie:Beschreibungssprache]]
Zeile 100: Zeile 99:


{{Link GA|zh}}
{{Link GA|zh}}

[[ca:Verilog]]
[[cs:Verilog]]
[[en:Verilog]]
[[es:Verilog]]
[[fr:Verilog]]
[[he:Verilog]]
[[hu:Verilog]]
[[hy:Վերիլոգ]]
[[it:Verilog]]
[[ja:Verilog]]
[[ko:베릴로그]]
[[nl:Verilog]]
[[pl:Verilog]]
[[pt:Verilog]]
[[ro:Verilog]]
[[ru:Verilog]]
[[sv:Verilog]]
[[tr:Verilog]]
[[zh:Verilog]]

Version vom 19. März 2013, 03:55 Uhr

Verilog HDL ist neben VHDL die weltweit meistgenutzte Hardwarebeschreibungssprache.

Geschichte

Verilog HDL wurde 1983/84 von Phil Moorby bei Gateway Design Automation ursprünglich als Simulationssprache entworfen. Der zweite wichtige Einsatzbereich ist die Synthese digitaler Schaltungen. Gateway Design Automation wurde 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 im selben Jahr als IEEE Standard 1364-1995 (Verilog-95) verabschiedet.

Durch Zusammenführen von Verilog-A (Modellierungssprache für analoge Schaltungen) und Verilog zu Verilog-AMS steht seit 1998 (erste Version) auch eine relativ leistungsfähige Sprache für Analog/Mixed-Signal-Designs zur Verfügung. Für den Analogbereich stehen jedoch keine Synthese-Tools zur Verfügung. Für den Digitalbereich lieferte Synopsys bereits 1988 ein Synthese-Werkzeug für Verilog aus.

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 elegant zu verifizieren. Verilog wurde somit durch SystemVerilog zur ersten Hardwarebeschreibungs- und Verifikationssprache (Hardware Description and Verification Language, kurz HDVL genannt). Auch in den letzten Jahren wurden ständig Spracherweiterungen vorgenommen.

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) //asynchrones 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

Literatur

  • Harald Flügel: FPGA-Design mit Verilog. Oldenbourg, München 2010, ISBN 978-3-486-59234-4.
  • Bernhard Hoppe: Verilog. Modellbildung für Synthese und Verifikation. Oldenbourg, München u. a. 2006, ISBN 3-486-58004-3.

Siehe auch

Vorlage:Link GA