Tesi Robotica Analisi, progettazione e implementazione... | Page 86

i i “LP_Tesi” — 2013/10/17 — 18:27 — page 86 — #86 i 86 i 4. VERILOG E BLUESPEC SYSTEMVERILOG Il linguaggio distingue tra caratteri maiuscoli e caratteri minuscoli, ha un preprocessore come il C, e le maggiori parole chiave di controllo del flusso del programma, come "if" e "while", sono uguali al C. La formattazione delle procedure di stampa, gli operatori del linguaggio e la loro precedenza sono simili al C. Tuttavia essendo un linguaggio di programmazione hardware si differenzia notevolmente sul flusso d’esecuzione del programma. Come si può vedere dal primo esempio di Hello World (Alg:4.1), è necessario innanzitutto utilizzare il costrutto module, questo costrutto identifica appunto un modulo. Algoritmo 4.1 “Hello World!” in Verilog 1 2 3 4 5 6 7 module tb; initial begin $display("Hello world!"); $finish; end endmodule Un modulo rappresenta una unità combinatoria-sequenziale con porte in uscita ed in ingresso attraverso il quale è possibile costruire sistemi più o meno complessi. Nello Hello World presentato è possibile osservare inoltre la presenza del costrutto initial, questo costrutto (non sintetizzabile) viene utilizzato principalmente nei moduli cosiddetti di “test bench”, ovvero banchi di prova in cui altri moduli che devono essere poi posizionati su dispositivi fisici vengono testati e sottoposti a vari stimoli per controllare il corretto funzionamento dell’intero programma. A meno che un costrutto non contenga una sola istruzione la grammatica del linguaggio impone l’utilizzo delle keyword begin-end per delimitare il contenuto, come si vedrà questa regola vale anche per i blocchi if, else if, for, ecc... Il blocco initial come detto è un costrutto particolare, infatti al contrario del blocco always che verrà mostrato fra poco viene eseguito una sola volta al primo ciclo di clock della simulazione. Quindi tutto ciò che vi si trova dentro, come per esempio l’inizializzazione dei registri, viene eseguito solo una volta all’inizio della esecuzione. In questo caso il programma visualizzerà a schermo la stringa "Hello world!" e terminerà. Questo comportamento è dettato dalle direttive di simulazione $display() e $finish(). Il file contenente questo codice per essere simulato deve essere compilato, attual- i i i i