110 likes | 327 Views
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.
E N D
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
Jeden stav Petriho sítě, blok pn_state in_width input_net output_net out_width res output_wr clk • 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
Přechod Petriho sítě, blok pn_exchange • 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 input_width input_net ready input_wr fire output_net output_width
Výsledky syntézy • 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 selector • slow – zpomalující čítač • selector – random generator • LED-decoder – výstup na LED • test_pn - vlastní síť slow clk_en =0 set save_LED LED_ctrl[6:0] ready[1:5] fire[1:5] test_pn LED_decoder
Průběh výpočtu clk save_LED Naplnění čítače slow 0 0 clk_en Výpočet probíhá Výpočet je zpožděn
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