VHDL
This presentation is the property of its rightful owner.
Sponsored Links
1 / 38

VHDL PowerPoint PPT Presentation


  • 116 Views
  • Uploaded on
  • Presentation posted in: General

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 HDL standard that made significant improvements to the original standard. VHDL, Verilog. VHDL – bardziej podobny do ADA, Pascal

Download Presentation

VHDL

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Vhdl

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 HDL standard that made significant improvements to the original standard


Vhdl verilog

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


Cztery poziomy abstrakcji opisu

Cztery poziomy abstrakcji opisu

  • Behawioralny (algorytmiczny)

  • Ścieżka danych

  • (Strukturalny) Poziom bramek (Gate Level)

  • Poziom przełącznikowy – zależny od technologii programowalnego układu


Rtl synteza

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


Przyk ad

Przykład


Przyk ad1

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


Przyk ad2

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


Przyk ad3

Przykład

module D_FF(q, d, clk, reset);

output q;

input d, clk, reset;

reg q;

always @(posedge reset or negedge clk)

if (reset) q <= 1'b0;

else q <= d;

endmodule


Test bench

Test bench


Test bench1

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


Notacja

Notacja

  • Zapis liczby z rozmiarem: <rozmiar> '<format bazy> <liczba>

  • Przykłady:4'b1111 12'habc 16'd255


Notacja1

Notacja

  • Liczby bez rozmiaru:

    23456 // domyślnie – 32 bity

    'hc3

    'o21


Operatory

Operatory

  • a = ~ b; // jednoargumentowe

  • a = b && c; // dwuargumentowe

  • a = b ? c : d; // trójargumentowe


Operatory1

Operatory

  • arytmetyczne: + - * / % (mod)

  • relacyjne: > >= < <= == !=

  • logiczne: && (and) || (or)

  • bitowe: & (and) | (or) ^ (xor) ^~ (not-xor)

  • przesunięcia bitowe: << (shl) >> (shr)


Operatory2

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} }


Warto ci logiczne

Wartości logiczne

  • Wartości: 0, 1, x, z

  • Przykład: strong1, weak0


Wire reg

Wire, reg

  • W VHDL – signal

  • W Verilog:

    • 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;


Wektory

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;


Selekcja fragmentu wektora

Selekcja fragmentu wektora

busA[7]

  • bus[2:0]


Selekcja fragmentu wektora1

Selekcja fragmentu wektora


Selekcja fragmentu wektora2

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]


Selekcja fragmentu wektora3

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))


Typy danych

Typy danych

  • Typy proste:

    • Integer,

    • Real,

    • Time

  • Tablice:

    integer count[0:7];

    reg bool[31:0];

    time chk_point[1:100][0:255];


Sta e

Stałe

  • parameter port_id = 5;

  • parameter cache_line_width = 256;


Sta e1

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


Modu verilog

Moduł Verilog

  • Definicja bloku, odpowiada parze entity/architecture

  • Lista wejść/wyjść – jak deklaracja port w entity

  • Pozostałe instrukcje – jak wnętrze architekture


Modu verilog1

Moduł Verilog

  • Jednak moduł jest jedynie szablonem bloku

  • Musi nastąpić deklaracja instancji

  • Musi więc ostatecznie wystąpić strukturalny poziom specyfikacji


Modu deklaracja port w

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


Opis strukturalny

Opis strukturalny


Opis strukturalny1

Opis strukturalny

  • Lista połączeń:

    • Wg kolejności:

    • Z nazwami:


Opis cie k danych

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;


Opis behawioralny

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


Lista czu o ci

Lista czułości

always @( reset, clock, d)

begin

if (reset)

q = 1'b0;

else if(clock)

q = d;

end


Wyra enie warunkowe

Wyrażenie warunkowe


Instrukcja wyboru

Instrukcja wyboru


P tle

Pętle


Egzekucja sekwencyjna i r wnoleg a

Egzekucja sekwencyjna i równoległa

  • Przetwarzanie sekwencyjne: begin .. end

  • Przetwarzanie równoległe: fork .. join


  • Login