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.

Slides:



Advertisements
Podobne prezentacje
Zerowanie mikroprocesorów Cel: wprowadzenie mikroprocesora w określony stan początkowy Zwykle realizowany poprzez: inicjalizację licznika rozkazów (PC)
Advertisements

REALIZACJA REGULATORA PID W UKŁADZIE FPGA
Katarzyna Szafrańska kl. II ti
Inżynieria Systemów Programowalnych Część I
JĘZYK VHDL Geneza: komputerowa symulacja układu cyfrowego, Departament Obrony USA opis skomplikowanego systemu w postaci schematu jest nieczytelny, szybkie.
Język VERILOG w praktyce.
Programowanie obiektowe
Wykonał : Marcin Sparniuk
Projektowanie cyfrowych systemów w oparciu o układy PLD (i VLSI)
VI Rachunek predykatów
PRZERZUTNIKI W aktualnie produkowanych przerzutnikach scalonych TTL wyróżnia się dwa podstawowe rodzaje wejść informacyjnych: - wejścia asynchroniczne,
Informatyka Stosowana
dynamiczny przydział pamięci
VHDL VHDL – akronim: VHSIC (Very High Speed Integrated Circuit) Hardware Description Language Inicjatywa Departamentu Obrony z 1980 Cel: osiągnąć znaczny.
CPU.
Instrukcje strukturalne
OBJECT PASCAL Marzena Szałas.
Wykład 7: Zmiennoprzecinkowe mikroprocesory sygnałowe firmy Analog Devices: zastosowania i rodziny architektura podstawowe operacje ALU.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 6: Tablice, rekordy, zbiory.
Podstawy informatyki Wirtotechnologia – Wskaźniki i referencje
Kurs Pascala – spis treści
Programowalne Układy Cyfrowe Ernest Jamro, Paweł Russek C3 p
Najczęściej popełniane błędy w VHDL’u
Wykład 3: Adresowanie i jednostki obliczeniowe w ADSP 21161N
PODSTAWY JĘZYKA PHP 1. czym jest 2. składnia 3. wersje 4. bazy danych
Układy logiczne kombinacyjne sekwencyjne
Komunikacja z arkuszem. Iteracje. Funkcje.
Wykład 2 struktura programu elementy języka typy zmienne
Instrukcja skoku GO TO etykieta Np. GO TO 100 ….. 100WRITE (*,*) Przeskok do instrukcji 100 Uwaga! NIE WOLNO skakać do wnętrzna złożonych instrukcji warunkowych.
Słowa kluczowe oraz nazwy obiektów i klas rozpoczynaj od dużej litery np. Loop, Dim, FileStream Rozpoczynaj nazwę zmiennej od małej litery stosując styl.
Układy kombinacyjne.
Podstawy programowania
Pliki tekstowe. Operacje na plikach. mgr inż. Agata Pacek.
© A. Jędryczkowski – 2006 r. © A. Jędryczkowski – 2006 r.
TABLICE C++.
Wyrażenia w Turbo Pascalu.
PHP: warunki, pętle, switch, break, continue
sortowanie na bazie – wykorzystanie sortowania ze zliczaniem
Mikroprocesory.
Przykład syntezy strukturalnej
Synteza logiczna w projektowaniu…
Instrukcja warunkowa i wyboru
Podstawy informatyki 2013/2014
Spis treści W świecie algortmów -Budowa algorytmu
Wydział Elektroniki Kierunek: AiR Zaawansowane metody programowania Wykład 5.
Własności bramek logicznych RÓZGA DARIUSZ 20061
Przerzutniki bistabilne
Testowanie układów mieszanych sygnałowo z zastosowaniem magistrali IEEE Kamil Smużyński.
PHP Instrukcja warunkowa if Damian Urbańczyk. Warunek? Instrukcję warunkową wykorzystujemy wtedy, gdy chcemy sprawdzić pewien fakt, który może być prawdziwy.
Od algebry Boole’a do komputera Copyright, 2007 © Jerzy R. Nawrocki Wprowadzenie.
Programowalne układy cyfrowe, czyli fabryka na Twoim biurku
Seminarium Dyplomowe: Metodyka i Techniki Programowania Autor: Bartłomiej Fornal.
Instrukcje warunkowe w php. Pętla FOR Czasem zachodzi potrzeba wykonania jakiejś czynności określoną ilość razy. Z pomocą przychodzi jedna z najczęściej.
PHP jest językiem skryptowym służącym do rozszerzania możliwości stron internetowych. Jego składnia jest bardzo podobna do popularnych języków programowania.
Wstęp do programowania Wykład 2 Dane, instrukcje, program.
Układy logiczne – układy cyfrowe
ZPT Evatronix Kontroler Ethernet MAC (Media Access Control) 10/100Mbit spełniający rolę rolę podstawowej arterii wymiany danych pomiędzy urządzeniami sterującymi.
Algorytmy, sposoby ich zapisu.1 Algorytm to uporządkowany opis postępowania przy rozwiązywaniu problemu z uwzględnieniem opisu danych oraz opisu kolejnych.
Projektowanie systemów cyfrowych z wykorzystaniem języka VHDL Układy sekwencyjne.
Projektowanie systemów cyfrowych z wykorzystaniem języka VHDL Układy kombinacyjne.
Opiekun: Stanisław Toton. 1. Co to jest mikroprocesor? 2. Początki mikroprocesora. 3. Budowa typowego mikroprocesora. 4. Rozwój mikroprocesorów na przełomie.
Pojęcia podstawowe Algebra Boole’a … Tadeusz Łuba ZCB 1.
Układy logiczne – układy cyfrowe
Rejestry przesuwne, sumatory
Synteza logiczna w projektowaniu układów cyfrowych
Projektowanie systemów cyfrowych z wykorzystaniem języka VHDL
Instrukcja warunkowa if
Wykład 3: Adresowanie i jednostki obliczeniowe w ADSP 21161N
SHA1 – Secure Hash Algorithm
Zapis prezentacji:

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 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 Behawioralny (algorytmiczny) Ścieżka danych (Strukturalny) Poziom bramek (Gate Level) Poziom przełącznikowy – zależny od technologii programowalnego układu

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 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ł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ł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 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 Zapis liczby z rozmiarem: <rozmiar> '<format bazy> <liczba> Przykłady: 4'b1111 12'habc 16'd255

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

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

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

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: 0, 1, x, z Przykład: strong1, weak0

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;

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 busA[7] bus[2:0]

Selekcja fragmentu wektora

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 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 proste: Tablice: Integer, Real, Time integer count[0:7]; reg bool[31:0]; time chk_point[1:100][0:255];

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

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 Definicja bloku, odpowiada parze entity/architecture Lista wejść/wyjść – jak deklaracja port w entity Pozostałe instrukcje – jak wnętrze architekture

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 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 Lista połączeń: Wg kolejności: Z nazwami:

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 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 always @( reset, clock, d) begin if (reset) q = 1'b0; else if(clock) q = d; end

Wyrażenie warunkowe

Instrukcja wyboru

Pętle

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