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

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

Projektowanie scalonych systemów wbudowanych VERILOG. VERLIOG - historia

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

Projektowanie Scalonych Systemów Wbudowanych VERILOG

Liczniki z zastosowaniem

Projektowanie Scalonych Systemów Wbudowanych VERILOG

Projektowanie Scalonych Systemów Wbudowanych VERILOG

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

Synteza logiczna APSC

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

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.

Języki opisu sprzętu VHDL Mariusz Rawski

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

Systemy na Chipie. Robert Czerwiński

Wykład I. Podstawowe pojęcia. Studia Podyplomowe INFORMATYKA Architektura komputerów

Ochrona własności intelektualnej projektów w układach FPGA poprzez szyfrowanie danych konfiguracyjnych

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

Sposoby projektowania systemów w cyfrowych

Język opisu sprzętu VHDL

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

Rok akademicki: 2013/2014 Kod: JIS s Punkty ECTS: 5. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

Laboratorium Podstaw Techniki Cyfrowej

napięcie-częstotliwość

Opisy efektów kształcenia dla modułu

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

Rok akademicki: 2013/2014 Kod: EEL s Punkty ECTS: 2. Poziom studiów: Studia I stopnia Forma i tryb studiów: Stacjonarne

Specyfika projektowania Mariusz Rawski

Systemy Czasu Rzeczywistego FPGA

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

Opisy efektów kształcenia dla modułu

FPGA, CPLD, SPLD. Synteza systemów reprogramowalnych 1/27. dr inż. Mariusz Kapruziak pok. 107, tel

ZASTOSOWANIA UKŁADÓW FPGA W ALGORYTMACH WYLICZENIOWYCH APPLICATIONS OF FPGAS IN ENUMERATION ALGORITHMS

Sterowniki Programowalne (SP)

Liczniki z zastosowaniem

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

Krótkie wprowadzenie do ModelSim i Quartus2

Katedra Mikroelektroniki i Technik Informatycznych

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

Projekt prostego procesora

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

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

Programowalne Układy Logiczne. Wykład I dr inż. Paweł Russek

Projektowanie. Projektowanie mikroprocesorów

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

Programowanie Układów Logicznych kod kursu: ETD6203 W dr inż. Daniel Kopiec. Pamięć w układach programowalnych

LABORATORIUM TECHNIKA CYFROWA. Pamięci. Rev.1.35

Elektronika i techniki mikroprocesorowe

Laboratorium przedmiotu Technika Cyfrowa

Systemy wbudowane. Poziomy abstrakcji projektowania systemów HW/SW. Wykład 9: SystemC modelowanie na różnych poziomach abstrakcji

Sprzęt komputera - zespół układów wykonujących programy wprowadzone do pamięci komputera (ang. hardware) Oprogramowanie komputera - zespół programów

Układy reprogramowalne i SoC Implementacja w układach FPGA

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

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

Podział układów cyfrowych. rkijanka

Projektowanie układów FPGA. Żródło*6+.

Modelowanie złożonych układów cyfrowych (1)

OPTYMALIZACJA MODELI SYMULACYJNYCH ZAMODELOWANYCH W JĘZYKU VERILOG HDL Z WYKORZYSTANIEM INTERFEJSU PLI

Podstawy działania układów cyfrowych...2 Systemy liczbowe...2 Kodowanie informacji...3 Informacja cyfrowa...4 Bramki logiczne...

Metody optymalizacji soft-procesorów NIOS

Język Verilog w projektowaniu układów FPGA

Programowanie sterowników przemysłowych / Jerzy Kasprzyk. wyd. 2 1 dodr. (PWN). Warszawa, Spis treści

Laboratorium Projektowania Systemów VLSI-ASIC Katedra Elektroniki Akademia Górniczo-Hutnicza

Systemy Czasu Rzeczywistego FPGA

Technika mikroprocesorowa

Programowalne układy logiczne

Inwerter logiczny. Ilustracja 1: Układ do symulacji inwertera (Inverter.sch)

Projektowanie Urządzeń Cyfrowych

Architektura komputerów Wykład 2

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

LABORATORIUM ELEKTRONIKA Projektowanie koderów, transkoderów i dekoderów w języku VHDL

Opracował: Jan Front

Architektura typu Single-Cycle

Wydział Elektryczny. Katedra Automatyki i Elektroniki. Instrukcja do ćwiczeń laboratoryjnych z przedmiotu: SYNTEZA UKŁADÓW CYFROWYCH ES2D100005

Sprzęt komputerowy 2. Autor prezentacji: 1 prof. dr hab. Maria Hilczer

Adresowanie obiektów. Adresowanie bitów. Adresowanie bajtów i słów. Adresowanie bajtów i słów. Adresowanie timerów i liczników. Adresowanie timerów

Spis treści 1. Wstęp 2. Ćwiczenia laboratoryjne LPM

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

Spis treúci. Księgarnia PWN: Krzysztof Wojtuszkiewicz - Urządzenia techniki komputerowej. Cz. 1. Przedmowa Wstęp... 11

(przykład uogólniony)

Cyfrowe układy scalone

LABORATORIUM ELEKTRONIKI I TEORII OBWODÓW

Projektowanie układów VLSI-ASIC techniką od ogółu do szczegółu (top-down) przy użyciu pakietu CADENCE

Szybkie prototypowanie w projektowaniu mechatronicznym

Modelowanie logiki rewersyjnej w języku VHDL

Programowalne układy logiczne

Instrukcje sekwencyjne

JĘZYKI PROGRAMOWANIA STEROWNIKÓW

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

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

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

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

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

Elementy cyfrowe i układy logiczne

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

Architektura komputera. Cezary Bolek. Uniwersytet Łódzki. Wydział Zarządzania. Katedra Informatyki. System komputerowy

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

Elektronika cyfrowa i mikroprocesory. Dr inż. Aleksander Cianciara

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

MIKROKONTROLERY I MIKROPROCESORY

Transkrypt:

Języki Opisu Sprzętu Prowadzący: dr inż. Andrzej Skoczeń Współrzędne: D-10 222, tel. w. 28-72, e-mail: skoczen@fis.agh.edu.pl Komputer, CPU Architektury obliczeniowe Wykład 1 2018 3 październik 2018 Poziomy abstrakcji Sprzęt a program Historia języków opisu sprzętu na tle rozwoju elektroniki Porównanie języków HDL Wprowadzenie do Veriloga http://www.fis.agh.edu.pl/~skoczen/hdl AGH WFiIS Informatyka Stosowana Języki Opisu Sprzętu 1

Komputer Magistrala Danych CPU ROM RAM I/O µp lub µc Magistrala Adresowa Magistrala Sterująca Nie będziemy się tym zajmować 2

Jednostka Centralna CPU Magistrala Danych AC R1 R... Rn ALU PC IR SP Flags Magistrala Adresowa Układ Sterowania (dekoder komend) Magistrala Sterujaca Nie będziemy się tym zajmować 3

Lista rozkazów Podstawowe grupy rozkazów to: Arytmetyczne Logiczne Przesunięcia Przesłania wewnętrzne Przesłania do i z pamięci lub urządzeń wejścia-wyjścia Sterowanie programem Obsługa stosu Obsługa przerwań Nie będziemy się tym zajmować 4

Architektura obliczeniowa Architektura obliczeniowa A cs składa się z: Elementów (components) funkcjonalnych C i Połączeń (links) komunikacyjnych miedzy elementami L ij Procedur funkcjonalnych związanych z elementami i połączeniami P k A cs = {C i, L ij, P k } gdzie: i, j = 1, 2,, N k = 1, 2,, M N liczba elementów, M liczba procedur w systemie. 5

CSPP Systemy obliczeniowe Nazwa Architektura Implementacja Computing Systems with Programmable Procedure A CSPP = {C i, L ij, P~} µp RCS Reconfigurable Computing Systems A RCS = {C~, L~, P~} FPGA ASP Application-Specific Processors A ASP = {C i, L ij, P ij } ASIC CSPP RCS ASP Elastyczność Średnia Najwyższa Ograniczona Szybkość działania Ograniczona Wysoka Najwyższa Wydajność mocy Niska Wysoka Najwyższa Koszt produkcji masowej Względnie niski Względnie wysoki Względnie niski Czas projektowania systemu Względnie krótki Średni Względnie długi Najkorzystniejszy obszar zastosowań Algorytmiczne Obliczeniowe Obliczeniowe 6

Blok wejściowowyjściowy (I/O Block IOB) Pionowy kanał łączeniowy (Vertical Routing Channel) Konfigurowalny blok logiczny (Configurable Logic Block CLB) Element kluczujący (Switch Box - SB) Element łączący (Connection Box - CB) Poziomy kanał łączeniowy (Horizontal Routing Channel) Matryca (fabric) układu FPGA 7

Ogólna architektura RCS Zasoby konfigurowalne Magistrala danych wejściowych Magistrala danych wyjściowych Pamięć konfiguracyjna Nośnik z plikiem konfiguracyjnym Sterownik konfiguracji zasobów 8

Poziomy abstrakcji Jest w użyciu pięć poziomów abstrakcji gdy myślimy o zagadnieniu modelowania systemów cyfrowych: Czasu ciągłego Continuous Time 0 10 20 30 40 50 60 time (ns) Zdarzeń (event-driven) Discrete Event event_1 event_3 event_4 event_7 event_2 event_5 event_6 events Cyklu zegara (cycle-based) Cycle Accurate cycle-1 (event_1) (event_2) (event_3) cycle-2 (event_4) (event_5) (event_6) (event_7) clock cycles Instrukcji Instruction Accurate mov r0,#5 ldr r1,[r0] add r2,r1,#3 mov r3,#0 instructions (cycle_1) (cycle_2) (cycle_2) (cycle_3) (cycle_4) (cycle_4) (cycle_5) (cycle_6) (cycle_5) (cycle_6) this book Transaction Accurate Transakcji load_mem ldr r1,[r0] add r2,r1,#3 mov r3,#0 write_mem str r3,[r2] cmp r1,r3 ble 0x500 nop transactions 9

Poziomy abstrakcji - 0 Model fizyki elementów elektronicznych i procesu technologicznego: Polega na rozwiązywaniu układu równań różniczkowych opisującego rozkład pól elektromagnetycznych i nośników ładunku w półprzewodniku (prawa Maxwella, równanie ciągłości). Podejście to nie ma zastosowania do modelowania obwodów elektrycznych analogowych a tym bardziej systemów cyfrowych. Jest konieczne do projektowania i analizy elementów elektronicznych i technologii elektronicznej. 10

Poziomy abstrakcji - 1 Model czasu ciągłego: Continuous Time Najniższy poziom modelowania polegający na rozwiązywaniu układu równań różniczkowych opisującego prądy i napięcia w obwodzie elektrycznym. Elementy elektroniczne są modelowane analitycznie z wykorzystaniem ogólnie przyjętych modeli (BSIM, EKV). Podejście to jest stosowane do analizy efektów analogowych i zawiera mnóstwo informacji niepotrzebnych z punktu widzenia projektu urządzenia cyfrowego. SPICE - Simulation Program with Integrated Circuit Emphasis jest otwartym (open source) symulatorem analogowych obwodów elektronicznych ogólnego przeznczenia. W 1972 na Wydziale Inżynierii Elektrycznej i Nauk Komputerowych na Uniwersytecie Kalifornijskim w Berkeley opracowano pierwszą wersję programu SPICE1.

Model zdarzeniowy: Poziomy abstrakcji - 2 Discrete-event Register Transfer Level RTL (Verilog, VHDL) Na tym poziomie modelowania aktywność układu jest skoncentrowana w dyskretnych punktach czasu. Zachowanie się systemu można rozłożyć na zbiór odrębnych chwil czasowych, w których zachodzą zdarzenia. Te chwile nazywamy zdarzeniami (event), a to co się wydarza to zmiany stanu (state change). Jest to podejście analogiczne do procesu próbkowania sygnału ciągłego. Symulacja zdarzeniowa jest szeroko stosowana do modelowania sprzętu cyfrowego na niskim poziomie abstrakcji. Metoda ta nie wymaga rozwiązywania równań różniczkowych a mimo to zachowuje całą informację o aktywności pomiędzy zboczami zegara (fałszywe impulsy, opóźnienia i in.).

Poziomy abstrakcji - 3 Model na poziomie okresu zegara: Cycle-accurate Ten rodzaj modelu nie ujmuje żadnych wydarzeń zachodzących pomiędzy zboczami przebiegu zegarowego: opóźnienia, propagacje, fałszywe impulsy (glitch). Jest to nieistotne gdy układ jest w pełni synchroniczny czyli wszystko co ma znaczenie wydarza się w chwilach wyznaczonych zboczami sygnału zegarowego. W takim modelu układy kombinacyjne działają natychmiastowo, a układy sekwencyjne po całkowitej liczbie okresów zegara. Dla badania związków między sprzętem a oprogramowaniem jest to wystarczająca dokładność.

Poziomy abstrakcji - 4 Model na poziomie rozkazów: Instruction-accurate simulators Ten rodzaj modelu wyraża aktywność systemu w krokach odpowiadających jednemu rozkazowi mikroprocesora. Każdy rozkaz to kilka okresów zegara pracy procesora. Symulatory na poziomie rozkazów stosowane są do weryfikacji dużych systemów programowych jak systemy operacyjne. Symulatory takie mierzą czas w liczbie instrukcji a nie okresów zegara.

Poziomy abstrakcji - 5 Model transakcyjny: Transaction Level Modeling TLM (SystemC) W tym rodzaju modelu zachowanie układu jest wyrażone w terminach interakcji (zwanych transakcjami) pomiędzy składnikami systemu. Modelowanie aplikacji, w której wielokrotnie występują odwołania do pamięci można znacząco uprościć i skoncentrować się na aktywności występującej pomiędzy tymi odwołaniami. W tym celu należy wszystkie instrukcje wykonywane w konkretnym odwołaniu do pamięci zgrupować w jedno wywołanie funkcji tzn. transakcję. Model transakcyjny jest ważny na wstępnym etapie projektu kiedy projektant jest zainteresowany w określeniu ogólnej charakterystyki projektu bez wchodzenia w wysiłek budowy szczegółów modelu.

EDA Electronic Design Automation CAE Computer Aided Engineering Narzędzia programowe stosowane do początkowych etapów projektu: symulacja za pomocą HDL, synteza logiczna i analiza czasowa, weryfikacja. CAD Computer Aided Design Narzędzia programowe stosowane do końcowych etapów projektu: rozmieszczanie i wyznaczanie tras połączeń (P&R - Place and Route), generacja topografii układu scalonego (layout generation). 16

Sprzęt W pierwszym przybliżeniu będziemy mieli na myśli: Układ cyfrowy, synchroniczny, z jednym zegarem zbudowany z logiki kombinacyjnej i przerzutników. module count (input clk, rst, output reg [7:0] q); always @(posedge clk) if(rst) q <= 8 b0; else q <= q + 1 b1; endmodule Istnieją inne formy sprzętu, które nie mogą być tak prosto analizowane: układy asynchroniczne, logika dynamiczna, wielofazowe zegary, wiele domen zegarowych, sprzęt na zatrzaskach...

Program W pierwszym przybliżeniu będziemy mieli na myśli: Jedno-wątkowy sekwencyjny program napisany w C lub asemblerze. int max; int findmax(int a[10]) { unsigned i; max = a[0]; for (i=1; i<10; i++) if (a[i] > max) max = a[i]; } Rejestr Zawiera (w sensie programu w C) r0 r1 r2 r3 ip Adres bazowy a[] czyli miejsca przechowywania a[0] a[i] Adres miejsca przechowywania max max Licznik i pętli inkrementowany instrukcją add ldr - load-register strgt - store-if-greater (dotyczy flagi ustawionej przez poprzednią instrukcję).text findmax: ldr r2,.l10 ldr r3, [r0, #0] str r3, [r2, #0] mov ip, #1.L7:.L11:.L10: ldr r1, [r0, ip, asl #2] ldr r3, [r2, #0] add ip, ip, #1 cmp r1, r3 strgt r1, [r2, #0] cmp ip, #9 movhi pc, lr b.l7.align 2.word max Wynik kompilacji dla procesora ARM Istnieją inne formy programów, które nie dają się analizować przy założeniu prostego wyobrażenia o mikroprocesorze: wielowątkowość, programowanie obiektowe, funkcjonalne...

module ffd (input clk, rst, d, output reg q); always @(posedge clk) if(rst) q <= 1 b0; else q <= d; endmodule Sprzęt module ffd ( clk, rst, d, q); Wynik syntezy dla FPGA Spartan-3AN input clk; input rst; input d; output q; wire clk_bufgp_1; wire d_ibuf_3; wire q_obuf_5; wire rst_ibuf_7; FDR q_1 (.C(clk_BUFGP_1),.D(d_IBUF_3),.R(rst_IBUF_7),.Q(q_OBUF_5)); IBUF rst_ibuf (.I(rst),.O(rst_IBUF_7)); IBUF d_ibuf (.I(d),.O(d_IBUF_3)); OBUF q_obuf (.I(q_OBUF_5),.O(q)); BUFGP clk_bufgp (.I(clk),.O(clk_BUFGP_1)); endmodule

Historia HDL 1952 pierwszy HDL skonstruowany przez Reed-a 1970 powstał język ISP (Rose, Drongowski) 1973 istnieje już 9 HDL-i i kilkanaście nowych zaproponowano Lata 1980 pojawiły się Verilog i VHDL i były stosowane do symulacji Lata 1990 rozwija się idea syntezy z opisu HDL zapoczątkowana w latach 60-tych Firma Synopsys wprowadziła pierwszy przemysłowo zaakceptowany system do syntezy automatycznej bazujący na RTL Verilog. Pojawiła się potrzeba automatycznego generowania ciągów testowych w celu weryfikacji dużych modeli. Osiągnięto to w językach do weryfikacji poprzez użycie ograniczonych zmiennych losowych (biased random variables). 20

Verilog HDL Stworzony w firmie Gateway Design Automation w 1983 roku przez Phila Moorby jako pionierski symulator na poziomie bramek. Pierwotny język był przeznaczony do współpracy z interpreterem symulatora elektronicznych układów cyfrowych o nazwie Verilog XL. Symulator ten zawierał słynny do dziś szybki algorytm o nazwie XL. Firmę wraz z Verilogiem przejęła firma Cadence w 1989 roku i uczyniła Veriloga otwartym standardem. Efektem prac w Cadence było stworzenie Verilog HDL i Verilog PLI (Programming Language Interface). W roku 1990 powstała otwarta organizacja Open Verilog International (OVI). Na jej łamach Cadence opublikował Verilog 1.0 Reference Manual, który był dokumentacją użytkownika najnowszej wersji Veriloga-XL. 21

Verilog HDL W roku 1993 Cadence opublikował kolejną wersję tzn. Verilog 2.0 Reference Manual, która zawierała tylko drobne udoskonalenia (np. tablice konkretyzacji). OVI podjęła kroki do stworzenia formalnego standardu IEEE. Powstała grupa IEEE do spraw tego standardu, która zdecydowała o przyjęciu istniejącej dokumentacji Verilog-a 2.0 bez żadnych zmian jako standardu IEEE 1364-1995. Było to w roku 1995. W roku 2000 powstała Accellera z połączenia Open Verilog International i VHDL. Na podstawie życzeń użytkowników i sugestii producentów oprogramowania powstał zrewidowany standard IEEE 1364-2001. Od 2002 Accellera rozpoczęła proces gruntownych ulepszeń w Verilog-u. Efektem jest nowy język SystemVerilog, którego standard zatwierdzono w 2005 roku IEEE 1800-2005. Równocześnie zakończono rozwój zwykłego Verilog-a publikując nową (i ostatnią) wersje standardu IEEE 1364-2005. Ostatnia standaryzacja SystemVerilog a to IEEE 1800-2009. 22

Standardy IEEE dla Verilog-a Standard Title Uwagi Licz. str. IEEE 1364-2001 IEEE 1364.1-2001 IEEE 1800-2009 Verilog hardware description language Standard for Verilog Register Transfer Level Synthesis Standard for SystemVerilog Unified Hardware Design, Specification, and Verification Language Ostatnia wersja w 2005 nie rozwijany dalej 862 RTL 109 Nowy język poraz pierwszy standaryzowany w 2005 roku 1285 Brak standardów dla Verilog-A i Verilog-AMS 23

VHDL Powstał na militarne zamówienie jako element szerszego projektu zastosowania układów scalonych w amerykańskiej armii. Litera V w nazwie pochodzi VHISIC Very High Speed Integrated Circuit. Następnie projekt rozwijały trzy firmy: Intermetrics (twórca języka ADA), Texas Instrument i IBM. Głównym celem było stworzenie ścisłego i jednoznacznego sposobu dokumentowania sprzętu cyfrowego. Równocześnie z językiem opisowym powstał symulator. Standard powstał w 1987 roku i został zrewidowany w 1993 pod numerem IEEE 1076-1993. Na początku 2009 zatwierdzono nową wersję IEEE Std 1076-2008, popularnie zwaną VHDL 2008. Jest to usprawniona wersja języka, zawierająca rozszerzoną składnię, większy zestaw operatorów, uporządkowane standardowe pakiety biblioteczne, dołączony interfejs proceduralny dla C/C++ (VHPI), podzbiór języka PSL,... 24

VHDL - wady Bardzo obszerna wielosłowna składnia wywodząca się z języka ADA ale także z nietrafionych decyzji projektowych (podział na entity i architecture). Nadmierna elastyczność zwłaszcza w definiowaniu typów powoduje konieczność wprowadzania dodatkowej standaryzacji pakietów np. IEEE 1164 library ieee; use ieee.std_logic_1164.all; 25

Język ADA W latach 70. departament obrony USA stworzył grupę roboczą High Order Language Working Group (HOLWG), która ogłosiła konkurs na stworzenie nowego języka. W 1978 roku wygrała firma CII Honeywell Bull, pod przewodnictwem Jeana Ichbiaha. Nowy język otrzymał nazwę Ada na cześć lady Augusty Ady Lovelace, uważanej za pierwszą programistkę w historii. Zwycięska propozycja czerpała pomysły z języka LIS, który Ichbiah i jego grupa zaprojektowali w latach 70. Pojawienie się Ady wywołało duże zainteresowanie wśród społeczności programistów w pierwszych latach swojego istnienia. Wśród zwolenników pojawiały się opinie, że może ona zostać głównym językiem programowania ogólnego przeznaczenia. Jean Ichbiah publicznie stwierdził, że w przeciągu 10 lat na rynku pozostaną jedynie dwa języki: Ada i Lisp. Język został standardem ANSI w 1983 roku. Nowy standard z 1995 roku Ada 95 sprawił, że język ten stał się pierwszym obiektowo zorientowanym, ustandaryzowanym językiem programowania. US Air Force sfinansowała prace nad kompilatorem GNAT. Obecnie GNAT jest częścią pakietu GNU Compiler Collection. Ostatnia standaryzacja miała miejsce w grudniu 2012. 26

Język ADA Jednym z problemów języka był zaproponowany model wielozadaniowości, który znacząco odbiegał od znanych rozwiązań. Z uwagi na obecność kluczowych mechanizmów bezpieczeństwa, Ada jest obecnie używana w aplikacjach, gdzie błąd programistyczny może mieć kosztowne konsekwencje. Przykłady: kontrola lotów, awionika samolotów, satelity, automatyczne systemy transportowe czy bankowość. W szczególności, oprogramowanie systemu Fly-by-wire w samolocie Boeing 777 zostało w całości napisane w Adzie. 27

Standardy IEEE dla VHDL-a Standard Title Uwagi Licz. str. IEEE 1076-2008 IEEE 1076.1-2007 IEEE 1076.1.1-2011 IEEE 1076.2-1996 IEEE 1076.3-1997 IEEE 1076.4-2000 IEEE 1164-1993 Standard VHDL Language Reference Manual Standard VHDL Analog and Mixed-Signal Extensions Standard for VHDL Analog and Mixed-Signal Extensions Packages for Multiple Energy Domain Support Standard VHDL Mathematical Packages Standard VHDL Synthesis Packages VITAL ASIC modeling specification Standard Multivalue Logic System for VHDL Model Interoperability Opis pakietów MATH_REAL i MATH_COMPLEX Opis pakietów NUMERIC_BIT i NUMERIC_STD VITAL VHDL Initiative Towards ASIC Libraries 640 342 34 42 49 436 Opis pakietu Std_logic_1164 23 28

Historia FPGA 1987 - Steve Casselman zbudował komputer z 600 000 reprogramowalnych bramek. Casselman od roku 1992 jest właścicielem patentu. Ross Freeman jest uważany za wynalazcę FPGA. Bernard Vonderschmitt wprowadził model biznesowy pozbawiony linii technologicznej. Ross Freeman i Bernard Vonderschmitt współzałożyciele firmy Xilinx. W roku 1985 wprowadzili pierwszy komercyjnie opłacalny układ FPGA o symbolu XC2064. Układ XC2064 posiadał 64 CLB (Configurable Logic Block) z dwoma trójwejściowymi LUT (two threeinput LookUp Tables). Rynek FPGA w roku 2010: Intel (Altera) 31%, Microsemi (Actel) -10%, Xilinx 36%. Pozostali to: Atmel, Cypress, Lattice Semiconductor, QuickLogic. Fabless manufacturing is the design and sale of hardware devices and semiconductor chips while outsourcing the fabrication or "fab" of the devices to a specialized manufacturer called a semiconductor foundry. Foundries are typically but not exclusively located in China and Taiwan TSMC - Taiwan Semiconductor Manufacturing Company - world's largest dedicated independent semiconductor foundry GLOBALFOUNDRIES - is a semiconductor foundry headquartered in, California, United States. GlobalFoundries was created by the divestiture of the manufacturing arm of Advanced Micro Devices (AMD) on March 2, 2009, 29

Pierwszy komercyjnie dostępny FPGA to XC2064 w 1985 raku. Zawierał 64 CLB z dwama trójwejściowymi LUT-ami. Objaśnienia: SG LC ELC VS System Gate Logic Cell Equivqlent Logic Cell Virtex-5 Slices Historia FPGA Rok Rozmiar technologi [nm] Rodzina układów 1998 250 Virtex 180 Virtex-E 150 Virtex-II 130 Virtex-II Pro 2003 90 Spartan-3 2004 90 Virtex-4 90 Spartan-3E Spartan-3A Rozmiar najbardziej zaawansowanego układu 1400k SG 25 344 ELC 2007 65 Virtex-5 51 840 VS 2009 45 Spartan-6 147 443 LC 2010 40 Virtex-6 2011 28 Artix-7, Kinetix-7, Virtex-7, Zynq-7000 2014 20 UltraScale 2015 16 UltraScale+ 30

Porównanie języków HDL System Verilog System C Obszary zastsowań Architektura Wspólna symulacja hardwaru i softwaru System Verilog MatLab SPV SystemStudio Python Behawioralna symulacja Weryfikacja funkcjonalna RTL Poziom bramek Verilog Verilog VHDL VHDL OpenVera e Sugar ForSpec PSL Poziom tranzystorów 31

Moduł module nazwa_modułu #(parameter lista) (deklaracje_lista_portów); Deklaracje wire-ów, reg-ów i innych zmiennych wewnętrznych Konkretyzacja modułów niższego poziomu (gate level) Polecenia przepływu danych assign (data flow level) Polecenia behawioralne always initial (behavioral level) Zadania task... endtask i funkcje function... endfunction endmodule 32

Moduł module <nazwa> (<końcówki>);... //wnętrze modułu... endmodule Definicja modułu opisuje jak działa moduł i jak się on kontaktuje ze światem. Definicja modułu wykorzystuje inne moduły poprzez ich urealnianie. Nie wolno zagnieżdżać definicji modułów. 33

Połączona deklaracja typu portu i typu danych module register (q, d, clk, rst_n); parameter SIZE=8; output [SIZE-1:0] q; input [SIZE-1:0] d; input clk, rst_n; reg [SIZE-1:0] q; Verilog-1995 always @(posedge clk or negedge rst_n) if (!rst_n) q <= 0; else q <= d; endmodule Verilog-2001 module register2001 #(parameter SIZE=8) (output reg [SIZE-1:0] q, input [SIZE-1:0] d, input clk, rst_n); always @(posedge clk, negedge rst_n) if (!rst_n) q <= 0; else q <= d; endmodule 34

Porty Port (terminal, końcówka) Obiekt danych odnoszący się do sygnału wejścia/wyjścia w deklaracji interfejsu modułu do otoczenia. Przez analogię można rozumieć go jako zacisk (końcówka) realnego układu. Lista portów input output inout [numer_msb:numer_lsb] <końcówki>:=[<typ> <typ_danych> <rozmiar> <nazwa>],[],... reg integer real wire tri trireg wand... 35

Porty Lista portów Moduł szczytowy Top a b c_in Sumator 4-bitowy fulladd4 sum c_out module fulladd4(sum, c_out, a, b, c_in); module Top; 36

Porty Deklaracja portów Wszystkie porty z listy muszą być zadeklarowane w module. Są trzy typy portów: Słowo kluczowe input output inout Kierunek sygnału Wejściowy Wyjściowy Dwukierunkowy module fulladd4(output [3:0] sum, output c_out, input [3:0] a, b, input c_in);... <wnętrze modułu>... endmodule 37

Porty Domyślnie porty są typu wire. Jeśli potrzebujemy port innego typu to trzeba go zadeklarować. Zwykle port wyjściowy output projektujemy jako utrzymujący wartość, więc potrzebny jest typ rejestrowy reg. Natomiast porty input i inout nie mogą być zadeklarowane jako reg gdyż wejścia muszą po prostu powtarzać sygnały zewnętrzne, do których są podłączone. module DFF(output reg q, input d, clk, reset); //wyjście przerzutnika utrzymuje wartość... <wnętrze modułu>... endmodule 38

Konwencje językowe Verilog-a Podstawowe konwencje są takie same jak w C. Elementami języka są: komentarze, ograniczniki, liczby, stringi, identyfikatory i słowa kluczowe. Verilog rozróżnia małe i duże litery. Słowa kluczowe pisane są małymi literami. Spacje Spacje \b, tabulatory \t i zakończenia linii \n. Są ignorowane za wyjątkiem sytuacji gdy rozdzielają elementy języka. Wewnątrz ciągów znaków nie są ignorowane. Komentarze Jedna linia zaczyna się od // Wiele linii od /* do */. Nie mogą być zagnieżdżane. Operatory Jednoargumentowe, dwuargumentowe, trójargumentowe Wartość sygnału 0 zero logiczne fałsz 1 jedynka logiczna prawda x wartość nieznana z wysoka impedancja, nie podłączone a = ~b; A = b && c; A = b? C : d; 39

Konwencje językowe Liczby (1 z 3) Z rozmiarem: <rozmiar> <format><liczba> <rozmiar> - liczba dziesiętna określająca ilość bitów w liczbie <format> - D lub d dziesiętny H lub h szesnastkowy B lub b dwójkowy O lub o ósemkowy <liczba> - sekwencja znaków od 1 do f. Małe i duże litery są nierozróżnialne. 4 b1111 //czterobitowa liczba dwójkowa 12 habc //dwunastobitowa liczba szesnastkowa 16 d255 //szesnastobitowa liczba dziesiętna Bez rozmiaru: Jeżeli nie podajemy <rozmiar> to liczba ma 32 bity długości (lub więcej o ile pozwala na to symulator i maszyna) Jeżeli nie podajemy <format> to liczba jest dziesiętna. 23456 //32-bitowa liczba dziesiętna habc //32-bitowa liczba szesnastkowa o255 //32-bitowa liczba ósemkowa 40

Konwencje językowe Liczby (2 z 3) Wartości x lub z: Modelowanie rzeczywistych obwodów wymaga dwóch specjalnych wartości: x wartość nieokreślona (nieznana) (można także stosować?), z wartość wysokiej impedancji. Symbole te określają: 4-bity w zapisie szesnastkowym, 3 w ósemkowym, 1 w dwójkowym. Jeżeli wartości 0, x, z występują na najbardziej znaczącym miejscu, to liczba jest rozszerzana na wyższe bity także przez 0, x, z odpowiednio. 12 h13x //12-bitowa liczba szesnastkowa z 4 ostatnimi //bitami nieokreślonymi 6 hx 32 bz //6-bitowa liczba szesnastkowa nieznanej wartości //32-bitowa liczba o wysokiej impedancji 41