Tesi Robotica Un co-processore per Stereo-Matching: Architettura | Page 32

i i “LP_Tesi” — 2011/9/9 — 21:20 — page 32 — #32 i 2.1. COSTRUTTI PRINCIPALI i 32 Value before-x:0 Value after-x:0 Value before-y:0 Value after-y:1 Hello World! Value of x:0 -------------Value before-x:1 Value after-x:1 Value before-y:0 Value after-y:1 Hello World! Value of x:1 -------------Value before-x:2 Value after-x:2 Value before-y:0 Value after-y:1 Hello World! Value of x:2 -------------- Figura 2.1.1: Output del programma il processo di sintesi dato che ovviamente l’FPGA non ha modo di stampare a schermo delle stringhe. Un’altra chiamata importante è $finish(0), che combinata con un contatore di cicli di clock permette agilmente l’interruzione della simulazione evitando così di bloccare la macchina su cui gira bluespec. Ogni modulo deve essere preceduto dalla parola chiave: (* synthesize *) nel caso in cui lo si voglia effettivamente sintetizzare su di un FPGA reale. Esistono molte di queste parole chiavi, per lo più si riferiscono alla gestione dei conflitti tra regole. Ad esempio ci si potrebbe trovare nella situazione in cui due regole che vengono eseguite nello stesso ciclo di clock tentano di modificare il contenuto di un registro nello stesso istante, ciò ovviamente genera un conflitto che può essere risolto o dando la precedente di una sull’altra o permettendole di essere eseguite una alla volta in differenti cicli di clock. Per fare quest’ultima cosa sia alle regole che ai metodi può essere impostata una così detta regola di fire, come se si utilizzasse un if, che in base a precise condizioni decide se un metodo o una regola possano essere eseguite durante un certo ciclo di clock. i i i i