Projektowanie Scalonych Systemów Wbudowanych VERILOG
VERLIOG - historia Początki lat 80 XX w. Phil Moorby Gateway Design Automation symulator Verilog XL 1987 Synopsys Verilog jako język specyfikacji projektu dla narzędzi syntezy (standaryzacja VHLD a przez IEEE) 1989 Cadence (wykupił Gatewey) odzielenie języka opisu sprzętu od symulatora Verilog XL 1990 Cadence upublicznienie języka OVI (Open Verilog International) wymiana doświadczeń, kontrola specyfikacji i promowanie języka 1993 OVI nowa specyfikacja języka EiT 2017/18 PSSW - Verilog 2
VERLIOG - historia 1995 IEEE standaryzacja języka : IEEE 1364-1995 2000 Accelera konsorcjum firm: projektantów systemów cyfrowych i dostawców oprogramowania EDA 2001 nowy standard IEEE 1364-2001 (System Verilog 3.0 rozszerzenie standardu IEEE 1364-3001) 2004 Accelera dalsze rozszerzenia i połączenie poprzednich opracowań w jeden dokument 2005 IEEE nowe standardy: Verilog-2005 (IEEE 1364-2005) i System Verilog-2005 (IEEE 1800-2005) Od 2007 prace nad połączeniem obu standardów EiT 2017/18 PSSW - Verilog 3
VERLIOG - historia 2009 IEEE najnowszy standard: SystemVerilog IEEE 1800-2009 This standard represents a merger of two previous standards: IEEE Std 1364(TM)-2005 Verilog hardware description language (HDL) and IEEE Std 1800-2005 SystemVerilog unified hardware design, specification, and verification language. EiT 2017/18 PSSW - Verilog 4
Literatura Z. Hajduk Wprowadzenie do języka VERILOG, BTC, 2009 A. Golda, A. Kos Projektowanie układów scalonych CMOS, WKŁ, 2010 Internet i inne EiT 2017/18 PSSW - Verilog 5
TERMINOLOGIA (1) model (inaczej: system, projekt) (ang. model, system, design) opis projektowanego układu cyfrowego za pomocą pliku źródłowego moduł (ang. module) podstawowa jednostka projektowa (element logiczny) wykorzystywana w modelu (projekcie) port (terminal) (ang. port, terminal) interfejs modułu służący do łączenia z innymi modułami moduł nadrzędny najwyższy w hierarchii moduł (często jest nim moduł testowy) EiT 2017/18 PSSW - Verilog 6
TERMINOLOGIA (2) Moduł nie jest konkretnym elementem w układzie, lecz opisuje jego zachowanie. Jest definicją typu elementu. Dopiero instancja (urealnienie) (ang. instance) jest konkretnym użyciem wcześniej zdefiniowanego komponentu przez nadanie nazwy (identyfikatora) określonemu elementowi. Jest powołaniem do istnienia konkretnego elementu Moduł nadrzędny nie ma urealnienia. EiT 2017/18 PSSW - Verilog 7
OGÓLNA STRUKTURA PROGRAMU jednostka testowa UKŁAD TESTUJĄCY Generator sygnałów testujących i monitor Projektowany układ (system) EiT 2017/18 PSSW - Verilog 8
OPIS UKŁADU Behawioralny opis działania układu, czyli jak układ lub jego części oddziaływają z otoczeniem. Jest opis związków między wejściami i wyjściami układu (http://sjp.pwn.pl: behawior [wym. bihewior, behawior] psych. «każda dająca się zaobserwować reakcja zwierzęcia lub człowieka na bodźce płynące z otoczenia») Strukturalny opis struktury (budowy) układu, czyli połączeń między jego elementami netlista Fizyczny opis struktury tranzystorów układu scalonego maski logiczne i technologiczne (zbiór prostokątów lub wielokątów odpowiednich warstw układu scalonego) EiT 2017/18 PSSW - Verilog 9
OPIS STRUKTURALNY prosty układ definicja modułu sumatora EiT 2017/18 PSSW - Verilog 10
OPIS STRUKTURALNY ogólna definicja // przykład definiowania modułu module nazwa(lista_portów); input port_we; output port_wy; // opis układu (modułu) endmodule wszystkie porty modułu muszą mieć określony (zdefiniowany) kierunek definicja kierunku może być w oddzielnych liniach lub w pierwszej razem z nazwą porty mogą być wielobitowe EiT 2017/18 PSSW - Verilog 11
Deklaracja portów ogólnie: OPIS STRUKTURALNY lista portów wejscia-wyjścia typ_portu [rozmiar] nazwa_portu1, nazwa_portu2; rozmiar ilość bitów [MSB:LSB] typ_portu: input - port wejściowy output - port wyjściowy inout - port dwukierunkowy przykład: input A,B; output [3:0] Y; // dwa porty wejściowe 1-bitowe // 4-bitowy port wyjściowy po ukośnikach jest komentarz EiT 2017/18 PSSW - Verilog 12
OPIS STRUKTURALNY typy danych dane połączeniowe (ang. net) służą do połączeń między elementami, przekazują wartości sygnałów: wire zwykłe połączenie inne: wand, wor, tri, triand, tri1, tri0, trireg, supply1, supply0 dane rejestrowe (ang. register) przechowują wartość i reprezentują zmienne inne: reg pozwala wyspecyfikować rejestr integer, time, real, realtime EiT 2017/18 PSSW - Verilog 13
OPIS STRUKTURALNY podstawowe elementy logiczne (ang. primitives) W jezyku Verilog jest 26 elementów: bramki logiczne: and, nand, or, nor, xor, xnor bufory: buf, bufif0, bufif1, not, notif0, notif1, pulldown, pullup tranzystory: nmos, pmos, cmos, rnmos, rpmos, rcmos, tran, tranif0, tranif1, rtran, rtranif0, rtranif1 Deklaracja bramki ogólnie: typ_bramki [opóźnienie] nazwa_bramki (wy,we1,we2, ); opcjonalnie EiT 2017/18 PSSW - Verilog 14
przerzutnik JK z resetem przykład EiT 2017/18 PSSW - Verilog 15
przykład przerzutnik JK: opis strukturalny EiT 2017/18 PSSW - Verilog 16
przykład przerzutnik JK: moduł testowy Moduł JK_FF_tb jest najwyżej w hierarchii i nie musi być urealniany Powołanie instancji JK1 to ona będzie symulowana Blok proceduralny initial w którym instrukcje są wykonywane sekwencyjnie (od słów begin do end) Opóźnienie i przypisanie wartości zmiennym: # n zmienna = liczba n liczba umownych jednostek czasowych tzw.: zadanie systemowe wymuszające koniec symulacji EiT 2017/18 PSSW - Verilog 17
przykład przerzutnik JK: bramki EiT 2017/18 PSSW - Verilog 18
przykład 2 sumator 2-bitowy Jaki jest typ zmiennej CY0? Przypisanie portów przez wylistowanie w odpowiedniej kolejności (notacja pozycyjna): Bramaki są zdef.: (wyj., wej.1, wej.2, ) Przypisanie portów przez nazwy EiT 2017/18 PSSW - Verilog 19
przykład 2 sumator 2-bitowy Notacja pozycyjna w powoływaniu instancji EiT 2017/18 PSSW - Verilog 20
Przykład 3 8-bitowy bufor trójstanowy Opis z tablicą instancji EiT 2017/18 PSSW - Verilog 21
assign Przypisania ciągłe (współbieżne) Operatory logiczne: - or, & - and, ^ - exor EiT 2017/18 PSSW - Verilog 22
Przypisanie niejawne EiT 2017/18 PSSW - Verilog 23
EiT 2017/18 PSSW - Verilog 24
ICARUS VERILOG Jest to darmowy program do syntezy i symulacji układów cyfrowych w języku Verilog. http://iverilog.icarus.com/ EiT 2017/18 PSSW - Verilog 25
ICARUS VERILOG Źródła można pobrać ze strony: http://bleyer.org/icarus/ (wersja: iverilog-0.9.7_setup.exe (latest stable release) [10,5MB] działa co sprawdziłem). Po zainstalowaniu trzeba ręcznie dodać ścieżkę w systemie Windows do katalogu instalacyjnego, domyślnie: "C:\iverilog\bin". Dodatkowe informacje są na stronie: http://codeitdown.com/icarus-verilog-on-windows/ EiT 2017/18 PSSW - Verilog 26