Hardwarová implementace Petriho sítí Vlastní HW implementace a syntéza
Shrnutí minulého projektu Implementace z matice propojení Nevhodné s ohledem na designCPN Umožňuje pouze jednobarevné sítě Neumožňuje násobné hrany Vlastní HW implementace nejde přeložit a tudíž ani implementovat
Naše koncepce HW implementace Implementovat každý blok Petriho sítě jako component a přeložit výstup designCPN Optimalizaci provede návrhový systém Umožňuje implementovat barevné sítě, stačí podle potřeb upravit přechody Umožňuje libovolný počet násobných hran, vše je navrženo obecně pomocí generic
in_width out_width clk res input_netoutput_net output_wr Lze specifikovat šířky portů Plně synchronní Lze specifikovat maximální počet tokenů Počet tokenů = vstup – výstup Lze specifikovat počáteční hodnotu Jeden stav Petriho sítě, blok pn_state
Přechod Petriho sítě, blok pn_exchange input_net input_wr input_width ready fire output_net output_width Pokud jsou všechny vstupy aktivní, ready bude 1 Tento součin lze velmi snadno vyměnit za jiné hradlo a tak změnit funkci sítě Pokud bude fire aktivní, pošle se 1 na všechny výstupy a tak dojde k přechodu
Výsledky syntézy BlokFunc. Gen FGFunc. Gen HDFF exchange(2,2)100 exchange(2,5)110 state(2,2,4)1034 state(3,2,4)1124 state(4,2,4)1754 state(2,3,4)1024 Použit nástroj Leonardo Spectrum Počet dff závisí na šířce registru uvnitř
Testovací síť Přesný přepis sítě pomocí component Postupné očíslování přechodů a stavů, propojovací vodiče označeny podle koncových prvků Nástroj Xillinx Foundation měl potíže se syntézou kvůli velkému počtu generic proměnných
Generátor náhodných čísel Náhodné číslo je generováno 16bitovým polynomem V okamžiku, kdy je potřeba nová volba se přenese hodnota do čítače, a ten provede „rozpočítání“ mezi aktivní vodiče Volba trvá proměnný počet taktů K dispozici je i behaviorální model, kde volba trvá jeden takt Mimo obvyklé porty obsahuje i port clk_en na zpoždění hodin
Top level návrh fire[1:5] clk_en save_LED set =0 slow ready[1:5] test_pn selector LED_decoder LED_ctrl[6:0] slow – zpomalující čítač selector – random generator LED-decoder – výstup na LED test_pn - vlastní síť
Průběh výpočtu clk clk_en save_LED slow Naplnění čítače 00 Výpočet je zpožděnVýpočet probíhá
Závěr Vytvořili jsme funkční implementaci Petriho sítě vhodnou pro překlad Tuto síť jsme implementovali v pokusné aplikaci Další předpokládaná práce je tvorba překladače