Języki Opisu Sprzętu

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

Kierunek Inżynieria Akustyczna, V rok Programowalne Układy Cyfrowe. Platforma sprzętowa. Rajda & Kasperek 2014 Katedra Elektroniki AGH 1

Język opisu sprzętu VHDL

Technika Cyfrowa 2 wykład 1: programowalne struktury logiczne - wprowadzenie

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

LABORATORIUM TECHNIKA CYFROWA. Pamięci. Rev.1.35

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

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

Układy programowalne. Wykład z ptc część 5

Kierunek Elektronika, III rok Języki Opisu Sprzętu. Platforma sprzętowa. Rajda & Kasperek 2016 Katedra Elektroniki AGH 1

Układy FPGA. Programowalne Układy Cyfrowe dr inż. Paweł Russek

Projektowanie automatów z użyciem VHDL

Specyfika projektowania Mariusz Rawski

Literatura (w zakresie języka j

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

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

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

Układy programowalne. Wykład z ptc część 5

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

Technika Cyfrowa 2. Wykład 1: Programowalne układy logiczne

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

Układy FPGA w przykładach, część 2

i pakietu programowego PALASM 4

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

Programowalne scalone układy cyfrowe PLD, CPLD oraz FPGA

Systemy Czasu Rzeczywistego FPGA

Systemy Czasu Rzeczywistego FPGA

Projekt prostego procesora

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

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Języki opisu sprzętu VHDL Mariusz Rawski

Krótkie wprowadzenie do ModelSim i Quartus2

Systemy wbudowane. Układy programowalne

Cyfrowe układy scalone

Programowalne układy logiczne

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

Elektronika cyfrowa i mikroprocesory. Dr inż. Aleksander Cianciara

Bezpieczeństwo informacji oparte o kryptografię kwantową

Projektowanie hierarchiczne Mariusz Rawski

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Analiza i Synteza Układów Cyfrowych

Systemy na Chipie. Robert Czerwiński

Cyfrowe układy scalone

Sterowniki Programowalne (SP)

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki. ĆWICZENIE Nr 8 (3h) Implementacja pamięci ROM w FPGA

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

Szkolenia specjalistyczne

LABORATORIUM OPTOELEKTRONIKA I SENSORYKA Oprogramowanie bariery podczerwieni w układzie CPLD

Cyfrowe układy scalone

Elektrotechnika II Stopień (I stopień / II stopień) Ogólno akademicki (ogólno akademicki / praktyczny)

Sposoby projektowania systemów w cyfrowych

WOJSKOWA AKADEMIA TECHNICZNA im. Jarosława Dąbrowskiego LABORATORIUM UKŁADÓW PROGRAMOWALNYCH I SPECJALIZOWANYCH

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Elektronika i techniki mikroprocesorowe

PROGRAMMABLE DEVICES UKŁADY PROGRAMOWALNE

Układy reprogramowalne i SoC Wprowadzenie

Układy reprogramowalne i SoC Specjalizowane moduły FPGA

Systemy Czasu Rzeczywistego FPGA

Kierunek EiT Specjalność Sieci i usługi, V rok Programowalne Układy Cyfrowe. Synteza logiczna. Rajda & Kasperek 2015 Katedra Elektroniki AGH 1

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

Elementy cyfrowe i układy logiczne

Zaliczenie Termin zaliczenia: Sala IE 415 Termin poprawkowy: > (informacja na stronie:

PROTOTYPOWANIE UKŁADÓW ELEKTRONICZNYCH Programowalne układy logiczne FPGA Maciej Rosół, Katedra Automatyki AGH,

Projektowanie Urządzeń Cyfrowych

XC4000: LUT jako ROM Układy Cyfrowe i Systemy Wbudowane 2 Układy FPGA cz. 2 ROM32X1 VHDL inference example ROM 16x2b type

Bezpieczeństwo informacji oparte o kryptografię kwantową

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

MMfpga01. MMfpga11. Instrukcja konfiguracji środowiska, przykładowy projekt oraz programowanie układu

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.

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

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

Technika cyfrowa projekt: Sumator 4 bitowy równoległy

Cyfrowe układy scalone c.d. funkcje

LABORATORIUM UKŁADÓW PROGRAMOWALNYCH Wydziałowy Zakład Metrologii Mikro- i Nanostruktur SEMESTR LETNI 2016

SPIS TREŚCI. 2. Arytmetyka rozproszona Symulacja układu programowalnego Realizacja algorytmu cyfrowego filtrowania

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

Przestrzeń pamięci. Układy dekoderów adresowych

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

Temat: Pamięci. Programowalne struktury logiczne.

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

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

mgr inż. Maciej Rudek opracował: dr inż. Daniel Kopiec

Wygląd okna aplikacji Project Navigator.

Projektowanie Scalonych Systemów Wbudowanych VERILOG

Bramki logiczne Podstawowe składniki wszystkich układów logicznych

Projektowanie z użyciem bloków funkcjonalnych w układach programowalnych firmy Xilinx

Modelowanie logiki rewersyjnej w języku VHDL

Symulacja systemu z procesorem MicroBlaze w środowisku ActiveHDL

Architektura komputerów Wykład 2

Quartus. Rafał Walkowiak IIn PP Wer

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

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

LABORATORIUM TECHNIKA CYFROWA LICZNIKI I REJESTRY. Rev.1.1

Projektowanie scalonych systemów wbudowanych VERILOG. VERLIOG - historia

5. PROGRAMOWALNE UKŁADY LOGICZNE

Laboratorium przedmiotu Technika Cyfrowa

Architektura komputerów

LABORATORIUM UKŁADÓW PROGRAMOWALNYCH Wydziałowy Zakład Metrologii Mikro- i Nanostruktur SEMESTR LETNI 2017

Ukªady Kombinacyjne - cz ± I

Wykorzystanie standardu JTAG do programowania i debugowania układów logicznych

Transkrypt:

Wykład 1 Elektronika IV rok Studium Zaoczne J.Kasperek P.J.Rajda

po co? 1G 256M 100M 10M 1M 100K 10K 4K 16K 256K 64K 8086 8085 16M 4M 1M 80386 80286 64M 80486 i??? Pentium i??? Wymogi pamięci: 1.50 na rok Wymogi CPU 1.35 na rok 4004 8080 1K 1970 1980 1990 1998

po co? Potrzeba narzędzia: 1970 - INTEL 4004 4 projektantów 1 tys. tranzystorów 1982 - INTEL 80286 1992 - INTEL PENTIUM 2002 200??? 20 projektantów 100 tys. tranzystorów 100 projektantów 3 mln tranzystorów 1000 projektantów 150 mln tranzystorów???? projektantów???? mln tranzystorów Współczesne wymagania: hardware-software codesign!!!

po co?

- organizacja zajęć 1. Wykład Wprowadzenie do układów PLD (Programmable Logical Devices) Języki opisu sprzętu: PALASM, ABEL, CUPL C, VHDL, VERILOG 2. Laboratorium Projekty Oprogramowanie 3. Zaliczenie 4. Egzamin Kontakt z prowadzącymi: C-3 p.502, tel. (617)3980 dr inż. Jerzy Kasperek kasperek@agh.edu.pl dr inż. Paweł J.Rajda pjrajda@agh.edu.pl http://fccm.agh.edu.pl

Program wykładu Wprowadzenie do układów PLD (Programmable Logic Devices) Klasyfikacja układów programowalnych Układy SPLD - przykłady struktur PAL i GAL Układy FPGA - przykład: seria Spartan2E Xilinx Język VHDL ( VHSIC Hardware Description Language ) Zakres zastosowania Przykłady kodu Pakiet Active HDL

Układy PLD Literatura Majewski, Łuba, Jasiński, Zbierzchowski, Programowalne moduły logiczne w syntezie układów cyfrowych Łuba, Markowski, Zbierzchowski, Komputerowe projektowanie układów cyfrowych w strukturach PLD Łuba, Jasiński, Zbierzchowski, Specjalizowane układy cyfrowe w strukturach PLD i FPGA Strony WWW producentów układów PLD www.altera.com www.atmel.com www.actel.com www.lattice.com www.xilinx.com Programmable Logic Jump Station www.optimagic.com

Układy PLD - klasyfikacja Source: Dataquest Logic Standard Logic ASIC Programmable Logic Devices (PLDs) Gate Arrays Cell-Based ICs Full Custom ICs SPLDs (PALs) CPLDs FPGAs SPLD Simple Programmable Logic Devices PAL (Programmable Array Logic, Vantis) GAL (Generic Array Logic, Lattice) PLA (Programmable Logic Array) CPLD Complex Programmable Logic Devices EPLD (Erasable Programmable Logic Device) PEEL (Programmable Electrically-Erasable Logic ) (ICT) EEPLD (Electrically-Erasable Programmable Logic Device) MAX (Multiple Array matrix, Altera) FPGA Field Programmable Gate Array fine grained, coarse grained

SPLD - Simple-Programmable Logic Devices PAL (Programmable Array Logic, AMD Vantis) PLA (Programmable Logic Array) GAL (Generic Array Logic, Lattice)

Podstawowa struktura układu typu PAL Układy typu PAL: programowalna matryca AND stała matryca OR

Układy PLD SPLD (Simple PLD) PAL (Programmable Array Logic) 16L8, 16R4, 16R6, 16R8 GAL (Generic Array Logic) 16V8, 20V8, 22V10, 26V12 PLA (Programmable Logic Array)

Układy PLD PAL16L8

Układy PLD PAL16L8

Układy PLD PAL16R8

Układy PAL rodziny 12,14,16,20 Technologia bipolarna Jednokrotne programowanie przez przepalenia fuse Rozkodowanie symbolu PAL xx Y z xx - liczba wejść Y - L-logika ujemna H-logika dodatnia C wyjścia komplementarne R wersja z przerzutnikami synchronicznymi RA wersja z przerzutnikami asynchronicznymi X, A wersja z układami arytmetycznymi S wersja z dzielonymi iloczynami z - liczba wyjść (kombinacyjnych lub rejestrowych)

Układy GAL - Generic Array Logic Rok 1985 Technologia E 2 CMOS Wielokrotne programowanie Czas kasowania 100ms GAL16V8 GAL 20V10 - światowy standard

Układy GAL ISP (In System Programmable) HDPLD High Density PLD

Układy PLD GAL22V10 W większych układach GAL liczba termów nie jest równa dla każdego pinu

Układy PLD GAL22V10 Makrocela układu GAL 22V10 Przerzutnik D z wejściami: Asynchronic Reset (AR) Synchronic Set (SR)

Makrocela układu GAL22V10

CUPL Compiler for Universal Programmable Logic Logical Devices, Inc.

Cykl projektowy PLD LST DOC MX ABS SI SO JED(1) JED(2) HEX opis projektu listing projektu (raport błędów) dokumentacja projektu rozwinięcie makr postać binarna projektu wektory testowe dla symulatora wyniki pracy symulatora JEDEC bez wektorów testowych JEDEC z wektorami testowymi ASCII hex

PRZYKŁAD cykl projektowy edycja (WAITGEN.PLD) kompilacja (WAITGEN.PLD) błąd? symulacja (WAITGEN.SI) błąd? programowanie układu

CUPL software

CSIM software

CUPL składnia języka Komendy preprocesora Liczby Listy Operatory logiczne Rozszerzenia zmiennych Równania logiczne Operatory porównania Tabele prawdy Automaty stanów Symulator

Case sensitive CUPL składnia języka Komentarz: /* to jest komentarz */ Każda linia, poza komentarzami i dyrektywami preprocesora, musi być zakończona przez średnik: każda linia; Równania logiczne: [!]variable[.extension] = expression; D0.OE = OUT_HIZ;!MEMW = MEM_SELECT;

CUPL liczby Liczba b 0 B 1101 O 663 D 92 h BA O [300..477] H 7FXX Podstawa bin bin oct dec hex oct (zakres) hex (zakres) Dziesiętnie 0 13 435 92 186 192..314 32512..32767

Zmienne indeksowe: CUPL listy zmiennych Pin 2 = AD0; Pin 3 = AD1; Pin 4 = AD2; Pin [2..4] = [AD0..2]; Pola zmiennych: Pin 2 = stop; Pin 3 = dir; Pin 4 = clear; FIELD mode = [stop, dir, clear]; bit2 bit1 bit0

CUPL operatory logiczne Operator Funkcja Przykład Priorytet! NOT!A 1 & AND A & B 2 # OR A # B 3 $ XOR A $ B 4

CUPL automaty stanów!warunek warunek stan0 stan1 stan2 wyjście=1 SEQUENCE nazwa_sekwencji { PRESENT stan0 IF warunek NEXT stan1 OUT wyjście; DEFAULT NEXT stan0; PRESENT stan1 NEXT stan2;... }

PRZYKŁAD - schemat adres 3000h 2800h RESET CPU_CLK RAM1 (2k) RAM0 (2k) RDY CPU DATA ADDRESS!MEMR!MEMW RESET PLD READY!ROM_CS!RAM_CS1!RAM_CS0 A A!CS R/!W!CS A ROM RAM1 RAM0 R/!W!CS D D D 2000h 1000h ROM (8k) 0000h

PRZYKŁAD przebiegi CPU_CLK A15..11 WAŻNY ADRES!MEMR WAIT1 WAIT2!ROM_CS READY

PRZYKŁAD wyprowadzenia A15 A14 A13 A12 A11!MEMW!MEMR RESET CPU_CLK 2 3 4 5 6 7 8 9 1 I I I I I I I I OE I/O I/O RO RO I/O I/O 19 18 15 14 13 12!ROM_CS READY WAIT1 WAIT2!RAM_CS1!RAM_CS0 11

PRZYKŁAD format pliku PLD Nagłówek Komentarz funkcjonalny Menu PLD Deklaracje we / wy Deklaracje pól bitowych i zmiennych pomocniczych Równania logiki

PRZYKŁAD deklaracje we/wy /** WEJŚCIA **/ PIN 1 = cpu_clk ; /* zegar CPU */ PIN [2..6] = [a15..11] ; /* Linie adresowe CPU */ PIN [7,8] =![memw,memr] ; /* Stroby zapisu i odczytu */ PIN 9 = reset ; /* Reset systemu */ PIN 11 =!oe ; /* Output Enable */ /** WYJŚCIA **/ PIN 19 =!rom_cs ; /* wybranie ROM */ PIN 18 = ready ; /* Sygnał READY CPU */ PIN 15 = wait1 ; /* Początek stanu Wait */ PIN 14 = wait2 ; /* Koniec stanu Wait */ PIN [13,12] =![ram_cs1..0]; /* wybranie RAM 0..1 */

PRZYKŁAD deklaracje, równania logiki /** DEKLARACJE PÓL BITOWYCH I ZMIENNYCH POMOCNICZYCH **/ FIELD memadr = [a15..11]; /* adres ROM / RAM */ memreq = memw # memr; /* zmienna pomocnicza */ /* dostęp do pamięci */ /* "memreq" */ /** RÓWNANIA SYMBOLICZNE **/ select_rom = memr & memadr:[0000..1fff]; /* dekodowanie ROM */ ram_cs0 = memreq & memadr:[2000..27ff]; /* dekodowanie RAM0 */ ram_cs1 = memreq & memadr:[2800..2fff]; /* dekodowanie RAM1 */ ready.oe = select_rom; /* sterowanie buforem */ /* linii READY */

PRZYKŁAD opis przy pomocy automatu stanów!select_rom S0 rom_cs select_rom S1 rom_cs S2 rom_cs ready select_rom!select_rom Automat synchroniczny oczekuje w stanie S0 na wybór ROM przez CPU, po wybraniu ROM wstawia jeden cykl oczekiwania S1 i tam, przez sterowanie linią ready=0, zatrzymuje CPU tak, że dane z ROM mogą być przeczytane. Następnie przechodzi do S2 i po przeczytaniu danych przez CPU (nieaktywny select_rom) wraca do stanu S0.

PRZYKŁAD opis przy pomocy automatu stanów FIELD wait = [wait2,wait1]; /* pole bitowe "wait" */ $define S0 0 /* definicja symbolicznych nazw reprezentujących */ $define S1 1 /* aktualne stany bitów stanu */ $define S2 3 /* - dyrektywa preprocesora */ SEQUENCE wait { /* Definicja sekwencji */ PRESENT S0 IF select_rom OUT rom_cs; /* asynchroniczne sterowanie */ /* linią "rom_cs" */ IF select_rom NEXT S1; /* czekaj aż żądanie dostępu */ DEFAULT NEXT S0; /* do ROM */ PRESENT S1 OUT rom_cs; /* steruj dalej "rom_cs" */ NEXT S2; /* przejdź do następnego stanu */ PRESENT S2 OUT ready; /* ustaw READY -> CPU czyta ROM */ /* ready.oe = select_rom */ IF select_rom OUT rom_cs; /* asynchroniczne sterowanie */ /* linią "rom_cs" */ IF!select_rom NEXT S0; /* czekaj na następny dostęp */ DEFAULT NEXT S2; } /* czekaj aż CPU przeczyta */

PRZYKŁAD deklaracje, równania logiki!select_rom S0 rom_cs select_rom S1 rom_cs S2 rom_cs ready select_rom!select_rom PRESENT S0 IF select_rom OUT rom_cs; /* asynchroniczne sterowanie */ /* linią "rom_cs" */ IF select_rom NEXT S1; /* czekaj aż żądanie dostępu */ DEFAULT NEXT S0; /* do ROM */ CPU_CLK!ROM_CS READY

PRZYKŁAD deklaracje, równania logiki!select_rom S0 rom_cs select_rom S1 rom_cs S2 rom_cs ready select_rom!select_rom PRESENT S1 OUT rom_cs; /* steruj dalej "rom_cs" */ NEXT S2; /* przejdź do następnego stanu */ CPU_CLK!ROM_CS READY

PRZYKŁAD deklaracje, równania logiki!select_rom S0 rom_cs select_rom S1 rom_cs S2 rom_cs ready select_rom!select_rom PRESENT S2 OUT ready; /* ustaw READY -> CPU czyta ROM */ /* ready.oe = select_rom */ IF select_rom OUT rom_cs; /* asynchroniczne sterowanie */ /* linią "rom_cs" */ IF!select_rom NEXT S0; /* czekaj na następny dostęp */ DEFAULT NEXT S2; } /* czekaj aż CPU przeczyta */ CPU_CLK!ROM_CS READY

PRZYKŁAD deklaracje, równania logiki!select_rom S0 rom_cs select_rom S1 rom_cs S2 rom_cs ready select_rom!select_rom PRESENT S2 OUT ready; /* ustaw READY -> CPU czyta ROM */ /* ready.oe = select_rom */ IF select_rom OUT rom_cs; /* asynchroniczne sterowanie */ /* linią "rom_cs" */ IF!select_rom NEXT S0; /* czekaj na następny dostęp */ DEFAULT NEXT S2; } /* czekaj aż CPU przeczyta */ CPU_CLK!ROM_CS READY

CPLD kontra FPGA typu PAL więcej logiki kombinacyjnej mała / średnia wielokrotna struktura 22V10 do 200 MHz przewidywalne opóźnienia ARCHITEKTURA GĘSTOŚĆ SZYBKOŚĆ typu Gate Array więcej przerzutników średnia / duża do kilku milionów bramek do 200 MHz opóźnienia zależne macierz łączeniowa POŁĄCZENIA połączenia odcinkami

Architektura FPGA Bloki we/wy (Input Output Block) Bloki logiki (Configurable Logic Block) Zasoby połączeniowe

Architektura FPGA

Cechy użytkowe układów FPGA Idealna technologia dla aplikacji dedykowanych (Fast Time-to-Market) Zalety integracji (niski koszt, mały pobór mocy, małe wymiary, System on Chip) Niższe koszty i mniejsze ryzyko niż układy ASIC (no NRE, minimum order size, or inventory risk, no long delay in design and testing) Bardzo szybkie przetwarzanie danych massively parallel operation much faster than DSP engines Reprogramowalne w każdym z etapów produkcji i użytkowania in design, in manufacturing, after installation allows unlimited product differentiation Technika Cyfrowa J.Kasperek P.J.Rajda 2002 Katedra Elektroniki AGH Kraków

Rozwój układów FPGA Bigger, Faster, Cheaper FPGAs Miliony bramek (8M dla XC2V800) Miliony bitów RAM dla aplikacji (3M w 18kb blokach dla XC2V800) >200 MHz częstotliwość zegara systemu 800 Mbps I/O transfer danych cena od 0.3 to 3 za blok Logic Cell (LUT plus flip-flop ) najniższa dla serii SpartanXL Najwyższa dla serii Virtex-II FPGAs have evolved from glue logic to system platforms Technika Cyfrowa J.Kasperek P.J.Rajda 2002 Katedra Elektroniki AGH Kraków

Xilinx Spartan2E

Kit Digilent D2E Układ XC2S200E-PQ208: macierz CLB 28 x 42 (1,176 CLBs, 5,292 LCs) 146 sygnałów dla użytkownika 75,264 bity pamięci rozproszonej 56K pamięci blokowej (14 bloków) Płyta D2E: 122 + 21 sygnałów dla użytkownika UV, 3.3V, GND na każdym złączu JTAG & RS232 header, MODE jumper Program Enable switch

Kit Digilent DIO1 & DIO2

Xilinx Spartan2E coarse grain 50,000 600,000 system gates 200+ MHz system performance clock DLLs pamięć użytkowa Select RAM+ rozproszona do 220 Kb blokowa do 280 Kb (bloki 4Kb) zewnętrzna: ZBT, DDR, QDR... pamięć konfiguracji SRAM (4 tryby + ReadBack) port JTAG (testowanie + konfiguracja) zasilanie: CLBs 2,5V IOBs 3,3V max.

Spartan2E - CLB Configurable Logic Block przerzutnik / zatrzask Clock Enable SS / SR / AP / AC LUT (Look-Up-Table)

Spartan2E - CLB LUT: 4-wejściowy generator funkcji SinglePort / DualPort RAM 16-stopniowy rejestr przesuwny

Spartan2E CLB Multipleksery: MUXF5 dowolne funkcje 5 zmiennych multiplekser 4:1 wybrane funkcje 6 9 zmiennych MUXF6 dowolne funkcje 6 zmiennych multiplekser 8:1 wybrane funkcje 7 19 zmiennych

Spartan2E - IOB Programowalne: pull-up pull-down weak-keeper clamp diode

Spartan2E Zasoby połączeniowe Lokalne (Local Routing): pomiędzy LUT / FF / GRM, sprzężenia zwrotne, bezpośrednie połączenia poziome. Ogólne (General Purpose Routing) GRM (Global Routing Matrix), 4 kierunki po 6 linii typu single, 4 kierunki po 24 linie hex sterowanie na jednym z końców, odbiór na drugim końcu lub w połowie, 1/3 dwukierunkowych, 12 linii long (dwukierunkowe, pionowe i poziome, przez całą strukturę).

Połączenia I/O (I/O Routing - VersaRing) Dedykowane (Dedicated Routing) 4 dzielone linie 3-stanowe, 2 linie carry Globalne (Global Routing) primary: 4 ścieżki zegarowe (Clock Routing) secondary: 24 backbone lines, sterują 12 pion. długimi liniami Spartan2E Zasoby połączeniowe

Spartan2E Zasoby pamięciowe

Spartan2E Distributed RAM SinglePort RAM 16x1 SinglePort RAM 32x1

Spartan2E Distributed RAM DualPort RAM 16x1 ShiftRegister 32x1

Spartan2E Block RAM

Spartan2E konfiguracja Tryby konfiguracji: Slave Serial Master Serial Slave Parallel (SelectMAP) Boundary Scan (JTAG) ReadBack: weryfikacja pamięci konfiguracji oraz stanów przerzutników i zawartości pamięci (debug)

VHDL co to jest? Definicja VHDL - VHSIC Hardware Description Language Very High Speed Integrated Circuit It is "a formal notation intended for use in all phases of the creation of electronic systems.... it supports the development, verification, synthesis, and testing of hardware designs, the communication of hardware design data..." [IEEE Standard VHDL Language Reference Manual]

VHDL jak, gdzie, kiedy? Zakres stosowania Modelowanie A(1..0) A= 01? Z Z <= 1 when A = 01 else 0 ;

VHDL jak, gdzie, kiedy? Zakres stosowania Symulacja A(1) A(0) Z

VHDL jak, gdzie, kiedy? Zakres stosowania Synteza (automatyczna) translacja opisu w języku HDL na strukturę w postaci listy połączeń elementarnych bloków funkcyjnych docelowej platformy sprzętowej (bramek, przerzutników, pamięci i innych) A(0) A(1) Z

VHDL jak, gdzie, kiedy? Projektowanie systemu

VHDL jak, gdzie, kiedy? Proces projektowania

VHDL jednostki projektowe Jednostki projektowe Biblioteki entity architecture configuration package kompilator VHDL entity architecture configuration package

VHDL jak, gdzie, kiedy? Jednostki projektowe entity name entity COMPARE is port (A,B: in bit; C: out bit); end COMPARE; architecture style of name architecture BEHAVIORAL of COMPARE is begin process (A,B) begin if (A=B) then C <= 1 ; else C <= 0 ; end if; end process; end arch_behavioral;

VHDL przykłady Dekoder entity DECODER is port(d: in bit_vector (0 to 3); ZERO: out boolean; ONE: out boolean; EIGHT: out boolean; NINE: out boolean); end DECODER; architecture FIRST of DECODER is begin NINE <= (D= 1001 ); EIGHT <= (D= 1000 ); ONE <= (D= 0001 ); ZERO <= (D= 0000 ); end FIRST;

VHDL przykłady Komparator entity COMPARE is port(a,b: in bit_vector (0 to 7); EQL: out bit_vector (0 to 7)); end COMPARE; architecture SECOND of COMPARE is begin EQL <= not (A xor B); end SECOND; Gdzie na tym schemacie jest błąd?

VHDL przykłady Multiplekser entity MPLEXER is port(d: in bit_vector (0 to 7); A: in integer range 0 to 7; X: out bit); end MPLEXER; architecture THIRD of MPLEXER is begin X <= D(A); end THIRD;

VHDL przykłady Sumator use IEEE.STD_LOGIC_UNSIGNED.all; entity SUM is port(a,b: in std_logic_vector (0 to 2); Cin: in std_logic; S: out std_logic_vector (0 to 2); Cout: out std_logic); end SUM; architecture FOURTH of SUM is signal V: std_logic_vector (0 to 3); begin V <= A + B + Cin; S <= V(0 to 2); Cout <= V(3); end FOURTH;

VHDL przykłady Licznik architecture FIFTH of COUNT is begin process (C, CLR) begin if CLR='1' then Q := 0; elsif C='1' and C'event then if CE='1' then if Q = 9 then Q := 0; else Q := Q + 1; end if; end if; end if; end process; end FIFTH;

VHDL przykłady Powielanie logiki entity loop_stmt is port (a: bit_vector (0 to 3); m: out bit_vector (0 to 3)); end loop_stmt; architecture example of loop_stmt is begin process (a) variable b: bit; begin b := '1'; for i in 0 to 3 loop b := a(3-i) and b; m(i) <= b; end loop; end process; end example;

VHDL i co z tego? Zalety Specyfikacja projektu niezależna od technologii możliwość współpracy z wieloma producentami uniknięcie problemów z wycofywanymi technologiami łatwe ulepszenia i poprawy Automatyzacja projektowania niskiego poziomu krótszy czas projektowania redukcja kosztów eliminacja błędów niskiego poziomu Poprawa jakości projektu łatwe sprawdzanie opcjonalnych technologii weryfikacja działania na wysokim poziomie łatwa weryfikacja implementacji modularność projektu łatwa wymiana do innych celów

VHDL - wczoraj 1980 DoD USA początek programu rozwijania technologii układów VHSIC (Very High Speed Integrated Circuits) 1981 Woods Hole, Massachusetts - konferencja na temat założeń przyszłego standardu HDL 1983 DoD ustala założenia VHDL: VHSIC Hardware Description Language kontrakt otrzymują : Intermetrics, TI i IBM 1984 gotowa wersja 6.0 1985 zwolnienie z restrykcji ITAR (US International Traffic and Arm Regulation), VHDL 7.2 wraz z referencjami przekazany do IEEE celem standaryzacji i dalszego rozwoju 1987 wydany opis IEEE Std 1076 1993 wydana nowelizacja IEEE Std 1076-1993 2000 wydana errata IEEE Std 1076a-1993

VHDL - jutro VHDL Analysis and Standardization Group (VASG) VHDL 200x TextIO enhancements/improvements Direct C/C++, Verilog calls / interface Performance XMR (Signal Spy)

VHDL literatura A Guide to VHDL, S. Mazor, P. Langstraat VHDL Analysis and Modelling of Digital Systems, Z. Navabi VHDL Hardware Description and Design, R. Lipsett, C. Schaefer, C. Ussery The VHDL Cookbook, P. J. Ashenden VHDL programming: with advanced topics, L. Baker VHDL starter's guide, S. Yalamanchili VHDL for designers, S. Sjoholm, L. Lindh VHDL made easy!, D. Pellerin, D. Taylor VHDL answers to frequently asked questions, B. Cohen VHDL and AHDL digital systems implementation, F. A. Scarpino VHDL: język opisu i projektowania układów cyfrowych, W. Wrona Active-VHDL Series BOOK#2 EVITA Interactive Tutorial, J. Mirkowski, M. Kapustka, Z. Skowroński, A. Biniszkiewicz VHDL: a logic synthesis approach, D. Naylor, S. Jones

VHDL literatura Kevin Skahill Józef Kalisz Marek Zwoliński Włodzimierz Wrona

VHDL zasoby w Internecie Grupa dyskusyjna: comp.lang.vhdl EDA Industry Working Groups homepage: http://www.eda.org/ Accellera: http://www.accellera.org/ Programmable Logic Jump Station: http://www.optimagic.com Design Automation Cafe: http://www.dacafe.com/ The Hamburg VHDL archive: http://tech-www.informatik.unihamburg.de/vhdl/vhdl.html Doulos High Level Design Web site: http://www.doulos.com/ RASSP WWW site: http://www.eda.org/rassp/ ESA (European Space Agency): http://www.estec.esa.nl/wsmwww/vhdl/vhdlpage.html University of Cincinnati: ftp://ftp.ececs.uc.edu/pub/vhdl Leroy's Engineering Web Site: http://www.interfacebus.com or http://www.interfacebus.com/frames.html VHDL-online, University of Erlangen-Nürnberg: http://www.vhdl-online.de/ VHDL info pages of the Microelectronics Department (University of Ulm, Germany): http://mikro.e-technik.uni-ulm.de/vhdl/vhdl_infos.html

VHDL tutoriale An Introductory VHDL Tutorial, Green Mountain Computing Systems: http://www.gmvhdl.com/vhdl.html VHDL Synthesis Tutorial by Bob Reese, Electrical Engineering Department Mississippi State University: http://www.erc.msstate.edu/~reese/vhdl_synthesis/ Introduction to VITAL '95 by Steve Schulz: http://vhdl.org/vi/vital/wwwpages/steves/ VHDL-Modelling And Synthesis Of The DLXS RISC Processor by Martin Gumm, University of Stuttgart: ftp://ftp.informatik.uni-stuttgart.de/pub/vhdl/vlsi_course/ Doulos High Level Design Web site; A Hardware Engineers Guide to VHDL: http://www.doulos.com/hegv/index.htm VHDL Synthesis Tutorial from APS: http://www.associatedpro.com/aps/x84lab/ Interactive VHDL Tutorial from Aldec, Inc.: http://www.aldec.com/registration/evita_vhdl_download.htm FPGA Synthesis by Scott E. Harrington: http://www.ee.duke.edu/research/vhdl_tutorial/ VHDL Tutorial by Ulrich Heinkel, Thomas Bürner and Martin Padeffke (in English and German): http://www.vhdl-online.de/~vhdl/tutorial/ VHDL-FSM-Tutorial by Martin Padeffke: http://www.vhdl-online.de/fsm/ VHDL Verification Course by Stefan Doll: http://www.stefanvhdl.com/ A small VHDL-Tutorial: http://www.eej.ulst.ac.uk/tutor/vhdnotes.html MicroLab VLSI Design course: http://www.microlab.ch/academics/courses/vlsi/

VHDL free IP cores OpenIP home page: http://www.opencores.org/oipc/ The Free-IP Project Home Page: http://www.free-ip.com/ Free behavioral models from Alatek: http://www.alatek.com/ The Hamburg VHDL archive: http://tech-www.informatik.unihamburg.de/vhdl/vhdl.html RASSP www site: http://www.eda.org/rassp/ Doulos High Level Design Web site; Monthly-updated Original Models (developed by Doulos): http://www.doulos.com/fi/ EDIF LPM - Library of Parameterized Modules: http://www.edif.org/edif/lpmweb/ Micron Technology, Inc. (memories): http://www.micron.com/mti/ A VHDL synthesizable model for the MICROCHIP PIC 16C5X microcontroller by Tom Coonan: http://www.mindspring.com/~tcoonan/ VHDL Library of Arithmetic Units developed by R. Zimmermann: http://www.iis.ee.ethz.ch/~zimmi/arith_lib.html CMOSexod: http://www.cmosexod.com/

VHDL firmy (produkty) Accolade Design Automation, (PeakFPGA) Aldec, (Active-HDL) Cadence Design Systems Cypress Semiconductor (Warp) Data I/O Corporation (Synario) Green Mountain Computing Systems, (VHDL Studio) Model Technology, (V-System, ModelSim) Exemplar (LeonardoSpectrum) Synplicity (SynplifyPro) Synopsys (FPGA Compiler, FPGA Express) InnovEDA, (dawniej: Viewlogic Systems) Xilinx, (XST)

VHDL Aldec / Alatec Produkty Software (ActiveCAD, ActiveHDL) Hardware-based Simulation Accelerators IP Cores Donacja dla laboratorium: Komputery 8 PC Oprogramowanie (ActiveHDL) 20 sites license (professional) Student Edition Oddział Kraków!

VHDL Aldec / Alatec Praktyki studenckie Prace dyplomowe (IP Cores) µp/µc: PIC17C4x, PIC16C5x, 8051-SoC peryferia: 8251-SIO, 8255-PIO, 8257-DMA, 8259-INT interfejsy: CAN, UART/IrDA, USB, I2S, PS/2 telekom: Reed-Solomon, Viterbi, Utopia, DTMF, MP3, ADPCM i wiele nowych! Praca zawodowa

ActiveHDL moduły

ActiveHDL moduły

ActiveHDL Design Flow

ActiveHDL HDL

ActiveHDL BDE

ActiveHDL FSM

ActiveHDL Design Browser

ActiveHDL Waveform Viewer

ActiveHDL List Viewer

ActiveHDL Library Manager

Ciąg dalszy nastąpi...