« Very High Speed Integrated Circuit Hardware Description Language/Introduction » : différence entre les versions
Contenu supprimé Contenu ajouté
m clean up, remplacement: sommaire → Sommaire (2) avec AWB |
|||
Ligne 3 :
| numéro = 1
| niveau = 15
| précédent = [[../|
| suivant = [[../Interfaces VGA et PS2/]]
}}
Nous avons l'intention d'amener le lecteur à utiliser un processeur dans un [[w:FPGA|{{abréviation|F.P.G.A.|Field-Programmable Gate Array|en}}]], et ceci de manière extrêmement pratique. Un des auteurs ne disposait que de peu d'informations pour travailler au départ (voir la littérature en fin de ce chapitre). Nous espérons que les lecteurs de ce livre ne rencontreront pas les mêmes problèmes et que suffisamment de détails pour se mettre à la tâche pourront être trouvés ici.
Ce livre représente un travail difficilement quantifiable comme n'importe quel bouquin papier, et pourtant aucun [[w:
Mais revenons à une présentation moins politique de notre travail.
Ligne 15 :
Nous avons toujours adoré l'introduction du livre "The Wizzard of Quarks" de Robert Gilmore dans un tout autre domaine (physique des particules). Nous allons donc le paraphraser en espérant ne pas enfreindre les droits d'auteur.
Imaginez-vous posséder un centime d'Euro. Il n'y a pas à en faire toute une histoire. Mais comment devient votre vie si vous en possédez un milliard ? Les choses deviennent plus passionnantes et les possibilités qui vous sont offertes dans votre vie deviennent de plus en plus nombreuses, voir de plus en plus intéressantes.
Que se passe-t-il si l'on remplace le centime d'Euro par une porte logique ? Vous avez la même chose. Plus vous en avez plus les possibilités sont grandes. Une certaine beauté et un certain intérêt naissent du nombre. C'est ce qui rend les [[w:FPGA|FPGA]] passionnants. Le nombre de portes disponibles augmente avec le temps et rend ainsi le nombre de domaines concernés toujours plus grand. Vous pouvez vous transformer en Architecte (Hardware) et donner libre cours à votre imagination, inventer des processeurs, inventer des périphériques et certainement plein d'autres choses encore...
Ligne 22 :
== Des changements profonds dans la conception en électronique numérique ==
La conception en électronique numérique a énormément évolué ces dernières années. On est d'abord passé de la conception en circuits traditionnels à la conception utilisant des circuits de plus en plus évolués. Les briques de bases sont ainsi passées des [[w:
Nous allons donner quelques exemples qui seront développés dans ce cours.
=== Quelques exemples illustratifs ===
Pour être un peu plus concret sur les besoins en connaissances d'architectures matérielles, nous allons essayer de donner quelques exemples concrets en se référant à des processeurs existants.
# Nous allons réaliser des pseudo cartes vidéo dans ce livre et les piloter par des processeurs 8-bits. Est-ce concevable sans [[w:FPGA|FPGA]] ? La réponse est évidemment non. Une des raisons essentielles est le manque de [[w:
# Nous avons eu l'occasion de développer un jeu commandé par un vieux joystick numérique : 4 contacts électriques ouverts ou fermés, un par direction. Puis nous avons décidé de le remplacer par une manette Nunchuk. Naturellement faire cela avec un processeur du commerce est réalisable mais cela aurait nécessité de changer complètement le programme qui tourne dans le processeur (Nunchuk est en [[w:I2C|i2c]]). Pour nous cela n'a pas été le cas car il est possible dans un FPGA de réaliser une interface qui fasse la même chose qu'une autre. Ceci a une conséquence très importante : '''ne jugez pas un processeur embarqué dans un FPGA par le nombre de ses périphériques'''. Les périphériques c'est vous qui les faites et du coup vous êtes complètement maître de leur interface. Dans le cas présent, nous avons réalisé une machine d'états qui commandait un cœur i2c qui nous renvoyait les valeurs analogiques du joystick. Puis nous avons utilisé des comparateurs pour décider qu'à partir d'une certaine valeur, c'est comme si on avait fermé un interrupteur. Notre interface i2c s'est ainsi transformée en 4 fils logiques de directions et pouvait prendre la place de l'ancien joystick numérique. À ce stade de lecture de ce livre, il est peu probable que vous compreniez tout ce que nous venons d'exprimer, mais essayez d'en saisir la philosophie : une très grande souplesse dans la fabrication des périphériques.
# Le [[w:picoBlaze|picoBlaze]] est un processeur développé par [[w:Xilinx|Xilinx]] qui n'existe pas dans le commerce mais qui est très représentatif pour la gestion de périphériques. Aucun périphérique ne lui est associé par défaut, mais ils sont faciles à réaliser et interfacer. Même si vous voulez voir tourner un picoBlaze en lui faisant réaliser un chenillard, il vous faudra lui associer un port de sortie et c'est à vous de le faire.
# Un des avantages de créer vos propres périphériques est l'utilisation éventuelle de registres FIFOs. Cela permet de bufferiser des données qui viennent d'une liaison RS232, d'un clavier PS2 ou de l'[[w:I2C|i2c]] par exemple. Cette façon de faire est, à priori, peu utilisée dans les processeurs commercialisés (nous n'en sommes pas très sûr, c'est donc à vérifier).
# Il est inutile de vouloir copier les périphériques existants. Vous devez les imaginer par vous-même. Selon nous, les seuls périphériques qui peuvent faire exception sont le [[w:
== Choisir un processeur softcore ==
Un des auteurs de ce cours a commencé à réaliser des projets "[[w:
Il existe un nombre impressionnant de [[w:
Pour information, les divers fabricants proposent leurs [[w:
* [[w:Xilinx|Xilinx]] propose le [[w:PicoBlaze|PicoBlaze ({{Unité|8|bits}})]] et le [[w:MicroBlaze|Microblaze ({{Unité|32|bits}})]] qui sont abordés dans ce cours
* [[w:Altera|Altera]] propose le [[w:NIOS|NIOS ({{Unité|32|bits}})]]
* [[w:
* [[w:Actel|Actel]] propose, entre autres, une architecture [[w:ARM7|ARM7 ({{Unité|32|bits}})]] mais implanté en dur dans son FPGA.
== Structure de ce livre ==
Nous n'envisageons pas de montrer comment construire un [[w:
Il est certainement difficile d'éviter l'ordinateur de type PC et ses interfaces dans un tel cours. C'est pour cette raison que nous avons l'intention d'aborder quatre types d'interfaces différentes :
* la liaison [[w:
* la connexion [[w:
* la liaison [[w:RS232|RS232]] sera utilisée elle aussi puisqu'elle est vraiment universelle.
* la liaison [[w:USB|USB]] est une liaison complexe à mettre en œuvre mais certainement importante à connaître. Nous n'avons pas encore réussi à la mettre en œuvre dans un FPGA mais ne désespérons pas de le faire assez rapidement.
D'autres liaisons seront explorées :
Ligne 58 :
* protocole [[w:Wi-Fi|Wifi]] (pas encore présent dans ce cours mais qui devra être exploré).
Avant de rentrer dans le vif du sujet avec un [[w:
Puis viendra enfin quelques exemples de [[w:
{{remarque|contenu=
Les chapitres traitants des [[../Système monopuce compatible avec les PIC 16C57/|PIC16C57]], [[../Embarquer un PIC 16F84/|PIC 16F84]], [[../Embarquer un Atmel ATMega8/|ATMega8]] et [[../Le MicroBlaze|MicroBlaze]] sont des projets donnés à des étudiants de deuxième année d'{{abréviation|IUT|institut universitaire de technologie}} Génie Électrique et Informatique Industrielle. Le fait qu'il s'agisse de travailler autour d'un [[w:
Par contre ces chapitres sont plutôt rédigés comme un rapport de projet écrit au fur et à mesure de son avancement. Cela complique certainement parfois un peu la lecture, mais consolez-vous avec le fait que vous avez tout cela gratuitement.
Ligne 72 :
Le [[../Programmer in Situ et déboguer|chapitre 13]] a été ajouté récemment. Il cherche à répondre à la question de la programmation in situ et des problèmes dérivés. L'idéal serait d'implémenter des protocoles existants. Le protocole série asynchrone est certainement le plus facile à mettre en œuvre pour charger un programme dans un softprocesseur car il existe des logiciels pour cela. À notre avis ce chapitre n'est pas prêt d'être terminé car il nécessite la lecture de codes sources en C.
Le [[../
Le [[../Le MicroBlaze|chapitre 15]] aborde le microBlaze, le processeur {{Unité|32|bits}} de [[w:Xilinx|Xilinx]]. C'est un chapitre qui n'a pas beaucoup d'intérêt pour un lecteur qui travaille avec d'autres FPGA puisque son fondeur lui proposera certainement un processeur concurrent.
Ligne 83 :
* le bus USB
{{remarque|contenu=
La programmation [[w:
}}
Tout cela terminera complètement ce livre sauf si des lecteurs nous demandent d'explorer d'autres [[w:8-bits|{{Unité|8|bits}}]]. Pour information, il existe des cœurs de PIC18F, de Z80, de 6802, de 68HC11 et bien d'autres encore. L'idéal pour nous, reste qu'un lecteur qui a de l'expérience avec un autre {{Unité|8|bits}} que ceux présentés, ajoute un chapitre à ce livre, et partage ainsi son retour d'expérience.
Nous nous dirigerons ensuite vers les systèmes [[w:16-bits|{{Unité|16|bits}}]]. Il nous faudra certainement bâtir un nouveau livre pour cela, plus orienté système. Le temps de l'exploration des [[w:
Nous n'avons pas prévu de travailler sur les bus comme [[w:
=== Futur bis de ce livre ===
Ligne 98 :
Dans notre tête tout était clair au début : ce livre serait consacré uniquement aux {{Unité|8|bits}}. Un autre le complèterait pour les autres architectures. Aujourd'hui, force est de constater que nous n'avons pas respecté ces objectifs. Tout simplement parce qu'en fait nous n'avons pas l'intention de refaire un nouveau livre.
=== Ce livre est-il à côté de la plaque ? ===
Une polémique sur les architectures {{Unité|8|bits}} a fait rage (c'est un peu exagéré) sur la mort de ces dernières ([http://www.eetimes.com/electronics-blogs/other/4389890/Is-8-bits-dying- Is 8-bits dying]) dans EETimes du 9 juillet 2012. Si c'est le cas tout est à refaire, nous nous sommes trompés d'objectif !
Dans les années 1980, si l'on nous avait dit qu'en fin de carrière nous enseignerions encore les architectures {{Unité|8|bits}} à des étudiants, nous n'y aurions tout simplement pas cru… Et pourtant, elles sont toujours là et c'est ce que nous faisons encore aujourd'hui. Nous pensons qu'il y a encore beaucoup de place pour les architectures {{Unité|8|bits}}. Quand on est jeune on voit surtout l'aspect performance, vitesse, et l'aspect complexité ne nous rebute pas. Mais en vieillissant… Aujourd'hui nous sommes pour une utilisation raisonnée des architectures : mettre des 8-bits là où il en faut, et des {{Unité|32|bits}} à leurs places respectives (En 2014 les architectures 8 bits étaient toujours les plus vendues). On a besoin de 32-bits dès qu'il y a du graphisme interactif à gérer : téléphones portables, GPS, tablettes… Pour la petite histoire ce beau principe n'a pas été complètement respecté dans ce livre (comme quoi !). En effet, le microBlaze (32-bits) a été utilisé dans un projet qui a été réalisé aussi avec un simple ATMega8 (8-bits) ! Les deux programmes nécessitaient une boucle d'attente passive! Et bien oui, le 8-bits dans ce projet était encore trop puissant, je ne vous parlerai donc pas du {{Unité|32|bits}}!
Ligne 123 :
====Et la vitesse ?====
En fait ce livre est élaboré pour des enseignements réalisés dans un {{abréviation|IUT|institut universitaire de technologie}} GEII (deuxième année) et à l'[[w:UTT|UTT]] en troisième année. Pour faire simple on est dans le domaine que les anglo-saxons appellent '''undergraduate'''. Quelle en est la conséquence ?
Tous nos projets et exercices ne sont pas déterminés par une vitesse excessive. Les applications vont du jeu vidéo (simple) à maintenant la robotique mobile... et nous n'avons jamais rencontré de goulot d'étranglement (en vitesse). Nos programmes ont toujours comportés une boucle d'attente passive. Ceci est très important. Du coup, nous nous demandons si nous avons bien utilisé les [[w:FPGA|FPGA]] dans les domaines pour lesquels ils sont prévus. Les FPGA sont des composants chers (voir très chers) et ne sont utilisés que pour :
Ligne 143 :
Mais pour notre processeur softcore ATMega8 nous avons du mal à estimer l'absence de bug. D'un côté nous y avons fait fonctionner un programme C de 700 lignes sans avoir rencontré de problème particulier... et de l'autre nous avons eu des soucis lors de la conversion du format virgule fixe utilisé dans le périphérique CORDIC en format virgule flottante alors que ce même code fonctionne dans un [[w:Arduino|Arduino]]. Et de plus, nous avons rencontrés des problèmes étranges lors d'un portage de bootloader !
Ainsi, à partir de 2014 nous avons décidé d'étudier sérieusement les interfaces entre un processeur du commerce et un FPGA. Une autre raison à cela est le prix. Pour moins de 20€ nous avons acheté une carte [[w:
Une autre solution pour utiliser ce que les équipes d'ingénieurs ont fait, est donc d'utiliser des FPGA de nouvelle génération [http://www.xilinx.com/products/silicon-devices/soc/zynq-7000.html comme le Zynq]. Le processeur n'est pas extérieur mais intérieur et en dur. Il ne fait donc pas partie de ce que l'on appelle les "soft processeurs". Un très bel exemple de ce qui peut être réalisé avec cette technologie est le "Red Pitaya" qui est un oscilloscope USB/Ethernet ouvert décrit dans [http://wiki.redpitaya.com/index.php?title=Main_Page sa propre page WIKI].
L'achat d'Altera par Intel (en Juin 2015) apportera probablement des nouvelles architectures de FPGA avec des cœurs en dur de la famille 8086, mais cela changera-t-il la donne ?
Que les lecteurs se rassurent, nous n'avons malgré tout pas l'intention d'abandonner complètement les soft processeurs.
Ligne 167 ⟶ 166 :
Pour ne citer que ce qui est Européen :
* [[w:
* [[w:
* [[w:Arduino|Arduino]] est Italien et sous licence ARM pour le DUE
* [https://community.imgtec.com/ Imagination Community] prétend être à l'origine du PIC32 de MicroChip, développe aussi MIPSfpga et est anglais
Ligne 178 ⟶ 177 :
Il y a probablement d'autres point de vue pour aborder le problème, ce que je laisse au lecteur.
Pour sortir des problèmes franco-français, je ne peux que constater le peu d'évolution sur les nouvelles architectures des processeurs... et me demander si le [[w:
Personnellement je pense que rien n'est figé. L'innovation est encore possible n'importe où sur la planète (et pourquoi pas en France). L'espace pour innover est absolument gigantesque. Voici quelques chiffres aussi présentés dans [[../
Étant physicien d'origine, je me rappelle la réaction de la communauté des physiciens français à l'attribution du prix Nobel 1987 sur la supraconductivité haute température. Cette communauté s'est justement demandée si l'enseignement en France pouvait laisser présager cette possibilité de supraconduction à haute température. Ne serait-il pas temps de s'interroger sur notre enseignement ? Attendre un prix Nobel pour se poser ces questions est illusoire pour nous, puisque ce domaine des architectures n'est couvert par aucun grand prix international !
[[../
Voila, c'est tout pour le moment.
Ligne 191 ⟶ 190 :
=== Liens internes ===
Une connaissance préalable du langage [[w:VHDL|VHDL]] est absolument nécessaire.
* [[b:
* [[w:
Il est nécessaire de bien connaître le langage C pour beaucoup de chapitres de ce livre.
* Le [[w:
* La [[b:
* [[Introduction au langage C]] chez Wikiversité
En langue anglaise (pour la partie matérielle) :
* [[w:en:System-on-a-chip|System on a chip]]
* [[b:en:
* [[b:en:
* [[w:en:
===Sur Youtube en anglais===
* [http://www.youtube.com/watch?v=DQVRNg713nk (en) Lecture #5 -- lab 2 audio filtering]
* [http://www.youtube.com/watch?v=VLoRDwQE2Y8 (en) Lecture #6 -- Stack machine and compiler]
=== Liens externes ===
Ligne 217 ⟶ 215 :
=== Livres ===
* A. NKESTA "Circuits logiques programmables : [[w:
* F. Anceau et Y. Bonnassieux "Conception des circuits VLSI : du composant au système", [[w:Dunod|DUNOD]] (2007).
* A. ATTOUI "Architecture des systèmes sur puce : Processeurs synthétisables, CAO VLSI, Norme VCI, environnements ISE et Quartus", [[w:
* P. P. Chu "FPGA prototyping by VHDL Examples", [[w:
* Z. Navabi "Embedded Core design with FPGA", [[w:McGraw-Hill|McGraw-Hill]] (2007), assez général mais les applications sont [[w:Altera|Altera]] et [[w:NIOS|NIOS]]II et en [[w:verilog|Verilog]].
* P. P. Chu "Embedded SoPC Design with [[w:en:
* Patrick R. Schaumont "A Practical Introduction to Hardware Software Codesign" Springer (2010)
* Enoch O. Hwang "Digital Logic and Microprocessor Design with VHDL" Har/Cdr (2005)
{{Bas de page
| idfaculté = informatique
| précédent = [[../|
| suivant = [[../Interfaces VGA et PS2/]]
}}
|