Le istruzioni di assegnazione vengono utilizzate per guidare i valori in rete. Ed è anche usato in Modellazione del flusso di dati .
I segnali di tipo filo o un tipo di dati richiedono l'assegnazione continua di un valore. Finché la batteria da +5 V è applicata a un'estremità del cavo, il componente collegato all'altra estremità del cavo riceverà la tensione richiesta.
Questo concetto è realizzato dall'istruzione di assegnazione in cui qualsiasi filo o altro filo simile (tipi di dati) può essere guidato continuamente con un valore. Il valore può essere una costante o un'espressione comprendente un gruppo di segnali.
Sintassi
La sintassi di assegnazione inizia con la parola chiaveassign, seguita dal nome del segnale, che può essere un segnale o una combinazione di diverse net di segnali.
IL forza motrice E ritardo sono opzionali e utilizzati principalmente per la modellazione del flusso di dati piuttosto che per la sintesi in hardware reale.
come convertire da stringa a int
Il segnale sul lato destro viene valutato e assegnato alla rete o all'espressione delle reti sul lato sinistro.
assign = [drive_strength] [delay]
I valori di ritardo sono utili per specificare i ritardi per le porte e vengono utilizzati per modellare il comportamento temporale nell'hardware reale. Il valore determina quando alla rete deve essere assegnato il valore valutato.
Regole
Alcune regole devono essere seguite durante l'uso di un'istruzione di assegnazione:
- LHS dovrebbe sempre essere uno scalare, un vettore o una combinazione di reti scalari e vettoriali, ma mai un registro scalare o vettoriale.
- RHS può contenere registri scalari o vettoriali e chiamate di funzioni.
- Ogni volta che un operando sul lato destro cambia valore, il lato sinistro verrà aggiornato con il nuovo valore.
- Le istruzioni di assegnazione sono anche chiamate assegnazioni continue.
Assegna variabili reg
Non possiamo guidare o assegnare reg digitare le variabili con un'istruzione di assegnazione perché una variabile reg è in grado di archiviare dati e non viene gestita continuamente.
I segnali Reg possono essere guidati solo in blocchi procedurali come sempre e iniziale.
quando è stato inventato il primo computer
Assegnazione continua implicita
Quando un'istruzione di assegnazione viene utilizzata per assegnare un determinato valore alla rete, viene chiamata an esplicito Incarico
Se viene dichiarato un compito da eseguire durante la rete, viene chiamato an implicito Incarico.
wire [1:0] a; assign a = x & y; // Explicit assignment wire [1:0] a = x & y; // Implicit assignment
Progettazione logica combinatoria
Consideriamo il seguente circuito digitale costituito da porte combinatorie e il corrispondente Verilog codice.
La logica combinatoria richiede che gli input siano continuamente guidati per mantenere l'output, a differenza degli elementi sequenziali come le infradito in cui il valore viene catturato e memorizzato al limite di un orologio.
Un'istruzione assegnata soddisfa lo scopo perché l'output o viene aggiornato ogni volta che cambia uno qualsiasi degli input sul lato destro.
// This module takes four inputs and performs a Boolean // operation and assigns output to o. // logic is realized using assign statement. module combo (input a, b, c, d, output o); assign o = ~((a & b) | c ^ d); endmodule
Schema dell'hardware
Dopo l'elaborazione e la sintesi del progetto, un circuito combinatorio si comporta allo stesso modo modellato dall'istruzioneassign.
Il segnale o diventa 1 ogni volta che l'espressione combinatoria sulla destra diventa vera.
Allo stesso modo, o diventa 0 quando RHS è falso. L'uscita o è X da 0ns a 10ns perché gli ingressi sono X nello stesso tempo.