« Very High Speed Integrated Circuit Hardware Description Language/Introduction » : différence entre les versions

Contenu supprimé Contenu ajouté
LydieBot (discussion | contributions)
m clean up, remplacement: sommaire → Sommaire (2) avec AWB
Ligne 3 :
| numéro = 1
| niveau = 15
| précédent = [[../|sommaireSommaire]]
| 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:Droit_dDroit d'auteur|droit d'auteur]] n'est demandé au lecteur. Il faut une certaine conviction (politique ?) pour faire ce travail. Il s'agit d'une croyance au travail librement partagé. Nous rappelons que celui qui croit au libre n'est pas un guerrier se battant contre la [[w:Propriété_intellectuellePropriété intellectuelle|propriété intellectuelle]] mais au contraire quelqu'un qui cherche par tous les moyens à respecter cette même propriété intellectuelle. Nous utiliserons par exemple beaucoup de projets libres dans les chapitres qui suivent et jamais nous n'oublierons d'en citer les auteurs (enfin nous l'espérons). De même, lorsque des collègues auront participé à ce travail, ils seront cités.
 
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:Portes_logiquesPortes logiques|portes logiques]] aux [[w:Microprocesseur|microprocesseurs]] et [[w:Microcontrôleur|microcontrôleurs]]. En même temps, les possibilités d'utilisation de la [[w:Circuit_logique_programmableCircuit logique programmable|logique programmable]] ont elles aussi évolué vers des circuits de plus en plus performants : on est passé des Simples [[w:Circuit_logique_programmableCircuit logique programmable|PLD]] (ou SPLD [[b:TD2_VHDL_et_logique_programmableTD2 VHDL et logique programmable#La_GAL_20V8La GAL 20V8|comme la 20V8]]) aux Complexes [[w:Circuit_logique_programmableCircuit logique programmable|PLD]] (ou [[b:TD2_VHDL_et_logique_programmableTD2 VHDL et logique programmable#Les_CPLDLes CPLD|CPLD]]) puis au [[w:Circuit_logique_programmableCircuit logique programmable#FPGA|FPGA]]. Pour bien se faire une idée de cette évolution, un circuit FPGA de 2003 est capable de recevoir un processeur {{Unité|8|bits}} qui occupe à peine 5% du circuit. C'est vrai que le [[w:PicoBlaze|processeur]] en question est taillé sur mesure pour le FPGA et que nos processeurs à nous, même sur {{Unité|8|bits}}, occuperont plutôt 50% du circuit. Avec ces bouleversements, les méthodes de conception pour [[w:Circuit_logique_programmableCircuit logique programmable#FPGA|FPGA]] sont passées d'un niveau [[w:Register_Transfer_LevelRegister Transfer Level|RTL]] (Register Transfer Level) bien maîtrisé, au niveau ESL (Electronic System Level) en plein développement. Les principaux langages de développement RTL sont [[w:VHDL|VHDL]], [[w:verilog|verilog]] et [[w:SystemC|systemC]]. Les langages de développement ESL sont encore en développement. Pour pallier ce manque de langage, les divers fabricants comme [[w:Xilinx|Xilinx]], [[w:Altera|Altera]] et [[w:Actel|ACTEL]] proposent des environnements graphiques (ou en tout cas avec Wizard=sorcier) pour assembler leurs processeurs avec de la logique externe. La grande difficulté de conception à ce niveau ESL se manifeste surtout par la difficulté de mise au point. Beaucoup de programmeurs sont formés dans les pays industrialisés (et en voie de développement) ; ils connaissent les difficultés de la mise au point d'un [[w:Programme_Programme (informatique)|programme]]. Beaucoup moins d'architectes [[w:Matériel_informatique|Matériel informatique|en matériels informatiques]] sortent de nos universités avec des connaissances solides en mise au point de matériel. (Cette dernière phrase n'est absolument pas une critique de notre système universitaire, le point important n'est pas le contenu des formations mais le nombre d'étudiants qui en sortent). Les défis du futur dans ce domaine sont donc de former beaucoup plus d'architectes [[w:Matériel_informatique|Matériel informatique|en matériels informatiques]]. Nous espérons contribuer modestement à ce défi à travers ce cours.
 
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:Port_matérielPort matériel|port]]s dans les architectures commercialisées. Il nous faudra facilement 8 PORTs en sortie pour commander ces cartes vidéo. Connaissez-vous un tel processeur 8 bits commercialisé ? On peut toujours étendre le nombre de PORTs par de la logique, mais cette logique devient vite complexe et devra donc être réalisée avec au moins un CPLD si ce n'est avec un FPGA.
# 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:Timer_Timer (microcontr%C3%B4leurmicrocontrôleur)|timer]] et la rs232. Nous avons dit "qui peuvent" et non "qui doivent" même si nous pensons qu'il faut mieux mettre en œuvre votre imagination plutôt que de vouloir copier l'existant. Pourquoi avons-nous rangé les timers à part ? Pour le temps réel par exemple. Il est relativement peu commun d'avoir des compétences dans l'écriture d'un noyau temps réel et dans le matériel correspondant. Si vous avez des timers présents cela peut vous éviter de changer le noyau temps réel. Notre chapitre sur le temps réel étant en cours de construction pour le moment, nous devons encore imaginer la façon dont nous allons nous y prendre.
 
== Choisir un processeur softcore ==
Un des auteurs de ce cours a commencé à réaliser des projets "[[w:System_on_ChipSystem on Chip|systèmes sur puces]]" en 2009, et n'avait qu'une obsession : faire tourner un programme en C dans un FPGA. Ce cours va vous montrer de manière très pratique comment faire. Une limite naturelle aux processeurs [[w:8-bits|{{Unité|8|bits}}]] semble un bon début pour comprendre les principaux axes d'attaque du problème. Ces processeurs correspondent mieux, à notre avis, au [[Aide:Niveau_de_difficultéNiveau de difficulté/Niveau_14Niveau 14|niveau 15]] (L1/L2). Cela permet de n'envisager que des applications sans [[w:Système_d%27exploitationSystème d'exploitation|système d'exploitation]] domaine plutôt réservé aux [[w:16-bits|architectures 16]]/[[w:32-bit|32]]/{{Unité|64|bits}}.
 
Il existe un nombre impressionnant de [[w:Processeur_softcoreProcesseur softcore|processeurs softcore]] libres ou payants et le problème du choix parmi toutes ces propositions est un problème entier. En ce qui nous concerne, nous avons choisi d'utiliser plutôt des architectures existantes. Nous voulons dire par là des processeurs commercialisés et refait complètement (ou plutôt partiellement) en VHDL. Pourquoi ? Tout simplement parce que nous sommes en charge des enseignements sur [[w:Microcontrôleur|microcontrôleurs]] et qu'ainsi nous connaissons les environnements de développement MPLAB, AvrStudio et maintenant Arduino. Il nous faut admettre que ce n'est absolument pas un bon critère de choix si l'on sort du domaine universitaire. C'est assez intéressant de faire tourner un [[w:Microcontrôleur_PICMicrocontrôleur PIC|PIC]] ou un [[w:Atmel_AVRAtmel AVR|Atmel AVR]] dans un [[w:FPGA|FPGA]] pour un universitaire, mais si un industriel n'a aucune compétence avec l'un ou l'autre, ne serait-il pas mieux, pour lui, de choisir le processeur qu'a construit son fabricant de FPGA ? J'espère que le lecteur nous pardonnera ce choix, d'autant plus que s'attacher à définir de bons critères pour un tel choix nous semble vraiment trop dépendant du contexte industriel (et donc hors de portée de notre réflexion d'universitaire).
 
Pour information, les divers fabricants proposent leurs [[w:Processeur_softcoreProcesseur softcore|processeurs softcore]]. Ils sont en général taillés sur mesure pour les FPGA correspondants.
* [[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:Lattice_SemiconducteurLattice Semiconducteur|Lattice]] propose le [[w:LatticeMico8|Mico8 ({{Unité|8|bits}})]] et le [[w:LatticeMico32|Mico32 ({{Unité|32|bits}})]]
* [[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:Processeur_softcoreProcesseur softcore|processeur softcore]] dans ce cours, mais plutôt d'utiliser des systèmes monopuces existants. Pour les architectes [[w:Matériel_informatique|Matériel informatique|de matériels informatiques]] en herbe voici un [[b:Microprocessor_DesignMicroprocessor Design|lien en anglais]] qui leur permettra de comprendre l'architecture des processeurs. Le [[../VHDL et machines à états algorithmiques/|chapitre 3]], et, plus encore, [[../Petit Système monopuce MCPU/|le chapitre 4]] de ce présent cours, restent de très bons points d'entrées pour l'étude des architectures.
 
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:Port_PSPort PS/2 |PS/2]]. Elle est déjà présentée dans ce cours sous forme de TPs corrigés.
* la connexion [[w:Video_Graphics_ArrayVideo Graphics Array|VGA]] sera le fil de ce cours, c'est-à-dire présente dans beaucoup d'exemples.
* 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:Microcontrôleur_PICMicrocontrôleur PIC|PIC]] 16C57, il nous faut aborder quelques problèmes généraux d'architecture. Ainsi, le calcul d'un [[w:PGCD|PGCD]] sera notre guide pour les chapitres 2, 3, 5 et 6 qui suivent.
 
Puis viendra enfin quelques exemples de [[w:Processeur_softcoreProcesseur softcore|processeurs softcore]] dans les chapitres 7, 8, 9, 10, 11 et 15. Il n'est pas important pour un étudiant de connaître tous ces exemples, les processeurs étant trop variés : [[w:PicoBlaze|PicoBlaze]], [[w:Microcontrôleur_PICMicrocontrôleur PIC|PIC]]16C57, [[b:Comment_démarrer_avec_un_PIC16F84Comment démarrer avec un PIC16F84|PIC 16F84]], [[w:Atmel_AVRAtmel AVR|ATMega8]] et [[w:microBlaze|microBlaze]]. Nous les publions ici pour qu'un étudiant ou un enseignant puisse faire son choix et décide ensuite de l'approfondir. En effet les exemples présentés sont intéressant d'un point de vue matériel mais relativement simples d'un point de vue logiciel. Vous aurez cependant tout loisir de remarquer qu'au fur et à mesure de l'augmentation de la complexité des jeux (passage du [[w:Pong|Pong]] au [[w:Casse-briques|casse-briques]] et enfin au [[w:Pacman|pacman]]) la partie logicielle deviendra elle aussi de plus en plus sophistiquée.
 
{{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:Jeu_videoJeu video|jeu vidéo]] (de [[w:Pong|Pong]], en l'occurrence, puis du [[w:Casse-briques|casse-briques]]) les motive énormément : chaque phase de test logicielle consiste à essayer le jeu.
 
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 [[../Multitâche_et_Système_temps_réel_sur_architecture_8_bitsMultitâche et Système temps réel sur architecture 8 bits|chapitre 14]] tout juste commencé a comme objectif d'explorer le [[w:Multitâche|multitâche]] et/ou [[w:Système_temps_réelSystème temps réel|le temps réel]]. Comme il n'est peu avancé, il est difficile de dire ce qu'il contiendra mais nous pensons explorer le temps réel pour ATMega8 (le plus petit possible quitte à ajouter des commutations de taches en matériel) et pour les PIC 16F84. Pour ces derniers, comme il n'existe pas vraiment de système multitâche libres nous étudierons la possibilité de réaliser plusieurs PICs (un par tâche) dans un même FPGA.
 
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:Système_temps_réelSystème temps réel|temps réel]] nécessite de modifier les cœurs pour ajouter un [[w:Timer_Timer (microcontrôleur)|timer]] qui manque et parfois le système d'[[w:Interruption_Interruption (informatique)|interruption]] correspondant. Cela ne peut pas se faire en un seul jour.
}}
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:Processeur_de_signal_numériqueProcesseur de signal numérique|processeurs de signal numérique]] sera aussi venu... Bien du travail en perspective... qui demande de l'aide d'autres collègues...
 
Nous n'avons pas prévu de travailler sur les bus comme [[w:Wishbone_Wishbone (computer_buscomputer bus)|Wishbone]] mais peut être que justement les processeurs {{Unité|16|bits}} nous y conduiront...
 
=== 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:Texas_InstrumentsTexas Instruments|Texas Instrument]] qui dispose d'un processeur 32 bits ([http://www.ti.com/tool/ek-tm4c123gxl Tiva C LaunchPad]). Nous avons mis à peine une semaine à l'interfacer à notre FPGA, par du [[w:Serial_Peripheral_InterfaceSerial Peripheral Interface|SPI]] alors que, si notre mémoire est bonne, nous avons mis un mois (heureusement pas à plein temps) à faire fonctionner notre ATMega8 au tout début. Plus récemment, nous avons passé une cinquantaine d'heures à porter l'ATTiny861 sur Altera.
 
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:Architecture_ARMArchitecture ARM|L'Architecture ARM]] est anglaise (chaque ARM vendu paye une licence anglaise)
* [[w:Raspberry_PiRaspberry Pi|Raspberry Pi]] est anglais et sous licence ARM
* [[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:Intel_P5Intel P5|Pentium]] n'a pas tué la concurrence et l'innovation (à part l'ARM qui s'en sort très très bien). J'ai acheté un livre sur les architectures symboliques en 1991 et me demande si la recherche dans ce domaine continue. Si je tape "symbolic computers" dans google je trouve beaucoup de référence sur le livre en question et des articles de cette époque. Qui a donc tué l'innovation internationale dans le domaine des architectures matérielles ? Le Pentium ou l'évolution de cette recherche vers des domaines plus stratégiques ou commerciaux donc un peu plus cachés ?
 
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 [[../Records_et_challengesRecords et challenges|le chapitre 19]] qui montrent ce gigantisme : un cerveau humain fait 10 millions de milliard d'opérations par seconde et ne consomme que de 10 à 25 W. Pour le même travail, un ordinateur aurait besoin de 100 Million de Watts. (Voir "Mémordinateurs" dans Pour la Science n°452 Juin 2015)
 
É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 !
 
[[../Records_et_challengesRecords et challenges|Le chapitre 19]] présente des challenges (deux seulement pour le moment). Il est assez mal rédigé et part un peu dans tous les sens. Apportez y donc votre contribution.
 
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:Conception_et_VHDLConception et VHDL|Conception en VHDL]]
* [[w:Système_embarquéSystème embarqué|Système embarqué]]
Il est nécessaire de bien connaître le langage C pour beaucoup de chapitres de ce livre.
* Le [[w:Langage_CLangage C|langage C]] chez Wikipédia
* La [[b:Programmation_CProgrammation C|programmation C]] et ses [[b:Exercices_en_langage_CExercices en langage C|exercices]] chez WikiBook
* [[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:VHDL_for_FPGA_DesignVHDL for FPGA Design|VHDL for FPGA Design]]
* [[b:en:Microprocessor_DesignMicroprocessor Design|Microprocessor Design]]
* [[w:en:Embedded_systemEmbedded system|Embedded System]]
 
===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:Mémoire_Mémoire (informatique)|Mémoires]], PLD, [[w:Complex_Programmable_Logic_DeviceComplex Programmable Logic Device|CPLD]] et [[w:FPGA|FPGA]]", [[w:Ellipses_Ellipses (éditeur)|Ellipses]] (1998)
* 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:Ellipses_Ellipses (éditeur)|Ellipses]] (2005) se consacre, entre autres, à [[w:Altera|Altera]] et [[w:NIOS|NIOS]] et [[w:en:Advanced_Microcontroller_Bus_ArchitectureAdvanced Microcontroller Bus Architecture|(en) AMBA]]
* P. P. Chu "FPGA prototyping by VHDL Examples", [[w:John_Wiley_%26_SonsJohn Wiley & Sons|WILEY]] (2008) dédié au Spartan 3 et aborde le [[w:PicoBlaze|PicoBlaze]]
* 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:Nios_IINios II|NIOS II]] Processor and VHDL Examples", [[w:John_Wiley_%26_SonsJohn Wiley & Sons|WILEY]] (2011)
* 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 = [[../|sommaireSommaire]]
| suivant = [[../Interfaces VGA et PS2/]]
}}