Papar sahaja
0:02
S… Speaker 1 (Initiation_VHDL_P1)
Bonjour tout le monde, j'espère que vous allez bien. Alors, dans cette vidéo, je vais essayer de faire une petite initiation au langage VHDL et aussi au logiciel Quartus qu'on va utiliser durant les travaux pratiques du module base des systèmes embarqués destinés pour les deuxièmes années cycle d'ingénieurs GXI.
0:31
S… Speaker 1 (Initiation_VHDL_P1)
et GER de l'Institut Mohamed. Alors ce que je vais faire dans cette vidéo, normalement ça sera une série de vidéos, c'est de faire une petite introduction au langage VHDL et aussi de faire la prise en main du logiciel Quartus qu'on va utiliser pour décrire le comportement des circuits numériques. Alors je vais commencer tout d'abord par une petite introduction du langage VHDL.
1:02
S… Speaker 1 (Initiation_VHDL_P1)
Alors, VHDL, c'est tout simplement l'abréviation de Very High Speed Integrated Circuit Hardware Design Language. Alors, vous pouvez voir tout simplement à partir de l'abréviation que c'est un langage de description matérielle. Ça veut quoi dire ? Ça veut dire que ce langage, il ne va pas tout simplement nous permettre de décrire ou bien de programmer le fonctionnement d'un composant électronique, mais quand même.
1:32
S… Speaker 1 (Initiation_VHDL_P1)
de le décrire d'une façon matérielle, c'est-à-dire qu'on peut le synthétiser et qu'on peut avoir une implémentation matérielle effective. Alors, étant des futurs ingénieurs, le langage VHDL va vous permettre de faire la conception des circuits électroniques, numériques bien sûr, et aussi de synthétiser ces circuits afin d'avoir des imprimables pour l'implémentation réelle.
2:04
S… Speaker 1 (Initiation_VHDL_P1)
Peu importe le système numérique ou bien le circuit numérique, pour le décrire, on a besoin de deux choses essentielles. La première, c'est la vue externe. Lorsqu'on parle de la vue externe, c'est-à-dire mon système comme étant une boîte noire, la vue externe. Alors, j'ai plusieurs ports.
2:27
S… Speaker 1 (Initiation_VHDL_P1)
Alors, j'ai bien sûr ce qu'on appelle des entrées, des sorties et des entrées-sorties. Les entrées-sorties, par exemple, un bus de données. En point de vue microprocesseur, un bus de données, c'est un bus bidirectionnel, c'est-à-dire c'est une entrée-sortie. Soit je vais extraire ou bien lire des données de la mémoire, je vais effectuer des opérations, après ça, je vais sauvegarder dans la mémoire.
2:53
S… Speaker 1 (Initiation_VHDL_P1)
Alors je reçois des données à travers le port et aussi je vais transférer des données à travers le même port. Alors la vue externe, c'est la boîte noire et l'ensemble des entrées et sorties. La deuxième partie dont nous avons besoin pour décrire un système numérique, c'est la vue interne. La vue interne du composant, il décrit tout simplement son comportement.
3:23
S… Speaker 1 (Initiation_VHDL_P1)
Alors, on parle des circuits numériques, donc forcément, c'est l'ensemble des circuits logiques constituant notre système numérique, ou bien la fonction logique qui traduit le fonctionnement de notre système. Alors, la vue externe et la vue interne. En utilisant le langage VHDL, ou bien si on veut décrire le fonctionnement d'un circuit numérique en utilisant le langage VHDL,
3:54
S… Speaker 1 (Initiation_VHDL_P1)
On aura besoin de ce qu'on appelle une unité de conception. Alors ici, je vais rentrer dans la programmation, ou bien dans le langage VHDL directement. Alors on aura besoin de ce qu'on appelle une unité de conception. Elle-même, elle est constituée de deux parties, c'est-à-dire dans le langage. J'ai ce qu'on appelle l'entité, ou bien en anglais Entity.
4:21
S… Speaker 1 (Initiation_VHDL_P1)
Alors, il définit tout simplement la vue externe du composant. Alors, ce qu'il va nous permettre de faire, c'est de spécifier les entrées et les sorties de notre système. J'ai, par exemple, telle entrée et j'ai telle sortie. Je vais les définir. Alors, l'entité, elle est équivalente à décrire la vue externe du système. Et deuxièmement,
4:47
S… Speaker 2 (Initiation_VHDL_P1)
L'architecture va me permettre de définir la vue interne ou bien le comportement de mon composant, c'est-à-dire l'ensemble des circuits logiques.
5:00
S… Speaker 1 (Initiation_VHDL_P1)
qui vont faire la liaison entre les entrées du système et les sorties du système, selon bien sûr la fonction logique de ce dernier. Alors deux choses, l'entité vue externe et l'architecture la vue interne. Ensemble, on peut avoir ce qu'on appelle un système numérique. Alors je vais commencer directement par l'entité. Comme on a dit, c'est la vue externe.
5:31
S… Speaker 1 (Initiation_VHDL_P1)
Je vais vous donner, par exemple, ou bien directement, le syntaxe qu'on va utiliser par la suite pour la description de n'importe quel qu'il s'accueille. Alors, tout d'abord, on commence par ce bloc entity. Normalement, cette parenthèse, ça ne rentre pas. On va la voir par la suite, mais quand même. Pour déclarer une entité ou bien une boîte noire, on utilise le code suivant.
6:01
S… Speaker 1 (Initiation_VHDL_P1)
Alors, je commence par l'entête ou bien le mot-clé entity. Je donne par la suite le nom de l'entité et le mot-clé is. Et je vais finir ce bloc de code par un end, le nom de l'entité. Et vous devez faire attention que ce nom-là soit le même que vous avez mis au début. Le nom de l'entité, c'est-à-dire le nom de cette boîte noire. Rien d'autre. C'est bon.
6:30
S… Speaker 1 (Initiation_VHDL_P1)
Vous pouvez utiliser mux de 1, décodeur, demi-additionnaire, peu importe, c'est un nom. C'est bon. Alors, on a dit que dans l'entité, on va définir les entrées et sorties. Donc, à l'intérieur, j'ai une fonction appelée port. Alors, port, j'ouvre la parenthèse et je vais fermer la parenthèse. Alors, à l'intérieur de cette fonction, ce que je vais faire, c'est de définir les ports. Je vais donner un nom.
7:00
S… Speaker 1 (Initiation_VHDL_P1)
Deux points. Le sens de ce port, est-ce que c'est une entrée-sortie ou bien entrée-sortie, et aussi le type. Lorsqu'on parle du type, alors pour le moment, on va travailler tout simplement par deux types stédélogiques et stédélogiques vecteurs, mais quand même par la suite, on va voir d'autres types. Par exemple, ce qu'on veut dire par le type, c'est que mon système, il va avoir comme entrée, par exemple, soit un bit,
7:30
S… Speaker 1 (Initiation_VHDL_P1)
Soit un vecteur de bits, soit des entiers, soit par exemple des nombres signés, des nombres non signés. C'est ça le type du pas. Est-ce que mon système, par exemple, va avoir en entrée un vecteur de bits, des entiers, des nombres signés, non signés, etc. C'est bon. Mais pour le moment, et pour les deux exemples à venir, on va utiliser tout simplement
8:01
S… Speaker 1 (Initiation_VHDL_P1)
deux types. Le premier type, c'est STD logique. Celui-là représente un bit logique, c'est-à-dire soit 0, soit 1, par exemple. Ici, cette lignée de code, ce qu'il va faire, c'est de déclarer une variable, plutôt un signal A, comme étant
8:25
S… Speaker 1 (Initiation_VHDL_P1)
Une entrée de type STD logique, c'est-à-dire que cette entrée, elle peut prendre soit 0, soit 1, rien d'autre. La deuxième ligne a permis de définir le port B comme étant une sortie de type STD logique. Alors, ici, supposons que c'est un circuit numérique qui a une entrée et une sortie. L'entrée, c'est A, et la sortie, c'est B.
8:57
S… Speaker 1 (Initiation_VHDL_P1)
Le deuxième type qu'on va utiliser, c'est STD logique vector. Alors, il représente tout simplement un vecteur de bits logiques. Par exemple, celui-là, il va tout simplement définir un vecteur dont la taille, c'est 4 bits. Et ce vecteur-là, il représente une entrée. Ici, il y en a une erreur. Par exemple, je vais considérer STD.
9:26
S… Speaker 1 (Initiation_VHDL_P1)
Aussi, c'est un signal ou bien c'est un port D qui est une sortie et qui est un vecteur de 8 bits. Par exemple, c'est un bus de données de 8 bits. En tout cas, l'utilisation de ces variables ou bien de ces types, on va les voir en détail. Une fois, on va commencer à faire des exemples et vous allez comprendre directement comment ça marche. Alors, ce que vous devez retenir, c'est que...
9:55
S… Speaker 2 (Initiation_VHDL_P1)
Pour déclarer une entité, vous devez toujours commencer par le mot-clé entity.
10:00
S… Speaker 1 (Initiation_VHDL_P1)
Le nom de l'entité is. Cette entité doit se terminer par and, le même nom de l'entité. A l'intérieur, vous allez définir l'ensemble des ports. Vous commencez par le nom, le point, le sens et le type. Et n'oubliez pas le point, virgule. Alors, une autre remarque, c'est que le dernier port, ou bien dans la déclaration du dernier port, je ne fais pas un point, virgule. Alors, ce point, virgule est décalé.
10:30
S… Speaker 1 (Initiation_VHDL_P1)
vers la parenthèse. C'est bon, de la fonction port. Mais en tout cas, je vais refaire ça avec vous lors de la programmation sous le langage Quartus, sous le logiciel Quartus. Alors, on va faire un petit exemple. L'exemple le plus simple, c'est l'exemple d'un demi-additionnaire. Alors, un demi-additionnaire, c'est on veut le voir par exemple comme étant une boîte noire.
11:03
S… Speaker 1 (Initiation_VHDL_P1)
Alors, c'est une boîte noire qui a deux entrées et deux sorties. Le S, c'est pour la sangle. Et le C, c'est pour la retenue. La retenue, il y a carry en anglais. C'est bon. Alors, si je veux déclarer, par exemple, la vue externe de ce composant. Alors, premièrement, on va suivre, bien sûr, le syntaxe qu'on a ici.
11:37
S… Speaker 1 (Initiation_VHDL_P1)
Alors, je vais commencer par le mot-clé entity. Moi, ce composant, ou bien cette vue externe, est appelée half other. Half other, en anglais, c'est demi-additionnaire. Et le mot-clé is. Je vais terminer mon entité par and. Le même nom, c'est half other. Alors, comme je l'ai dit tout à l'heure, j'ai deux entrées.
12:07
S… Speaker 1 (Initiation_VHDL_P1)
et B, ce sont normalement des bits. Alors A, c'est un bit, et B, c'est un bit. C'est-à-dire qu'ils peuvent prendre soit A, soit 0, donc ils vont être de type STD logique. Normalement, pour définir les ports, on a dit qu'elles doivent être à l'intérieur de la fonction port. Alors pour A et B, ce sont des entrées, alors IN, et le type, c'est STD logique, c'est-à-dire l'oreille.
12:34
S… Speaker 1 (Initiation_VHDL_P1)
Si, par exemple, je veux faire la table de vérité, alors j'aurai A et B. J'aurai soit 0, 0, 0, 1, 1, 0 ou bien 1, 1. Alors, ce sont des bits. Le type, c'est STD logique. C'est bon. Pour les sorties, alors aussi j'ai deux sorties. Aussi, le type, c'est le même, c'est STD logique. Alors, je vais les déclarer de cette manière. Pour la somme, j'utilise S.
13:08
S… Speaker 1 (Initiation_VHDL_P1)
C'est une sortie de type STD logique. C'est la même chose. C'est une sortie de type STD logique. Et si vous pouvez remarquer, il n'y a rien. Je n'ai pas le point virgule. Le point virgule est déplacé après la parenthèse d'Yale. Yale pas. C'est bon ? Alors, je vais normalement avoir la déclaration, la description de l'entité peut être faite d'une autre manière plus simple.
13:40
S… Speaker 1 (Initiation_VHDL_P1)
Alors, celle-là est équivalente à celle-là. Ce qu'on a fait, c'est tout simplement qu'on a regroupé les ports qui ont le même type. Par exemple, à la place d'écrire deux lignes A et B, je peux les regrouper dans la même ligne. A et B, ce sont des entrées du même type STD logique. Et S et C, ce sont des sorties du même type STD logique. Alors, aide les deux.
14:08
S… Speaker 1 (Initiation_VHDL_P1)
Descriptions de l'entité, ou les deux déclarations de l'entité, sont équivalentes. C'est bon ? Elles sont équivalentes. Alors, je passe. Maintenant, on a réussi à faire l'entité, c'est-à-dire on a réussi à définir la vue externe du système. J'ai deux entrées sans A et B, et j'ai deux sorties, les romans S et C.
14:36
S… Speaker 1 (Initiation_VHDL_P1)
Ça, c'est la première partie. C'est bon. Ce qu'on a fait, c'est tout simplement, on a créé l'entité de notre système. Alors, pour décrire le comportement, le système aurait besoin de ce qu'on appelle l'architecture. C'est-à-dire, je dois définir l'architecture de mon système ou bien le comportement de mon système. Alors, pour faire, je commence.
15:00
S… Speaker 2 (Initiation_VHDL_P1)
par cette ligne. Le mot-clé architecture, le nom de l'architecture et le nom de l'entité dont je vais définir le comportement. Par exemple, le corps de mon entité ou bien half other. Par exemple, l'entité qu'on a fait dans l'exemple précédent.
15:24
S… Speaker 2 (Initiation_VHDL_P1)
Alors, le mot-clé architecture, c'est un nom tout simplement de l'architecture de l'entité correspondante. Et je vais mettre le mot-clé is. Ici, il n'y a pas de point-virgule. C'est bon. Il n'y a pas de point-virgule. Normalement, l'architecture va commencer par cette ligne. Il va finir par and.
15:50
S… Speaker 2 (Initiation_VHDL_P1)
le nom de l'architecture. Alors, si vous mettez là architecture1, vous devez mettre ici architecture1, etc. C'est bon. Ce que vous devez savoir, c'est qu'une entité, peu importe à l'entité, peut avoir plusieurs architectures. C'est-à-dire que pour une seule entité, je peux définir plusieurs architectures et je peux utiliser WDF1. C'est bon ? Alors, je répète.
16:20
S… Speaker 2 (Initiation_VHDL_P1)
La définition d'une architecture, elle commence par une entête composée de mot-clé architecture, le nom de l'architecture, off, le nom de l'entité dont elle décrit le comportement. Le mot-clé is, il y en a un mot-clé begin, je vais par la suite vous dire de quoi sert. Et cette architecture, elle va finir par un corps. Alors, vous pouvez voir qu'à l'intérieur de l'architecture, j'ai deux zones.
16:53
S… Speaker 1 (Initiation_VHDL_P1)
La zone 1 qui est avant le mot-clé begin, alors c'est une zone déclarative. Ça veut quoi dire ? C'est que si j'ai par exemple des signaux, des constants, des composants, etc., je vais les déclarer avant de commencer l'architecture. Je sais très bien que vous ne savez pas c'est quoi un signal, c'est quoi un composant, etc. Mais quand même, on va les voir par la suite. Alors ce que je veux...
17:17
S… Speaker 1 (Initiation_VHDL_P1)
Normalement, ce que vous devez savoir ici, c'est tout simplement le syntaxe que vous allez utiliser et aussi l'architecture du code, la structure. Alors, la zone déclarative, il va permettre de définir les types, les objets, lorsqu'on dit les objets, c'est-à-dire les signaux, les composants. Et aussi, il va permettre de déclarer des composants qu'on va utiliser par la suite. Par exemple.
17:44
S… Speaker 1 (Initiation_VHDL_P1)
On veut faire la conception d'un multiplexeur 4 fois 1. Normalement, il y en a deux méthodes. Soit directement je vais utiliser la fonction logique de ce multiplexeur, ou bien je peux faire la conception d'un multiplexeur 2 fois 1, et je peux construire un multiplexeur 4 fois 1 en se basant sur ce composant-là.
18:09
S… Speaker 1 (Initiation_VHDL_P1)
Alors, je vais faire la description d'un multiplexeur 2 fois 1, et par la suite, je vais l'utiliser comme étant un composant à l'intérieur d'un multiplexeur 4 fois 1. En tout cas, la zone déclarative, dans laquelle vous allez déclarer les différents signaux, les constantes et aussi les composants. Et la deuxième partie, c'est le corps de l'architecture. Donc, c'est la partie qui vient après le mot-clé begin de l'architecture.
18:40
S… Speaker 1 (Initiation_VHDL_P1)
Alors, dans le cas, ce que vous faites, vous allez mettre l'ensemble des instructions concurrentes décrivant votre système. Lorsqu'on dit des instructions concurrentes, c'est-à-dire que l'ordre d'exécution de ces instructions n'est pas important. Ça veut dire que des instructions vont s'exécuter d'une manière parallèle à l'intérieur de l'architecture.
19:09
S… Speaker 1 (Initiation_VHDL_P1)
Normalement, si on veut décrire des systèmes séquentiels, par exemple des bascules, un circuit numérique séquentiel, c'est un circuit dont les états actuels dépendent des états précédents. Par exemple, une bascule, une bascule D, par exemple, l'état actuel dépend de l'état précédent. Donc ici, l'ordre d'exécution des instructions est tellement important. Alors dans ce cas, on utilise ce qu'on appelle les process.
19:37
S… Speaker 3 (Initiation_VHDL_P1)
Alors, ces process, on va voir leur définition par la suite. Alors, pour moi, ce que vous devez retenir de ce diapo, c'est tout simplement la structure d'une architecture. Comment il commence, comment il va finir, et les deux zones. Rien d'autre. C'est bon ?
20:00
S… Speaker 2 (Initiation_VHDL_P1)
Alors, je passe. On va appliquer ça sur notre demi-addition. Alors, je vais essayer de dessiner une autre fois la table de vérité de ce dernier. Alors, j'ai A et B, S et C. 0, 0, 0, 1, 1, 0 et 1, 1. Normalement, la somme, c'est clair. 0 plus 0, c'est 0. Si 1, 1.
20:34
S… Speaker 1 (Initiation_VHDL_P1)
Pour la retenue, 0, 0, 0, et ici, 1. Alors, lorsqu'on parle de l'architecture, normalement d'un système numérique, je dois savoir les différentes fonctions logiques de ce circuit, ou bien d'extraire la fonction logique globale de mon circuit. Alors, si je veux extraire, par exemple, la fonction logique qui va décrire la somme
21:00
S… Speaker 1 (Initiation_VHDL_P1)
S, c'est à partir de la table de vérité. Ici, c'est simple. Si c'était des décors ou bien j'ai plusieurs entrées, je vais utiliser tableau de Carnot, par exemple. Mais pour notre cas, pas la peine de faire parce que c'est tellement simple. Alors, pour S, elle va être égale à 1 dans ce cas et dans ce cas. Alors, S peut être écrite sous cette forme. Alors, pour le premier cas, qu'est-ce que j'ai ? J'ai A bar.
21:32
S… Speaker 2 (Initiation_VHDL_P1)
Le deuxième cas, j'ai A, B bar. Donc ce qui est équivalent à A, XOR, B. C'est bon ? Ça c'est pour S. Normalement pour C, ou bien pour la retenue, elle est égale à 1 lorsque A et B sont égales à 1. C'est-à-dire que C va être égale à A, AND, B. Si je veux traduire ces deux équations en des circuits logiques, alors j'aurai...
22:04
S… Speaker 2 (Initiation_VHDL_P1)
Deux entrées bien sûr, A et B. Alors je peux faire comme ça. Ici j'aurai un XOR et ici j'aurai un AND. Alors ça c'est S et ça c'est S. Alors si on veut voir ça comme étant une boîte noire, alors j'ai deux entrées et deux sorties. Et comme en émettant un système complet, voilà, j'ai mon circuit à l'intérieur, donc c'est une porte XOR.
22:39
S… Speaker 2 (Initiation_VHDL_P1)
Et une porte interne. C'est bon ? Alors, je vais effacer ça afin de continuer. Alors, voilà. Voilà le comportement ou bien l'architecture interne de mon système. C'est bon ? Alors, on va essayer de faire ensemble la définition de l'architecture de ce système. Alors, qu'est-ce qu'on a dit tout à l'heure ? Je ne commence toujours pas quoi ? Par l'entête.
23:11
S… Speaker 3 (Initiation_VHDL_P1)
architecture, ou bien le mot-clé architecture. Le nom de mon architecture, c'est arch. C'est bon, c'est rien, c'est un nom. Vous devez faire attention à mettre le même nom à la fin de l'architecture. Alors, l'architecture of half other. C'est quoi half other ? C'est tout simplement l'entité qu'on a définie tout à l'heure. Is, pour le moment, on n'a rien à déclarer.
23:41
S… Speaker 4 (Initiation_VHDL_P1)
On n'a ni signal ni composant. Ça ne vous intéresse pas pour le moment. Alors, je vais faire le mot begin. Je vais commencer mon architecture. Alors, qu'est-ce qu'on a dit pour S ? S, il va être égal à A, XOR, B. Alors, ce qui peut être traduit par le code, comme ça. S, alors ça, c'est le symbole d'affectation du signaux. S, il va recevoir A, XOR, B.
24:16
S… Speaker 4 (Initiation_VHDL_P1)
De la même manière. Pour S, qu'est-ce qu'on a dit ? S, pardon, C, C, A, and B. Alors c'est ça. Donc C, elle va recevoir A, and B. Je vais supprimer l'ensemble. Alors, ce que j'ai ici, c'est une description d'un demi-additionnaire qui est liée à l'entité half-mother.
24:44
S… Speaker 1 (Initiation_VHDL_P1)
Alors, en regroupant les deux, c'est-à-dire cette entité plus cette architecture, j'ai déclaré, ou bien j'ai défini, plutôt j'ai fait la description matérielle d'un demi-additionnel. C'est bon ?
25:00
S… Speaker 2 (Initiation_VHDL_P1)
Alors pour voir ça, on va passer au logiciel Quartus. Alors je vais lancer le logiciel. Le logiciel est déjà lancé. Alors il est là. Alors une fois que vous lancez le logiciel Quartus, normalement vous aurez une fenêtre comme celle-là. Je vais vous envoyer bien sûr le lien pour télécharger le logiciel. Mais ce que je vais faire pour le moment, c'est de...
25:32
S… Speaker 1 (Initiation_VHDL_P1)
de vous montrer comment on va créer des projets et comment vous allez, par exemple, utiliser Quartus pour décrire ou bien simuler le comportement des circuits numériques. Alors, pour les boutons, je vais les expliquer par la suite, mais ce que je vais faire, c'est la première étape, c'est de faire créer...
25:55
S… Speaker 1 (Initiation_VHDL_P1)
un nouveau projet parce que le logiciel Quartus c'est un logiciel qui travaille par des projets, c'est à dire que initialement on doit créer un dossier et qu'on va regrouper l'ensemble des fichiers qu'on va utiliser dans le composant dans le même dossier. Alors ça pour nous c'est un projet. Alors pour commencer un nouveau projet, on va partir vers File, New Project Wizard.
26:24
S… Speaker 1 (Initiation_VHDL_P1)
Alors, s'il vous plaît, vous devez faire attention à ça parce que c'est comme une prise en main du logiciel Quartus. Et ce sont les étapes que vous allez répéter par la suite dans l'ensemble des projets qu'on va faire en travaux pratiques. Alors, New Project Resolve. Alors ici...
26:42
S… Speaker 1 (Initiation_VHDL_P1)
Normalement, ce que vous devez faire, c'est de choisir le répertoire ou bien le dossier dans lequel vous allez mettre l'ensemble des fichiers qu'on va faire ou bien qu'on va utiliser pour la description de notre système. Alors, moi, par exemple, je vais partir vers un dossier projet. Je vais créer, par exemple, un nouveau dossier. Pour ce dossier, je vais l'appeler, par exemple, half-adopt.
27:14
S… Speaker 2 (Initiation_VHDL_P1)
parce qu'on va faire un projet d'un demi-additionné. Voilà, je vais sélectionner le dossier. Le dossier est sélectionné. Alors, dans la deuxième case, il est demandé de donner un nom à ce projet. Moi, je vais donner le même nom, Half Adult. C'est bon ? Alors, pour la troisième, c'est la même chose, donc c'est rien. Je fais Next. Alors ici, si j'ai par exemple...
27:47
S… Speaker 1 (Initiation_VHDL_P1)
déjà des composants qui existent dans un autre emplacement et je veux les importer. Pour le moment, on n'a pas ça. Alors, vous allez faire Next une autre fois. Il va vous amener à une troisième page dans laquelle vous allez faire le choix de la carte FPGA utilisée. Pour nous, malheureusement, on n'a pas de carte FPGA, donc on va faire Next directement.
28:14
S… Speaker 1 (Initiation_VHDL_P1)
Et ici, vous faites Next parce qu'on ne va pas utiliser d'autres logiciels pour faire la simulation. Donc, vous faites Next et Finish. C'est bon ? Alors, une fois fait, vous allez voir que normalement, j'ai ici un projet appelé Half Add. Alors, pour pouvoir décrire le comportement de ce circuit en utilisant le VHDL, ce qu'on va faire,
28:47
S… Speaker 1 (Initiation_VHDL_P1)
Vous allez partir vers File, New, ou bien CTRL N directement. Et vous allez choisir VHDL File, parce qu'on va faire la description matérielle en utilisant le langage de programmation VHDL. Vous allez cliquer sur OK. Il va vous donner quand même une onglet dans laquelle vous pouvez mettre du code. C'est comme un éditeur de texte. Mais moi, ce que je vais faire, c'est d'utiliser les mêmes...
29:21
S… Speaker 2 (Initiation_VHDL_P1)
Les mêmes déclarations qu'on a faites tout à l'heure. Alors, pour déclarer, normalement, les commentaires, ce Quartus se fait par les moins, ou bien tirer 6. C'est bon. Alors ici, je vais faire déclaration de l'entité. Alors, on a dit, je commence toujours par le nom, ou bien le mot-clé entity. Le nom qu'on a donné, c'est have other et is.
30:00
S… Speaker 2 (Initiation_VHDL_P1)
Normalement, on a dit aussi que l'entité va être clôturée par AND, le même nom de l'entité. Et à l'intérieur de ces deux lignes-là, on va déclarer l'ensemble des ports à l'aide de la fonction port. J'ouvre la parenthèse. Voilà. Alors, on a dit qu'on a deux entrées, A et B. Ce sont des...
30:34
S… Speaker 2 (Initiation_VHDL_P1)
entrées de type STD logique. Voilà. IGS et C, ce sont des sorties out de type STD aussi logique. Normalement, c'est simple à programmer parce que l'éditeur va vous aider par des suggestions. Donc, c'est simple. Et voilà, j'ai déclaré mon entité. Pour déclarer l'architecture, alors, déclaration.
31:09
S… Speaker 2 (Initiation_VHDL_P1)
de l'architecture du hashadro, bien du demi-addition. On a dit, on va commencer par l'entête, voilà, architecture, le nom de l'architecture, par exemple, hash1, de l'entité hashadro, is. Alors ici, j'ai oublié un point-vergule ici, et je dois supprimer celui-là.
31:43
S… Speaker 2 (Initiation_VHDL_P1)
Pour la dernière déclaration des variables, ou plutôt des entrées-sorties, le point-virgule doit être après la parenthèse de la fonction port. C'est pas ici. C'est bon ? Alors, half other is. Il n'y a rien à déclarer, donc je vais commencer mon architecture, begin, et je donne directement s, combien l'ensemble va recevoir a, xor, b.
32:15
S… Speaker 2 (Initiation_VHDL_P1)
Et C, il va recevoir A AND B. Pour finir mon architecture, je vais faire AND ARCH A. Alors, je vous ai dit de faire attention d'utiliser le même nom. C'est bon ? Sinon, il va vous donner des erreurs. Alors ici, on a déclaré la vue. Ici, c'est la vue externe. Et ici, c'est la vue.
32:50
S… Speaker 1 (Initiation_VHDL_P1)
Ou bien l'architecture ou bien le comportement de notre système. Alors, normalement, pour avoir un programme juste, on a besoin de ce qu'on appelle des bibliothèques. Alors, les bibliothèques qu'on va utiliser, la bibliothèque plutôt qu'on va utiliser, est la suivante. Alors, on tape library et trois oeufs. Alors, cette library ou bien cette bibliothèque, elle va contenir l'ensemble, soit...
33:19
S… Speaker 1 (Initiation_VHDL_P1)
des fonctions qu'on va utiliser par la suite, ou bien aussi des types des entrées-sorties. Alors, la bibliothèque, ou bien le pactage à l'intérieur de cette bibliothèque contenant les types, par exemple, stdlogic, et le suivant. Alors, ces deux lignes de code, vous devez les utiliser toujours. Use. Alors, use, c'est pour faire l'import du pactage à l'intérieur de la librairie. Alors, use, i3e.
33:55
S… Speaker 1 (Initiation_VHDL_P1)
Alors, cette ligne de code, ce qu'il va faire, c'est tout simplement faire l'import de ce pactage qui existe à l'intérieur de la bibliothèque E3E avec toutes les fonctionnalités, c'est-à-dire de faire télécharger ou bien importer ou bien de mettre à notre disposition les différentes fonctions et les différents types existants à l'intérieur de ce pactage.
34:18
S… Speaker 1 (Initiation_VHDL_P1)
de ce pactage. C'est bon. Je ne peux pas utiliser, par exemple, un type STD logique si je n'ai pas fait l'appel de ce pactage. C'est bon. Par la suite, on va voir, par exemple, les variables ou bien les signes de type entier signé et non signé. Alors, dans ce cas, on doit aussi faire appel à un autre type de librairie. Mais quand même, si vous voulez comprendre facilement
34:46
S… Speaker 1 (Initiation_VHDL_P1)
le VHDL, vous pouvez faire une analogie avec le langage C. C'est la même chose. Si vous ne faites pas l'appel à stdo.h, normalement, vous ne pouvez pas utiliser, par exemple, la fonction printf ou bien scanf.
35:00
S… Speaker 2 (Initiation_VHDL_P1)
C'est bon, la même chose. Ici, si vous ne faites pas l'appel à ces deux lignes, c'est-à-dire la bibliothèque et trois eaux, et les pactages STD logiques 1064, vous ne pouvez pas utiliser, par exemple, le type STD logique, et vous ne pouvez pas utiliser XOR et AND. Ce sont des fonctions qui sont prédéfinies à l'intérieur de ce pactage. C'est bon ? Alors, il y en a une autre romate. Alors, je vais...
35:27
S… Speaker 2 (Initiation_VHDL_P1)
sauvegarder ce fichier-là, mais vous devez faire attention. Vous devez sauvegarder le fichier avec le même nom de l'entité. Alors, je vais faire CTRL-S. Je vais sauvegarder avec le même nom de l'entité. Alors, c'est un fichier VHDL. Je tape enregistrer. Alors, si je pars ici vers Files, je peux voir que j'ai un fichier HalfAdder en VHDL. C'est bon ?
35:56
S… Speaker 1 (Initiation_VHDL_P1)
Alors, jusqu'à un moment où on a réussi à créer un circuit, c'est le moment de le tester, ou bien de savoir est-ce que ça marche ou non. Alors, la première étape, c'est de compiler notre projet. Compiler le projet, alors vous tapez sur ce bouton-là, Start Compilation. Alors, je vais taper sur le bouton et je vais voir est-ce que j'ai des problèmes. Je vais attendre.
36:43
S… Speaker 2 (Initiation_VHDL_P1)
J'ai aucun problème. C'est-à-dire qu'il n'y a pas d'erreur dans le code. Alors, 12 warnings, mais ça ne nous intéresse pas. Ce sont tout simplement des... Ça ne va pas affecter le fonctionnement de notre système. Mais s'il y en a des erreurs, par exemple, je vais vous montrer comment ça marche. Je vais, par exemple, supprimer un point-vergule. Je vais compiler une autre fois. Je vais enregistrer, bien sûr. Je vais compiler. Vous allez...
37:12
S… Speaker 2 (Initiation_VHDL_P1)
Trouvez que, voilà, j'ai trois erreurs. Si je veux voir, par exemple, quelles sont ces erreurs-là, je vais partir ici vers Flow Messages. Je peux lire. Alors, syntaxe error at half other. Normalement, j'aurais besoin d'un point virgule, la ligne 19. Avant la ligne 19, c'est-à-dire ici. Je vais mettre le point virgule et ça va marcher une autre fois à 100%.
37:49
S… Speaker 1 (Initiation_VHDL_P1)
Alors, je vais compiler. Je vais attendre jusqu'à ce qu'elle termine. Voilà, il n'y a pas d'erreur. Warning, ça ne nous intéresse pas. Voilà. Alors ici, on a décrit notre demi-additionnel. On a compilé, il n'y a pas d'erreur. Alors, c'est le moment de s'émuler et de tester.

This transcript was generated by AI (automatic speech recognition). May contain errors — verify against the original audio for critical use. AI policy

❤️ Love STT.ai? Tell your friends!
Ringkasan
Klik Ringkasan untuk mencipta ringkasan AI transkripsi ini.
Menyatakan...
Tanya AI Tentang Transkrip Ini
Tanya apa-apa tentang transkripsi ini — AI akan cari bahagian yang berkaitan dan menjawab.