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