Tesi Robotica Analisi, progettazione e implementazione... | Page 90
i
i
“LP_Tesi” — 2013/10/17 — 18:27 — page 90 — #90
i
90
i
4. VERILOG E BLUESPEC SYSTEMVERILOG
che vanno in input al contatore verranno messi tutti a 0. Successivamente dopo
#3 cicli di clock il segnale di reset passa a 1 in modo da resettare il circuito e
impostare il valore del contatore a 0, prima di questo momento nessun valore
è stato assegnato al contatore, al ciclo di clock successivo (#1) il reset viene
riposizionato a 0 permettendo il normale incremento del modulo.
Finalmente possiamo compilare il tutto, ammettendo che il modulo contatore
di Alg:4.2 risieda nel file counter.v e che il test bench risieda nel file tb.v,
basterà utilizzare icarus verilog nel seguente modo:
1
iverilog counter.v tb.v -o count
producendo così un file eseguibile di nome count, il risultato dell’esecuzione è
mostrato in Alg:4.4.
Come si può vedere al primo ciclo di clock tutti i registri di input sono messi a
0, mentre il contatore presenta il valore x, tale valore indica che il registro non è
stato inizializzato e che quindi una volta messo su hardware mostrerà un valore
casuale compreso nel range di valori possibili. Dopo 3 cicli di clock il reset viene
attivato e successivamente disattivato permettendo al contatore di inizializzarsi,
da questo punto in poi sarà compito del clock far scattare l’incremento, questo
a condizione che il flag di enable sia attivo, infatti guardando meglio il risultato,
Algoritmo 4.4 Output del test bench
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
clock=0,
clock=1,
clock=0,
clock=1,
clock=0,
clock=1,
clock=0,
clock=1,
clock=0,
clock=1,
clock=0,
clock=1,
clock=0,
clock=1,
clock=0,
clock=1,
reset=0,
reset=0,
reset=0,
reset=1,
reset=0,
reset=0,
reset=0,
reset=0,
reset=0,
reset=0,
reset=0,
reset=0,
reset=1,
reset=1,
reset=1,
reset=1,
enable=0,
enable=0,
enable=0,
enable=0,
enable=0,
enable=1,
enable=1,
enable=0,
enable=0,
enable=1,
enable=1,
enable=1,
enable=1,
enable=1,
enable=1,
enable=1,
count=
count=
count=
count=
count=
count=
count=
count=
count=
count=
count=
count=
count=
count=
count=
count=
x
x
x
0
0
1
1
1
1
2
2
3
0
0
0
0
i
i
i
i