Wstęp SYSTEMY WBUDOWANE Układy kombinacyjne c Dr inż. Ignacy Pardyka UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach Rok akad. 2011/2012 c Dr inż. Ignacy Pardyka (Inf.UJK) Systemy wbudowane Rok akad. 2011/2012 1 / 29 c Dr inż. Ignacy Pardyka (Inf.UJK) Systemy wbudowane Rok akad. 2011/2012 2 / 29 Verilog Wstęp Proste przykłady Verilog język opisu sprzętu opracowany w połowie lat 80 zdefiniowany przez IEEE Standard 1364: Verilog-1995 oraz w 2001: jako Verilog-2001 Semantyka języka Verilog oparta na paradygmacie......... Verilog jest więc różny od języków opisujących przetwarzanie sekwencyjne (C, C++, etc). c Dr inż. Ignacy Pardyka (Inf.UJK) Systemy wbudowane Rok akad. 2011/2012 3 / 29 c Dr inż. Ignacy Pardyka (Inf.UJK) Systemy wbudowane Rok akad. 2011/2012 4 / 29
Proste przykłady Proste przykłady Proste przykłady Implementacja komparatora Komparator 1-bitowy module eq1 // I/O ports ( input wire..., output wire eq ); // signal declaration wire...; Funkcja opisywana wyrażeniem logicznym // body // sum of two product terms assign eq =...; // product terms assign p0 =...; assign p1 = i...; c Dr inż. Ignacy Pardyka (Inf.UJK) Systemy wbudowane Rok akad. 2011/2012 5 / 29 c Dr inż. Ignacy Pardyka (Inf.UJK) Systemy wbudowane Rok akad. 2011/2012 6 / 29 Proste przykłady Schemat blokowy programu Przypisania ciągłe opisują kolejne... strukturalne układu Połączenia elementów... za pomocą sygnałów przypisanych do portów wejściowych i... Podstawowe elementy leksykalne i typy danych c Dr inż. Ignacy Pardyka (Inf.UJK) Systemy wbudowane Rok akad. 2011/2012 7 / 29 c Dr inż. Ignacy Pardyka (Inf.UJK) Systemy wbudowane Rok akad. 2011/2012 8 / 29
Podstawowe elementy leksykalne i typy danych Elementy leksykalne Identyfikator nadaje obiektowi unikalną nazwę składa się z..., cyfr,... (_), znaku dolara ($) $ opisuje funkcję obiektu Verilog... wielkość liter Słowa kluczowe identyfikatory predefiniowane, opisujące konstrukcje języka Biała spacja to: spacja, tabulacja, znak nowej linii rozdziela identyfikatory Komentarz jedynie w celach dokumentacyjnych, ignorowany przez kompilator w pojedynczej linii, gdy na początku // wieloliniowy ujęty w nawiasy /* i */. c Dr inż. Ignacy Pardyka (Inf.UJK) Systemy wbudowane Rok akad. 2011/2012 9 / 29 c Dr inż. Ignacy Pardyka (Inf.UJK) Systemy wbudowane Rok akad. 2011/2012 10 / 29 Cztery wartości logiczne: 0: dla logicznego 0, lub false 1: dla logicznej 1, lub true z: dla stanu...... (high-impedance) x: dla wartości nieokreślonej Wartość z może wystąpić na... bufora 3-stanowego Wartość x w czasie modelowania i symulacji reprezentuje sytuację powstałą wskutek braku inicjalizacji wejść lub konflikt wyjść obiektów. Połączenia (net group) służą do reprezentacji fizycznych... elementów (obiektów) nazwa typu: wire wire reprezentuje sygnał 1-bitowy wire p0, p1; lub wielobitowy wire [7:0]..., data2 ; // 8-bit data... [31:0] addr ; // 32-bit address wire [0:7] revers_data; // ascending should be avoided tablica 2-D reprezentuje zestaw słów wielobitowych... [3:0] meml [31:0] ; // 32 słowa 4-bitowe Zmienne (variable group) reprezentuje abstrakcyjną pamięć (w modelu behavioralnym) nazwy typów:...,..., real, time, realtime c Dr inż. Ignacy Pardyka (Inf.UJK) Systemy wbudowane Rok akad. 2011/2012 11 / 29 c Dr inż. Ignacy Pardyka (Inf.UJK) Systemy wbudowane Rok akad. 2011/2012 12 / 29
y liczb (sized, unsized) Stałe... w Verilog mogą mieć różne formaty postaci: [sign][size] [base][value] Składnik [base] określa podstawę systemu liczbowego b lub B: binary (binary) o lub 0: ósemkowy (octal) h lub H: szesnastkowy (hexadecimal) d lub D: dziesiętny (decimal) Składnik [value] to wartość liczbowa Składnik [size] to liczba bitów reprezentacji Rozmiar może być określony explicite (sized number) liczbę bitów wskazano w size Rozmiar domyślny (unsized number) brak informacji o rozmiarze (brak [size] ) faktyczny rozmiar zależny od komputera (minimum... bity) gdy liczba..., to [base] można opuścić. c Dr inż. Ignacy Pardyka (Inf.UJK) Systemy wbudowane Rok akad. 2011/2012 13 / 29 c Dr inż. Ignacy Pardyka (Inf.UJK) Systemy wbudowane Rok akad. 2011/2012 14 / 29 Struktura programu Verilog definiuje ponad 20 operatorów bitowe: ~ bitwise... & bitwise... bitwise or ^ bitwise... Wskazane operacje będą realizowane przez... logiczne O innych operatorach będzie mowa w dalszej części wykładu. c Dr inż. Ignacy Pardyka (Inf.UJK) Systemy wbudowane Rok akad. 2011/2012 15 / 29 c Dr inż. Ignacy Pardyka (Inf.UJK) Systemy wbudowane Rok akad. 2011/2012 16 / 29
Struktura programu Struktura programu deklaracji modułu i portów module eq1 // I/O ports (... wire i0, i1,... wire eq ); Uproszczona składnia deklaracji Term [mode] może być:..., output,... Term [data_type] można opuścić gdy typ... c Dr inż. Ignacy Pardyka (Inf.UJK) Systemy wbudowane Rok akad. 2011/2012 17 / 29 opisującego syntezowalny moduł zawiera opis wszystkich części składowych modułu części składowe mogą pracować..., ich symulacja jest... metody opisu części układu: przypisanie... (continuous assignment) blok... deklaracja części jako obiektu określonego typu (module instantiation) Składnia przypisania ciągłego (uproszczona): assign [signal_name] = [expression] ; wygodna do opisu prostych układów... sygnał po lewej stronie przypisania to... układu sygnały występujące w wyrażeniu z prawej strony to... układu: assign eq = p0 p1; gdy p0 lub p1 zmieniają wartość, wtedy wyznaczana jest aktualna wartość wyrażenia i przypisywana do sygnału... c Dr inż. Ignacy Pardyka (Inf.UJK) Systemy wbudowane Rok akad. 2011/2012 18 / 29 Struktura programu Struktura programu Uproszczona składnia deklaracji sygnału: [data_type] [port_names]; y deklaracji sygnałów wewnętrznych: wire...,...; Jeśli sygnał... został zadeklarowany, to zostanie potraktowany jako... (implicit net) typ domyślny wire Implementacja komparatora 2-bitowego module eq2_sop ( input wire[1:0] a, b, output wire... ); // internal signal declaration wire p0, p1, p2, p3; // sum of product terms... aeqb =... p1... p3; // product terms assign p0 = (~a[1] & ~b[1]) & (~a[0] & ~b[0]); assign p1 = (~a[1] & ~b[1]) & (a[0] & b[0]); assign p2 = (a[1] & b[1]) & (~a[0] & ~b[0]); assign p3 = (a[1] & b[1]) & (a[0] & b[0]); c Dr inż. Ignacy Pardyka (Inf.UJK) Systemy wbudowane Rok akad. 2011/2012 19 / 29 c Dr inż. Ignacy Pardyka (Inf.UJK) Systemy wbudowane Rok akad. 2011/2012 20 / 29
System cyfrowy często składa się z podsystemów można konstruować systemy cyfrowe łącząc gotowe... w języku Verilog konkretny podzespół deklaruje się jako obiekt określonego typu definiowanego za pomocą...... Opis... komparatora 2-bitowego: module eq2 (... wire[1:0] a, b, output wire... ); // internal signal declaration... e0, e1; // body // instantiate two 1-bit comparators... eq_bit0_unit (.i0(a[0]),.i1(b[0]),.eq(e0)); eq1 eq_bit1_unit (.eq(e1),.i0(a[1]),.i1(b[1])); // a and b are equal if individual bits are equal assign aeqb = e0 & e1; c Dr inż. Ignacy Pardyka (Inf.UJK) Systemy wbudowane Rok akad. 2011/2012 21 / 29 c Dr inż. Ignacy Pardyka (Inf.UJK) Systemy wbudowane Rok akad. 2011/2012 22 / 29 Konstrukcja komparatora 2-bitowego z użyciem komparatorów 1-bitowych Uproszczona składnia deklaracji podzespołu Połączenia przez nazwę (connection by name) do nazwy... podzespołu (lower-level module) przypisuje się... zadeklarowany w bieżącym module (higher-level module). Połączenia przez listę (connection by ordered list) nazwy portów podzespołów zastępuje się sygnałami zadeklarowanymi w bieżącym module (kolejność musi być zgodna z kolejnością... portów..., który definiował...). c Dr inż. Ignacy Pardyka (Inf.UJK) Systemy wbudowane Rok akad. 2011/2012 23 / 29 c Dr inż. Ignacy Pardyka (Inf.UJK) Systemy wbudowane Rok akad. 2011/2012 24 / 29
Predefiniowane w j. Verilog typy (primitives) można traktować jako... i deklarować... (podzespoły) mogą to być pojedyncze... logiczne niskopoziomowa definicja komparatora 1-bitowego: module eq1_primitive (input wire i0, i1, output wire eq); wire i0_n, i1_n, p0, p1; //primitive gate instantiations... unit1 (i0_n, i0); // i0_n = ~i0; not unit2 (i1_n, i1); // i1_n = ~i1;... unit3 (p0, i0_n, i1_n); // p0 = i0_n & i1_n; and unit4 (p1, i0, i1); // p1 = i0 & i1; or unit5 (eq, p0, p1); // eq = p0 p1; Schemat komparatora 1-bitowego zbudowanego z bramek logicznych: Moduł testowy (testbench) c Dr inż. Ignacy Pardyka (Inf.UJK) Systemy wbudowane Rok akad. 2011/2012 25 / 29 c Dr inż. Ignacy Pardyka (Inf.UJK) Systemy wbudowane Rok akad. 2011/2012 26 / 29 Moduł testowy (testbench) Testbench komparatora 2-bitowego Moduł testowy (testbench) Testbench komparatora 2-bitowego Po opracowaniu modułu następuje faza... sprawdzającej poprawność opisu w j. Verilog Poprawny moduł można poddać syntezie i implementacji fizycznej Kod opisujący testbench zawiera deklarację... testowanej, a więc kompilator utworzy konkretny... 2-bitowego komparatora eq2 uut (.a(test_in0),.b(test_in1),.aeqb(test_out)); Druga część modułu testowego to initial block, który służy do generowania...... przypisywanych do sygnałów doprowadzanych do... testowanego podzespołu // test vector 1 test_in0 = 2 b00; test_in1 = 2 b00; # 200; Blok initial podczas symulacji wykonuje się..., jego... rozpoczyna się wraz ze startem... c Dr inż. Ignacy Pardyka (Inf.UJK) Systemy wbudowane Rok akad. 2011/2012 27 / 29 // The timescale directive specifies that // the simulation time unit is 1 ns and // the simulation timestep is 10 ps timescale 1 ns/10 ps module eq2_testbench; // signal declaration... [1:0] test_in0, test_in1; wire test_out; // instantiate the circuit under test... uut (.a(test_in0),.b(test_in1),.aeqb(test_out)); // test vector generator initial begin // test vector 1 test_in0 = 2 b00; test_in1 = 2 b00; #...; // test vector 2 test_in0 = 2 b01; test_in1 = 2 b00; # 200; // test vector 3... // stop simulation $stop; end c Dr inż. Ignacy Pardyka (Inf.UJK) Systemy wbudowane Rok akad. 2011/2012 28 / 29
Moduł testowy (testbench) Testbench komparatora 2-bitowego Rezultaty symulacji 0 ps 200 000 ps 400 000 ps 600 000 ps 800 000 ps test_out test_in0[1:0] 00 01 10 test_in1[1:0] 00 11 10 00 c Dr inż. Ignacy Pardyka (Inf.UJK) Systemy wbudowane Rok akad. 2011/2012 29 / 29