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 06:37 (12 anni fa)] – [Definizione mediante espressione dell'algebra booleana] 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 |
| </ | </ | ||
| Lo statement " | Lo statement " | ||
| + | ==== Utilizzo di un modulo rete combinatoria ==== | ||
| + | |||
| + | Un modulo, definito come " | ||
| + | < | ||
| + | | ||
| + | </ | ||
| + | definisce un' | ||
| + | |||
| + | ==== Test di una rete combinatoria ==== | ||
| + | |||
| + | === Definizione del programma di test === | ||
| + | Definiamo un modulo senza parametri, che costituirà il " | ||
| + | All' | ||
| + | * dichiariamo tante variabili di tipo " | ||
| + | * dichiariamo tanti variabili di tipo " | ||
| + | * dichiariamo un' | ||
| + | * dichiariamo il corpo del programma che testerà il nostro modulo, indicandolo fre le parole chiave " | ||
| + | * diamo delle direttive che indicano dove deve essere salvato il risultato della simulazione del nostro modulo (cioè l' | ||
| + | * assegnamo valori alle variabili di ingresso (reg) utilizzando statement tipo < | ||
| + | * eventualmente assegnamo altri valori alle varibili con uno statement < | ||
| + | * dichiariamo la fine della simulazione con la direttiva < | ||
| + | |||
| + | === Listato del programma di prova === | ||
| + | |||
| + | < | ||
| + | module prova_commutatoreDueVie2bit(); | ||
| + | |||
| + | |||
| + | wire [1: | ||
| + | | ||
| + | reg a; // Parte II | ||
| + | reg [1:0]x1; | ||
| + | reg [1:0]x2; | ||
| + | | ||
| + | commutatoreADueVie2bit K1(zz, | ||
| + | | ||
| + | initial | ||
| + | begin | ||
| + | |||
| + | | ||
| + | | ||
| + | |||
| + | |||
| + | x1 = 2' | ||
| + | x2 = 2' | ||
| + | // 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 | ||
| + | |||
| + | #10 x2 = 2' | ||
| + | |||
| + | #10 $finish; | ||
| + | end | ||
| + | | ||
| + | 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.1382078260.txt.gz · Ultima modifica: 18/10/2013 alle 06:37 (12 anni fa) da Marco Danelutto
