Apprendre Verilog : Une brève série de didacticiels sur la conception électronique numérique FPGA et Verilog HDL (20 / 21 étapes)

Étape 20 : VM 4.3 : If/Else en Verilog

Ce Module de tutoriel est mieux terminé après une solide compréhension du Module 4.2 concernant les déclarations de blocage et non-blocage.

If/Else instructions en Verilog sont extrêmement utiles lorsqu’il est utilisé correctement.  Tout d’abord jeter un oeil à quelques règles que vous devez suivre pour If/Else instructions en Verilog :

1. tous les If/Else instructions doivent être situées à l’intérieur d’une toujours bloquer
2. toutes les valeurs définies par un If/Else instruction doit être de type reg
3. Si vous affectez plusieurs reg, utilisez « début » et « fin » pour définir la portée de l’If/Else. Qu’une seule déclaration ? Alors ne vous inquiétez pas à ce sujet. Mais de toute façon finir chaque ligne interne d’un If/Else avec un point-virgule (un point-virgule ne suivra jamais une déclaration « commencer » ou « fin »).
4. utiliser des opérateurs de comparaison avec 2 symboles dans des conditions (c'est-à-dire "& &" et « == » et "! =")

Fondamentalement, c’est tout là est à lui. Si votre code vous donne toujours des questions, renvoyer à ces quatre règles et posez-vous la question suivante, « Mon code respecte ces règles? ».

En Verilog, nous arrivons à utiliser des instructions conditionnelles base trois : if, else et else if. Avant d’arriver à utiliser ceux-ci cependant, il faut aller sur la façon d’affecter des valeurs aux Règl.

Nous savons qu’un reg est comme un fil qui peut avoir sa propre source, autrement dit, un fil qui permet de générer sa propre valeur. Nous savons aussi que nous pouvons avoir bus regs et regs unique.

Vous pouvez utiliser un reg comme vous le feriez une variable en C/C++ ; il stocke sa valeur jusqu'à explicitement modifié :

Reg myReg ;
myReg = 1' b1 ; blocage
myReg < = 1' b0 ; non-bloquante

Ceci définit le reg à haute tension logique puis en tension de la logique. Toutefois, les valeurs assignées à regs ne doivent se faire à l’intérieur d’un bloquer toujours à moins que vous ne changera jamais sa valeur. Si vous avez juste besoin, par exemple, un fil logique constante, vous pouvez donner un reg une valeur en dehors de le toujours bloquer.

Assignation (n’égalise au mot-clé assign) une valeur à un reg nécessite le format suivant pour le côté gauche de l’instruction :

< nom du reg >< opérateur equals (= ou < =) >

Et pour le côté droit (la valeur) :

< largeur de bus > ' < type valeur >< valeur >

Ceci est important car la largeur de la reg doit correspondre exactement à la largeur de la valeur. Il y a beaucoup de différents types de valeurs que nous pouvons attribuer à la reg, comme binaire, hexadécimal et décimal (dénommés en Verilog b, h et d respectivement), mais je recommande fortement que ceux qui apprennent à Verilog utilisent des valeurs binaires uniquement. Ils sont facile à travailler et aussi facile à dépanner.

Lorsque vous utilisez des valeurs binaires, vous devez taper sur chaque valeur (1 ou 0) de chaque bit de reg sauf si vous faites le reg ou tout haut ou tout bas.

Exemples :

my_reg < = 4' b0 ; juridiques
my_reg2 < = 3' b010 ; juridiques
my_reg3 < = 4' b01 ; illégal (incompatibilité de largeur ; attend 4 bits)

Ces déclarations seraient lus en anglais comme, par exemple, « quatre bits zéro binaire » ou « trois bits binaire deux ».

Maintenant que nous savons comment assigner une valeur à un reg, regardons comment faire pour utiliser des instructions If/Else en Verilog, commençant par un exemple :

(testMod) module
entrée a,
entrée b,
c sortie
);

Reg Q ;

toujours @ (a, b) //if l’état d’un ou des changements aux b ré-exécuter ce code
commencer
Si (a == b1 1' || b == 1' b0)
Q < = 1' b0 ;
d’autre
Q < = 1' b1 ;
fin

assigner c = Q ;

endmodule

Pouvez-vous retracer grâce à ce code et en déduire comment un If/Else instruction fonctionne en Verilog ?

Que se passe-t-il si nous voulons manipuler plusieurs valeurs si déclenche le « if » (Remarque : Si votre si instruction modifie deux valeurs, votre instruction else doit également modifier deux valeurs afin d’éviter des valeurs flottantes) ?

(testMod) module
entrée a,
entrée b,
sortie c [1:0]
);

Reg Q ;
Reg T ;

toujours @ (a, b) //if l’état d’un ou des changements aux b ré-exécuter ce code
commencer
Si (a == 1' b0)
commencer
Q < = 1' b0 ;
T < = 1' b0 ;
fin
else if (a == b1 1' & & b == 1' b1)
commencer
Q < = 1' b1 ;
T < = 1' b0 ;
fin
d’autre
commencer
Q < = 1' b1 ;
T < = 1' b1 ;
fin
fin

assigner les c [0] = Q ;
assigner les c [1] = T ;

endmodule

Je pense que cet exemple liens beaucoup des idées couverts dans cette série de tutoriels ensemble. J’ai également jeté dans une instruction Else If. Sans surprise, il fonctionne comme un C/C++. Assurez-vous juste que les actions de chaque État gère les sorties mêmes (dans ce cas, les deux Q et T ont été traitées dans chaque cas). Noter les mots-clés begin et end dans les endroits qu’intuitivement devrait y avoir des accolades.

C’est tout il y à des déclarations de If/Else If/Else en Verilog. N’oubliez pas de consulter les règles de conception en haut de ce Module tutoriel à des fins de débogage.

Articles Liés

Une astuce simple pour ajouter un thermomètre à votre multimètre numérique

Une astuce simple pour ajouter un thermomètre à votre multimètre numérique

vous pouvez obtenir un multimètre numérique pour enlever la saleté bon marché ces jours-ci. Aujourd'hui, je vais parler de l'ajout d'une fonction de thermomètre à ces multimètres peu coûteuses en utilisant le minimum de composants externes et sans af
Conception de la logique séquentielle pour une horloge numérique d’apprentissage

Conception de la logique séquentielle pour une horloge numérique d’apprentissage

Cette instructable est pour deux raisons 1) à comprendre et apprendre que les fondements de la logique séquentielle 2) utilisent ces connaissances pour créer une horloge numérique.Pendules à lecture digitale ont été construits par des amateurs d'élec
8 bits série numérique-convertisseur analogique (gamme 5v) pour les microcontrôleurs (quand TTL et des résistances est tout vous avez)

8 bits série numérique-convertisseur analogique (gamme 5v) pour les microcontrôleurs (quand TTL et des résistances est tout vous avez)

donc j'avais besoin d'un DAC (convertisseur numérique-analogique) à utiliser avec mon pic12F675, et pour ceux d'entre vous qui n'avez jamais entendu parler de ce petit copain, c'est un microcontrôleur 8 broches de Microchip qui a seulement 6 broches
Comment faire pour prendre des clichés numériques limpides à travers une lentille microscope...

Comment faire pour prendre des clichés numériques limpides à travers une lentille microscope...

Mal à avoir trouver une façon de partager vos trouvailles incroyables à travers un microscope ? Tout le monde a vue différente, donc ce que vous voyez peut être totalement différent de ce que l'ami à côté de vous verriez. Pourquoi ne pas prendre une
Une tourelle de changement rapide de AXA taille de montage sur le tour de commande numérique par ordinateur de C6 Syil

Une tourelle de changement rapide de AXA taille de montage sur le tour de commande numérique par ordinateur de C6 Syil

il y a environ 1 an, j'ai acheté un tour CNC C6 Syil utilisé. Après la construction un banc en acier robuste sur lequel monter le tour, j'ai mis sur la configuration d'elle et de se familiariser avec elle.La C6 vient des actions avec un poste d'outil
Comment adapter une visionneuse de porte « objectif Fish-Eye » sur un appareil photo de grande taille

Comment adapter une visionneuse de porte « objectif Fish-Eye » sur un appareil photo de grande taille

nous avons vu des tutoriels sur ce site qui vous montrent comment une visionneuse de porte peu coûteux peut être utilisée comme un objectif Fish-Eye sur un point simple et shoot appareil photo numérique, mais que se passe-t-il si vous voulez essayer
Impressionnez vos amis, apprendre à conduire à une transmission manuelle

Impressionnez vos amis, apprendre à conduire à une transmission manuelle

tout d'abord quand j'apprenais à conduire mes parents ne me laisserait pas faire à moins que je conduisais une transmission manuelle, ou un levier de vitesse véhicule. Bien qu'il peut être frustrant à tout d'abord il peut très facilement devenir une
Projets d’Arduino sur une maquette (aucune série com)

Projets d’Arduino sur une maquette (aucune série com)

Intro :Si vous avez un Arduino Uno et que vous souhaitez démarrer la duplication des projets sans avoir à acheter un Uno chaque fois... Préparez-vous à vivre !  Cette instructable vous montrera comment déplacer vos projets (qui ne nécessitent pas de
Cours de peinture numérique 2: Une plume

Cours de peinture numérique 2: Une plume

ordinateurs ont apporté des changements aux quatre coins de la société moderne. Un de ces angles est art. L'internet regorge de concept art, fonds d'écran et beaucoup d'autres types d'image qui ont été dessinées par certains utilisateurs à un ordinat
Série de Mechanica céleste : conception de boîte de vitesses et de la construction

Série de Mechanica céleste : conception de boîte de vitesses et de la construction

Mechanica céleste est une sculpture en acier cinétique haute 16 pieds de notre système solaire qui représente la danse majestueuse des corps célestes. Il a été créé par une équipe dirigée par Jessika Welz pour Burning Man 2014.(Page facebook du proje
Cours de peinture numérique 1: Les bases d’utiliser une tablette graphique

Cours de peinture numérique 1: Les bases d’utiliser une tablette graphique

ordinateurs ont apporté des changements aux quatre coins de la société moderne. Un de ces angles est art. L'internet regorge de concept art, fonds d'écran et beaucoup d'autres types d'image qui ont été dessinées par certains utilisateurs à un ordinat
Numérisation 3D, rendu 3D des sculptures d’argile en inox par l’intermédiaire de rendus numériques pour une proposition d’art

Numérisation 3D, rendu 3D des sculptures d’argile en inox par l’intermédiaire de rendus numériques pour une proposition d’art

Je suis un artiste possédant une formation en peinture traditionnelle et de la sculpture, après avoir terminé l'école des Arts visuels avec un BFA en peinture.Après avoir travaillé dans un studio de Jeff Koons pour plus de deux ans, je me suis intére
Linkit une utilisation Mobile WIFI hotspot contrôler toutes les broches numériques

Linkit une utilisation Mobile WIFI hotspot contrôler toutes les broches numériques

Son très amusant à contrôler quoi que ce soit avec la radio. Avec linkit Mediatek un son font très facile de contrôler tous les accessoires électriques et électroniques à l'aide de WIFI. Avec le WIFI seul point chaud dans votre téléphone portable en
Testeur de logique numérique de la série 74LS

Testeur de logique numérique de la série 74LS

* Update * présenté sur www.freetronics.com (http://www.freetronics.com/blogs/news/11619617-build-a-74ls-series-digital-logic-tester-with-arduino#.UtgAf9JDumE)!Par la suite instructable, je démontrerai comment concevoir un circuit et écrire un progra