Les instructions d'affectation sont utilisées pour générer des valeurs sur le net. Et il est également utilisé dans Modélisation des flux de données .
Les signaux de type fil ou de type données nécessitent l'affectation continue d'une valeur. Tant que la batterie +5V est appliquée à une extrémité du fil, le composant connecté à l'autre extrémité du fil obtiendra la tension requise.
Ce concept est réalisé par l'instruction assign où n'importe quel fil ou autre fil similaire (types de données) peut être piloté en continu avec une valeur. La valeur peut être une constante ou une expression comprenant un groupe de signaux.
Syntaxe
La syntaxe d'affectation commence par le mot clé assign, suivi du nom du signal, qui peut être soit un signal, soit une combinaison de différents réseaux de signaux.
Le force d'entraînement et retard sont facultatifs et principalement utilisés pour la modélisation de flux de données plutôt que pour la synthèse dans du matériel réel.
Le signal du côté droit est évalué et attribué au réseau ou à l'expression des réseaux du côté gauche.
assign = [drive_strength] [delay]
Les valeurs de retard sont utiles pour spécifier les retards des portes et sont utilisées pour modéliser le comportement de synchronisation dans le matériel réel. La valeur dicte le moment où la valeur évaluée doit être attribuée au réseau.
Règles
Certaines règles doivent être suivies lors de l'utilisation d'une instruction assign :
- LHS doit toujours être un registre scalaire, vectoriel ou une combinaison de réseaux scalaires et vectoriels, mais jamais un registre scalaire ou vectoriel.
- RHS peut contenir des registres scalaires ou vectoriels et des appels de fonction.
- Chaque fois qu'un opérande sur le RHS change de valeur, LHS sera mis à jour avec la nouvelle valeur.
- Les instructions d'affectation sont également appelées affectations continues.
Attribuer des variables reg
Nous ne pouvons pas conduire ou assigner reg tapez les variables avec une instruction assign car une variable reg est capable de stocker des données et n'est pas pilotée en continu.
Les signaux Reg ne peuvent être pilotés que dans des blocs procéduraux tels que toujours et initial.
Affectation continue implicite
Lorsqu'une instruction assign est utilisée pour attribuer une valeur au réseau donné, cela s'appelle un explicite affectation
Si une tâche à effectuer pendant le réseau est déclarée, elle est appelée une implicite affectation.
Java est nul
wire [1:0] a; assign a = x & y; // Explicit assignment wire [1:0] a = x & y; // Implicit assignment
Conception logique combinatoire
Considérons le circuit numérique suivant constitué de portes combinatoires et le correspondant Verilog code.
La logique combinatoire nécessite que les entrées soient continuellement pilotées pour maintenir la sortie, contrairement aux éléments séquentiels comme les bascules où la valeur est capturée et stockée au bord d'une horloge.
Une instruction assignée satisfait à cet objectif car la sortie o est mise à jour chaque fois que l'une des entrées du côté droit change.
// 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
Schéma du matériel
Après l'élaboration et la synthèse de la conception, un circuit combinatoire se comporte de la même manière que celui modélisé par l'instruction assign.
Le signal o devient 1 chaque fois que l'expression combinatoire sur le RHS devient vraie.
De même, o devient 0 lorsque RHS est faux. La sortie o est X de 0ns à 10ns car les entrées sont X pendant le même temps.