informatica:ae:reti_combinatorie
Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
Entrambe le parti precedenti la revisioneRevisione precedenteProssima revisione | Revisione precedente | ||
informatica:ae:reti_combinatorie [18/10/2013 alle 07:01 (12 anni fa)] – [Test di una rete combinatoria] Marco Danelutto | informatica:ae:reti_combinatorie [18/10/2013 alle 08:26 (12 anni fa)] (versione attuale) – [Test di una rete combinatoria] Marco Danelutto | ||
---|---|---|---|
Linea 12: | Linea 12: | ||
< | < | ||
| | ||
- | end primitive | + | endprimitive |
</ | </ | ||
Il nome del modulo è una stringa qualunque. La lista dei parametri dichiara un parametro come | Il nome del modulo è una stringa qualunque. La lista dei parametri dichiara un parametro come | ||
Linea 25: | Linea 25: | ||
primitive commutatoreADueVie32(output z, input x, input y, input alpha); | primitive commutatoreADueVie32(output z, input x, input y, input alpha); | ||
... | ... | ||
- | end primitive | + | endprimitive |
</ | </ | ||
- | La parola chiave che definisce il tipo del parametro, in input o in output, può essere indicata una sola volta prima della lista dei parametri formali che hanno quel tipo. Ad esempio, l' | ||
- | < | ||
- | primitive commutatoreADueVie32(output z, input x, y, alpha); | ||
- | ... | ||
- | end primitive | ||
- | </ | ||
Per prassi, i parametri di output si indicano prima di quelli di input. | Per prassi, i parametri di output si indicano prima di quelli di input. | ||
Linea 39: | Linea 33: | ||
=== Corpo del modulo === | === Corpo del modulo === | ||
- | Si definisce una tabella di verità di n variabili di ingresso e una variabile di uscita elencando righe di n valori delle variabili separate da spazi seguite dai due punti, dal valore corrispondente della variabile di uscita e dal punto e virgola fra le parole chiave " | + | Si definisce una tabella di verità di n variabili di ingresso e una variabile di uscita elencando righe di n valori delle variabili separate da spazi seguite dai due punti, dal valore corrispondente della variabile di uscita e dal punto e virgola fra le parole chiave " |
< | < | ||
table | table | ||
Linea 46: | Linea 40: | ||
1 0 : 1 ; | 1 0 : 1 ; | ||
1 1 : 1 ; | 1 1 : 1 ; | ||
- | end table | + | endtable |
</ | </ | ||
definisce l'OR di due variabili da un bit. | definisce l'OR di due variabili da un bit. | ||
Linea 54: | Linea 48: | ||
Ad esempio: | Ad esempio: | ||
< | < | ||
- | primitive k(output z, input alpha, x, y); | + | primitive k(output z, input alpha, |
table | table | ||
0 1 ? : 1; | 0 1 ? : 1; | ||
Linea 60: | Linea 54: | ||
1 ? 1 : 1; | 1 ? 1 : 1; | ||
1 ? 0 : 0; | 1 ? 0 : 0; | ||
- | | + | |
- | end primitive | + | endprimitive |
</ | </ | ||
definisce il commutatore a due vie da un bit. | definisce il commutatore a due vie da un bit. | ||
Linea 73: | Linea 67: | ||
< | < | ||
| | ||
- | end module | + | endmodule |
</ | </ | ||
Il nome del modulo è una stringa qualunque. La lista dei parametri dichiara un parametro come | Il nome del modulo è una stringa qualunque. La lista dei parametri dichiara un parametro come | ||
< | < | ||
- | | + | |
</ | </ | ||
dove le dimensioni in bit vengono date con un' | dove le dimensioni in bit vengono date con un' | ||
< | < | ||
- | | + | input [1:0]alpha |
</ | </ | ||
indica una variabile in ingresso da due bit, il cui bit più significativo è | indica una variabile in ingresso da due bit, il cui bit più significativo è | ||
Linea 94: | Linea 88: | ||
Esempio di definizione di un modulo commutatore a due vie con ingressi da 2 bit: | Esempio di definizione di un modulo commutatore a due vie con ingressi da 2 bit: | ||
< | < | ||
- | module commutatoreADueVie2bit(output | + | module commutatoreADueVie2bit(output [1:0]z, input [1:0]x, input [1:0]y, input alpha); |
... | ... | ||
- | end module | + | endmodule |
</ | </ | ||
Linea 107: | Linea 101: | ||
Dunque il commutatore di cui abbiamo dato l' | Dunque il commutatore di cui abbiamo dato l' | ||
< | < | ||
- | module commutatoreADueVie2bit(output | + | module commutatoreADueVie2bit(output [1:0]z, input [1:0]x, input [1:0]y, input alpha); |
| | ||
| | ||
- | end module | + | endmodule |
</ | </ | ||
Linea 126: | Linea 120: | ||
==== Test di una rete combinatoria ==== | ==== Test di una rete combinatoria ==== | ||
+ | |||
+ | === Definizione del programma di test === | ||
Definiamo un modulo senza parametri, che costituirà il " | Definiamo un modulo senza parametri, che costituirà il " | ||
All' | All' | ||
Linea 136: | Linea 132: | ||
* eventualmente assegnamo altri valori alle varibili con uno statement < | * eventualmente assegnamo altri valori alle varibili con uno statement < | ||
* dichiariamo la fine della simulazione con la direttiva < | * dichiariamo la fine della simulazione con la direttiva < | ||
+ | |||
+ | === Listato del programma di prova === | ||
< | < | ||
- | module | + | module |
- | wire zz[1: | + | wire [1:0]zz; // Parte I |
| | ||
- | reg a, x1[1:0], x2[1: | + | reg a; // Parte II |
+ | reg [1:0]x1; | ||
+ | reg [1:0]x2; | ||
| | ||
commutatoreADueVie2bit K1(zz, | commutatoreADueVie2bit K1(zz, | ||
Linea 154: | Linea 154: | ||
- | x = 2b00; // Parte VI | + | x1 = 2'b00; // Parte VI |
- | y = 2b11; | + | x2 = 2'b11; // 2'bxx indica un numero binario (per via del b) di due cifre |
- | a = 0; | + | // per via del 2' con valore xx |
+ | // 2'hff denoterebbe 255 in decimale (due cifre esadecimali (h)) | ||
+ | | ||
+ | a = 0; // 0 è inteso come decimale | ||
#5 a = 1; // PArte VII | #5 a = 1; // PArte VII | ||
- | # | + | # |
- | | + | #10 $finish; // Parte VIII |
end | end | ||
| | ||
- | end module | + | endmodule |
</ | </ | ||
+ | |||
+ | === Compilazione === | ||
+ | |||
+ | Si compila il programma di test insieme a tutti i file che contengono i moduli instanziati nel test con il comando < | ||
+ | |||
+ | |||
+ | === Run del test === | ||
+ | Si fa girare la simulazione del test eseguendo il programma compilato al passo precedente | ||
+ | < | ||
+ | |||
+ | === Visualizzazione dei risultati === | ||
+ | Si visualizzano i risultati invocando gtkwave sul file indicato nella dumpfile | ||
+ | < | ||
+ | |||
+ | In particolare, | ||
+ | |||
+ | {{: | ||
informatica/ae/reti_combinatorie.1382079709.txt.gz · Ultima modifica: 18/10/2013 alle 07:01 (12 anni fa) da Marco Danelutto