Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

VHDL Today, Verilog HDL is an accepted IEEE standard. In 1995, the original standard IEEE 1364-1995 was approved. IEEE 1364-2001 is the latest Verilog.

Podobne prezentacje


Prezentacja na temat: "VHDL Today, Verilog HDL is an accepted IEEE standard. In 1995, the original standard IEEE 1364-1995 was approved. IEEE 1364-2001 is the latest Verilog."— Zapis prezentacji:

1 VHDL Today, Verilog HDL is an accepted IEEE standard. In 1995, the original standard IEEE was approved. IEEE is the latest Verilog HDL standard that made significant improvements to the original standard

2 VHDL, Verilog VHDL – bardziej podobny do ADA, Pascal
Verilog – bardziej podobny do C Większość firm US używa Verilog Większość firm europejskich + Intel + Texas Instruments używa VHDL VHDL jest lepiej wyposażony do tworzenia złożonych, zmieniających się projektów

3

4 Cztery poziomy abstrakcji opisu
Behawioralny (algorytmiczny) Ścieżka danych (Strukturalny) Poziom bramek (Gate Level) Poziom przełącznikowy – zależny od technologii programowalnego układu

5 RTL, Synteza Mieszanka stylu behawioralnego i ścieżki danych, to tzw. RTL – Register Transfer Level W trakcie syntezy następuje Przejście z RTL na Gate Level – poziom bramek Im wyższy poziom abstrakcji, tym bardziej niezależny od implementacji i elastyczny projekt

6 Przykład

7 Przykład module ripple_carry_counter(q, clk, reset); output [3:0] q;
input clk, reset; T_FF tff0(q[0],clk, reset); T_FF tff1(q[1],q[0], reset); T_FF tff2(q[2],q[1], reset); T_FF tff3(q[3],q[2], reset); endmodule

8 Przykład module T_FF(q, clk, reset); output q; input clk, reset;
wire d; D_FF dff0(q, d, clk, reset); not n1(d, q); endmodule

9 Przykład module D_FF(q, d, clk, reset); output q; input d, clk, reset;
reg q; reset or negedge clk) if (reset) q <= 1'b0; else q <= d; endmodule

10 Test bench

11 Test bench module stimulus; reg clk; reg reset; wire[3:0] q;
ripple_carry_counter r1(q, clk, reset); initial clk = 1'b0; always #5 clk = ~clk; initial begin reset = 1'b1; #15 reset = 1'b0; #180 reset = 1'b1; #10 reset = 1'b0; #20 $finish; end initial $monitor($time, " Output q = %d", q); endmodule

12 Notacja Zapis liczby z rozmiarem: <rozmiar> '<format bazy> <liczba> Przykłady: 4'b 'habc 16'd255

13 Notacja Liczby bez rozmiaru: // domyślnie – 32 bity 'hc3 'o21

14 Operatory a = ~ b; // jednoargumentowe a = b && c; // dwuargumentowe
a = b ? c : d; // trójargumentowe

15 Operatory arytmetyczne: + - * / % (mod)
relacyjne: > >= < <= == != logiczne: && (and) || (or) bitowe: & (and) | (or) ^ (xor) ^~ (not-xor) przesunięcia bitowe: << (shl) >> (shr)

16 Operatory Warunkowy A ? B : C (jeśli warunek A spełniony, to wartość B, w przeciwnym wypadku – wartość C) Sklejenie: { A, B, C } Powtórzenie N razy: { N{A} }

17 Wartości logiczne Wartości: 0, 1, x, z Przykład: strong1, weak0

18 Wire, reg W VHDL – signal W Verilog: Deklaracje: np.
wire – połączenie między blokami w opisie strukturalnym reg – zmienna (alokacja pamięci do przechowywania jakiejś wartości) Deklaracje: np. reg reset; wire a;

19 Wektory W VHDL – tablice bitów W Verilog – wektory: wire a;
wire [7:0] bus; wire [31:0] busA,busB,busC; reg [0:40] virtual_addr;

20 Selekcja fragmentu wektora
busA[7] bus[2:0]

21 Selekcja fragmentu wektora

22 Selekcja fragmentu wektora
Normalna: busA[7] bus[2:0] Ze zmienną: [<bit_pocz>{+|-}:<szer>] : data2[31-:8]; //start=31, szer=8 => data[24:31] data2[24+:8]; //start=24, szer=8 => data[24:31]

23 Selekcja fragmentu wektora
Bit startowy może być zmienną: for (j=0; j<=31; j=j+1) byte = data1[(j*8)+:8]; data1[(byteNum*8)+:8] = 8'b0; Oczywiście możliwe w VHDL: pamiec(conv_integer(addr))

24 Typy danych Typy proste: Tablice: Integer, Real, Time
integer count[0:7]; reg bool[31:0]; time chk_point[1:100][0:255];

25 Stałe parameter port_id = 5; parameter cache_line_width = 256;

26 Stałe Deklaracja w module:
parameter port_id = 5; parameter cache_line_width = 256; Nadanie wartości w instancji modułu: defparam (jak generic map w VHDL) Parametr, który nie podlega defparam: localparam

27 Moduł Verilog Definicja bloku, odpowiada parze entity/architecture
Lista wejść/wyjść – jak deklaracja port w entity Pozostałe instrukcje – jak wnętrze architekture

28 Moduł Verilog Jednak moduł jest jedynie szablonem bloku
Musi nastąpić deklaracja instancji Musi więc ostatecznie wystąpić strukturalny poziom specyfikacji

29 Moduł – deklaracja portów
Poza wyliczeniem portów w nagłówku, deklaracja kierunków: module SR_latch(Q, Qbar, Sbar, Rbar); output Q, Qbar; input Sbar, Rbar; //inout xx; nand n1(Q, Sbar, Qbar); nand n2(Qbar, Rbar, Q); endmodule

30 Opis strukturalny

31 Opis strukturalny Lista połączeń: Wg kolejności: Z nazwami:

32 Opis ścieżką danych Składnia:
przypisanie ::= assign [siła] [opóźn] lista_przypisań ; lista_przypisań ::= elem_przyp { , elem_przyp } elem_przyp ::= l_strona = wyrażenie Przykłady: assign addr[15:0] = addr1_bits[15:0] ^ addr2_bits[15:0]; assign {c_out, sum[3:0]} = a[3:0] + b[3:0] + c_in; wire #10 out = in1 & in2;

33 Opis behawioralny Odpowiednik procesu: struktury always, initial
Przykład: module clock_gen (output reg clock); initial clock = 1'b0; always #10 clock = ~clock; initial #1000 $finish; endmodule

34 Lista czułości always @( reset, clock, d) begin if (reset) q = 1'b0;
else if(clock) q = d; end

35 Wyrażenie warunkowe

36 Instrukcja wyboru

37 Pętle

38 Egzekucja sekwencyjna i równoległa
Przetwarzanie sekwencyjne: begin .. end Przetwarzanie równoległe: fork .. join


Pobierz ppt "VHDL Today, Verilog HDL is an accepted IEEE standard. In 1995, the original standard IEEE 1364-1995 was approved. IEEE 1364-2001 is the latest Verilog."

Podobne prezentacje


Reklamy Google