Programowanie Układów Logicznych kod kursu: ETD6203 Optymalizacja procesu syntezy logicznej, PicoBlaze, ChipScope W12 22.05.2019 mgr inż. Maciej Rudek opracował: dr inż. Daniel Kopiec
Plan wykładu Synteza logiczna Optymalizacja procesu syntezy Dekompozycja w wariancie ogólnym SOFTPROCESOR PicoBlaze ChipScope Podsumowanie przykładowe pytania 2
Synteza logiczna - znaczenie pojęcia 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 4
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 5 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.
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 6
CPLD vs FPGA CPLD minimalizacja dwupoziomowa, odwzorowanie technologiczne w sieci bloków PAL, PLA 7 FPGA dekompozycja, przyporządkowanie wyrażeń do poszczególnych bloków LUT, rozmieszczenie bloków w strukturze,
Sieć dwupoziomowa Sieć wielopoziomowa 8
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ść 9 Rodzaje dekompozycji: kolumnowa, wierszowa, funkcjonalna, równoległa, szeregowa, zrównoważona. PAL, PLA, CPLD FPGA
Dekompozycja - ukierunkowana na układy FPGA Bloki LUT mające n LUT wejść umożliwiają realizację n-argumentowej funkcji, gdy spełniony jest warunek: n LUT n, gdy, n LUT < 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. 10
11 Jak to działa
Dekompozycja zrównoważona dekompozycja równoległa szeregowa 12 y=h(x 1, G(X 2 ))
Dekompozycja - cel 13 Znaczenie praktyczne dekompozycji wynika z konstrukcji typowych struktur programowalnych jakimi są układy FPGA.
Podejście klasyczne - minimalizacja funkcji boolowskich Metody minimalizacji funkcji boolowskich 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) 14
Efekt dekompozycji 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. 15 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
Podejście klasyczne - minimalizacja funkcji boolowskich Kanoniczna postać sumy (suma iloczynów AND-OR y=x 1 x 2 + x 3 x 1 ) Kanoniczna postać iloczynów (iloczyn sum OR-AND y=(x 1 +x 2 )( x 3 +x 1 )) 16
17 Podejście klasyczne - minimalizacja funkcji boolowskich
Dekompozycja funkcjonalna - metoda klasyczna podstawowe twierdzenie 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(g 1 (B)), g j (B), A) v(a B) 2 j v(a B) 2 j - złożoność kolumnowa A, B zbiór wolny, zbiór związany B A 18
Dekompozycja funkcjonalna - metoda klasyczna tablica dekompozycji 2 powtarzające się wzorce kolumn, istnieje dekompozycja, zmienne x 1, x 2, x 3 zostają przeadresowane g 1, g 2 A = {x 4, x 5 } B = {x 1, x 2, x 3 } f(a, B) = h(x 4, x 5, g 1 (x 1, x 2, x 3 ), g 1 (x 1, x 2, x 3 )) 19 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)
Dekompozycja funkcjonalna - metoda klasyczna wstawiamy nowe adresy {(0, 0, 1), (0, 1, 0), (1, 0, 0)} {(1, 1, 0), (1, 0, 1), (0, 1, 1)} istnieje dekompozycja Zmienne {x 1, x 2, x 3 } zostają przeadresowana na {g 1, g 2 } 20 Tablica opisuje dekompozycję funkcji g
Dekompozycja funkcjonalna - metoda klasyczna kolumny zgodne są sklejane kodowanie może być dowolne 21 Tablica opisuje dekompozycję funkcji h
Dekompozycja funkcjonalna - metoda klasyczna określenie funkcji g, h dekompozycja g dekompozycja h g 1 g 2 h 22 g 1 =x 1 x 2 + x 2 x 3 + x 1 x 3 g 2 =x 1 x 2 x 3 + x 1 x 2 x 3 + x 1 x 2 x 3 +x 1 x 2 x 3 h=x 4 x 5 g 1 + x 4 g 1 g 2 + x 4 x 5 g 1 g 2
Dekompozycja funkcjonalna - dekompozycja funkcji w pełni nieokreślonych K0, K3 K0, K4 K0, K6 23 Ustalmy, które kolumny są zgodne: - moment decyzyjny K0, K1 - sprzeczne K0, K2 - sprzeczne K0, K3 - zgodna K0,K4 - zgodna Podejmujemy decyzję o rozłącznych klasach zgodności f(a, B) = h(a, b, g 1 (c, d, e), g 2 (c, d, e)) 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 kolumny powtarzająca się usuwamy
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 K0, K3, K4 K0, K3, K6 K0, K4, K6 K1, K3, K4 K1, K3, K6 K1, K4, K5 K1, K4, K6 K2, K5, K7 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 24 K4, K5 K4, K6 K5, K7 K3, K4, K6 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 25 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
W kwestii uzupełnienia Łuba, Tadeusz. Synteza układów logicznych. Wyższa Szkoła Informatyki Stosowanej i Zarządzania, 2000 26
Softprocesor 27 http://www.xilinx.com/support/documentation/ip_documentation/ug129.pdf
Podejście układowe 28 IP core (ang. Intelectual Property core rdzeń będący własnością intelektualną)
PicoBlaze - specyfikacja 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 29 wewnętrzna pamięć stosu ograniczona do 15 zagnieżdżeń (wywołań funkcji)
PicoBlaze jest dostępny w postaci IP core 30 Zaleta: do woli można zmieniać zarówno oprogramowanie, jak i istniejące peryferia, łącznie z samym rdzeniem.
Niezbędne oprogramowani 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 31 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 PICOBLAZA
PicoBlaze lista instrukcji - asembler lista rozkazów obejmuje 49 instrukcji asemblerowych wszystkie instrukcje wymagają dwóch cykli zegarowych na ich wykonanie. 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) 34
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: ); end component; in std logic; moduł procesora Pico Blaze3 moduł pamięci programu 35 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;
36
PicoBlaze - architektura pamięć programu, synch 37 16 rejestrów ogólnego przeznaczenia 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 ALU
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 ; ************************************************************************************** start: ; s0 ; rejestr użyty do zliczania impulsów ; s1 ; s1 rejestr z wartością portu 1 ; s2 ; s2 rejestr z wartością portu 0 ;;========================================================= LED_ustaw: process (clk_p, rst) VHDL 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; 38 asm#1 LOAD s1, 01 ; s1 <= 1 LOAD s2, 00 ; s2 <= 0 asm#2 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
39
Zintegrowany analizator Chip Scope 40
Chip Scope 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 41
Chip Scope Analizator Chip Scope to 2 moduły: - ILA analizator logiczny, Integrated Logic Analyzer, - ICON kontroler, Integrator Controller. 42
Arbiter OPB Bus Aurora User Logic OPB GPIO Bridge PLB Bus OPB SDRAM 43
Chip Scope Core Generator ChipScope Pro Core Generator Instantiate Cores into Source HDL Connect Internal Signals to Core (in Source HDL) Core Inserter Synthesize ChipScope Pro Core Inserter (into netlist) Synthesize Implement 44 Download and debugging Using ChipScope Pro software
45 Chip Scope
ChipScope - analiza bezpośrednio w chipie 46
Przykładowe pytania 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ęć 47 6. ChipScope - zastosowanie