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