.. _l01-intro: ====================================== Laboratorium 1: wprowadzenie do nMigen ====================================== Data: 20.10.2020 .. toctree:: .. contents:: nMigen ====== nMigen jest narzÄdziem do tworzenia ukĹadĂłw logicznych w jÄzyku Python. Nie jest ĹciĹle rzecz biorÄ c jÄzykiem opisu sprzÄtu, choÄ w praktyce moĹźe byÄ tak uĹźywany. Aby opisaÄ ukĹad logiczny w narzÄdziu nMigen, naleĹźy stworzyÄ klasÄ dziedziczÄ cÄ z typu ``Elaboratable``, ktĂłra ma metodÄ ``elaborate``, ktĂłra zwrĂłci instancjÄ klasy ``Module`` zawierajÄ cÄ naszÄ logikÄ. Takie klasy mogÄ rekurencyjnie instancjonowaÄ inne klasy (i moduĹy), by stworzyÄ hierarchiczny ukĹad logiczny. MajÄ c takÄ klasÄ, moĹźemy jÄ zinstancjonowac by stworzyÄ nasz ukĹad logiczny i uĹźyÄ go na jeden z kilku sposobĂłw: - przekonwertowaÄ go na jÄzyk Verilog, by uĹźyÄ go z narzÄdzami producenta - spiÄ Ä nMigen z syntezatorem yosys, by mĂłc uĹźywaÄ moduĹĂłw nMigena z kodu napisanego w Verilogu (i na odwrĂłt) - uruchomiÄ symulator wbudowany w nMigen i testowaÄ nasz moduĹ za pomocÄ kodu Pythona Instalacja narzÄdzi ------------------- Instalujemy ``gtkwave`` i ``xdot`` (powinno byÄ w repozytorium paczek dystrybucji). Instalujemy yosysa w wersji 0.9 lub z gita:: git clone git@github.com:YosysHQ/yosys.git cd yosys make -j4 sudo make install Instalujemy nMigen:: pip3 --user install nmigen PrzykĹad -------- PrzykĹadowy moduĹ nMigena wraz z przykĹadowym uĹźyciem symulatora moĹźna znaleĹşÄ tutaj: :download:`counter.py`. Generowanie Veriloga:: python counter.py verilog > counter.v Generowanie RTLIL:: python counter.py rtlil > counter.il Wizualizacja (yosys):: yosys counter.il -p 'proc; clean; show' Synteza na Xilinxa (yosys):: yosys counter.il -p 'synth_xilinx -edif counter.edif' Uruchomienie symulacji:: python counter.py simulate Wizualizacja symulacji:: gtkwave ctr.vcd