Fonctions combinatoires
Fait partie de la section Conception et vérification RTL du Journey Verilog de Coddy. Leçon 11 sur 38.
Une function Verilog encapsule un calcul sans durée afin de le réutiliser au sein d’un module. Déclarez sa largeur de retour, ses arguments d’entrée et ses variables locales, puis affectez le résultat au nom de la function avec assign. Les fonctions combinatoires ne contiennent ni délais ni contrôles d’événements ; une boucle avec des bornes fixes peut décrire une logique répétée.
Extrait pertinent ; les déclarations et connexions environnantes sont fournies dans le défi.
function [7:0] gray;
input [7:0] value;
begin gray = value ^ (value >> 1); end
endfunctionL’appel de la function calcule une expression sans ajouter de temps de simulation.
Affectez le résultat de la function sur chaque chemin et veillez à ce que les fonctions combinatoires soient dépourvues de contrôles temporels.
Défi
MoyenImplémentez une function Verilog gray qui convertit une valeur binaire non signée de 8 bits en code Gray à l’aide de value XOR (value décalée vers la droite d’un bit). Pilotez y en appelant la function avec a. Colonnes de sortie : y. Toutes les valeurs de stimulation sont des valeurs binaires connues.
Complétez design.v et préservez les noms de ses modules et ses ports. Le testbench.v verrouillé fournit les changements d’entrée et affiche les sorties une fois stabilisées. Il choisit un scénario à l’aide d’un argument du simulateur tel que +CASE=1 ; aucune entrée standard n’est requise. N’ajoutez ni affichage, ni délais, ni terminaison de simulation à la conception. La sortie attendue est une ligne de valeurs décimales par observation, séparées par un espace et se terminant par un retour à la ligne.
Essayez vous-même
module dut (input [7:0] a, output [7:0] y);
// Remplacez ce placeholder par votre design.
assign y = 0;
endmoduleCette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Conception et vérification RTL
1RTL combinatoire fiable
Les valeurs par défaut évitent les latchsEncodeurs de prioritéValidation one-hotDécodage sûr avec caseRécapitulatif - Routeur de requêtes2Largeurs et arithmétique signée
Préserver les bits de retenueComparaisons signéesDécalages arithmétiques vers la droiteDépassement et saturationRécapitulatif – différence signée3RTL réutilisable
Fonctions combinatoiresParamètres à largeur sûreBoucles generateGenerate conditionnelRécapitulatif - Masque de bits réutilisableEntraînez-vous par vous-même : Compilateur Verilog en ligne