J'ai lu çà ce matin ( 18/09/18) il faut trouver les architectes de demain et les FPGA sont dans la course : golden age for computer architecture de David Patterson
Çà bouge depuis quelques années, voici quelques articles (à lire) dans la presse sur ce nouveau marché!
Des bénéfices record pour Xilinx en 2018
CPU vs FPGA : "We’re approaching a point where FPGA fabrics can be integrated into everyday CPU or SoC designs usefully, affordably, and practically, without adding impractical amounts of time or complexity to the design process"
“Von Neumann architectures were elegant and have served us well, but if you think about something like the human brain, there is no single pipeline to execute instruction after instruction; we have one part for language processing, another for motor control, and so on. These are highly specialized circuits. If you think about Von Neumann architectures as well, executing something simple such as add has many steps—retrieve, decode, rename, schedule, execute and write back—there are usually five to ten steps, depending on what you want to do and this pipeline is not efficient.”
Extrait de l'interview de j Cong Professeur à UCLA
Des opportunités de carrière ici un exemple de stage ...
“I’ve been watching the evolution of FPGAs since 2000, but it’s really just in the last five years that they’ve become useful for HPC. Five years ago, GPUs were in experimental clusters and testbeds and now you’ll see them dominating in the Green 500 and in other big supercomputers. It is not impossible that we will see the same thing with FPGAs at some point as well.” Wim Vanderbauwhede University of Glasgow’s School of Computing Science
Les 5 atouts de la technologie FPGA (à lire) pdf NI-tutorial en bas de page
Les Fpga poursuivent l'histoire du calcul hautes performances, c'est une nouvelle opportunité. On peut identifier 3 générations successives du HPC:
En 1980: on achète une machine HPC très cher et débrouillez vous avec pour placer votre application sur l'architecture!!
Des architectures de supercomupters: Cray, CM2, CM5, Intel Paragon…
Des langages pour les programmer: Fortran90, DPCE, PVM, MPI
En 2000: notion de codesign. On définit en même temps l'architecture d'un système sur puce et l'application qui lui sera dédiée, puis on passe en fonderie pour produire le chip.
Le résultat est compilé afin de produire un asic
Une méthode de partiotrionnement logiciel/matériel est nécessaire : méthode AAA
des outils de modélisation apparaissent : le profile UML Marte et son modèle Y
En 2016: apparition du Hardware on Demand, on commence à construire des architectures qui s'adapte à l'application pendant l'exécution de celle-ci.
L’architecture est instanciée dynamiquement quand l’algorithme en a besoin(SRC).
Reconfiguration dynamique du matériel
Evolution dynamique du langage machine
le pdf du commentaire est en bas de page son complet.pdf
Un processeur et on écrit un programme que l'on compile
Une architecture programmable et on charge une description d'une architecture
Un circuit qui est fondu une fois pour toute
cliquez sur les images..
Le FPGA est un compromis intéressant entre performance d'un circuit matériel dédié à une application et souplesse de reconfiguration pour passer d'un application à une autre.
Quand vous êtes arrivés ici, vous devez aller prendre votre carte Basys3 par binôme auprès de votre enseignant!
Le circuit à configurer est un FPGA Xilinx Artix 7 qui est inséré sur une carte BASYS3 commercialisée par la société Digilent. La référence complète du circuit FPGA est XC7A35T-1CPG236C.Cette carte comprend, outre le circuit, quatre afficheurs 7 segments, un quartz qui fournit par défaut un signal d'horloge de 100 MHz, des LEDs, des interrupteurs et d’autres périphériques comme décrit sur la Figure 1. Un site web dédié à cette carte contient toutes les informations nécessaires à l’utilisation de la carte : digilent Basys3
Basys3 de Digilent est une carte FPGA d'entrée de gamme exclusivement destinée à la suite de conception Vivado. Basys3 est la dernière née de la populaire ligne de cartes de démarrage FPGA Basys. Basys3 inclut les fonctionnalités standard présentes sur toutes les cartes Basys : matériel complet prêt à l'emploi, collection étendue de périphériques E/S intégrés, tous les circuits de support FPGA et une version gratuite des outils de développement, le tout à un prix accessible aux étudiants.
Grâce à la Basys3, Digilent offre désormais aux étudiants une meilleure représentation de la conception au niveau professionnel en améliorant l'ensemble des fonctionnalités. Ces améliorations incluent :
Plus d'E/S :
Deux fois plus de commutateurs d'interface utilisateur, deux fois le nombre de sorties embarquées, ports externes améliorés (migration des Pmods 6 broches à une rangée aux Pmods 12 broches à deux rangées) et un pont USB-UART.
Défis de programmation modernes :
En raison de la migration de la gamme Spartan 3E à la classe Artix-7 du dispositif, la Basys3 offre une augmentation significative des capacités matérielles. La nouvelle FPGA Artix offre 15 fois plus de cellules logiques (de 2 160 à 33 280) et la mise à niveau des multiplicateurs aux vraies tranches DSP. Elle ajoute également plus de 26 fois la quantité de mémoire RAM.
La première suite de conception de niveau SOC de l'industrie :
Le changement le plus important apporté à la Basys3 est la mise à niveau vers la suite de conception Xilinx Vivado. La suite de conception Vivado est la chaîne d'outils de conception la plus moderne utilisée par les ingénieurs dans le monde entier. Vivado offre une expérience utilisateur améliorée par rapport à ISE avec des capacités étendues, telles que l'intégration de blocs d'IP avec Vivado IP Integrator, Vivado High-Level Synthesis (uniquement disponible avec Vivado System Edition) afin de réduire les délais de développement jusqu'à 10 fois et l'intégration de conception DSP à base de modèle avec générateur de système pour DSP.
La suite dans le TP1....
Fichier XDC
Un fichier XDC sert (entre autres) à définir le mapping entre les ports logiques et les ports physiques de la carte (ports du circuit conçu et ports de la Basys3), pour permettre la gestion des entrées/ sorties. Il s'agit d'un fichier indispensable pour l’implémentation de tout système ayant besoin d’être alimenté par des données et/ ou fournissant des résultats visibles en sortie. Les affectations nécessaires à chacun des périphériques seront données pour les cartes BASYS3 dans la partie TP1. Voici les principaux noms des I/O de cette carte:
Affichage 7-segments
The Basys3 board contains a four-digit common anode seven-segment LED display. Each of the four digits is composed of seven segments arranged in the figure pattern, with an LED embedded in each segment. Segment LEDs can be individually illuminated, so any one of 128 patterns can be displayed on a digit by illuminating certain LED segments and leaving the others dark. Of these 128 possible patterns, the ten corresponding to the decimal digits are the most useful.
The anodes of the seven LEDs forming each digit are tied together into one “common anode” circuit node, but the LED cathodes remain separate. The common anode signals are available as four “digit enable” input signals to the 4-digit display. The cathodes of similar segments on all four displays are connected into seven circuit nodes labeled CA through CG (so, for example, the four “D” cathodes from the four digits are grouped together into a single circuit node called “CD”). These seven cathode signals are available as inputs to the 4-digit display. This signal connection scheme creates a multiplexed display, where the cathode signals are common to all digits but they can only illuminate the segments of the digit whose corresponding anode signal is asserted.
Voici un exemple, l’affectation des entrées/sorties pour accéder aux quatre afficheurs 7. Il vous suffira alors de définir un code qui produit les signaux seg(6:0), dp et an(3:0). Pas le choix il faut respecter la syntaxe Xilinx :-(
#7 segment display
set_property PACKAGE_PIN W7 [get_ports {seg[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {seg[0]}]
set_property PACKAGE_PIN W6 [get_ports {seg[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {seg[1]}]
set_property PACKAGE_PIN U8 [get_ports {seg[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {seg[2]}]
set_property PACKAGE_PIN V8 [get_ports {seg[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {seg[3]}]
set_property PACKAGE_PIN U5 [get_ports {seg[4]}]
set_property IOSTANDARD LVCMOS33 [get_ports {seg[4]}]
set_property PACKAGE_PIN V5 [get_ports {seg[5]}]
set_property IOSTANDARD LVCMOS33 [get_ports {seg[5]}]
set_property PACKAGE_PIN U7 [get_ports {seg[6]}]
set_property IOSTANDARD LVCMOS33 [get_ports {seg[6]}]
set_property PACKAGE_PIN V7 [get_ports dp]
set_property IOSTANDARD LVCMOS33 [get_ports dp]
set_property PACKAGE_PIN U2 [get_ports {an[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {an[0]}]
set_property PACKAGE_PIN U4 [get_ports {an[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {an[1]}]
set_property PACKAGE_PIN V4 [get_ports {an[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {an[2]}]
set_property PACKAGE_PIN W4 [get_ports {an[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {an[3]}]
Exemple d'association
Soit le circuit de la figure ci-dessous. Il s'agit d'un circuit prenant en entrée 4 bits (A, B, C, D) pour calculer une sortie binaire E.
Pour fournir à un circuit implémenté sur une Basys3 un nombre binaire, il suffit d'utiliser l'un des switches disponibles Pour un bit de sortie, une LED (allumée pour 1 et éteinte pour 0 peut être utilisée) peut convenir. Il faudrait relier noms des fils et noms des broches sur la carte Basys3.
A = V17; // switch tout à gauche sur la Basys3
B = V16; // switch suivants
C = W16; // troisième switch
D = W17; // quatrième switch
E = U16; // LED au fond à droite
Exercice 1
Question 1
On désire implémenter un additionneur 1 bit sur la Basys3.
Proposez une utilisation des switches et des leds pour tester ce circuit une fois synthétisé. Construisez le fichier XDC utilisé pour le placement et routage sur la carte Basys3.
Question 2
Soit le circuit qui réalise à partir de 4 additionneurs 1 bit, une addition 4 bits non signée. Cet additionneur 4 bits produit un mot de 4 bits avec une retenue.
Proposez une expérimentation de cet additionneur sur la carte Basys3. Identifiez tous les ports devant être connectés aux E/S de la Basys3 (pour chaque port donnez la direction, taille et nom). Donnez les correspondances entre noms logiques et noms physiques.
Exercice 2
Est-il possible de
connecter le même switch à deux entrées différentes dans le circuit (ex les 2 entrées d'une porte OU) ? Justifiez.
connecter deux sorties du circuit à une même LED ? Justifiez.
connecter deux LEDs à une même sortie du circuit ? Justifiez.
connecter deux switches à une même entrée du circuit ? Justifiez.