Compteur de bits
Fait partie de la section Fondamentaux du Journey Verilog de Coddy. Leçon 87 sur 90.
Défi
Dans ce chapitre, tu vas construire un émetteur UART étape par étape. UART signifie Universal Asynchronous Receiver-Transmitter. Il s’agit d’un protocole matériel simple qui permet à deux appareils de communiquer en utilisant seulement un fil (pour la transmission) et un autre fil (pour la réception).
Imagine deux personnes qui parlent au téléphone : l’une parle (transmet), l’autre écoute (reçoit). UART envoie les données un bit à la fois, avec des bits de début et de fin pour marquer le début et la fin de chaque octet.
Un émetteur UART envoie 10 bits : bit de début (1), bits de données (8), bit de fin (1). Pour suivre le bit que nous sommes en train d’envoyer, nous avons besoin d’un compteur de bits qui compte de 0 à 10.
Fonctionnement du compteur de bits
- Commencer à 0
- À chaque cycle d’horloge, ajouter 1
- Lorsqu’il atteint 10, revenir à 0
- Répéter indéfiniment
Dans cette tâche, nous ne le réinitialiserons pas encore : nous allons seulement l’incrémenter.
À faire :
- Créer un module appelé
uart_txavec :- Une entrée :
clk - Une sortie :
cnt(4 bits, de typereg)
- Une entrée :
- À l’intérieur du module :
- Définir
cntà 0 au début, à l’intérieur d’un bloc initial - Ajouter un bloc
always @(posedge clk) - Faire augmenter
cntde 1 à chaque front d’horloge
- Définir
Essayez vous-même
// TODO: Créer le module uart_tx avec l'entrée clk et la sortie cnt (4 bits)
// TODO: Mettre cnt à 0 au démarrage dans un bloc initial
// TODO: Ajouter un bloc always @(posedge clk)
// TODO: Incrémenter cntToutes les leçons de Fondamentaux
1Introduction
Qu’est-ce que VerilogMatériel vs logicielVotre premier moduleCommentairesNiveaux d’abstraction de conception4Opérateurs - Partie 1
Opérateurs arithmétiquesOpérateur moduloOpérateurs de comparaisonRécapitulatif - Mathématiques simplesOpérateurs bit à bit7Affectations et portes
Affectation continueAffectation avec opérateursPrimitives de portes intégréesPortes AND, OR et NOTPortes XOR et XNORRécapitulatif - Circuit de portes logiques10Prise de décision
Instruction IfIf - ElseRécapitulatif - Comparateur simpleInstruction CaseCasex et CasezRécapitulatif - Conception d'une ALU2Types de données
Type wireType regEntiers et réelsVecteursTableauxParamètresRécapitulatif - Déclarer des signaux5Opérateurs - Partie 2
Opérateurs logiquesOpérateurs de réductionOpérateurs de décalageOpérateur de concaténationOpérateur conditionnelRécapitulatif - Défi sur les opérateurs11Boucles
Boucle ForBoucle WhileBoucle RepeatBoucle ForeverInstruction DisableRécapitulatif - Modèles de boucles3Système de numération
Représentation binaireNombres dimensionnésNombres non dimensionnésNombres négatifsValeurs spéciales X et ZRécapitulatif - Formats des nombres6Modules
Structure d’un modulePorts d’entrée et de sortiePorts InoutInstantiation d’un moduleAssociation des ports par nomAssociation des ports par ordreRécapitulatif - Construire un module9Blocs procéduraux
Bloc alwaysBloc initialListe de sensibilitéAffectation bloquanteAffectation non bloquanteRécapitulatif - always vs initial12Projet de multiplexeur
Conception d’un multiplexeur 2 vers 1Conception d’un multiplexeur 4 vers 115Contrôleur de feux de circulation
Définition des étatsLogique de la machine à étatsEntraînez-vous par vous-même : Compilateur Verilog en ligne