Strumenti Utente

Strumenti Sito


informatica:ae:reti_sequenziali

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Prossima revisione
Revisione precedente
informatica:ae:reti_sequenziali [18/10/2013 alle 08:29 (12 anni fa)] – creata Marco Daneluttoinformatica:ae:reti_sequenziali [18/10/2013 alle 08:55 (12 anni fa)] (versione attuale) Marco Danelutto
Linea 5: Linea 5:
   * definire un modulo sigma che implementa la funzione di transizione dello stato interno   * definire un modulo sigma che implementa la funzione di transizione dello stato interno
   * definire un modulo omega che implementa la funzione delle uscite   * definire un modulo omega che implementa la funzione delle uscite
-  * definire un modulo che al suo interno contenga la definizione del registro di stato come variabile "reg" e che abbia fra i suoi parametri gli ingressi, il segnale di clock e le uscite. +  * definire un modulo che al suo interno contenga la definizione del registro di stato come variabile "reg" e che abbia fra i suoi parametri gli ingressi, il segnale di clock e le uscite. Il modulo:  
 +      * dichiare le uscite del modulo come "reg" 
 +      * dichiara il registro di stato (variabile di tipo "reg" con il numero di bit necessari per contenere lo stato interno)  
 +      * dichiara i wire necessari a collegare l'uscita della rete sigma all'ingresso del registro di stato e l'uscita della rete omega al registro delle uscite 
 +      * crea le istanze della rete omega e della rete sigma utilizzando wire e registro di stato definiti nel modulo  
 +      * in uno statement **initial begin ... end** assegna il valore iniziale al registro di stato e al registro delle uscite 
 +      * in uno statement **always @(negedge clock) begin ... end** (dove //clock// è il nome della variabile di ingresso che porta il segnale di clock) assegna al registro di stato il valore dell'uscita di sigma e al registro delle uscite il valore dell'uscita di omega utilizzando statement <code>var <= val</code> Questo statement di assegnamento ha il significato di effettuare l'assegnamento //in parallelo// agli altri nel blocco.  
 + 
 +==== Esempio ==== 
 + 
 +Supponiamo di voler implementare come rete sequenziale un automa di Mealy che: 
 +  * ha due stati 
 +  * nel primo stato se riceve uno 0 rimane lì e manda in uscita un 1, se riceve un 1 transita nell'altro stato e manda in uscita un 1 
 +  * nel secondo stato, se riceve un 0 rimane lì e manda in uscita uno 0, se riceve un 1 transita nell'altro stato con un uscita a 0.  
 + 
 +=== Rete Omega === 
 +<code> 
 +primitive automa_omega(output z, input s, input x); 
 +  table 
 +   0 0 : 1;  
 +   0 1 : 1;  
 +   1 0 : 0;  
 +   1 1 : 0;  
 +  endtable 
 +endprimitive 
 +</code> 
 + 
 +=== Rete Sigma ===  
 + 
 +<code> 
 +primitive automa_sigma(output z, input s, input x); 
 +  table 
 +   0 0 : 0;  
 +   0 1 : 1;  
 +   1 0 : 0;  
 +   1 1 : 1;  
 +  endtable 
 +endprimitive 
 +</code> 
 + 
 +=== Automa di Mealy === 
 +<code> 
 +module automa_mealy(output reg z, input x, input clock);  
 + 
 +  reg stato;  
 + 
 +  wire uscita_omega;  
 +  wire uscita_sigma;  
 + 
 +  automa_omega omega(uscita_omega, stato, x); 
 +  automa_sigma sigma(uscita_sigma, stato, x); 
 + 
 +  initial 
 +    begin 
 +      stato = 0;  
 +      z=0;  
 +    end 
 + 
 +  always @(negedge clock) 
 +    begin 
 +      stato <= uscita_sigma;  
 +      z     <= uscita_omega; 
 +    end 
 +   
 +endmodule 
 +</code> 
informatica/ae/reti_sequenziali.1382084968.txt.gz · Ultima modifica: 18/10/2013 alle 08:29 (12 anni fa) da Marco Danelutto

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki