Çà bouge en 2015-16, voici quelques articles (à lire) dans la presse sur ce nouveau marché!
“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
“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
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 Nexys3 par binôme auprès de votre enseignant!
The Nexys3 is a complete, ready-to-use digital circuit development platform based on the Xilinx Spartan-6 LX16 FPGA. The Spartan-6 is optimized for high performance logic, and offers more than 50% higher capacity, higher performance, and more resources as compared to the Nexys2’s Spartan-3 500E FPGA. Spartan-6 LX16 features include:
1 2,278 slices each containing four 6-input LUTs and eight flip-flops
2 576Kbits of fast block RAM
3 two clock tiles (four DCMs & two PLLs)
4 32 DSP slices
5 500MHz+ clock speeds
In addition to the Spartan-6 FPGA, the Nexys3 offers an improved collection of peripherals including 32Mbytes of Micron’s latest Phase Change nonvolatile memory, a 10/100 Ethernet PHY, 16Mbytes of Cellular RAM, a USB-UART port, a USB host port for mice and keyboards, and an improved high-speed expansion connector. The large FPGA and broad set of peripherals make the Nexys3 board an ideal host for a wide range of digital systems, including embedded processor designs based on Xilinx’s MicroBlaze.
Nexys3 is compatible with all Xilinx CAD tools, including ChipScope, EDK, and the free WebPack. The Nexys3 uses Digilent's newest Adept USB2 system that offers FPGA and ROM programming, automated board tests, virtual I/O, and simplified user-data transfer facilities.
Les entrées sorties de la Nexys3
The Nexys3 board includes eight slide switches, eight push buttons, eight individual LEDs, and a four digit seven-segment display. The pushbuttons and slide switches are connected to the FPGA via series resistors to prevent damage from inadvertent short circuits (a short circuit could occur if an FPGA pin assigned to a pushbutton or slide switch was inadvertently defined as an output). The pushbuttons are "momentary" switches that normally generate a low output when they are at rest, and a high output only when they are pressed. Slide switches generate constant high or low inputs depending on their position.
The eight individual high-efficiency LEDs are anode-connected to the FPGA via 390-ohm resistors, so they will turn on when a logic high voltage is applied to their respective I/O pin. Additional LEDs that are not user-accessible indicate power-on, FPGA programming status, and USB and Ethernet port status.
Affichage 7-segments
The Nexys3 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.
Fichier UCF
Un fichier UCF User Constraints File 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 nexys 3), 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.
Exemple
Soit le circuit de la figure ci-dessous. Il s'agit d'un circuit prenant entrée 4 bits (A, B, C, D) pour calculer une sortie binaire E.
Pour fournir à un circuit implémenté sur une Nexys3 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). Ainsi, le fichier ci-dessous correspond au fichier UCF de l'exemple.
NET A LOC = T10; // switch tout à gauche sur la NEXYS 3
NET B LOC = T9; // switch suivant
NET C LOC = V9; // troisième switch
NET D LOC = M8; // quatrième switch
NET E LOC = U16; // LED au fond à gauche
Exercice 1
Question 1
On désire implémenter un additionneur 1 bit sur la Nexys3.
Proposez une utilisation des switches et des leds pour tester ce circuit une fois synthétisé. Construisez le fichier UCF utilisé pour le placement et routage sur la carte Nexys3.
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 Nexys3. Identifiez tous les ports devant être connectés aux E/S de la Nexys3 (pour chaque port donnez la direction, taille et nom). Donnez le fichier UCF correspondant.
Exercice 2
Question 1
Soit le fichier UCF suivant
Net LED<7> LOC=T11 ;
Net LED<6> LOC=R11 ;
Net LED<5> LOC=N11 ;
Net LED<4> LOC=M11 ;
Net LED<3> LOC=V15 ;
Net LED<2> LOC=U15 ;
Net LED<1> LOC=V16 ;
Net LED<0> LOC=U16 ;
Net BTN<0> LOC=D9 ;
Net BTN<1> LOC=C9 ;
Net BTN<2> LOC=C4 ;
Net BTN<3> LOC=A8 ;
Net BTN<4> LOC=B8 ;
Net SW<0> LOC=T10 ;
Net SW<1> LOC=T9 ;
Net SW<2> LOC=V9 ;
Net SW<3> LOC=M8 ;
Net SW<4> LOC=N8 ;
Net SW<5> LOC=U8 ;
Net SW<6> LOC=V8 ;
Net SW<7> LOC=T5 ;
Net SSEG_CA<0> LOC=T17 ;
Net SSEG_CA<1> LOC=T18 ;
Net SSEG_CA<2> LOC=U17 ;
Net SSEG_CA<3> LOC=U18 ;
Net SSEG_CA<4> LOC=M14 ;
Net SSEG_CA<5> LOC=N14 ;
Net SSEG_CA<6> LOC=L14 ;
Net SSEG_CA<7> LOC=M13 ;
Net SSEG_AN<0> LOC=P17 ;
Net SSEG_AN<1> LOC=P18 ;
Net SSEG_AN<2> LOC=N15 ;
Net SSEG_AN<3> LOC=N16 ;
Donnez le schéma représentant le circuit conçu avec ses ports (mettre en évidence les nom des ports, leur direction et leur taille)
Question 2
Est-il possible de
Question 3
Le circuit de la Q1 prend en entrée un nombre binaire sur 8 bits (8 switches). On voudrait concevoir un circuit travaillant sur 16 bit, puis un autre sur 32 bits.
- Proposez une méthode pour alimenter ces circuits en données ? (vous l'avez vu! la carte ne dispose que de 8 switches)
Préparation aux TP- Manipulation des afficheurs 7 segments
Pour permettre de prendre contact avec la plateforme de TP on va commencer par résoudre un problème simple : utiliser 4 interrupteurs en entrée et afficher en hexadécimal, la valeur correspondante sur certains des quatre afficheurs sept segments en fonction de la position des quatre autres switches.
Ce problème à résoudre correspond à une entité (entity) VHDL :
entity td1 is
port (
entrees : in std_logic_vector(3 downto 0); -- 1 mots de 4 bits en entrée
s7segs : out std_logic_vector(6 downto 0); -- 7 segments en sorties
aff : out std_logic_vector(3 downto 0)); -- 4 sélecteurs d'afficheur
end td1;
On peut remarquer que comme pour le fichier UCF:
La compréhension de ces choix nécessite une compréhension des afficheurs. Ils sont multiplexés à l'aide d'un signal qui permet d'identifier l'afficheur. L'affichage se fait ainsi avec 7 signaux (les segments à allumer) qui sont actifs à l'état bas, sur les afficheurs sélectionnés.
Question 1
Expliquer le fonctionnement du système par un circuit comme celui l de l'exercice 1, puis donner le fichier UCF correspondant à la carte Nexys3.
On utilisera que les deux afficheurs poids faibles.
Question 2
On voudrait maintenant réaliser un ensemble permettant d'afficher le mot de 8 bits saisis sur les 8 switches sur ces deux afficheurs hexadécimal.