Académique Documents
Professionnel Documents
Culture Documents
VHDL Intro PDF
VHDL Intro PDF
Commentez
Introduction au langage VHDL par Thibaut Cuvelier
I - VHDL....................................................................................................................................................................... 3
II - Outils...................................................................................................................................................................... 3
III - Premiers lments de syntaxe............................................................................................................................. 4
III-A - Types disponibles dans ieee.std_logic_1164...............................................................................................4
III-B - Paire entit/architecture............................................................................................................................... 4
III-B-1 - Premier exemple : un demi-additionneur............................................................................................ 4
III-C - Entit............................................................................................................................................................ 5
III-C-1 - Attribution des pins..............................................................................................................................5
III-D - Architecture.................................................................................................................................................. 5
IV - Logique combinatoire........................................................................................................................................... 6
IV-A - Flot de donnes...........................................................................................................................................6
IV-A-1 - Deuxime exemple : un multiplexeur 4-1 en portes logiques.............................................................6
IV-A-2 - Troisime exemple : un multiplexeur 4-1 avec un WHEN.................................................................. 6
IV-A-3 - Quatrime exemple : un multiplexeur 4-1 avec un SELECT.............................................................. 7
IV-B - Structurel......................................................................................................................................................7
IV-B-1 - Cinquime exemple : additionneur complet........................................................................................8
IV-C - Comportemental.......................................................................................................................................... 9
IV-C-1 - Sixime exemple : un multiplexeur comportemental avec IF............................................................. 9
IV-C-2 - Septime exemple : un multiplexeur comportemental avec CASE.................................................. 10
IV-C-3 - Huitime exemple : un dcodeur avec FOR.................................................................................... 10
V - Logique squentielle............................................................................................................................................10
V-A - chauffement : le flip-flop D....................................................................................................................... 11
V-A-1 - Neuvime exemple : un flip-flop D synchrone................................................................................... 11
V-A-2 - Dixime exemple : un flip-flop D asynchrone.................................................................................... 11
V-B - Machine tats.......................................................................................................................................... 12
VI - Simuler un circuit................................................................................................................................................13
VII - Remerciements.................................................................................................................................................. 19
-2-
Copyright 2012 Thibaut Cuvelier. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation
expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.
http://tcuvelier.developpez.com/tutoriels/vhdl/introduction-langage/
Introduction au langage VHDL par Thibaut Cuvelier
I - VHDL
VHDL est le sigle de VHSIC hardware description language ; VHSIC vient quant lui de very-high-speed integrated
circuits, une initiative de la Dfense amricaine dans les annes 1980 visant la construction de circuits intgrs
trs rapides. Le VHDL est un langage de description du matriel utilis en lectronique. En tant que standard, il est
indpendant du logiciel utilis pour la compilation, la programmation des composants, la simulation, etc.
Il autorise plusieurs mthodologies de conception (comportemental, flot de donnes, structurel) tout en tant d'un
trs haut niveau d'abstraction en lectronique (il est indpendant de la technologie utilise : FPGA, CPLD, ASIC,
etc.). Cette abstraction permet d'ailleurs de le simuler sur ordinateur avant de programmer la moindre puce.
Lors de sa conception, l'objectif n'tait pas de produire un nouveau langage ex nihilo : la Dfense avait rcemment
mis au point le langage Ada, il tait prfrable de partir sur ces bases et en exploiter autant que possible la syntaxe,
en l'adaptant au contexte de l'lectronique numrique.
Utiliser ce langage vite de driver des tables de vrit des spcifications, que l'on simplifie alors en quations
boolennes implmenter. Il permet d'expliciter la fonction implmenter sans se soucier de ces dtails, bien que
l'implmentation en pratique se fera l'aide de portes logiques (le compilateur se chargera de passer du code aux
portes).
Il n'est pas le seul sur le march : Verilog, par exemple, est galement un langage trs utilis, possdant une syntaxe
fort diffrente mais des fonctionnalits quivalentes, si ce n'est gales. VHDL semble plus utilis en Europe. Une
belle proportion des outils disponibles supportent indiffremment les deux.
VHDL et Verilog sont des concurrents de la premire heure, bien que Verilog fut le premier sur le march (vers
1983-1984, par Gateway Design Automation, socit qui fut rachete par Cadence) - il s'agissait d'un standard ferm,
certains allant jusqu' dire que cette fermeture tait la seule raison de la cration de VHDL. Ds 1983, IBM, Texas
Instruments et Intermetrics ont commenc dvelopper le VHDL ; sa version 7.2 est sortie en 1985 et, deux ans
aprs, fut standardise par l'IEEE en tant que 1076-1987 (un an aprs en avoir reu les droits). En tant que standard
IEEE, il doit tre revu priodiquement, tous les cinq ans au plus (actuellement, les rvisions 1993, 2000, 2002 et
2008 sont sorties).
Ce langage n'est pas dnu d'extensions, il ne se limite pas la description de circuits numriques. Notamment,
VHDL-AMS inclut des extensions pour grer les signaux analogiques et mixtes (analog and mixed-signal, AMS),
en offrant les mmes avantages (description de haut niveau, vrification, simulation). galement, VHPI (VHDL
Procedural Interface) est une interface pour du code C ou C++. Plus tonnant peut-tre, OO-VHDL, qui, comme son
nom l'indique, ajoute des fonctionnalits orientes objet au VHDL, pour une abstraction d'encore plus haut niveau,
tout en restant utilisable par du code VHDL (ce qui n'est pas sans rappeler les dbuts de C++).
II - Outils
Les fabricants des puces programmables fournissent gnralement, sur leur site ou avec les puces, tous les logiciels
ncessaires pour les utiliser : compilateur ou synthtiseur VHDL, qui se chargera de convertir le code VHDL en sa
version logique, prte pour la puce ; simulateur, pour tester le code.
Notamment, Lattice Semiconductors fournit la suite ispLEVER, qui comprend notamment un diteur basique, mais
la licence est galement valable pour ActiveHDL, un bien meilleur diteur et simulateur ; de mme, Xilinx fournit
gratuitement sa suite d'outils. chaque fois, il faut s'inscrire sur le site pour tlcharger les outils.
Pour l'dition simple du code, tout diteur convient galement : Notepad++ et jEdit, de base, disposent d'une
coloration syntaxique (quoique pas toujours jour ou la hauteur d'un outil ddi ce langage).
Il est possible de s'armer de manire totalement open source : GHDL est un compilateur VHDL bas sur GCC et un
simulateur, tandis que GTKWave permet d'en visualiser les rsultats.
-3-
Copyright 2012 Thibaut Cuvelier. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation
expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.
http://tcuvelier.developpez.com/tutoriels/vhdl/introduction-langage/
Introduction au langage VHDL par Thibaut Cuvelier
Deux types sont la base de tout en VHDL : bit et bit_vector. Cependant, ils sont trs crus, car seules deux valeurs
sont possibles (vrai et faux) : comment reprsenter une haute impdance, par exemple ? Comment grer les don't
cares (dans certains cas, la valeur de sortie n'a aucune importance, on peut en profiter pour optimiser encore plus
l'implmentation d'une fonction) ?
Le standard IEEE 1164 vient rsoudre ce problme avec les types std_logic et std_logic_vector, respectivement un
bit et un vecteur de bits. Les valeurs possibles sont principalement des boolens (vrai 1 et faux 2, d'intensit faible
au besoin - L et H), le don't care - et la haute impdance Z, utile pour relier plusieurs sorties sans risque d'instabilit
du circuit. D'autres valeurs sont galement possibles (U pour une valeur non initialise, X pour une valeur inconnue
forte, W pour une valeur inconnue faible), bien que moins utilises.
Au niveau de la syntaxe, pour indiquer la valeur d'un bit, scalaire, on met le symbole entre apostrophes droites : '1'
; dans le cas d'un vecteur, on utilisera des guillemets droits : "11".
Ces types sont dfinis dans la bibliothque ieee.std_logic_1164.all (il faudra le spcifier dans chaque entit VHDL).
Tout programme VHDL contient au moins une paire entit/architecture. L'entit dfinit les entres et sorties de
l'architecture, l'implmentation proprement dite. L'entit est vue de l'extrieur du composant (interface) ; l'architecture
explicitera les liens entre les entres et les sorties (implmentation).
Dans l'entit, on doit dfinir les entres (in) et sorties (out) ainsi que leur type. On en utilise principalement deux :
std_logic et std_logic_vector.
Dans une architecture de type flot de donnes, on dfinit explicitement les expressions boolennes reliant les entres
et les sorties. Peu importe le style utilis, l'implmentation produite par le compilateur sera identique si l'architecture
fait exactement la mme chose.
On peut mettre tout ceci en pratique en implmentant un demi-additionneur, un composant lectronique qui prend
deux bits en entre (qu'il faut additionner) et en produit deux bits (le bit de somme S et le bit de report R).
-4-
Copyright 2012 Thibaut Cuvelier. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation
expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.
http://tcuvelier.developpez.com/tutoriels/vhdl/introduction-langage/
Introduction au langage VHDL par Thibaut Cuvelier
Le compilateur optimisera autant que possible ces fonctions, possiblement en crant des fonctions intermdiaires
et en les connectant. Il dcide galement de la manire d'attribuer les pins du composant programm, moins que
cela ne soit explicit.
S = (Sxor);
R = (R_c);
A_c = (A);
B_c = (B);
Sxor.X1 = (A_c);
Sxor.X2 = (B_c);
R_c = (A_c & B_c);
III-C - Entit
entity NAME is
port(IO);
end NAME;
Au besoin, c'est ici qu'on attribuera les pins, quand le comportement par dfaut du compilateur ne suffit pas (il assigne
les entres-sorties des pins de manire relativement alatoire) ; cette assignation sera beaucoup plus dpendante
du matriel que le reste du code.
Un vecteur de bit dclar comme ci-dessus aura le bit de poids fort en l'indice le plus lev et
le bit de poids faible en zro.
On peut galement dfinir des valeurs par dfaut l'aide d'une expression et de l'oprateur := :
III-D - Architecture
On y dfinit des signaux, l'quivalent le plus proche des variables en programmation informatique : ils servent
passer les rsultats intermdiaires d'un bloc fonctionnel un autre. On les utilisera en pratique lors de la prsentation
des architectures comportementales.
-5-
Copyright 2012 Thibaut Cuvelier. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation
expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.
http://tcuvelier.developpez.com/tutoriels/vhdl/introduction-langage/
Introduction au langage VHDL par Thibaut Cuvelier
IV - Logique combinatoire
La logique combinatoire est relativement simple tudier : en fonction d'une srie d'entres, on fournit une suite
de sorties, sans que ces sorties dpendent des entres prcdentes. Notamment, on traitera tous les problmes
d'arithmtique, comme l'addition ou soustraction de nombres.
Comme prcdemment, on dcrit simplement les quations boolennes que l'on veut implmenter.
Un multiplexeur est un slectionneur d'entres : en fonction de la valeur place sur les entres de slection, il choisit
l'entre de donnes rpercuter la sortie. Ici, on implmente un multiplexeur 4-1, car il dispose de quatre entres
de donnes (donc deux entres de slection : ) et d'une sortie.
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
On peut cependant amliorer la syntaxe l'aide de when, qui indique la valeur que doit prendre le signal ou la sortie
dans tel ou tel cas. Cette criture est dj plus lisible, elle correspond beaucoup plus directement la dfinition en
franais du multiplexeur.
Il faut bien faire attention grer tous les cas possibles, cela influence fortement la sortie du compilateur. Notamment,
dans l'implmentation ci-dessous, si une entre de slection est en haute impdance, on choisira la dernire entre
de donnes, ce qui n'est pas forcment le comportement voulu.
library ieee;
use ieee.std_logic_1164.all;
-6-
Copyright 2012 Thibaut Cuvelier. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation
expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.
http://tcuvelier.developpez.com/tutoriels/vhdl/introduction-langage/
Introduction au langage VHDL par Thibaut Cuvelier
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
On peut alors employer un don't care pour grer tous les cas restants, ce qui permet de n'avoir une sortie contrle
que si les entres de slection forment une adresse correcte.
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
On peut encore l'amliorer en restant trs proche des quations avec un with-select et une concatnation des deux
bits d'entre de slection.
library ieee;
use ieee.std_logic_1164.all;
IV-B - Structurel
On assemble ici une srie de botes noires dj crites pour former un circuit plus complexe.
-7-
Copyright 2012 Thibaut Cuvelier. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation
expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.
http://tcuvelier.developpez.com/tutoriels/vhdl/introduction-langage/
Introduction au langage VHDL par Thibaut Cuvelier
C'est le principe utilis pour des additionneurs plusieurs bits : on branche en srie une srie d'additionneurs
complets, chacun pouvant additionner trois bits. Leur sortie est compose du bit de somme et du bit de report, comme
les demi-additionneurs. Alors que le bit de somme est directement transmis la sortie du circuit, le bit de report est
transmis comme troisime bit additionner l'additionneur complet suivant.
Cependant, ce principe n'est pas forcment gnralisable grande chelle, puisque chaque additionneur a besoin du
bit de report de l'additionneur prcdent pour effectuer son travail. Pour additionner bits, on devra donc attendre
temps de propagation du signal travers les portes logiques. On peut pallier ce problme, par exemple, en prvoyant
le bit de report ou en calculant deux valeurs (quand le bit de report est ou ).
Ici, pour l'exemple, on se limitera synthtiser un additionneur complet sur base de deux demi-additionneurs et d'une
porte OR.
On aura besoin de deux instances du composant demi-additionneur et d'une seule du composant OR. On note qu'il
faut rpter les bibliothques avant chaque couple entit-architecture.
-- Entit demi-additionneur
library ieee;
use ieee.std_logic_1164.all;
entity HA is port(
A, B: in std_logic;
R, S: out std_logic);
end HA;
architecture FLOW of HA is
begin
S <= A xor B;
R <= A and B;
end FLOW;
-- Entit OR
library ieee;
use ieee.std_logic_1164.all;
entity P_OR is port(
C, D: in std_logic;
E: out std_logic);
end P_OR;
architecture FA_ARCH of FA is
component HA
port(A, B: in std_logic;
R, S: out std_logic);
end component HA;
component P_OR
port(C, D: in std_logic;
E: out std_logic);
end component P_OR;
-8-
Copyright 2012 Thibaut Cuvelier. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation
expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.
http://tcuvelier.developpez.com/tutoriels/vhdl/introduction-langage/
Introduction au langage VHDL par Thibaut Cuvelier
Il importe de bien mettre les mmes noms de variables lors de l'utilisation des composants que lors de leur cration.
Lors d'une dclaration d'architecture par structure, les seuls symboles utiliss sont les entres, signaux et sorties du
composant cr, pas les variables dclares dans l'entit concernant l'utilisation de composants externes.
IV-C - Comportemental
On dcrit alors l'architecture comme une suite d'instructions, comme en programmation informatique traditionnelle.
On dfinit des process ainsi que leur liste de sensibilit : ds qu'un symbole change de valeur dans cette liste, le
code est rexcut. C'est utile notamment en logique squentielle, pour lancer le code chaque coup de l'horloge.
Les instructions sont excutes de manire squentielle ; cependant, les signaux ne changent de valeur qu' la fin
du process.
On peut utiliser diverses constructions bien connues (fort semblables l'Ada) : le if-then-else, le case-is when, etc. On
dispose de plusieurs boucles, mais leur utilisation ne correspond pas l'habitude informatique (elles correspondent
plus une simplification de l'criture qu' une excution de code rptitive pour s'approcher du rsultat final ou toute
utilisation plus traditionnelle des boucles), de mme pour les fonctions et procdures.
Les signaux sont dfinis dans l'en-tte de l'architecture ; les variables ne sont valables que dans un process. En
dehors d'un process, tout se produit de manire concurrente : deux process peuvent tre excuts simultanment.
Par contre, dans un process, toutes les instructions sont excutes de manire squentielle et les affectations sont
ralises la fin.
On peut implmenter un multiplexeur l'aide d'une srie de if, une manire trs commode de procder pour tout qui
vient de la programmation informatique.
library ieee;
use ieee.std_logic_1164.all;
-9-
Copyright 2012 Thibaut Cuvelier. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation
expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.
http://tcuvelier.developpez.com/tutoriels/vhdl/introduction-langage/
Introduction au langage VHDL par Thibaut Cuvelier
On peut y prfrer un case pour des raisons de lisibilit, cela explicite bien qu'on travaille toujours avec le mme
vecteur de bits.
library ieee;
use ieee.std_logic_1164.all;
Pour illustrer les boucles, on peut implmenter un dcodeur, la fonction inverse du multiplexeur ci-dessus. En d'autres
termes, un dcodeur est un gnrateur de mintermes : en fonction de ses entres, seul un bit de sortie sera activ.
library ieee;
use ieee.std_logic_1164.all;
for I in 0 to 3 loop
if I = N then
S(I) <= '1';
end if;
end loop;
end process;
end;
V - Logique squentielle
Simplement, on passe en logique squentielle quand on ajoute une horloge en entre et qu'un bout de code
est excut chaque flanc montant/descendant. On se basera donc sur une expression comportementale de
- 10 -
Copyright 2012 Thibaut Cuvelier. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation
expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.
http://tcuvelier.developpez.com/tutoriels/vhdl/introduction-langage/
Introduction au langage VHDL par Thibaut Cuvelier
l'architecture, il n'est pas possible de procder autrement. Les sorties du circuit dpendront des entres actuelles
ainsi que de leurs valeurs prcdentes.
Par exemple, la logique squentielle sera utilise pour une lampe clignotante ( chaque coup d'horloge, on inverse
la sortie, afin que la lampe passe de l'tat allum, puis teint, puis allum car on retourne l'tat initial) ou pour tout
circuit un tant soit peu plus compliqu (comme un processeur : chaque coup d'horloge, il faut raliser une srie
d'oprations dictes par l'instruction en cours d'excution ; quand on a fini de traiter une instruction, on passe la
suivante ; chaque fois, il faut mmoriser quel endroit on est arriv dans le traitement d'une instruction et dans
le code excuter).
titre d'exemple, on peut modliser un flip-flop (ou bascule ou verrou) de type D, avec reset synchrone et asynchrone.
Quand l'horloge est , on recopie l'entre la sortie ; quand l'horloge est , on mmorise la valeur
. Le reset permet de mettre le flip-flop dans un tat stable et connu, ce qui n'est pas forcment le cas la mise
sous tension.
De manire synchrone, on vrifie qu'on est bien un flanc montant (ou descendant, selon la convention souhaite ;
on aurait alors utilis falling_edge) avant de faire quoi que ce soit.
library ieee;
use ieee.std_logic_1164.all;
De manire asynchrone, le reset se passe toujours, tandis que l'entre n'est recopie dans le flip-flop qu'au flanc
montant.
library ieee;
use ieee.std_logic_1164.all;
- 11 -
Copyright 2012 Thibaut Cuvelier. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation
expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.
http://tcuvelier.developpez.com/tutoriels/vhdl/introduction-langage/
Introduction au langage VHDL par Thibaut Cuvelier
begin
if RAZ = '1' then
Q <= '0';
elsif rising_edge(CLK) then
Q <= D;
end if;
end process;
end ARCH_FFD;
Une machine tats est l'implmentation en lectronique du concept d'automate : dans un circuit squentiel, on
mmorise une certaine forme des entres prcdentes (l'tat) qui vont influencer la sortie courante. Par exemple,
pour le circuit contrlant une lampe clignotante, on aura une machine tats trs simple : seuls deux tats sont
possibles (lampe allume ou teinte), on passe de l'un l'autre chaque coup d'horloge.
Ainsi, si on veut implmenter une machine tats, il suffit de dfinir une srie de bits dfinissant l'tat courant ; ainsi,
chaque coup d'horloge, on excute un process qui va varier en fonction de l'tat courant. On prfrera utiliser un
signal, tant donn qu'il n'est pas utile de transmettre cette valeur l'extrieur ou de laisser la possibilit de l'altrer
directement.
On peut donc implmenter cette lampe en VHDL. La machine tats ne contiendra que deux tats et un bit suffira
pour le retenir ( ). La sortie O varie en mme temps que le flanc montant d'horloge et servira actionner
la lampe (ce qui est fait du signal en sortie est grer manuellement l'aide de DEL et rsistances, en se basant sur
les spcifications du composant utilis notamment en ce qui concerne le courant de sortie).
Si on veut utiliser la valeur d'une sortie comme base dans un bout de programme, ce n'est pas possible : il faut dfinir
un signal qui sera recopi dans la sortie, de manire asynchrone. Pour ce faire, on met l'instruction de recopie dans
la sortie en dbut d'architecture, avant de dfinir le moindre process.
- 12 -
Copyright 2012 Thibaut Cuvelier. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation
expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.
http://tcuvelier.developpez.com/tutoriels/vhdl/introduction-langage/
Introduction au langage VHDL par Thibaut Cuvelier
process(CLK)
begin
-- ...
-- On utilise sOut l o on voulait un accs Out ;
-- on donne des valeurs sOut l o on assignait Out.
end process
end Arch;
VI - Simuler un circuit
On utilise dans cette section Active-HDL 8.2, bien que la manipulation puisse tre totalement diffrente dans un autre
logiciel.
Aprs avoir lanc le logiciel, crer un nouveau design et ajouter un fichier prcdent (ici, on utilise le code d'un
additionneur complet). Au lancement du logiciel, choisir la cration d'un nouvel espace de travail et profiter de l'option
de cration d'un nouveau design (accessible depuis le menu File > New). L'option Add existing resource files permet
d'insrer de nouveaux fichiers dans ce design ; aprs avoir slectionn le fichier, la page suivante demande de
spcifier le langage de description (VHDL).
cran d'accueil.
- 13 -
Copyright 2012 Thibaut Cuvelier. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation
expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.
http://tcuvelier.developpez.com/tutoriels/vhdl/introduction-langage/
Introduction au langage VHDL par Thibaut Cuvelier
- 14 -
Copyright 2012 Thibaut Cuvelier. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation
expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.
http://tcuvelier.developpez.com/tutoriels/vhdl/introduction-langage/
Introduction au langage VHDL par Thibaut Cuvelier
Fichiers ajouter.
- 15 -
Copyright 2012 Thibaut Cuvelier. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation
expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.
http://tcuvelier.developpez.com/tutoriels/vhdl/introduction-langage/
Introduction au langage VHDL par Thibaut Cuvelier
Choix du langage.
- 16 -
Copyright 2012 Thibaut Cuvelier. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation
expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.
http://tcuvelier.developpez.com/tutoriels/vhdl/introduction-langage/
Introduction au langage VHDL par Thibaut Cuvelier
L'espace ainsi cr, il faut initialiser une simulation (Simulation > Initialize simulation), crer des signaux de stimulation
(File > New > Waveform). Depuis l'explorateur de design, ajouter l'architecture simuler (dans le menu contextuel,
choisir Add to Waveforme). Pour chacun des signaux apparus, il faut ajouter un stimulateur (menu contextuel,
Stimulators). Par simplicit, on utilise des horloges de frquences diffrentes.
Initialisation de la simulation.
- 17 -
Copyright 2012 Thibaut Cuvelier. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation
expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.
http://tcuvelier.developpez.com/tutoriels/vhdl/introduction-langage/
Introduction au langage VHDL par Thibaut Cuvelier
- 18 -
Copyright 2012 Thibaut Cuvelier. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation
expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.
http://tcuvelier.developpez.com/tutoriels/vhdl/introduction-langage/
Introduction au langage VHDL par Thibaut Cuvelier
Choix du stimulateur.
On obtient ainsi un signal en sortie qui additionne les trois bits plus haut. On a fix le bit de report zro tout le temps.
Rsultat de la simulation.
VII - Remerciements
Merci Nicolas Valle pour son aide la rdaction, vermine pour ses encouragements et Claude Leloup pour
sa relecture orthographique !
- 19 -
Copyright 2012 Thibaut Cuvelier. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation
expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.
http://tcuvelier.developpez.com/tutoriels/vhdl/introduction-langage/