Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
kod kursu: ETD6203
__ Wrocław
Programowanie
Układów Logicznych – PUL
Wykład 12
DR INŻ. MACIEJ RUDEK
DR INŻ. DANIEL KOPIEC
Optymalizacja procesu syntezy logicznej, PicoBlaze, ChipScope
HDL
– Hardware Description Language
2
• ABEL (ang. Advanced Boolean Expression Language)
o Jeden z najstarszych języków opisu układów programowalnych, opracowany w firmie
DATA I/O,
• AHDL (ang. Altera Hardware Description Language)
o Opracowany przez Alterę, zintegrowany z narzędziem MAX+PLUS II,
• CUPL (ang. CUPL - Universal Compiler for Programmable Logic)
o Opracowany w firmie Logical Devices Inc.,
• VHDL (ang. Very High Speed Integrated Circuits Hardware Description Language )
o Na zlecenie Departamentu Obrony USA - 1981
o 1987 zatwierdzony standard IEEE1076, 1993 zatwierdzony standard IEEE1164, 1995
powołano standardy 1076.3, 1076.4
• Verilog
o Opracowany w firmie Gateway Design Automation 1985, migracja do Cadence Design
System 1989
• Synteza logiczna
• Optymalizacja procesu syntezy
• Dekompozycja w wariancie ogólnym
• SOFTPROCESOR PicoBlaze
• ChipScope
• Podsumowanie – przykładowe pytania
Plan wykładu
3
• Synteza logiczna • Translacja języka opisu sprzętu (HDL) na odpowiednią sieć
połączeń zasobów sprzętowych, bramek logicznych, przerzutników, komórek, która realizować będzie określony układ funkcjonalny
• Główny cel syntezy • Uzyskanie struktury, która po zaimplementowaniu w strukturze
układu będzie optymalna pod jakimś względem, np. powierzchni układu, szybkości działania, zużycia zasobów, łatwości testowania
• Podstawowy problem • Niedoskonałość narzędzi syntezy logicznej
Synteza logiczna
- znaczenie pojęcia
5
Etapy procesu implementacji
Główny cel:
• dopasowanie funkcji logicznych do
zasobów struktury programowalnej
Metody:
• wyszukiwanie wspólnych wyrażeń
logicznych, minimalizacja funkcji
• faktoryzacja pod kątem zasobów
• dekompozycja funkcjonalna
Ważną rolę w całym procesie
projektowania odgrywają procedury
syntezy logicznej, niejednokrotnie
decydujące o jakości transformacji sieci
logicznej na wynikowe struktury
odwzorowania technologicznego. 6
• w dzisiejszych technologiach układy logiczne to nie tylko bramki,
• coraz większego znaczenia nabierają technologie, w których podstawowym elementem konstrukcyjnym są komórki logiczne (Logic Cell),
• metody syntezy - w szczególności minimalizacja - są nieskuteczne,
• określenie minimalnej liczby argumentów, od których funkcja istotnie zależy, jest bardzo istotna w redukowaniu złożoności obliczeniowej procedur minimalizacji funkcji boolowskich, a w konsekwencji może się przyczynić do uzyskiwania lepszych rezultatów
7
CPLD • minimalizacja
dwupoziomowa,
• odwzorowanie technologiczne w
sieci bloków PAL, PLA
FPGA • dekompozycja,
• przyporządkowanie wyrażeń do
poszczególnych bloków LUT,
• rozmieszczenie bloków w strukturze,
CPLD vs FPGA
8
Sieć dwupoziomowa Sieć wielopoziomowa
9
Dekompozycja
Dekompozycja – odpowiedni sposób podziału całego problemu na
prostsze zagadnienia, podział projektowanego układu na podukłady
o zadanej liczbie wejść i wyjść
Rodzaje dekompozycji:
• kolumnowa,
• wierszowa,
• funkcjonalna,
• równoległa,
• szeregowa,
• zrównoważona. 10
PAL, PLA, CPLD
FPGA
• Bloki LUT mające nLUT wejść umożliwiają realizację n-argumentowej funkcji, gdy spełniony jest warunek: nLUT n,
• gdy, nLUT < n wymagany jest podział argumentów
• Skuteczność dekompozycji jest tak ogromna, że mimo jej braku w narzędziach komercyjnych należy się z tymi metodami zapoznać i stosować w praktyce projektowania układów cyfrowych za pośrednictwem narzędzi uniwersyteckich.
• Metoda klasyczna to metoda tablicowa, graficzna, której podstawowe operacje wykonywane są na tzw. tablicy dekompozycji
• Z tych powodów dla struktur FPGA znacznie skuteczniejszą metodą syntezy okazuje się dekompozycja funkcji boolowskich, której istotą jest synteza funkcji boolowskich w strukturach wielopoziomowych złożonych z komponentów w postaci bloków logicznych typu LUT specyfikowanych pierwotnymi tablicami prawdy.
Dekompozycja
- ukierunkowana na układy FPGA
11
Jak to działa
12
Dekompozycja zrównoważona
dekompozycja
y=H(X1, G(X2))
równoległa szeregowa
13
Dekompozycja
- cel
14
Znaczenie praktyczne dekompozycji wynika
z konstrukcji typowych struktur
programowalnych jakimi są układy FPGA.
• graficzne,
• analityczne,
• komputerowe,
Tablice Karnaugha, Metoda Quine’a – McCluskey’a
Pierwsze skuteczne narzędzie do minimalizacji wieloargumentowych i wielowyjściowych funkcji boolowskich (Uniwersytet Kalifornijski w Berkeley) :
Metoda i system Espresso (1984)
Podejście klasyczne
- minimalizacja funkcji boolowskich
15
Efekt dekompozycji
• bin2bcd1 – konwerter kodu binarnego na BCD dla liczb z zakresu od 0 do 99,
• bin2bcd2 – konwerter kodu binarnego na BCD dla liczb z zakresu od 0 do 355,
• DESboxes – zespół skrzynek podstawieniowych szyfru DES,
• rd88 – sbox z algorytmu kryptograficznego Rijndael, DESaut – kombinacyjna część układu sekwencyjnego z
implementacji algorytmu
• kryptograficznego DES,
• 5B6B – kombinacyjna część układu kodera 5B-6B,
• count4 – 4-bitowy licznik z mikrooperacjami COUNT UP, COUNT DOWN, HOLD,
• CLEAR i LOAD
W tabeli przedstawiono
wyniki porównania metody
wykorzystującej
dekompozycję
zrównoważoną systemu
DEMAIN z metodami
zaimplementowanymi w
systemach: SIS, FPGA
Express, Leonardo
Spectrum i MAX+PlusII.
16
• Kanoniczna postać sumy (suma iloczynów AND-OR y=x1x2 + x3x1)
• Kanoniczna postać iloczynów (iloczyn sum OR-AND y=(x1+x2)( x3+x1))
Podejście klasyczne
- minimalizacja funkcji boolowskich
17
Podejście klasyczne
- minimalizacja funkcji boolowskich
18
Twierdzenie Ashenhursta-Curtisa
Niech będzie dana funkcja boolowska f oraz pewien podział zbioru zmiennych wejściowych na dwa rozłączne zbiory A i B,
wówczas:
f(A, B) = h(g1(B)),…gj(B), A) v(A|B) 2j
v(A|B) 2j - złożoność kolumnowa
A, B – zbiór wolny, zbiór związany
Dekompozycja funkcjonalna
- metoda klasyczna – podstawowe twierdzenie
A
B
19
Dekompozycja funkcjonalna
- metoda klasyczna – tablica dekompozycji
2 powtarzające się wzorce kolumn, istnieje dekompozycja,
zmienne x1, x2, x3 zostają przeadresowane g1, g2
Tablica dekompozycji funkcji f to inaczej macierz dwuwymiarowa o kolumnach i
wierszach etykietowanych wartościami funkcji f ze zbioru A oraz B. Elementami
macierzy są wartości jakie przyjmuje funkcja f.
Liczbę istotnie różnych kolumn oznaczamy v(A|B)
A = {x4, x5}
B = {x1, x2, x3} f(A, B) = h(x4, x5, g1(x1, x2, x3), g1(x1, x2, x3))
20
Dekompozycja funkcjonalna
- metoda klasyczna
{(0, 0, 1), (0, 1, 0), (1, 0, 0)}
{(1, 1, 0), (1, 0, 1), (0, 1, 1)}
istnieje dekompozycja
Zmienne {x1, x2, x3} zostają przeadresowana na {g1, g2}
Tablica opisuje dekompozycję funkcji g 21
wstawiamy
nowe
adresy
Dekompozycja funkcjonalna
- metoda klasyczna
Tablica opisuje dekompozycję funkcji h
kolumny zgodne są sklejane
kodowanie
może być
dowolne
22
Dekompozycja funkcjonalna
- metoda klasyczna – określenie funkcji g, h
dekompozycja g dekompozycja h
g1 g2 h
g1=x1x2 + x2x3 + x1x3
g2=x1x2x3 + x1x2x3 + x1x2x3 +x1x2x3
h=x4x5g1 + x4g1g2 + x4x5g1g2
23
Dekompozycja funkcjonalna
- dekompozycja funkcji w pełni nieokreślonych
Ustalmy, które kolumny są zgodne:
- moment decyzyjny
K0, K1 - sprzeczne
K0, K2 - sprzeczne
K0, K3 - zgodna
K0,K4 - zgodna
K0, K3
K0, K4
K0, K6
K1, K3
K1, K4
K1, K5
K1, K6
K2, K5
K2, K7
K3, K4
K4, K6
K4, K5
K4, K6
K5, K7
K0, K3, K4
K0, K3, K6
K0, K4, K6
K1, K3, K4
K1, K3, K6
K1, K4, K5
K1, K4, K6
K2, K5, K7
K3, K4, K6
K0, K3, K4, K6
K1, K3, K4, K6
K1, K4, K5
K2, K5, K7
Podejmujemy decyzję o rozłącznych
klasach zgodności
f(A, B) = h(a, b, g1(c, d, e), g2(c, d, e))
kolumny powtarzająca się
usuwamy 24
Dekompozycja funkcjonalna
- przykład
K0, K3
K0, K4
K0, K6
K1, K3
K1, K4
K1, K5
K1, K6
K2, K5
K2, K7
K3, K4
K4, K6
K4, K5
K4, K6
K5, K7
K0, K3, K4
K0, K3, K6
K0, K4, K6
K1, K3, K4
K1, K3, K6
K1, K4, K5
K1, K4, K6
K2, K5, K7
K3, K4, K6
K0, K3, K4, K6
K1, K3, K4, K6
K1, K4, K5
K2, K5, K7
K0, K3, K4, K6
K1, K4, K5
K2, K5, K7
K0, K3, K4, K6
K1, K5
K2, K7
25
Niektóre kolumny występują w więcej niż w jednej klasie
zgodności, należy więc podjąć decyzję o wyborze
rozłącznych klas zgodności, każda kolumna musi być
reprezentowana w jednej klasie zgodności
Dekompozycja funkcjonalna
- przykład
• uzyskaliśmy realizację pierwotnej funkcji 5 argumentów w dwóch blokach
• wyjścia bloku g są jednocześnie dodatkowymi wejściami do h
• bloki te mają mniejszą liczbę zmiennych wejściowych
26
Łuba, Tadeusz. Synteza układów logicznych.
Wyższa Szkoła Informatyki Stosowanej i
Zarządzania, 2000
W kwestii uzupełnienia
27
Softprocesor
http://www.xilinx.com/support/documentation/ip_documentation/ug129.pdf 28
Podejście układowe
IP core (ang. Intelectual Property core – rdzeń będący własnością intelektualną) 29
PicoBlzae - procesor 8-bitowy w strukturze FPGA - Ken Chapman (KCPSM3)
KCPSM (Constant(K) Coded Programmable State Machine, lub „Ken Chapman’s PSM”),
• 16-bitowe instrukcje
• 2 cykle zegara na instrukcje
• osobna magistrala danych i programu
• zajmuje 35 CLB (układ Virtex 800 posiada: 4704 CLB)
• może wykonać 35 MIPs (millions instructions per second)
• wykonuje 49 różnych instukcji
• ma 16 rejestrów
• rejestr flag: Carry, Zero
• wewnętrzna pamięć stosu ograniczona do 15 zagnieżdżeń (wywołań funkcji)
PicoBlaze - specyfikacja
30
PicoBlaze jest dostępny w
postaci IP core
Zaleta:
do woli można zmieniać zarówno
oprogramowanie, jak i istniejące
peryferia, łącznie z samym
rdzeniem.
31
• Ise Xilinx WebPack
• Model Sim – symulacja VHDL
• KCPSM3 asembler do PicoBlaze – na podstawie opisu *.asm generuje element pamięci opisany w VHDL
• pBlazeIDE – testowanie, kompilacja
Niezbędne oprogramowani
PicoBlaze po implementacji w układzie Spartan–3E
zajmuje zaledwie 96 slice’ów i jeden blok pamięci BRAM.
Przy takiej implementacji, mikroprocesor może być
taktowany sygnałem zegarowym do 88 MHz (44 MIPS – 44
miliony instrukcji wykonanych w ciągu jednej sekundy) 32
33
Lista instrukcji procesora
PICOBLAZ
34
PicoBlaze
– lista instrukcji - asembler
Program Counter – 10-bitowy, może
przyjmować wartości od 0 do 1023.
Jeśli PC osiągnie maksymalną
wartość, następna instrukcja będzie
wykonana spod adresu 0 (o ile nie
był to skok)
• wszystkie instrukcje wymagają
dwóch cykli zegarowych na ich
wykonanie.
• lista rozkazów obejmuje 49
instrukcji asemblerowych
35
PicoBlaze
- to nic więcej jak dodatkowy komponent
component KCPSM3
port (
address : out std_logic_vector( 9 downto 0);
instruction : in std_logic_vector(17 downto 0);
port_id : out std_logic_vector( 7 downto 0);
write_strobe : out std_logic;
out_port : out std_logic_vector( 7 downto 0);
read_strobe : out std_logic;
in_port : in std_logic_vector(7 downto 0);
interrupt : in std logic;
interrupt_ack : out std_logic;
reset : in std logic;
clk: in std logic;
);
end component; component prog_rom
port(
address : in std_logic_vector( 9 downto 0);
instruction : out std_logic_vector(17 downto 0);
clk : in std_logic
);
end component;
moduł procesora Pico Blaze3
moduł pamięci programu 36
37
PicoBlaze
- architektura
16 – rejestrów ogólnego przeznaczenia ALU
• porty mogą być adresowane bezpośrednio przez instrukcję lub pośrednio przez rejestr
• obsługa przerwania jest bardzo szybka i wymaga jedynie 5 taktów sygnału zegarowego
pamięć programu, synch
38
PicoBlaze
– lista instrukcji - asembler
;**************************************************************************************
; Stale uzyte w programie
;**************************************************************************************
CONSTANT led_signal , 01 ; numer diody LED
CONSTANT led_port_nr , 00 ; numer portu, do ktorego przylaczony jest LED
CONSTANT licznik , 2F ; do ilu bedziemy odliczac aby zmienic stan diody LED
;**************************************************************************************
; Rejestry specjalnego przeznaczenia ;
**************************************************************************************
; s0 ; rejestr użyty do zliczania impulsów
; s1 ; s1 – rejestr z wartością portu – 1
; s2 ; s2 – rejestr z wartością portu – 0
;;=========================================================
__start:
LOAD s1, 01 ; s1 <= 1
LOAD s2, 00 ; s2 <= 0
start:
LOAD s0, licznik ; ustaw licznik
LOAD sA, sA ; instrukcja pusta
petla1:
SUB s0, 01 ; odejmij jeden
COMPARE s0, 00 ; sprawdz, czy zero
JUMP NZ, petla1 ; jesli nie skocz do petla1
OUTPUT s1, led_port_nr ; ustaw sygnal LED_cntrl na „1”
LOAD s0, licznik ; ustaw licznik
petla2:
SUB s0, 01 ; odejmij jeden
COMPARE s0, 00 ; sprawdz, czy zero
JUMP NZ, petla2 ; jesli nie skocz do petla2
OUTPUT s2, led_port_nr ; ustaw sygnal LED_cntrl na „0”
JUMP start ; skocz na poczatek programu
LED_ustaw: process (clk_p, rst)
begin
if (rst = ‚1’)
then LED_cntrl <= ‚0’;
elsif clk_p’event and clk_p=’1’
then
if ((port_id=”00000000”)
and (write_strobe=’1’)) then
LED_cntrl <= out_port(0);
end if;
end if;
end process;
asm#1
asm#2
VHDL
39
40
• Sprawdzenie na żywym organizmie, po wykonaniu syntezy oraz implementacji
Sprawdzenie poprawności działania systemu
Źródło: https://www.element14.com/community/groups/fpga-group/blog/2015/06/17/gradient-filter-implementation-on-fpga-part-3-debugging-in-hdl
https://mil.ufl.edu/3701/DAD/DAD_tutorial.pdf
• Sprawdzenie na żywym organizmie, po wykonaniu syntezy oraz implementacji
Sprawdzenie poprawności działania systemu
Zintegrowany analizator
Chip Scope
43
Wsparcie przy testowaniu funkcjonalności:
• test bench – symulacja,
• ChipScope – podgląd sygnałów
w strukturze (analizator stanów logicznych),
• narzędzie to jest częścią środowiska
projektowego ISE Design Suite
Chip Scope
44
Analizator Chip Scope to 2 moduły: - ILA – analizator logiczny, Integrated Logic Analyzer,
- ICON – kontroler, Integrator Controller.
Chip Scope
45
Au
rora
OPB SDRAM
User Logic
PL
B B
us
OP
B B
us
Bridge OPB GPIO
Arb
iter
46
Chip Scope
Core Generator Core Inserter
ChipScope Pro
Core Generator
Instantiate Cores into
Source HDL
Connect Internal Signals
to Core (in Source HDL)
Synthesize
Implement
Synthesize
ChipScope Pro Core
Inserter (into netlist)
Download and debugging
Using ChipScope Pro software
47
Chip Scope
48
ChipScope
- analiza bezpośrednio w chipie
49
1. Pojęcie syntezy logicznej
2. Na czym polega dekompozycja
4. PicoBlaze – architektura, główne bloki
5. PicoBlaze – informacje ogólne, lista rozkazów, porty, pamięć
6. ChipScope - zastosowanie
Przykładowe pytania
50
Dziękuję za uwagę
51