Metody projektowania i algorytmy syntezy logicznej

Moje prace w tej dziedzinie obejmują opracowywanie algorytmów umożliwiających efektywne projektowanie systemów cyfrowych (i nie tylko). Zagadnienia, którymi się zajmuję to m.in.:

  • syntezy układów kombinacyjnych dla struktur programowalny FPGA
  • syntezy automatów FSM dla struktur programowalny FPGA,
  • syntezy filtrów FIR w strukturach FPGA,
  • realizacji układów rewersyjnych,
  • realizacji sieci neuronowych.

Czytaj dalej „Metody projektowania i algorytmy syntezy logicznej”

Tworzenie uniwersyteckich systemów do syntezy logicznej

W ramach pracy naukowej zajmuje się także tworzeniem programów do wspomagania projektowania systemów cyfrowych. Są to programy do:

  • syntezy logicznej (najnowsze rozwiązania i pomysły z dziedziny syntezy wielopoziomowej i optymalizacji),
  • translacji pomiędzy różnymi formatami danych,
  • wizualizacji wyników,
  • badania algorytmów dla celów porównania i pomocy przy realizacji sprzętowej

Wykorzystuję do tego celu bibliotekę klas stworzonych przeze mnie i oprogramowanych w język C++.

Tematyka zajęć laboratoryjnych

Tematyka ćwiczeń

Ćwiczenie 0. Wykład wprowadzający IMIO, IRE, IT

Ćwiczenie 1. IRE Synteza układów kombinacyjnych w technologii PLD/FPGA. Realizacja podstawowych kombinacyjnych bloków funkcjonalnych. Realizacja układów arytmetycznych: sumatory, komparatory.

Ćwiczenie 2. IRE Synteza układów sekwencyjnych w technologii PLD/FPGA. Realizacja uniwersalnych rejestrów. Realizacja automatów FSM. Minimalizacja i kodowanie stanów. Realizacja liczników (różne tryby pracy, liczniki modulo n, itp.).

Ćwiczenie 3. IMIO Automaty stanów. Liczniki. Rejestry.  Model VHDL zawierający wiele procesów. Synteza logiczna w stylu komórek standardowych.

Ćwiczenie 4. IMIO Modelowanie hierarchiczne złożonych układów cyfrowych. Komunikacja pomiędzy komponentami za pomocą magistrali 3-stanowej. Synteza logiczna i synteza topografii w stylu komórek standardowych.

Ćwiczenie 5. IT Synteza RTL wybranego algorytmu. Wykorzystanie algorytmicznych maszyn stanów ASM i algorytmicznych maszyn stanów ze ścieżką  przepływu danych ASMD w projektowaniu układów cyfrowych. Wykorzystanie operacji realizowanych w trybie Mealy’ego i Moore’a. Wykorzystanie koncepcji współdzielenia zasobów.

Ćwiczenie 6. IT Synteza strukturalna wybranego algorytmu. Realizacja ukłądu sterującego US i układu operacyjnego UO. Wykorzystanie algorytmicznych maszyn stanów ASM do realizacji US w postaci automatu FSM.

Ćwiczenie 7. IT Zaawansowane procedury syntezy. Zastosowanie dekompozycji funkcjonalnej i redukcji argumentów w realizacji układów kombinacyjnych. Zastosowanie układów modyfikacji adresu i symbolicznej dekompozycji funkcjonalnej w realizacji automatów.

Ćwiczenie 8. IT Projektowanie układów DSP. Realizacji filtrów cyfrowych w strukturze szeregowej i metodł arytmetyki rozproszonej. Wykorzystanie specjalizowanych modułów wbudowanych DSP. Wykorzystanie koncepcji zrównoleglenia obliczeń. Zastosowanie dekompozycji funkcjonalnej w syntezie bloku arytmetyki rozproszonej.

Ćwiczenie 9. Termin rezerwowy.

Dydaktyka

W tej część serwisu znajdują się informacje dotyczące mojej pracy dydaktycznej. Obejmuje ona prowadzenie wykładów, projektów oraz opiekę nad studentami realizującymi prace dyplomowe.

Umieszczam tu plansze do poszczególnych wykładów oraz materiały przydatne w nauce tych przedmiotów. Znaleźć tu można także materiały przydatne w realizowaniu projektów.

Laboratorium 5 – instrukcja

Zadanie

Realizacja iteracyjnego algorytmu wyznaczania metodą Newtona przybliżonej wartości pierwiastka funkcji  f(x) =  a * x 2 – b

Współczynniki a i b dla grup podane są w tabeli

Nr. grupy 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
a 11 15 21 17 15 17 13 19 27 21 26 23 24 25 26 17 12 16 17 18
b 76 89 91 97 77 99 96 89 87 88 86 77 87 89 99 87 66 78 89 76

Do realizacji można wykorzystać projekt dla narzędzia Quartus2 umieszczony w materiałach do laboratorium. W realizacji poszczególnych etapów pomocne może być użycie predefiniowanych ustawień projektu tzw. Revions:

  • fnext
  • lab5
  • top_lab5

Etapy ćwiczenia

  1. Realizacja funkcji kombinacyjnej fnext (x) = x  – f(x) / f'(x)                (3 pkt.)

    • podać wyrażenie opisujące funkcję
    • funkcję podzielić na działania składowe z uwzględnieniem szerokości ścieżek na poszczególnych etapach przetwarzania danych przy założeniu, że x jest reprezentowane w kodzie NKB na 8 bitach
    • zweryfikować poprawność realizacji poszczególnych kroków przetwarzania w arkuszu kalkulacyjnym, np. EtherCalc (pokazać na czym polega zbieżność funkcji do oczekiwanej wartości, w ilu krokach funkcja zbiega do miejsca zerowego jeżeli na wejściu w pierwszym kroku jest wartość 10)
      UWAGA! W arkuszu pokazać także wyniki działań składowych
    • opisać funkcję fnext (x) w języku VHDL, przeprowadzić kompilację i podać liczbę wymaganych zasobów (liczb komórek, bloków DSP, bitów pamięci)
      UWAGA! Bloki realizujące operacje mnożenia i dzielenia zrealizować z wykorzystaniem narzędzia MegaWizard. Modyfikacje takich bloków także dokonywać z wykorzystaniem narzędzia MegaWizard. NIE edytować plików wygenerowanych przez to narzędzie.
    • za pomocą symulacji pokazać i porównać otrzymane wyniki z oczekiwanymi z arkusza.
  2. Realizacja algorytmu zadanego siecią ASMD                                  (0,5 pkt.)

    • wykorzystać funkcję z poprzedniego etapu
    • za pomocą symulacji zweryfikować poprawność realizacji funkcji w układzie sekwencyjnym
  3.  Uruchomienie zadania na płytce laboratoryjnej                             (0,5 pkt.)
    • pokazać poprawność działania dla różnych wartości wejściowych
  4. Realizacja algorytmu dla liczb stałoprzecinkowych                        (1 pkt.)
    • zmodyfikować opis funkcji fnext (x) by operowała na wartości x reprezentowanej w formacie U2Fix5.3 albo w kodzie NKB na 10 bitach
    • uruchomić na platformie DE-115

1. Układy cyfrowe – rola i zastosowanie

Plansze przedstawiają rozwój techniki cyfrowej i jej wpływ na dziedziny życia. Naszkicowano podstawowe zagadnienia z nią związane. Zaprezentowano podział układów na różne rodziny ze szczególnym uwzględnieniem struktur programowalnych. Wykład prezentuje porównanie technologi układów programowalnych i full(semi)-custom (cechy, obszary zastosowań oraz etapy procesu projektowego).