Verilog

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2020. július 30-án felülvizsgált verziótól ; az ellenőrzések 18 szerkesztést igényelnek .
Verilog
Nyelvóra Hardverleíró nyelv
Megjelent 1983-1984 _ _
Szerző Phil Moorby , Prabhu Goel
Fájlkiterjesztés _ .v
Befolyásolva C , Pascal [1] [2] és Ada [1]

Verilog , Verilog HDL ( Eng.  Verilog Hardware Description Language ) egy hardverleíró nyelv , amelyet elektronikus rendszerek leírására és modellezésére használnak. A Verilog HDL-t, amelyet nem szabad összetéveszteni a VHDL -lel (konkurens nyelv), leggyakrabban az analóg, digitális és vegyes elektronikus rendszerek tervezésében, ellenőrzésében és megvalósításában (pl. VLSI -ként ) használják különféle absztrakciós szinteken.

A Verilog fejlesztői a szintaxisát nagyon hasonlóvá tették a C nyelvéhez , így könnyebben megtanulható. A Verilog előfeldolgozója nagyon hasonlít a C előfeldolgozóhoz, és az alapvető "if", "while" vezérlő konstrukciók is hasonlóak az azonos nevű C nyelvi konstrukciókhoz. A kimeneti formázási konvenciók is nagyon hasonlóak (lásd printf ).

Megjegyzendő, hogy a Verilog nyelven (és más HDL nyelveken is) írt hardverleírást általában programnak nevezik, de ellentétben a program általánosan elfogadott felfogásával, mint utasítássorozattal, itt a program határozza meg a struktúrát. a rendszerről. Ezenkívül a „programvégrehajtás” kifejezés nem alkalmazható a Verilog nyelvre.

Áttekintés

A Verilog nyelvi utasításoknak van egy részhalmaza, az úgynevezett szintetizálható . Az ebbe a részhalmazba írt modulokat RTL -nek ( regiszterátviteli szint  ) hívják .  Fizikailag megvalósíthatók CAD szintézis segítségével. A CAD adatok bizonyos algoritmusok szerint az absztrakt Verilog forráskódot netlistává alakítják –  ez egy logikailag egyenértékű leírás, amely elemi logikai primitívekből (például AND, OR, NOT, triggers ) áll, amelyek elérhetők a kiválasztott VLSI gyártási technológiában vagy BMC -ben. és FPGA programozás . A netlista további feldolgozása végül fotómaszkokat generál litográfiához vagy firmware-t az FPGA -hoz .

Történelem

Létrehozás

A Verilog-ot Phil Moorby és Prabhu Goel hozta létre 1983-1984 telén az Automated Integrated Design Systemsnél (1985 óta Gateway Design Automation ) hardvermodellezési nyelvként. 1990-ben a Gateway Design Automationt a Cadence Design Systems megvásárolta . A Cadence birtokolja a Gateway Verilog és Verilog-XL szimulátor logikai szimulátorainak jogait.

Verilog-95

A VHDL nyelv növekvő népszerűsége során a Cadence a nyelv szabványosítása mellett döntött. A Cadence nyilvánosságra hozta a Verilogot. A Verilog-ot benyújtották az IEEE -hez, és az IEEE 1364-1995 szabványként fogadták el (gyakran Verilog-95-nek nevezik).

Verilog 2001

A Verilog-95 nyelv kiegészítései IEEE 1364-2001 (vagy Verilog-2001) néven kerültek elfogadásra.

A Verilog-2001 a Verilog-95 jelentős frissítése. Először is hozzáadta az előjeles változók támogatását (kettős komplement formátumban ). Korábban a kódszerzőknek előjelműveleteket kellett végrehajtaniuk nagyszámú bitenkénti logikai művelettel. Ugyanezt a funkcionalitást a Verilog-2001-en írják le a beépített nyelvi operátorok: + , - , / , * , >>> Fájl I/O továbbfejlesztésre került. A kódok olvashatóságának javítása érdekében a szintaxis kissé módosult, például mindig @* , a megnevezett paraméterek újradefiniálása, a függvények, feladatok és modulok fejléceinek deklarálása C stílusban.

A Verilog-2001 a nyelv leggyakrabban használt dialektusa, és a legtöbb kereskedelmi elektronikai CAD-rendszer támogatja (lásd az EDA -t ).

Verilog 2005

A Verilog 2005 (IEEE 1364-2005 szabvány) kisebb javításokat, specifikációk pontosításokat és néhány új szintaxist adott hozzá, például az uwire kulcsszót .

A szabványtól különálló alkatrész, a Verilog-AMS lehetővé teszi az analóg és analóg-digitális eszközök szimulációját.

System Verilog

A SystemVerilog a Verilog-2005 szuperkészlete, számos új funkcióval a tervezés ellenőrzéséhez és szimulációjához.

Példa

Helló Világ! (nem szintetizálható)

modul ; kezdeti kezdés $display ( "Hello world!" ); $befejezés ; végmodul _

Verilog 2001 leírása: két egyszerű flip-flop sorba kapcsolva:

modul legfelső szintje ( bemeneti óra , bemenet visszaállítása , d bemenet , kimeneti reg flop2 ); reg flop1 ; mindig @ ( posedge reset , posedge clock ) if ( reset ) { flop1 , flop2 } <= 2 'b00 ; különben kezdődik flop1 <= d ; flop2 <= flop1 ; end endmodule //toplevel

Szabványok

  • IEEE Std 1364-1995 – az első szabvány
  • IEEE Std 1364-2001  – Verilog 2001 szabvány
  • IEEE 1364-2005 – frissített szabvány
  • IEEE 1800-2005 , IEEE 1800-2012] – IEEE szabvány a SystemVeriloghoz
  • IEEE P1364  – Munkacsoport 1364 – A Verilog korábbi fejlesztője.
  • IEEE P1800  – Working Group 1800 – A SystemVerilog fejlesztője és a Working Group 1364 utódja.

Nyelvi konstrukciók

Adattípusok

A Verilog két alapvető adattípust tartalmaz: vezeték és reg . Mindkét típus 4 lehetséges értéket vehet fel egy Verilog program szimulálásakor:

  • 0
  • egy
  • X - "ismeretlen érték". Ezt az értéket csak szimulációra használjuk, valós hardverben 0 vagy 1 lesz.
  • Z - " nagy ellenállású állapot ", azaz nincs jel.

A vezeték típusa áramkörök leírására szolgál, regiszterek és változók reg . Mindkét típus használható többbites adatok leírására is:

vezeték w1 ; vezeték [ 31 : 0 ] busz ; // 32 bites busz reg r1 ; reg [ 7 : 0 ] bitvektor ; // 8 bites regiszter

A reg típusú változók kezdeti értéke 'X'. A láncok értéket adnak át a regiszterek között. Ha a hálózat nem kapcsolódik egyetlen regiszterhez sem, akkor 'Z' értéke lesz.

A Verilog tömböket is tartalmaz, amelyek lehetővé teszik a memóriaszimulációt :

reg [ 31 : 0 ] memória [ 0 : 1023 ]; // 1024 szó memória, minden szó 32 bitet tartalmaz.

Ezenkívül a Verilog a következő adattípusokat tartalmazza:

  • egész  - ugyanaz, mint a "reg[31:0]", míg a műveletek figyelembe veszik az előjelet (legjelentősebb bit)
  • igazi
  • idő
  • valós idő

Kezdeti és Mindig

A Verilog kétféle blokkot tartalmaz, amelyek számításokat végezhetnek: egy "kezdeti" és egy "mindig" blokkot.

A "kezdeti" blokk határozza meg, hogy a program indításakor milyen műveleteket kell végrehajtani. Ez a blokk nem szintetizálható, és általában tesztelési célokra használják. Például:

modul tesztpad ; regóra ; _ reg [ 31 : 0 ] in1 , in2 ; reg [ 63 : 0 ] out ; // Tesztelt modul szorzó mult ( clock , in1 , in2 , out ); kezdeti kezdet // Tesztadatok. in1 = 4 ; in2 = 20 ; // Várja meg, amíg az eredmény elkészül. # 10 ; // Kiírja a számítás eredményét. $display ( "eredmény=%d" , ki ); $befejezés (); végmodul _

Egy program több „kezdeti” blokkot is tartalmazhat, amelyek mindegyike párhuzamosan fut.

Operátorok

Típusú Szimbólumok Művelet folyamatban
Bitenként ~ Inverzió
& Bitenként ÉS
| Bitenkénti VAGY
^ Bitenkénti XOR
~^ vagy ^~ Bitenkénti XNOR (EQU)
összerakós játékaik ! NEM
&& ÉS
|| VAGY
Csökkentés & Csökkentett ÉS
~& Csökkentett NAND
| Csökkentett VAGY
~| Csökkentett NOR
^ Csökkentett XOR
~^ vagy ^~ Csökkentett XNOR
Számtan + Kiegészítés
- Kivonás
- 2 komplementere
* Szorzás
/ Osztály
** Kitevő (*Verilog-2001)
Hozzáállás > Több
< Kevésbé
>= Nagyobb vagy egyenlő
<= Kisebb vagy egyenlő
== Logikai egyenlőség
!= logikai egyenlőtlen
=== 4-állapotú logikai egyenlőség
!== A 4 állapotú logikai érték nem egyenlő
Váltás >> Logikai jobbra váltás
<< Logikai eltolás balra
>>> Aritmetikai jobb eltolás (*Verilog-2001)
<<< Aritmetikai bal eltolás (*Verilog-2001)
Kuplung { , } Kuplung
másolás {n{m}} m értéket n-szer másol
Állapot ? : Állapot

Nyílt forráskódú hardver a Verilog segítségével

Az OpenSPARC T1, T2, S1 Core és OpenRISC nyílt mikroprocesszorok leírása a Verilog nyelven készült . Forráskódjuk LGPL és GPL licenc alatt érhető el .

A Verilogot támogató alkalmazások listája

  • Quartus II  - modellező és hibakereső környezet; legalább Windows alatt működik .
  • Az Icarus Verilog  egy nyílt forráskódú  modellező és szintézis alkalmazás. Linux , Windows , Mac OS X , FreeBSD és egyéb rendszereken fut . projektoldal
  • VCS  - modellező és hibakereső környezet; működik Unix és Windows alatt is .
  • A LogicSim  egy szimulációs és hibakereső környezet a Windows számára .
  • Incisive HDL  - modellező és hibakereső környezet; működik Unix és Windows alatt is .
  • ModelSim  - modellező és hibakereső környezet; működik Unix és Windows alatt is .
  • A Veritak  egy szerkesztő, integrált fordító/szimulátor, VHDL–Verilog fordító, amely Windows rendszeren fut .
  • A Verilator  egy nyílt forráskódú, nagy teljesítményű Verilog fordító.
  • A Verilog-Perl  Perl modulok készlete más eszközök előfeldolgozására és felépítésére.
  • A vmodel  egy nyílt forráskódú Verilog modellező eszköz a MATLAB-ban, Verilator alapú.
  • A Verilog for DMS egy olyan eszközkészlet, amely tetszőleges elemzési és átalakítási módszereket valósít meg a Verilogban.
  • A VSPCompiler  egy olyan eszköz, amellyel szintetizált RTL-leírásokat lehet C/C++/SystemC könyvtárba fordítani.
  • A VTOC  egy olyan eszköz, amellyel szintetizált RTL-leírásokat lehet C++/SystemC könyvtárba fordítani.
  • A Wave VCD Viewer  egy VCD-fájlok megtekintésére szolgáló program. A Verilog szimulátor képes létrehozni a szimulációs eredményeket tartalmazó VCD fájlt. A Wave VCD Viewer lehetővé teszi a fejlesztő számára a szimulációs eredmények megtekintését időzítési diagramok formájában. A program Windows alatt fut .
  • A GTKWave  egy nyílt forráskódú idődiagram-nézegető, amely többek között lehetővé teszi a VCD-fájlok megtekintését.
  • Tervező és ellenőrző eszközök (DVT) – Eclipse  alapú IDE SystemVerilog, Verilog és VHDL számára .
  • A TkGate  egy Verilogon alapuló modellező és szimulációs eszköz.

Lásd még

Kapcsolódó nyelvek

Irodalom

  • Solovyov VV A digitális berendezések tervezésének nyelvének alapjai Verilog. - M .: Forró vonal - Telecom, 2014. - 208 p. - ISBN 978-5-9912-0353-1 .

Linkek

  1. 1 2 https://www.physi.uni-heidelberg.de/~angelov/VHDL/VHDL_SS09_Teil10.pdf
  2. (meghatározatlan cím) - ISBN 9783486711509