Académique Documents
Professionnel Documents
Culture Documents
combinatoire
1STI2D 2011/2012
Le VHDL est un langage de description matriel qui permet de simuler ou programmer un circuit numrique. L'abrvation H.D.L signifie Hardware Description Language. Ce langage a t crit pour simuler des circuits lectroniques. Les circuits logiques programmables voyant le jour, les P.L.D ( Programmable Logic Device ),on a simplement reli ces deux entits pour crer VHDL reprenant HDL et VHSIC Very High Speed Integrated circuit.
1. Logique combinatoire
Un circuit logique combinatoire peut se voir comme une boite noire qui dispose d'entres/ sorties dont les sorties sont des combinaisons des entres. Le fonctionnement du circuit est gnralement sous la forme d'quations logiques faisant appel un algbre particulier, l'algbre de boole.
2. L'algbre de boole
a=
a+(b.a) = a.(b+a) =
{VHDL combinatoire.odt - page 1/7}
aa b = aab =
a b = a+ b =
ENTITY nom_de_l'entit IS PORT( -- Liste des signaux composant l'entit ); END monostable ; ceci est un commentaire Exemple : ENTITY monostable IS PORT( H Trig M -Reset ); END monostable ;
: IN STD_LOGIC; : IN STD_LOGIC; -- Entre de dclenchement : OUT STD_LOGIC :='0'; -- Valeur initiale de la sortie du monostable. : '0' : OUT STD_LOGIC := '0' -- Signal pour le test uniquement
Remarque : Aprs la dernire dfinition de signal de l'instruction port, il ne faut jamais mettre de point virgule. En fait le point virgule qui symbole la fin d'une instruction est immdiatement aprs, derrire la parenthse de l'instruction port. 5.2 L'instruction port
L'instruction port. Entre les deux parenthses, elle contient la dclaration des entres/ sorties qui composent notre block entit. Syntaxe : Exemples : NOM_DU_SIGNAL : sens type; CLOCK : in std_logic; BUS : out std_logic_vector ( 7 downto 0);
5.2.1
Nom de signal:
Il est compos de caractres, le premier doit tre une lettre, longueur quelconque mais ne doit pas dpasser une ligne de code. VHDL n'est pas sensible la casse, pas de distinctions entre majuscules et minuscules. 5.2.2 Sens du signal : In : pour un signal d'entre out : pour un signal de sortie inout : pour un signal bidirectionnel buffer : pour un signal en sortie mais utilis en entre dans la description. Le type std_logic pour un signal std_logic_vector pour un bus compos de plusieurs signaux
5.2.3
Exemple : un bus bidictionnel de 5 bits s'crira : LATCH : inout std_logic_vector (4 downto 0) LATCH(4) correspond au MSB et LATCH(0) correspond au LSB. Les valeurs que peuvent prendre un signal de type std_logic sont : '0' ou 'L' pour un niveau bas '1' ou 'H' pour un niveau haut 'Z' pour tat haute impdance '-' quelconque. 5.2.4 Quelques exemples de dclarations
6. Description de fonctionnement:
6.1 Le bloc architecture
L'architecture dcrit le fonctionnement souhait par le circuit. L'architecture est compose d'une suite d'instructions ou d'quations qui dcrivent le fonctionnement du circuit. Cette suite sera d'une syntaxe similaire celle de l'entit. ARCHITECTURE nom_de_l'architecture IS BEGIN suite d'instructions END nom_de_l'architecture ; Exemples d'architecture :
6.2 6.2.1
L'oprateur le plus utilis. Il permet de modifier l'tat d'un signal en fonction d'autres signaux ou d'autres oprations sur des signaux. Exemple : S1 <= E2 AND E1; Les bases utilises pour les bus peuvent tre : Binaire, Hexa . Exemples : BUS <= 0101 ; BUS <=X 9 . !! La base dcimale ne peut tre utilise pour l'affectation de signaux !! On peut en revancher l'utiliser avec des oprateurs comme + ou sur une variable !!
1STI2D VHDL combinatoire {VHDL combinatoire.odt - page 5/7}
6.2.2
Cet oprateur permet de joindre des signaux entre eux : Exemple: soit A de type 3 bits et B de type 5 bits A='001' et B= '01011' S<= A&B S prendra alors comme valeur '00101011' 6.2.3 Oprateurs logiques,arithmtiques et relationnels
Exemples: S1<= A sll 2; S1 est gal A dcal de deux bits gauche A= 01010101 , S1 = 00010101 S1 <= S1+1; On incrmente de 1 S1 6.2.4 Affectation conditionnelle
Cette instruction modifie l'tat d'un signal suivant le rsultat d'une condition logique entre un ou des signaux, valeurs, constantes. SIGNAL <= expression when condition (else expression when condition) (else expression); Exemple 1 : - - S1 prend la valeur de E2 quand E1='1' sinon S1 prend la valeur '0' S1 <= E2 when (E1='1' ) else '0'
Exemple 2 : - -structure d'un multiplexeur 4 vers 1 S <= E0 when (C = ''00'') else E1 when (C =''01'') else E2 when (C =''10'') else E3 when (C =''11'') else '0';
6.2.5
Affectation slective
WHEN "00", WHEN "01", WHEN "10", WHEN "11", WHEN others;
Multiplexeur 4 vers 1 .