Projektowanie Scalonych Systemów Wbudowanych VERILOG

Podobne dokumenty
Język HDL - VERILOG. (Syntetyzowalna warstwa języka) Hardware Description Language Krzysztof Jasiński PRUS PRUS

Laboratorium Podstaw Techniki Cyfrowej

Projektowanie scalonych systemów wbudowanych VERILOG. VERLIOG - historia

Język HDL - VERILOG. (Syntetyzowalna warstwa języka) Hardware Description Language Krzysztof Jasiński PRUS PRUS

Układy cyfrowe w Verilog HDL. Elementy języka z przykładami. wersja: cz.3

Wykład 4. Języki Opisu Sprzętu

Projektowanie Scalonych Systemów Wbudowanych VERILOG

Projektowanie Scalonych Systemów Wbudowanych VERILOG

Wstęp do Techniki Cyfrowej... Synchroniczne układy sekwencyjne

Przykładowe pytania z części PSPICE. 1. Podaj zasady tworzenia pliku symulacyjnego. 2. Czy składnia PSPICE jest czuła na wielkość liter? 3.

Asynchroniczne statyczne układy sekwencyjne

Część 3. Układy sekwencyjne. Układy sekwencyjne i układy iteracyjne - grafy stanów TCiM Wydział EAIiIB Katedra EiASPE 1

PRZERZUTNIKI: 1. Należą do grupy bloków sekwencyjnych, 2. podstawowe układy pamiętające

(przykład uogólniony)

Wykład 3. Języki Opisu Sprzętu. Prowadzący: dr inż. Andrzej Skoczeń Współrzędne: D , tel. w ,

Systemy wbudowane. Projektowanie systemów wbudowanych na bazie układów CPLD/FPGA Język opisu sprzętu Verilog cz.1

Projekt prostego układu sekwencyjnego Ćwiczenia Audytoryjne Podstawy Automatyki i Automatyzacji

xx + x = 1, to y = Jeśli x = 0, to y = 0 Przykładowy układ Funkcja przykładowego układu Metody poszukiwania testów Porównanie tabel prawdy

SWB - Projektowanie synchronicznych układów sekwencyjnych - wykład 5 asz 1. Układy kombinacyjne i sekwencyjne - przypomnienie

Projektowanie automatów z użyciem VHDL

Wykład 4. Języki Opisu Sprzętu. Prowadzący: dr inż. Andrzej Skoczeń Współrzędne: D , tel. w ,

Język VERILOG w praktyce

Modelowanie liczników w języku Verilog i ich implementacja w strukturze FPGA

Podstawy Elektroniki dla Elektrotechniki. Liczniki synchroniczne na przerzutnikach typu D

bocznej Tabela stanów sterownika Światła na drodze:

Sumatory H D L. dr inŝ. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska

Wstęp do Techniki Cyfrowej... Teoria automatów i układy sekwencyjne

Podstawowe elementy układów cyfrowych układy sekwencyjne Rafał Walkowiak Wersja

Automat skończony FSM Finite State Machine

Literatura. adów w cyfrowych. Projektowanie układ. Technika cyfrowa. Technika cyfrowa. Bramki logiczne i przerzutniki.

Programowalne układy logiczne

Programowalne układy logiczne kod kursu: ETD Układy kombinacyjne, przypisania, blokujące i nieblokujące cz.2 W

Laboratorium przedmiotu Technika Cyfrowa

1 Wstęp. 2 Proste przykłady. 3 Podstawowe elementy leksykalne i typy danych. 6 Opis strukturalny. 7 Moduł testowy (testbench)

AHDL - Język opisu projektu. Podstawowe struktury języka. Komentarz rozpoczyna znak i kończy znak %. SUBDESIGN

Sterowniki Programowalne (SP)

Aby w pełni przetestować układ o trzech wejściach IN_0, IN_1 i IN_2 chcemy wygenerować wszystkie możliwe kombinacje sygnałów wejściowych.

UKŁADY MIKROPROGRAMOWALNE

Synteza logiczna APSC

Konwerter 1 Wire > SPI opisany P R Ow JVerilogu

1.Wprowadzenie do projektowania układów sekwencyjnych synchronicznych

Układy sekwencyjne. Podstawowe informacje o układach cyfrowych i przerzutnikach (rodzaje, sposoby wyzwalania).

Krótkie wprowadzenie do ModelSim i Quartus2

Ćw. 7: Układy sekwencyjne

Cyfrowe układy sekwencyjne. 5 grudnia 2013 Wojciech Kucewicz 2

Układy sekwencyjne przerzutniki 2/18. Przerzutnikiem nazywamy elementarny układ sekwencyjny, wyposaŝony w n wejść informacyjnych (x 1.

Podstawowe moduły układów cyfrowych układy sekwencyjne cz.2 Projektowanie automatów. Rafał Walkowiak Wersja /2015

Technika Cyfrowa 1 wykład 1: kody. Dr inż. Jacek Mazurkiewicz Katedra Informatyki Technicznej

Podstawowe elementy układów cyfrowych układy sekwencyjne. Rafał Walkowiak

Programowalne układy logiczne kod kursu: ETD Podstawy języka Verilog W

Wykład nr 3 Techniki Mikroprocesorowe. dr inż. Artur Cichowski

Uniwersalny miernik: częstotliwości, czasu, okresu na FPGA, część 3

Przerzutnik ma pewną liczbę wejść i z reguły dwa wyjścia.

Układy kryptograficzne z uŝyciem rejestrów LFSR

Instrukcje sekwencyjne

Programowany układ czasowy APSC

Programowalne układy logiczne kod kursu: ETD Układy sekwencyjne W

Układy kombinacyjne - przypomnienie

Język AHDL. Synteza strukturalna. dr inŝ. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska H D L

Układy mnoŝące H D L. dr inŝ. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska

Verilog HDL. Język Opisu Sprzętu Hardware Description Language Część I. Elementy języka. dr inż. Paweł Tomaszewicz H D L

Układy sekwencyjne. 1. Czas trwania: 6h

Standardowe bloki funkcjonalne

Wykład 5. Języki Opisu Sprzętu. Prowadzący: dr inż. Andrzej Skoczeń Współrzędne: D , tel. w ,

Technika Cyfrowa 1 wykład 11: liczniki sekwencyjne układy przełączające

Układy sekwencyjne. Wstęp doinformatyki. Zegary. Układy sekwencyjne. Automaty sekwencyjne. Element pamięciowy. Układy logiczne komputerów

Cyfrowe układy scalone c.d. funkcje

Projekt Koder HDB-3. Wykonali: Agnieszka Sikorska, Łukasz Kokosza EiTI Politechnika Warszawska Warszawa Projekt UCYF Koder HDB-3

Lista tematów na kolokwium z wykładu z Techniki Cyfrowej w roku ak. 2013/2014

Układy sekwencyjne - wiadomości podstawowe - wykład 4

Proste układy sekwencyjne

Realizacja bezpiecznego programowalnego sterownika logicznego z wykorzystaniem języków HDL

Architektura komputerów Wykład 2

Temat: Projektowanie i badanie liczników synchronicznych i asynchronicznych. Wstęp:

Pojedyncze wartości zadeklarowanego typu Ustawiane przed rozpoczęciem symulacji bez moŝliwości

UKŁADY CYFROWE. Układ kombinacyjny

/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h>

Przerzutniki RS i JK-MS lab. 04 Układy sekwencyjne cz. 1

Sławomir Kulesza. Projektowanie automatów synchronicznych

Podstawy Automatyki. Wykład 13 - Wprowadzenie do układów sekwencyjnych. dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki

Laboratorium 10 Temat: Zaawansowane jednostki testowe. Operacje na plikach. Funkcje.

Język UML w modelowaniu systemów informatycznych

Kurs Verilog cz.1 wstęp

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki. ĆWICZENIE Nr 4 (3h) Przerzutniki, zatrzaski i rejestry w VHDL

Projektowanie. Projektowanie mikroprocesorów

Specyfika projektowania Mariusz Rawski

Sławomir Kulesza. Projektowanie automatów asynchronicznych

Podstawy Automatyki. Człowiek- najlepsza inwestycja. Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Język UML w modelowaniu systemów informatycznych

Altera Quartus II. Opis niektórych komponentów dostarczanych razem ze środowiskiem. Opracował: mgr inż. Leszek Ciopiński

Układ sterowania 4-cyfrowym wyświetlaczem 7-segmentowym LED

Spis treści. Przedmowa Wykaz oznaczeń Wstęp Układy kombinacyjne... 18

LABORATORIUM ELEKTRONIKI I TEORII OBWODÓW

Elementy struktur cyfrowych. Magistrale, układy iterowane w przestrzeni i w czasie, wprowadzanie i wyprowadzanie danych.

Układy reprogramowalne i SoC Język VHDL (część 4)

Elementy struktur cyfrowych. Magistrale, układy iterowane w przestrzeni i w czasie, wprowadzanie i wyprowadzanie danych.

Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5.

1. ISE WebPack i VHDL Xilinx ISE Design Suite 10.1 VHDL Tworzenie projektu Project Navigator Xilinx ISE Design Suite 10.1 File

Lista zadań nr 5. Ścieżka projektowa Realizacja każdego z zadań odbywać się będzie zgodnie z poniższą ścieżką projektową (rys.

Sterowniki programowalne

Transkrypt:

Projektowanie Scalonych Systemów Wbudowanych VERILOG

OPIS BEHAWIORALNY proces Proces wątek sterowania lub przetwarzania danych, niezależny w sensie czasu wykonania, ale komunikujący się z innymi procesami. Procesy są wykonywane równolegle. Procesem może być jedna instrukcja lub może mieć bardziej złożony opis. Mogą wymieniać ze sobą dane. Procesy reprezentują układy cyfrowe działające jednocześnie w tym samym czasie EiT 2016/17 PSSW - Verilog 2

Bloki proceduralne Blok (instrukcja) initial jest wykonywana tylko raz, wykonywanie rozpoczyna się w czasie 0 i zależy od instrukcji wewnątrz bloku, NIE JEST syntezowalna, służy tylko dla symulatora do inicjowania wartości sygnałów. initial <instrukcja> Blok (instrukcja) always jest wykonywana wielokrotnie (instrukcja wewnątrz bloku jest wykonywana w nieskończoność), JEST SYNTEZOWALNA always <instrukcja> EiT 2016/17 PSSW - Verilog 3

Bloki proceduralne W projekcie może być kilka instrukcji initial i always. Wszystkie są wykonywane począwszy od zera chyba, że wprowadzimy opóźnienia. module trzy_instrukcje; initial $display ("instrukcja 1"); initial $display ("instrukcja 2"); initial $display ("instrukcja 3"); module `timescale 1ns/1ps module trzy_instrukcje_2; initial #1 $display ("instrukcja 1"); initial $display ("instrukcja 2"); initial #2 $display ("instrukcja 3"); module EiT 2016/17 PSSW - Verilog 4

Grupowanie instrukcji Do grupowania instrukcji używamy bloków sekwencyjnego współbieżnego W bloku initial lub always można wykonać kilka instrukcji, ale muszą być zgrupowane. EiT 2016/17 PSSW - Verilog 5

Blok sekwencyjny begin <instrukcja_1> <instrukcja_n> Instrukcje wewnątrz bloku sekwencyjnego wykonywane są sekwencyjnie, czyli w kolejności wystąpienia. `timescale 1ns/1ps module trzy_instrukcje_3; initial begin #1 $display ("instrukcja 1",$time); $display ("instrukcja 2",$time); #2 $display ("instrukcja 3",$time); module EiT 2016/17 PSSW - Verilog 6

Blok współbieżny fork join <instrukcja_1> <instrukcja_n> Instrukcje wewnątrz bloku współbieżnego wykonywane są jednocześnie niezależnie od kolejności wystąpienia. `timescale 1ns/1ps module trzy_instrukcje_4; initial fork #1 $display ("instrukcja 1",$time); $display ("instrukcja 2",$time); #2 $display ("instrukcja 3",$time); join module EiT 2016/17 PSSW - Verilog 7

Przypisania Ciągłe (assign) opis układu na poziomie strukturalnym lub funkcjonalnym; wykonywane są równolegle i natychmiast. Proceduralne (w bloku proceduralnym always lub initial) opis układu na poziomie funkcjonalnym; wykonywane są według kolejności zapisu; mogą być: blokujące nieblokujące EiT 2016/17 PSSW - Verilog 8

Przypisania ciągłe Przypisanie ciągłe (assign) opisuje stan logiczny węzła za pomocą równań, w sposób ciągły steruje siecią logiczną (modelowanie na poziomie przepływu danych) Cechy: lewa strona typu wire zmienna (1-bitowa) lub wektor lub sklejenie bitów (nie można stosować reg), wartość jest obliczana po zmianie wartości jednego z argumentów, argumenty mogą być typu wire, reg lub wywołania funkcji; mogą być bitami lub wektorami, poszczególne przypisania są wykonywane jednocześnie (równolegle), uwzględniona jest kolejność bitów: LSB prawej do LSB lewej strony, opóźnienia określają moment przypisania obliczonej wartości, może być niejawne. EiT 2016/17 PSSW - Verilog 9

Przypisania proceduralne Przypisania proceduralne (wewnątrz bloków proceduralnych: always, initial) uaktualnia wartość zmiennych jednorazowo, które następnie są przechowywane aż do następnego przypisania (modelowanie na poziomie behawioralnym). Cechy: lewa strona typu reg, integer, real, time lub element pamięci, prawa strona dowolne wyrażenie, wszystkie operatory, ogólnie, są wykonywane w kolejności zapisu (uwaga: blokujące i nieblok.), EiT 2016/17 PSSW - Verilog 10

blokujące: Przypisania proceduralne [zmienna] = [wyrażenie] Przypisania wykonywane są wg kolejności zapisu w kodzie (po kolei). Symulacja zatrzymuje się na danym przypisaniu, po jego wykonaniu jest kontynuowana dalej zmienne są aktualizowane po kolei. nieblokujące: [zmienna] <= [wyrażenie] Przypisania wykonywane są jednocześnie (równolegle) w całym bloku, nie blokując realizacji innych zmienne są aktualizowane jednocześnie. EiT 2016/17 PSSW - Verilog 11

Przypisania blokujące i nieblokujące (1) Przykład obliczanie wartości initial #10 Ab = 3; An = 3; begin Ab = 2; Bb = Ab+1; begin An <= 2; Bn <= An+1; blok proceduralny initial wcześniej zdeklarowane zmienne typu reg, tu przyjmują wartość 3 Przypisanie blokujące: 1. zmienna Ab przyjmuje nową wartość 2, 2. obliczenie wartości zm. Bb z nową wartością Ab. Przypisanie nieblokujące: 1. zmienna An przyjmuje nową wartość 2, 1. jednocześnie obliczana jest wartość zmiennej Bn z poprzednią wartością An=2. Plik: przyp_bnb_1.v Jakie będą wartości zmiennych po wykonaniu bloku initial? EiT 2016/17 PSSW - Verilog 12

Przypisania blokujące i nieblokujące (2) Przykład obl. wart. z opóźnieniem wewnętrznym initial #10 Ab = 3; An = 3; begin Ab = #1 2; Bb = #1 Ab+1; begin An <= #1 2; Bn <= #1 An+1; oczekiwanie (opóźnienie) wewnątrz przypisania Wykonanie przypisania: obliczanie prawej strony, odczekanie wewnętrznego opóźnienia, przypisanie obl. wartości do lewej strony. Działa dwuetapowo jak master-slave. Plik: przyp_bnb_2.v Jakie będą wartości zmiennych po wykonaniu bloku initial? EiT 2016/17 PSSW - Verilog 13

Przypisania blokujące i nieblokujące (3) Przykład obl. wart. z opóźnieniem (zwykłym) initial #10 Ab = 3; An = 3; begin #1 Ab = 2; #1 Bb = Ab+1; begin #1 An <= 2; #1 Bn <= An+1; opóźnienie zwykłe Wykonanie każdego przypisania nastąpi po późnieniu o 1 jedn. czasową. W przypadku przypisania nieblokującego, przypisania będą wykonywane po kolei z powodu opóźnień, co da efekt jakby były blokujące. Plik: przyp_bnb_3.v Jakie będą wartości zmiennych po wykonaniu bloku initial? EiT 2016/17 PSSW - Verilog 14

Przypisania blokujące Przykład 2 module block (input data, clk, output reg rega, regb); data clock D Q rega always@(posedge clk) begin rega = data; regb = rega; module D Q regb EiT 2016/17 PSSW - Verilog 15

Przykład 2 Przypisania nieblokujące module block (input data, clk, output reg rega, regb); rega always@(posedge clk) begin rega <= data; regb <= rega; module data clock D Q D Q regb EiT 2016/17 PSSW - Verilog 16

Proceduralne przypisanie ciągłe występuje w bloku proceduralnym, zmienne typu reg, działa przez pewien określony czas (gdy są spełnione warunki). module dff_set_reset (input clk, set, reset, d, output reg q); always @(reset, set) if(reset) assign q=o; else if(set) assign q=l; else deassign q; always @(posedge clk) q<=d; module przypisanie ciągłe gdy reset = 1 przypisanie ciągłe gdy set =1 i reset = 0 (tu niższy priorytet ma set) odwołanie przypisań ciągłych, gdy set i reset są zerami ta instrukcja proceduralna wykona się dopiero, gdy proced. przypisanie ciągłe zostanie odwołane (deassign) EiT 2016/17 PSSW - Verilog 17

Przerzutniki i liczniki Ćwiczenia praktyczne EiT 2016/17 PSSW - Verilog 18

Dany jest automat: X = {a b}, Y = {x, y, z}, S = {p, q, r, s} Automaty opis za pomocą tabeli Litery wejściowe Aktualne stany wewnętrzne Funkcja przejść (stany następne) Tabela przejść i wyjść dla automatu Mealy ego a b a b p p s x z q q r x y r s p y z s q p y x Tabela przejść i wyjść dla automatu Moor a a b p r s x q s r z r q r y s p p y UWAGA: w automacie Moor a litera wyjściowa zależy tylko od aktualnego stanu EiT 2016/17 PSSW - Verilog 19

Automaty Model automatu Mealy ego wejście UKŁAD KOMBINACYJNY 1 funkcja przejść (fun. wzbudzeń przerz.) PRZERZUTNIKI stan UKŁAD KOMBINACYJNY 2 funkcja wyjść wyjście zegar Model automatu Moor a wejście UKŁAD KOMBINACYJNY 1 funkcja przejść (fun. wzbudzeń przerz.) PRZERZUTNIKI stan UKŁAD KOMBINACYJNY 2 funkcja wyjść wyjście zegar EiT 2016/17 PSSW - Verilog 20

Automaty Przykładowy automat układ wykrywa sekwencję 101 na wej. i wystawia 1 na jeden takt zegara. 0 1 0 S0 S0 S1 0 S1 S2 S1 0 S2 S0 S3 0 S3 S2 S1 1 S0/0 0 1 S1/0 1 0 S2/0 1 1 0 S3/1 EiT 2016/17 PSSW - Verilog 21

Automaty kod z trzema procesami // definicja automatu module automat_3mo (input x,reset,clk, output reg y); reg [1:0] state, next_state; parameter [1:0] S0=2'd0,S1=2'd1,S2=2'd2,S3=2'd3; always @(*) // Proces pierwszy case (state) S0: if (x) next_state=s1; else next_state=s0; S1: if (x) next_state=s1; else next_state=s2; S2: if (x) next_state=s3; else next_state=s0; S3: if (x) next_state=s1; else next_state=s2; case always @(posedge clk) // Proces drugi if (!reset) state<=0; else state<=next_state; always @(*) // Proces trzeci if (state==s3) y=1; else y=0; module EiT 2016/17 PSSW - Verilog 22

automaty - wynik symulacji 0 S0/0 0 1 1 S1/0 0 S2/0 1 1 0 S3/1 EiT 2016/17 PSSW - Verilog 23

Automaty kod z dwoma procesami // definicja automatu module automat_2mo (input x,reset,clk, reg [1:0] state; output reg y); parameter [1:0] S0=2'd0,S1=2'd1,S2=2'd2,S3=2'd3; always @(posedge clk) // Proces pierwszy if(!reset) else state<=0; begin case (state) case S0: if (x) state<=s1; else state<=s0; S1: if (x) state<=s1; else state<=s2; S2: if (x) state<=s3; else state<=s0; S3: if (x) state<=s1; else state<=s2; always @(*) // Poces drugi - funkcja wyjść if (state==s3) y=1; else y=0; module EiT 2016/17 PSSW - Verilog 24

Automaty kod z jednym procesem // definicja automatu module automat_1mo (input x,reset,clk, reg [1:0] state; output reg y); parameter [1:0] S0=2'd0,S1=2'd1,S2=2'd2,S3=2'd3; always @(posedge clk) // Jeden proces if(!reset) state<=0; else begin case (state) S0: begin y<=0; if (x) state<=s1; else state<=s0; S1: begin y<=0; if (x) state<=s1; else state<=s2; S2: begin y<=0; if (x) state<=s3; else state<=s0; S3: begin y<=1; if (x) state<=s1; else state<=s2; case module EiT 2016/17 PSSW - Verilog 25