You are on page 1of 11
Gireuits FPGA_ Programmation VHDL Les concepts de base du langage VHDL. Chapitre 1 1. Description générale Prenons comme exemple le circuit intégré 7400 (Figure 1.1(a)). Ce demier est constitué de quatre portes logiques NAND a deux entrées (Figure 1.1(0)). of Vee >] 13) ab 7a] ¢ (a) Figure 1.1 : Circuit intégré 7400 (Vue exteme (a) et vue interne (6)). La description du circuit intégré 7400 en langage VHDL est donnée par le listing 1.1 eornueenn Library ieee? use ieee.std_logic_1164.a11; entity CI_7400 is port (a, b, c, d, e, f, g, h: in std logic; 81, 82, 83, 84: out std logic ie end CI_7400; architecture behavioral of CI_7400 is begin si <= a nand b; 82 <= c nand d: 83 <= e nand f; 34 <= g nand h: end behavioral: Listing 1.1 : Description VHDL du circuit intégré 7400. Gireuits FPGA_ Programmation VHDL 1.1. Les régles de base du VHDL Les deux premiéres lignes définissent les bibliothéques et les paquetages dont nous avons besoin pour la conception de notre circuit. Dans notre code, on fait appel au paquetage std_logic_1164 qui se trouve dans la bibliothéque ZEEE. 2 library ieee; 2 use icee.std logic 1164.all: Les bibliothéques et les paquetages nous permettent d’utiliser les types et les opérateurs disponibles en VHDL. 1.2. La déclaration de l’entité : @ entity CI_7400 is 5 port (a, b, c, 4, e, f, g, h : in std_logic; 6 31, s2, 33, s4 : out std logic a de 8 end CI_7400; L’entité corespond au circuit vu de Dextérieur (Figure 1.1/a)), et comprend essentiellement les entiées-sorties du citeuit, La premiére ligne d’une entité (ligne 4 du code) indique le nom du cireuit, “CI_7400°*dans notre exemple. Les entrées - sorties du circuit sont des ports qui doivent avoir le format suivant : NOM_DU_PORT : MODE TYPE; Le mode d’un port peut étre : s'ils’agit d'une entrée - OUT s'il s agit d’une sortie ~ INOUT s'il s’agit d’une entrée - sortie (port bidirectiomnel) - BUFFER s'il s’agit d°une sortie rebouclée en entrée Pour le TYPE du port, il fant savoir que le langage VHDL. est un langage typé, c’esti-dire que chaque objet manipnlé doit avoir un type de données. Dans le listing 1.1, le type du port utilisé est STD_LOGIC. Hest défini dans le paquetage STD_LOGIC_1164, et posséde neuf états Gireuits FPGA_ Programmation VHDL Etat | Définition 0 Niveau logique 0, forgage fort 1 Niveau logique 1, forgage fort Z Haute impédance U__| Niveau non initialisé X | Niveau inconnn, forgage fort - Niveau queleonque Niveau logique 0, forgage faible H_ _| Niveau logique 1, forgage faible ‘Niveau inconm, forgage faible Si le type du signal utilisé est un bus de données, on utilise alors le type STD_LOGIC_VECTOR qui est défini comme étant un tableau unidimensionnel d’éléments de type STD_LOGIC. Exemple Soit le signal d’entré A de 8 bits, on le déclareraen VHDL comme suit A: in std_logic_vector (7 downto 0) ; Ou bien Atin std_logic vector (0 to 7); La différence entre les deux expressions est l'indice du MSB et du LSB. Dans la premiére expression, ’indice du MSB est A(7), celui du LSB est A(0). Dans la deuxiéme expression, indice du MSB est A(0), celui du LSB est A(7) Remargue : On pent utiliser le type bit a la place de std_logic, et le type bit_vector a la place de std_logic_veetor, la différence eutre eux est que le type bit ue posséde que deux état : 0° et 1’ ce quiest trés limité car il faut prendre en considération les autres états, c’est pourquoi on préfére le type std_logie an type bit. Gireuits FPGA_ Programmation VHDL 1.3. La déclaration de architecture : 10 architecture behavioral of CI_7400 is 11 begin 12 si <= a nand b; 13 s2 <= c nand 4; 14 53 <= e nand f; 15 s4 <= g nand h; 16 end behavioral; L’architecture du circuit comespond an circuit vu de Pintérieur (Figure 1.1 (6)), et comprend essentiellement la description des opérations du circuit. Nous pouvons associer plusieurs architectures a une entité, mais pas le contraire. La différence des architectures réside dans leurs noms : Architecture NOM_DE_L’ARCHITECTURE of NOM_DE_L’ENTITE is Dans notre exemple, le nom de I’architecture est behavioral. La description principale d’une architecture comprend toujours les deux mots réservés “BEGIN” et “END” (ligne 11 et 16 successivement). Les expressions des opérations du circuit se trouvent entre elles. Ces expressions sont des instructions qui s’exécutent en concurrence contrairement 4 un langage informatique comme le langage C, oi les instructions s’exécutent séquentiellement. Exemple 1: Comparateur 1 bit Les entrées du comparateur sont : A, B, les sorties du comparateur sont : EG (égale), PG (plus grand), PP (plus petit) Table de vérité et équations booléennes du comparateur : AB] [EG | PG] PP EG=AB+AB ofo[{[i]fofo = ofi[fofol4 PG=AB Tlo;[o|[it|o — th1{[1 [oo PP=AB Gireuits FPGA_ Programmation VHDL Le schéma du circuit du comparateur : Figure 1.2 Schéma du comparateur. La description du comparateur en langage VHDL : aaa? library ieee; use ieee.std logic 1164.al1; entity comparateur is port (A, B: in std_logic: EG, PG, PP : out std logic ” end comparateur; architecture behavioral of comparateur is begin EG <= (not(A) and not B) or (A and B); PG <= A and not B; PP <= not A and B; end behavioral; Listing 1.2 : Description VHDL du comparateur. Gireuits FPGA_ Programmation VHDL Exemple 2 - Additionneur complet 1 bit Les entrées de ladditionneur sont : A, B, Ri Les sorties de l’additionneur sont : § (somme), Rout (reteme) Table de vérité et équations booléennes de l’additionneur : A[B|Ri| | S| Rout ofolol fol o ofol1{|a[o S=(A@B)@R; 2 1 “ + “ Rout = A-B+Rj-(A@B) tfofo[|1[ o 1/0|1 0 1 1|1|0 0 1 tifa fy Le schéma du circuit de Padditionneur : A Rout 8 Ri s instance 2 Figure 1.3 : Schéma de l'additionneur complet 1 bit a partir de deux demi-additionneurs, Gireuits FPGA_ Programmation VHDL Le code VHDL de l’additionneur : 2 library icce; 2 use ieee.std_logic_1164.all; 3 4 entity full_adder is 5 port (A, B, Ri: in std_logic; 6 S, Rout : out std logic 7 dv: 8 end full_adder; 9 10 architecture behavioral of full_adder is 11 begin 12 S <= A xor B xor Ri; 13 Rout <= (A and B) or Ri and(A xor B) ; 14 _end behavioral; Listing 1.3 : Description VHDL dun additionneur complet 1 bit. Simulation : Ons 200 ns \400 ns asig bsig risig I L J J sig J l routsig} tes = == 2. Les signaux intermédiaires : Les signaux intermédiaires correspondent aux connexions qui se trouvent 4 lintérieur d'un circuit. Pour bien comprendre 1a notion et l'utilisation de ces signaux, prenons l'exemple de notre additiomeur complet 1 bit de la figure 1.3. On peut le concevoir a partir de deux demi- additionneurs et une porte logique OR (figure 1.4). Circuits FRGA_ Programmation VHDL a+ \ signal_] Be . xOR2 | 5] signal_2 / } XOR2 Ant ] signal 3 Ri —+ >—

You might also like