LOGIQUE PROGRAMMABLE EN VERILOG
Chapitre 1. Introduction
Chapitre 2. Traitement combinatoire et syntaxe du langage
Chapitre 3. L'usage de l'outil QUARTUS II
Chapitre 4. Description comportementale
4.1. Le bloc always et le type reg
4.2. Les opérateurs conditionnels
4.3. La mémoire élémentaire
4.4. L'alternative multiple
4.5. Exemple de description par table de vérité
4.5.1. Cas de la bascule RS
4.5.2. Cas du décodeur BCD 7 segments
4.6. Traitement séquentiel par l'exemple
4.7. Exercices
4.8. Solutions des exercices
Chapitre 5. Projets : énoncés
Chapitre 6. Projets : vers la solution
Page d'accueil Table des matières Niveau supérieur Page précédente Bas de la page Page suivante

4.5.2. Cas du décodeur BCD 7 segments

 

On souhaite réaliser directement un décodeur BCD vers un afficheur 7 segments. Il existe un lien avec un des exercices précédents, mais ce n'est pas le même cahier des charges.

La sortie se fera sur 7 éléments et l'entrée est un nombre compris entre 0 et 9. On considèrera des segments pilotés par un niveau 1.

En se rappelant la table de vérité (voir l'exercice du chap 2.15.3), on obtient le programme suivant :

module DecodBCDTo7seg (n, A, B, C, D, E, F, G) ;

input [3 :0] n ;

output A, B, C, D, E, F, G ;

reg [6 : 0] S ;

always

case (n)

0 : S = 7’b1111110 ;

1 : S = 7’b0110000 ;

2 : S = 7’b1101100 ;

3 : S = 7’b1111001 ;

4 : S = 7’b0010011 ;

5 : S = 7’b1011011 ;

6 : S = 7’b0011111 ;

7 : S = 7’b1110000 ;

8 : S = 7’b1111111 ;

9 : S = 7’b1110011 ;

default : S = 7’b0 ; // tout éteindre

endcase

assign {A, B, C, D, E, F, G} = S ; // pour des anodes communes

endmodule

Dans le cas de cathodes communes, il suffit de changer la ligne d'assignation en:

assign {A, B, C, D, E, F, G} =~S ; // pour des cathodes communes


Page d'accueil Table des matières Niveau supérieur Page précédente Haut de la page Page suivante