Upload
others
View
12
Download
1
Embed Size (px)
Citation preview
kod kursu: ETD6203
27.02.2020 Wrocław
Programowanie
Układów Logicznych - PUL
DR INŻ. MACIEJ RUDEK
DR INŻ. DANIEL KOPIEC
Prowadzący: mgr inż. Maciej Rudek
Konsultacje: Czw.: sala/budynek g. 1645-1730
Strona kursu: http://www.w12.pwr.wroc.pl/mikro/
Kontakt: email: [email protected]
PWr, C-2, 012, 015a, 104b, 404 z:
dr hab. inż. Tomasz Piasecki mgr inż. Bartosz Świadkowski
dr hab. inż. Andrzej Sikora prof. inż. Teodor Gotszalk
Informacje
2
Jakie to są
układy aktywne
a jakie pasywne?
• `
Kalendarz - wykład
3
Zajęcia od 27 lutego do 4 czerwca Kolokwium 10 czerwca
Poprawa 18 czerwca
Wymagania wstępne … cel …
Zakładam, że podstawy już opanowane…
W tym roku ciąg dalszy techniki cyfrowej i VHDL-a… w praktyce
Tematyka kursu – wykład
Tematyka kursu - projekt
UWAGA: Tematyka kursu ulegnie modyfikacji, proszę o zapoznanie
się z regulaminem na stronie: http://www.w12.pwr.wroc.pl/mikro
• Wykład: cykl 15 wykładów – kolokwium zaliczeniowe -> test wyboru + pytania otwarte,
– termin: ostatni wykład tj. 10 czerwca 2020 godz. 1515,
– poprawa: 18 czerwca
• Dostępność materiałów: - Literatura przedmiotu
- Strona internetowa
Zaliczenie - wykład
7 http://www.w12.pwr.wroc.pl/mikro/
pul-vhdl.html
• Projekt: 8 spotkań,
– praca na zajęciach – kilka zadań realizowanych w czasie zajęć,
– kartkówki,
– aktywność,
– projekt indywidualny: • wybór tematu,
• założenia projektowe,
• kod programu,
• uruchomienie,
• szczegółowa dokumentacja projektu,
• Prezentacja i przesłanie kodu wraz z dokumentacją.
Zaliczenie - projekt
• A jaki projekt?
• Brak czasu i odkładanie na „potem”,
• Systematyczność,
• Niezdefiniowanie celu i kamieni milowych,
• Konsultacje,
• Zmiana założeń,
• Prace domowe,
Zaliczenie - projekt
Przykładowe przyczyny niezrealizowania projektu
• Plagiat • „Cudzesy”
W ramach powtórzenia techniki cyfrowej:
[1] K. M. Noga, M. Radwański, Multisim, Technika cyfrowa w przykładach, Wydawnictwo BTC, 2009
[2] B. Wilkinson, Układy cyfrowe, Wydawnictwa Komunikacji i Łączności, 2003
O jezyku VHDL i układach programowalnych FPGA:
[1] D. Kania, Układy logiki programowalnej, Podstawy syntezy i sposoby odwzorowania technologicznego, Wydawnictwo PWN (2012)
[2] K. Skahill, Język VHDL: projektowanie programowalnych układów logicznych, Wydawnictwa Naukowo-Techniczne, 2004
[3] M. Zwolinski, Projektowanie układów cyfrowych z wykorzystaniem języka VHDL, Wydawnictwa Komunikacji i Łączności, 2002
[4] J. Majewski, P. Zbysiński, Układy FPGA w przykładach, Wydawnictwo BTC, 2007.
[5] P. Zbysiński, J. Pasierbiński, Układy programowalne pierwsze kroki, wydanie 2, BTC Warszawa, 2004
[6] W. Wrona, VHDL: język opisu i projektowania układów cyfrowych, Wydawnictwo Pracowni Komputerowej Jacka Skalmierskiego, 1998
[7] J. Pasierbiński, P. Zbysiński, Układy programowalne w praktyce, Wydawnictwa Komunikacji i Łączności, 2001
Źródła internetowe:
[1] http://www.xilinx.com/training/free-video-courses.htm
[2] http://www.digilentinc.com/data/textbooks/intro_digital_design-digilent-vhdl_online.pdf
[3] http://www.fpga4fun.com/
[4] http://www.eng.auburn.edu/department/ee/mgc/vhdl.html
[5] http://www.ics.uci.edu/~alexv/154/VHDL-Cookbook.pdf
Literatura kursu
• Wiśniewski, Remigiusz ,Prototyping of Concurrent Control Systems Implemented in FPGA Devices, 2017
• Sklyarov, V., Skliarova, I., Barkalov, A., Titarenko, L., Synthesis and Optimization of FPGA-Based System, 2014
• Skliarova, Iouliia, Sklyarov, Valery, FPGA-BASED Hardware Accelerators, 2019
• Churiwala, Sanjay, Designing with Xilinx® FPGAs Using Vivado, 2017
• Fabrizio Tappero, Bryan Mealy, Free Range VHDL. The no-frills guide to writing powerful code for your digital implementations, 2013
• A. Arockia Bazil Raj, FPGA-Based Embedded System Developer's Guide, 2018
• Pong P. Chu, FPGA Prototyping by VHDL Examples: Xilinx Spartan-3 Version
• Douglas L. Perry, VHDL: Programming by Example
• R. Sandige, M. Sandige, Fundamentals of Digital and Computer Design with VHDL
• https://www.xilinx.com/products/design-tools/vivado.html
• https://www.youtube.com/watch?v=eY8-qMB0ar0
• https://blog.digilentinc.com/
Literatura kursu cz2
Inne pozycje, video, linki
https://www.xilinx.com/support/documentation/university/Vi
vado-Teaching/HDL-Design/2013x/Nexys4/Verilog/docs-
pdf/Vivado_tutorial.pdf
Projekt indywidualn
• TERMIN [1]: Zajęcia wstępne, wprowadzenie
• TERMIN [2]: Wybór tematu projektu, lista założeń
• TERMIN [3-6]: Realizacja projektów
• TERMIN [7]: Prezentacja projektów
• TERMIN [8]: Prezentacja / Dyskusja / Ocena
Projekt indywidualny
1. Wybór tematu projektu (przemyśleć): • lista na stronie www,
• propozycja własna – mile widziana.
2. Założenia projektowe do wybranego tematu: • układ, urządzenie, peryferia,
• ogólna koncepcja, zasada działania, zastosowanie.
3. Proces realizacji: • schemat działania, diagram przepływu danych (UML), algorytm
• opis symboli, bloków.
4. Zasoby sprzętowe: • ilość potrzebnych układów peryferyjnych,
• ocena możliwości implementacji w sprzęt.
Termin 2 - założenia
1. Realizacja koncepcji projektowej • kod VHDL,
• diagramy, maszyna/y stanów itp…,
• ograniczenia.
2. Kodowanie • testy, głównie Testbench,
• komponenty,
• schemat kodowy,
• troska o zasoby sprzętowe.
• 3. Implementacja • testy poszczególnych funkcjonalności ze sprzętem,
• testowanie peryferii, np. DAC, ADC, LCD, LED…
Termin 3-6
Ocena na podstawie postępów – realizacji założeń
Termin 8
Oddanie projektu
Zaliczenie: na podstawie projektu oraz ocen cząstkowych:
waga oceny z projektu indywidualnego: 65%
Proszę brać pod uwagę fakt, że na realizacją projektu należy poświęcić
więcej czasu niż wynika to z ilości godzin przeznaczonych na projekt.
Dokumentacja:
PDF, kod
Prezentacja ustna
- PPT 5 – 7 min
Test ze sprzętem
- implementacja
1. Temat projektu
2. Ogólny opis projektu z zaznaczeniem jego funkcji
3. Założenia projektowe, ograniczenia, koncepcja
4. Zastosowane urządzenia peryferyjne np. LCD, ADC, itp. lista wraz z opisem zasady działania
5. Schematy maszyn stanów, diagramy przepływu danych, opis realizowanych funkcji przez poszczególne bloki
6. Podział projektu na komponenty
7. Schemat projektu generowany z ISE
8. Symulacja – test bench (kluczowe elementy)
9. Raport z syntezy HDL, wykorzystane zasoby
10. Wynik implementacji
11. Wnioski
Dokumentacja - zawartość
Kilka stron tekstu,
bez rysunków na pół
strony i więcej*
* Osobny załącznik
• Analizator stanów logicznych.
• Cyfrowy regulator PID - sterowanie temperaturą.
• Obsługa interfejsu VGA - wyświetlenie dowolnego tekstu na ekranie monitora.
• Obsługa interfejsu PS2 - odczyt danych z klawiatury komputera.
• Obsługa wyświetlacza LCD ze sterownikiem HD44780.
• Obsługa wyświetlacza OLED, ze sterownikiem SSD1306.
• Obsługa portu szeregowego UART - komunikacja z PC.
• Częstotliwościomierz sygnałów okresowo zmiennych.
• Generator sygnału sinusoidalnego o regulowanej częstotliwości.
• Generator sygnałów arbitralnych.
• Trójkanałowy sterownik PWM o regulowanych parametrach.
• Realizacja maszyny stanów - pralka, automat do kawy itp...
Lista tematów
• Implementacja algorytmu szybkiej transformaty Fouriera - FFT,
• Odbiornik SDR - Software Defined Radio.
• Obsługa interfejsu ETHERNET - serwer lub klient, komunikacja.
• Termometr - pogodynka
• Organki – syntezer częstotliwości
• Zegar czasu rzeczywistego – godziny, minuty, sekundy
• Stoper – licznik czasu
• Woltomierz, multimetr analogowy
• Sterowane enkoderem źródło napięcia w zakresie działania przetworników DAC
• Modulator, modulacja amplitudowa sygnałów
• Implementacja własnego procesora w strukturze programowalnej
• Jednostka ALU – kalkulator
• Prywatne moduły – mile widziane
Lista tematów cz. 2
Propozycje własne
• FPGA Xilinx Artix-7 XC7A35T-L1CSG324I,
• DDR3L 256 MB, szyna 16-bitowa, 667 MHz,
• 16 MB pamięci Flash,
• Ethernet 10/100 Mb,
• Konwerter USB – UART,
• Przełączniki, przyciski, RGB,
• złącza dla modułów Pmod,
• Złącze dla shieldów Arduino,
• Zasilanie – USB, zasilacz,
• Regulator zasilania ADP5052,
• Reset FPGA
Makieta ARTY A7
https://reference.digilentinc.com/reference/programmable-logic/arty/reference-manual?redirect=1
https://www.xilinx.com/products/silicon-
devices/fpga/artix-7.html
• gniazdo PS/2
• gniazdo VGA (przez D-Sub15)
• enkoder EN12
• buzzer piezo
• 4x 7segm
• LCD HD44780 2x16 znaków
• OLED SSD1306, 128x32 px
• MCP3201 ADC
• MAX5705 DAC
• SGTL5000 kodek audio
• 24C04 pamięć EEPROM
Makieta ARTY A7
Projekt wykona mgr inż. Bartosz Świadkowski, 012 C-2
• MCP9701T czujnik temp.
• PCT2075 czujnik temp.
• układ z fototranzystorem (KDT00030)
• układ z grzejnikiem rezystorowym
• 74HC595
Co to za układy?
Peryferia dodatkowe
HC-SR04 • Arduino Nano
• LCD Nokia – dodatkowo
• HC-SR04 – czujnik odległości
• Analog Discovery ver. 1
Analizator stanów logicznych firmy Digilent
pełni rolę:
• oscyloskopu,
• 16-kanałowego analizatora stanów logicznych,
• 2-kanałowego generatora
• etc.
Oscyloskop cyfrowy - AD
• DockLight
• Putty
• Terminal
Oprogramowanie dodatkowe
Podstawowa dokumentacja
• https://www.xilinx.com/support/documentatio
n/data_sheets/ds180_7Series_Overview.pdf
• https://www.xilinx.com/support/documentatio
n/data_sheets/ds181_Artix_7_Data_Sheet.p
df
• https://www.xilinx.com/support/documentatio
n/data_sheets/ds197-xa-artix7-overview.pdf
• https://www.xilinx.com/products/boards-and-
kits/arty.html#documentation
Oprogramowanie
https://www.xilinx.com/support/d
ownload.html
Projekt indywidualny - założenia
Śmiało nie gryzę
Jak to się zaczęło?
Prawo Moore’a
Prawo Moore’a
1965 –
przewiduje
wykładniczy
wzrost liczby
tranzystorów w
układach
scalonych co 12
– 18 miesięcy
… od tranzystora do FPGA
Pierwszy układ scalony,
1958
Pierwszy tranzystor, 1947
Pierwszy monolityczny
układ scalony,1959 30
• 1947 pierwszy tranzystor ostrzowy skonstruowany w
laboratoriach firmy Bell Telephone Laboratories przez Johna
Bardeena oraz Waltera Housera Brattaina,
• 1949 pierwszy tranzystor złączowy Shockley,
• 1958 pierwszy układ scalony, Jack Kilby, Texas Instruments,
(Kilby zastosował german i połączenia drucikami)
• 1959 pierwszy monolityczny krzemowy prototyp układu
scalonego Robert Noyce, Fairchild Sem.
• 1961 pierwsze planarne układy scalone, Fairchild Sem. i Texas
Instruments
• Prawo Moore’a 1965 – przewiduje wykładniczy wzrost liczby
tranzystorów w układach scalonych co 12 – 18 miesięcy
• 1967 Micromosaic – precursoc ASIC, (Application-Specific
Integrated Circuit - ASIC)
… od tranzystora do FPGA
31
• 1970 – pamięć statyczna RAM (256 bitów) – Fairchild, symbol
4100,
• 1970 – pamięć dynamiczna RAM (1024 bity) – Intel, symbol 1103,
• 1971 – opracowanie pierwszego mikroprocesora 4-bitowego Intel
4004, (2300 tranzystorów, 34 rozkazy, 60k rozkazów/s), rok
później Intel 8008 (8-bit, 45 rozkazów, 300k rozkazów/s)
• 1975 – prekursor PLD opracowany przez firmę Signetics – układ o
strukturze PLA
• 1978 – opracowanie układu o strukturze PAL przez firmę
Monolithic Memoriec
• 1980 – technologia CMOS, dominują układy BiCMOS i SOI,
pierwszy milion tranzystorów w jednym układzie
• 1985 – narodziny FPGA firma Xilinx
Prace zapoczątkowano w 1980 przez Ross Freeman’a tworząc pierwszy układ FPGA ( Field Programmable Gate Array). Pomysł został zastrzeżony w patencie US4870302A: Configurable electrical circuit having configurable logic elements and configurable interconnects
1985 – Xilinx XC2064
https://spectrum.ieee.org/tech-history/silicon-revolution/chip-hall-of-fame-xilinx-xc2064-fpga
https://datasheetspdf.com/parts/XC2064.pdf?id=625540
VLSI (Very-large-scale integration) – jest to proces łączenia ze sobą tysięcy tranzysotrów w pojedynczym chipie krzemowym w celu wykonania układu scalonego IC (integrated circuit).
VLSI znane jest od lat 70’ch i zanim się pojawiło układy elektroniczne pełniły tylko jedna funkcję np. ROM, RAM, CPU. Wraz z pojawieniem się techniki VLSI możliwe było wykonanie ich w pojedynczym chipie – jednym słowem wspomaga procedurę projektową IC.
Czym jest VLSI?
Skala integracji Liczba tranzystorów
SSI – Smal-Scale Integration 0 - 102
MSI – Medium-Scale In. 102-103
LSI – Large-Scale In. 103-105
VLSI – Very Large-Scale In. 105-107
ULSI – Ultra Large-Scale In. >= 107
33
Zasadniczo istnieją trzy typy zastosowania technologii VLSI:
• Analogowe – wzmacniacze, filtry, przetworniki danych, pętle synchronizacji fazowych (PLL), sensory...
• ASIC (application-specific integrated circuit) - urządzenia które realizują ściśle określone zadanie np.: procesory sygnałowe, układy graficzne, kodeki dźwięku/grafiki…
• SoC (system on chip) - kompletny układ cyfrowy, elementy cyfrowe, analogowe, radiowe. Ze względu na złożoność często poszczególne elementy pochodzą od różnych dostawców
Czym jest VLSI?
34
FPGA vs ASIC
FPGA
• Krótszy czas wprowadzania produktu
• Brak początkowe wydatków na NRE (non-recurring
engineering)
• Prostsze cykl projektowania
• Bardziej przewidywalny cykl projektu
• Reprogramowalne pola
ASIC
• Pełna możliwość niestandardowej konfiguracji
• Niższe koszty jednostkowe (przy wielkich partiach
produkcyjnych)
• Small Form Factor – SSF – zmniejszanie rozmiarów
urządzenia do minimum 35
Producenci ukł. programowalnych
36 , Altium Designer
• Najważniejszą cechą jest możliwość nadawania im określonych cech funkcjonalnych przez programistę.
• Układ programowalny jest wytwarzany z pełnym zestawem połączeń usuwanych w trakcie programowania w specjalnym programatorze wg. zaprojektowanej maski przepaleń.
Definicja układu programowalnego
37
Układ programowalny to układ scalony, którego
właściwości funkcjonalne nie są definiowane przez
producenta, lecz przez końcowego użytkownika.
Klasyfikacja układów logicznych
38
39
Cel stosowania układów FPGA
Załóżmy, że musimy powielić ten schemat 100 razy …
… a to jego fizyczna realizacja 30 lat temu
1 układ scalony
PLD - programmable logic device PAL - Programmable Logic Arrays
PLA - Programmable Array Logic
Szkic architektury układów PLD o strukturze PAL i PLA
Standardowy symbol bramki AND i jego odpowiednik w
diagramie struktury PLA, PAL
zajrzyjmy do wnętrza …
40
GAL 16V8
PLD
41
Architektura układów CPLD i FPGA
Szkic architektury układów CPLD oraz FPGA
CPLD FPGA
CPLD – zapewnia stałe opóźnienie, przewidywalne czasy propagacji
Struktura wewnętrzna
PROCESOR,
MIKROKONTROLER
FPGA
42
Jaka jest różnica?
Macierze połączeniowe
43
Technologia połączeń wewnętrznych
• FUSE – bezpieczniki
• ANTIFUSE – antybezpieczniki • przewodzi po przepaleniu
• programowane jednokrotnie
• dane o konfiguracji nie są przenoszone poza układ, „revers enginering” praktycznie niemożliwy
• brak wewnętrznych tranzystorów
• stosowane w lotnictwie i aeronautyce – niezawodne, odporne na promieniowanie
• 20% mniejsze zużycie mocy
• mniejsza powierzchni układu
• szybsze działanie – brak pojemności tranzystorów
• droższe w produkcji,
• nie nadają się do budowy prototypów
• EPROM – kasowalne światłem UV
• EEPROM – kasowalne elektrycznie (reprogramowalna)
• FLASH • programowanie wielokrotne,
• zawartość pamięci nieulotna
• droższe ze względu na integrację pamięci FLSAH, skomplikowany proces technologiczny
• większy pobór mocy
• SRAM • programowane wielokrotnie
• oparte na technologii CMOS
• SRAM ulotne, konieczność ponownego programowanie po wyłączeniu zasilania, ładownie z
zewnętrznej pamięci EPROM lub FLASH
• opóźniony start urządzenia – ze względu na czas ładowania programu
• rozmiar fizyczny komórki SRAM o rząd większe niż rozmiary złącza programowalnego 44
• Język VHDL jest jednym z nowszych języków opisu i projektowania układów cyfrowych. Już w lipcu 1983 roku zespół złożony z przedstawicieli firm Intermetrics, IBM oraz Texas Instruments rozpoczął pierwszy etap pracy nad nowym językiem opisu i projektowania układów VLSI. Po roku pracy zaimplementowano dany język, dzięki czemu w grudniu 1985 otrzymano pierwszą wersję narzędzia napisanego w języku Ada dla komputerów klasy VA 11/780 i IBM 370.
• Projekt VHDL był częścią programu Departamentu Obrony USA o nazwie VHSIC, którego zadaniem było opracowanie metod projektowania oraz wykorzystanie najbardziej złożonych i bardzo szybkich układów scalonych. W roku 1987 VHDL stał się obowiązującym standardem w dziedzinie języków opisu i projektowania układów VLSI. Ulepszona wersja języka pojawiła się dopiero w 1993 roku i obecnie jest stosowana przez większość projektantów układów cyfrowych na świecie.
VHDL – język opisu sprzętu
45
Vivado
Vivado
Dziękuję za uwagę
65