Verilog

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 30. července 2020; kontroly vyžadují 18 úprav .
Verilog
Jazyková třída Jazyk popisu hardwaru
Objevil se v 1983 - 1984
Autor Phil Moorby , Prabhu Goel
Přípona souboru .proti
Byl ovlivněn C , Pascal [1] [2] a Ada [1]

Verilog , Verilog HDL ( Eng.  Verilog Hardware Description Language ) je jazyk pro popis hardwaru používaný k popisu a modelování elektronických systémů. Verilog HDL, nezaměňovat s VHDL (konkurenční jazyk), se nejčastěji používá při návrhu, ověřování a implementaci (např. jako VLSI ) analogových, digitálních a smíšených elektronických systémů na různých úrovních abstrakce.

Vývojáři Verilog udělali jeho syntaxi velmi podobnou syntaxi jazyka C , což usnadňuje učení. Verilog má preprocesor velmi podobný preprocesoru C a základní řídicí konstrukce "if", "while" jsou také podobné stejnojmenným konstrukcím jazyka C. Konvence formátování výstupu jsou také velmi podobné (viz printf ).

Je třeba poznamenat, že popis hardwaru napsaný v jazyce Verilog (stejně jako v jiných jazycích HDL ) se obvykle nazývá programy, ale na rozdíl od obecně přijímaného pojetí programu jako sekvence instrukcí zde program definuje strukturu systému. Také termín "provádění programu" se nevztahuje na jazyk Verilog.

Přehled

Existuje podmnožina instrukcí jazyka Verilog nazvaná syntetizovatelný . Moduly zapsané v této podmnožině se nazývají RTL ( úroveň přenosu registrů  ) .  Mohou být fyzicky implementovány pomocí CAD syntézy. CAD data podle určitých algoritmů převádějí abstraktní zdrojový kód Verilog na netlist  - logicky ekvivalentní popis skládající se z elementárních logických primitiv (například AND, OR, NOT, triggery ), které jsou dostupné ve vybrané technologii výroby VLSI nebo BMC . a programování FPGA . Další zpracování netlistu nakonec vygeneruje fotomasky pro litografii nebo firmware pro FPGA .

Historie

Tvorba

Verilog byl vytvořen Philem Moorbym a Prabhu Goelem v zimě 1983-1984 v Automated Integrated Design Systems (od roku 1985 Gateway Design Automation ) jako hardwarový modelovací jazyk. V roce 1990 koupil Gateway Design Automation společnost Cadence Design Systems . Cadence je držitelem práv na logické simulátory Verilog a Verilog-XL společnosti Gateway.

Verilog-95

Během rostoucí popularity jazyka VHDL se Cadence rozhodl jazyk standardizovat. Cadence uvolnila Verilog do veřejné domény. Verilog byl předložen IEEE a přijat jako standard IEEE 1364-1995 (často označovaný jako Verilog-95).

Verilog 2001

Dodatky k jazyku Verilog-95 byly přijaty jako IEEE 1364-2001 (nebo Verilog-2001).

Verilog-2001 je významný upgrade z Verilog-95. Nejprve přidal podporu pro proměnné se znaménkem (ve formátu s dvojím doplňkem ). Dříve museli autoři kódu implementovat operace se znaky pomocí velkého množství bitových logických operací. Stejnou funkcionalitu na Verilog-2001 popisují vestavěné jazykové operátory: + , - , / , * , >>> Soubor I/O byl vylepšen. Pro zlepšení čitelnosti kódů byla mírně změněna syntaxe, například vždy @* , předefinování pojmenovaných parametrů, deklarování hlaviček funkcí, úloh a modulů ve stylu C.

Verilog-2001 je nejběžněji používaný dialekt jazyka a je podporován většinou komerčních elektronických CAD systémů (viz EDA ).

Verilog 2005

Verilog 2005 (IEEE Standard 1364-2005) přidal drobné opravy, upřesnění specifikací a několik nových syntaxí, jako je klíčové slovo uwire .

Oddělená část od standardu, Verilog-AMS , umožňuje simulaci analogových a analogově-digitálních zařízení.

System Verilog

SystemVerilog je nadmnožinou Verilog-2005 s mnoha novými funkcemi pro ověřování návrhu a simulaci.

Příklad

Ahoj světe! (nelze syntetizovat)

hlavní modul ; initial begin $display ( "Ahoj světe!" ); $dokončit ; koncový modul

Popis Verilog 2001: dva jednoduché klopné obvody zapojené do série:

nejvyšší úroveň modulu ( vstupní hodiny , reset vstupu , vstup d , výstupní reg flop2 ); reg flop1 ; vždy @ ( reset posedge , hodiny posedge ) if ( reset ) { flop1 , flop2 } <= 2 'b00 ; else begin flop1 <= d ; flop2 <= flop1 ; end endmodule //toplevel

Normy

  • IEEE Std 1364-1995 - první standard
  • IEEE Std 1364-2001  - Verilog 2001 standard
  • IEEE 1364-2005 - aktualizovaný standard
  • IEEE 1800-2005 , IEEE 1800-2012] – standard IEEE pro SystemVerilog
  • IEEE P1364  - Working Group 1364 - Bývalý vývojář Verilog.
  • IEEE P1800  – Working Group 1800 – Vývojář SystemVerilog a nástupce Working Group 1364.

Jazykové konstrukce

Datové typy

Verilog obsahuje dva základní datové typy: wire a reg . Oba tyto typy mohou nabývat 4 možných hodnot při simulaci programu Verilog:

  • 0
  • jeden
  • X - "neznámá hodnota". Tato hodnota se používá pouze pro simulaci, v reálném hardwaru to bude 0 nebo 1.
  • Z - " stav vysokého odporu ", tj. žádný signál.

Typ drátu se používá k popisu obvodů, reg pro registry a proměnné. Oba tyto typy lze také použít při popisu vícebitových dat:

drát w1 ; drát [ 31 : 0 ] sběrnice ; // 32bitová sběrnice reg r1 ; reg [ 7 : 0 ] bitvector ; // 8bitový registr

Proměnné typu reg mají počáteční hodnotu 'X'. Řetězce přenášejí hodnoty mezi registry. Pokud síť není připojena k žádnému registru, bude mít hodnotu 'Z'.

Verilog také obsahuje pole, která umožňují simulaci paměti :

reg [ 31 : 0 ] paměť [ 0 : 1023 ]; // 1024 slov paměti, každé slovo obsahuje 32 bitů.

Verilog navíc obsahuje následující typy dat:

  • celé číslo  - stejně jako "reg[31:0]", přičemž operace berou v úvahu znaménko (nejvýznamnější bit)
  • nemovitý
  • čas
  • reálný čas

Počáteční a vždy

Verilog obsahuje dva druhy bloků, které mohou provádět výpočty: „počáteční“ blok a „vždy“ blok.

"Počáteční" blok definuje, jaké akce se mají provést při spuštění programu. Tento blok není syntetizovatelný a obvykle se používá pro testovací účely. Například:

modul testbench ; regclock ; _ reg [ 31 : 0 ] in1 , in2 ; reg [ 63 : 0 ] ven ; // Testovaný násobič modulu mult ( clock , in1 , in2 , out ); initial begin // Testovací data. in1 = 4 ; in2 = 20 ; // Počkejte, až bude výsledek připraven. # 10 ; // Výstup výsledku výpočtu. $display ( "vysledek=%d" , out ); $dokončit (); koncový modul

Program může obsahovat několik "počátečních" bloků, z nichž všechny jsou prováděny paralelně.

Operátoři

Typ Symboly Probíhá operace
bitový ~ Inverze
& Bitové AND
| Bitově NEBO
^ Bitový XOR
~^ nebo ^~ Bitové XNOR (EQU)
hlavolam ! NE
&& A
|| NEBO
Snížení & Snížený AND
~& Snížená NAND
| Snížený NEBO
~| Snížené NOR
^ Snížený XOR
~^ nebo ^~ Snížený XNOR
Aritmetický + Přidání
- Odčítání
- doplněk 2
* Násobení
/ Divize
** Exponent (*Verilog-2001)
přístup > Více
< Méně
>= Větší nebo rovno
<= Menší nebo rovno
== Booleovská rovnost
!= booleovský nerovný
=== 4-stavová booleovská rovnost
!== 4stavová booleovská hodnota se nerovná
Posun >> Logický posun doprava
<< Logický posun doleva
>>> Aritmetický pravý Shift (*Verilog-2001)
<<< Aritmetický levý Shift (*Verilog-2001)
Spojka { , } Spojka
kopírování {n{m}} Zkopíruje hodnotu m nkrát
Stav ? : Stav

Open source hardware pomocí Verilog

Popisy otevřených mikroprocesorů OpenSPARC T1, T2, S1 Core a OpenRISC jsou vytvořeny v jazyce Verilog . Jejich zdrojový kód je dostupný pod licencemi LGPL a GPL .

Seznam aplikací, které podporují Verilog

  • Quartus II  - prostředí pro modelování a ladění; funguje alespoň pod Windows .
  • Icarus Verilog  je open source  aplikace pro modelování a syntézu. Běží na Linuxu , Windows , Mac OS X , FreeBSD a dalších
  • VCS  - prostředí pro modelování a ladění; funguje pod Unixem i Windows .
  • LogicSim  je simulační a ladicí prostředí pro Windows .
  • Incisive HDL  - prostředí pro modelování a ladění; funguje pod Unixem i Windows .
  • ModelSim  - prostředí pro modelování a ladění; funguje pod Unixem i Windows .
  • Veritak  je editor, integrovaný kompilátor/simulátor, překladač VHDL do Verilog, běžící na Windows .
  • Verilator  je open-source vysoce výkonný kompilátor Verilog.
  • Verilog-Perl  je sada modulů Perl pro předzpracování a vytváření dalších nástrojů.
  • vmodel  je open-source modelovací nástroj Verilog v MATLABu založený na Verilatoru.
  • Verilog pro DMS je sada nástrojů pro implementaci libovolných metod analýzy a transformace ve Verilog.
  • VSPCompiler  je nástroj pro kompilaci syntetizovaného popisu RTL do knihovny C/C++/SystemC.
  • VTOC  je nástroj pro kompilaci syntetizovaného popisu RTL do knihovny C++/SystemC.
  • Wave VCD Viewer  je program pro prohlížení souborů VCD. Simulátor Verilog dokáže vygenerovat soubor VCD obsahující výsledky simulace. Wave VCD Viewer umožňuje vývojářům prohlížet výsledky simulace ve formě časových diagramů. Program běží pod Windows .
  • GTKWave  je open-source prohlížeč časových diagramů, který mimo jiné umožňuje prohlížet soubory VCD.
  • Nástroje pro návrh a ověřování (DVT)  - IDE pro SystemVerilog, Verilog a VHDL založené na Eclipse .
  • TkGate  je modelovací a simulační nástroj založený na Verilog.

Viz také

Příbuzné jazyky

Literatura

  • Solovyov VV Základy jazyka pro navrhování digitálních zařízení Verilog. - M .: Horká linka - Telecom, 2014. - 208 s. - ISBN 978-5-9912-0353-1 .

Odkazy

  1. 1 2 https://www.physi.uni-heidelberg.de/~angelov/VHDL/VHDL_SS09_Teil10.pdf
  2. (nespecifikovaný název) - ISBN 9783486711509