Synthèse et implémentation de circuits arithmétiques sur FPGA

Slides:



Advertisements
Présentations similaires
Modélisation VHDL d’un chemin des données
Advertisements

INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Représentation et opérations.
Modélisation VHDL du chemin des données d’un processeur à usage général Sujets de ce thème
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Analyse de machines.
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Implémentation d’un.
Synthèse et implémentation de circuits arithmétiques sur FPGA
Processeurs et chemins des données
Synthèse et implémentation d’un circuit combinatoire
Réseaux pré-diffusés programmables par l’utilisateur: FPGA
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Flot de conception de.
Chapitre 4 la représentation des nombres. Chapitre 4 : La représentation des nombres 1 - Introduction 1.1 – Notion de mot 2 - La représentation des entiers.
République Tunisienne Ministère de l’Enseignement Supérieur et de la Recherche Scientifique Université de Monastir Laboratoire d’Electronique et de Microélectronique.
1 Les circuits combinatoires Chapitre Les Circuits combinatoires Un circuit combinatoire est un circuit numérique dont les sorties dépendent uniquement.
SITUATION DE REFERENCE
Information, Calcul, Communication
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Rappel - analyse et.
Par Sacha (11 ans - 6ème) - Le 9 mai 2017
Multiplier, diviser des nombres relatifs
Pierre Joli Cours de Mathématique Pierre Joli
L’opération de multiplication
Quelques Termes INFORMATIQUE ? ORDINATEUR ( Système Informatique)?
Logique Combinatoire.
Description d’un circuit combinatoire en VHDL
Quel est le calcul prioritaire ? Y-a-t-il des parenthèses ?
Nombres entiers non signés/signés
Cours 2 : Représentation des nombres réels
Opérateurs Toute donnée informatique est stockée en mémoire sous la forme d'une combinaison de bits (mot machine). Les opérateurs bits permettent de modifier.
Arithmétique entière en VHDL
Techniques de décomposition
Représentation de l’information en binaire:
Chapitre 01: Structure d'un module VHDL
Les inégalités et les inéquations
Javadoc et débogueur Semaine 03 Version A17.
TP N°3 : Adressage IP Les classes IP
Les opérations élémentaires dans l’Égypte ancienne
Architecture de machines Eléments de logique
Dimitri Zuchowski et Marc-Élie Lapointe
Progressions calcul CM
+ et – sur les relatifs Menu général.
Plan du cours Introduction : création de circuits
Fonctions logiques et algèbre booléenne
La technique du pipeline
Réseaux pré-diffusés programmables par l’utilisateur: FPGA
Le temps de propagation des signaux dans un circuit
Tests de boîte blanche.
Fonctions Logiques & Algèbre de BOOLE
Deux objectifs Réactiver nos connaissances dans le domaine du calcul additif : les structures additives ; les différents types de calculs. Réactiver nos.
Codage et Représentation de l’Information
Le système binaire Table des matières : -Présentation du binaire
VALMEM Traduction automatique d'une description comportementale VHDL + annotations temporelles en automates temporisés A. Bara, E. Encrenaz LIP6 VALMEM.
Algèbre de BOOLE.
NUMERATION et REPRESENTATION DES NOMBRES
SYSTèMES à évènements discrets
Les réseaux logiques programmables
Sylvie DELAËT 2002 Architecture des machines Bienvenus en Amphi d’Architecture des Machines.
Royaume de Maroc Université Hassan Premier Settat Faculté des Sciences et Techniques de Settat Description synthétiseur en langage VHDL d'un circuit intégré.
Présenté par: Mr: KARKOUB Rida Mme: ERRAIH Izza
1. Les Circuits combinatoires Un circuit combinatoire est un circuit numérique dont les sorties dépendent uniquement des entrées. S i =F(E i ) S i =F(E.
1 Architecture des ordinateurs Généralités. 2 Définition Informatique = Information + Automatique Ce terme a été introduit en France. Il est très répandu.
Passage primaire-secondaire
Chapitre 2 : Représentation de l’information dans la machine Introduction Représentation des nombres négatifs –Signe / valeur absolue –Complément à 1 –Complément.
FPGAs (Field Programmable Gate Array)
GEOMETRIE VECTORIELLE
Priorité des opérations
1- Connaitre le vocabulaire des opérations.
1- Connaitre le vocabulaire des opérations.
Système de Numération : Décimal, Binaire, Octal et Hexadécimal
1- Connaitre le vocabulaire des opérations.
Codification et représentation de l’information Enseignant: Mahseur mohammed Groupe FB: mi2016ua1 Chaine YT: Cours informatique.
Introduction aux Circuits Reconfigurables et FPGA.
Transcription de la présentation:

Synthèse et implémentation de circuits arithmétiques sur FPGA

Synthèse et implémentation de circuits arithmétiques sur FPGA Sujets de ce thème Ressources de calcul d’une tranche de type L Implémentation de l’addition et de la soustraction dans une tranche Valeur absolue Multiplication par une constante Blocs DSP48E pour l’implémentation de la multiplication et de la multiplication-accumulation Décalage et modulo

FPGA de Xilinx série 7 : tranche de type L (SLICEL) Une tranche de type L comprend: Quatre tables de correspondance (Look-up Table – LUT) à 6 entrées (A6:A1) et deux sorties O6 et O5. Trois multiplexeurs (en gris, verticaux) pour réaliser des fonctions logiques de 7 ou 8 entrées. Des portes logiques pour l’addition rapide. Huit éléments à mémoire. Des multiplexeurs programmables (en blanc) pour router les signaux. Comment faire pour implémenter des fonctions arithmétiques avec ce circuit? Xilinx inc., 7 Series FPGAs Configurable Logic Block User Guide (ug474 v. 1.7), Nov. 2014 Xilinx inc., Virtex-5 FPGA User Guide (ug190 v. 5.4), March 2012

Architecture d’un additionneur La configuration d’additionneur la plus simple est l’additionneur à retenue propagée (ripple carry adder). Le module de base est un compresseur 3:2 qui prend trois bits en entrée et encode leur somme sur 2 bits. Une cascade de compresseurs 3:2 réalise une addition à plusieurs bits. Cin X Y Cout S 1 0110 9 1001 + 3 0011 12 01100

Implémentation de l’addition dans une tranche d’un FPGA Les FPGA de Xilinx implémentent le module du compresseur avec un circuit spécial dédié en reformulant les équations du compresseur 3:2. La première porte OUX est réalisée dans une LUT. Le multiplexeur et la deuxième porte OUX font partie du circuit dédié de chaque tranche. Les signaux de retenue sont propagés à l’intérieur d’une tranche et de tranche en tranche. Cin X Y T1 = X xor Y Cout S 1 X T1 Y T1 = X xor Y S = T1 xor Cin Cout = T1  Cin + T1’  Y = T1  Cin + T1’  X Xilinx inc., Spartan-3 Generation FPGA User Guide (ug331 v. 1.8), June 2011

Fonctionnement interne des LUT à 6 entrées A6:A1 et deux sorties O6 et O5

Implémentation de l’addition dans une tranche d’un FPGA Chaque tranche peut réaliser l’addition ou la soustraction de deux nombres de 4 bits. La configuration pré-connectée et les interconnexions entre tranches rendent le circuit très rapide. A(i) B(i) Xilinx inc., Spartan-3 Generation FPGA User Guide (ug331 v. 1.8), June 2011 En VHDL: signal A, B, sum : signed (W – 1 downto 0); … sum <= A + B; Xilinx inc., 7 Series FPGAs Configurable Logic Block User Guide (ug474 v. 1.7), Nov. 2014

Architecture d’un additionneur-soustracteur Nous supposons une représentation à complément à deux. La soustraction A – B peut être faite par A + (-B). Changer le signe d’un nombre consiste à inverser ses bits et ajouter 1. Quand Sub/Add’ = 0, une addition est faite. Quand Sub/Add’ = 1, les bits de B sont inversés et on ajoute une retenue à l’additionneur de poids faible: la soustraction est réalisée. L’implémentation sur une tranche de type L est laissée en exercice.

Valeur absolue La valeur absolue s’implémente avec un additionneur-soustracteur. Si le bit de signe a une valeur de 1, on fait une inversion des bits et une addition de 1.

Multiplication par une constante Quand un des termes de la multiplication est constant, la technique de la décomposition en produits partiels peut grandement simplifier les calculs. Par exemple A × 10 = A × (8 + 2) = A × 8 + A × 2 = A << 3 + A << 1 Le coût de l’opération est donc limité à un seul additionneur. Un synthétiseur peut implémenter la multiplication par une constante avec une combinaison d’additions et de décalages. On peut exploiter les produits partiels négatifs pour avoir le plus faible coût possible. Par exemple: A × 15 = A × (8 + 4 + 2 + 1) = A << 3 + A << 2 + A << 1 + A ce qui prend trois additions. Une approche moins couteuse serait: A × 15 = A × (16 – 1) = A << 4 – A, ce qui ne prend qu’une seule addition (ou soustraction). Il existe des méthodes pour trouver la représentation d’un nombre utilisant un minimum de chiffres signés.

Architecture du FPGA XC7A100T et tranches de calcul DSP48E1 Vue d’ensemble du FPGA XC7A100T Gros plan sur la région du rectangle rouge

Tranches de calcul DSP48E1 et implémentation de la multiplication Les FPGA de série 7 de Xilinx incluent des tranches spécialisées pour les calculs de traitement de signal, les blocs DSP48E1. Les FPGA de type XC7A100T en contiennent 240. Ces blocs incluent entres autres un multiplicateur de 25 × 18 bits en complément à deux. Les multiplications de très petits nombres (e.g. 4 × 4) se font plutôt dans les tranches avec LUT. Les multiplications de très grands nombres se font en utilisant plusieurs multiplicateurs de 25 × 18 et en combinant les produits. Xilinx inc., 7 Series DSP48E1 Slice User Guide (ug479 v. 1.8), November 2014 En VHDL: Signal Produit : signed(2 * W – 1 downto 0); Signal A, B : signed(W – 1 downto 0); … Produit <= A * B;

Multiplication-accumulation Les tranches de calcul DSP48E peuvent être configurés pour des fonctions plus complexes comme la multiplication-accumulation sur 48 bits. En anglais on appelle cette opération Multiply and Accumulate (MAC). La multiplication-accumulation réalise l’opération S = S + A * B Elle est très fréquente en traitement de signal pour calculer la convolution ou le produit scalaire de deux vecteurs. Xilinx inc., XST user guide (ug627 v. 12.4), December 2010 signal S: signed(2 * W – 1 downto 0); signal A, B : signed(W – 1 downto 0); … process (clk) begin if rising_edge(clk) then S <= S + mult; mult <= A * B end if; end process;

Décalage, modulo et redimensionnement Un décalage par un nombre constant de bits (A × 2N, A / 2N, shift_left(A, N), shift_right(A, N) ne nécessite aucune logique, seulement une sélection de fils. Le décalage vers la gauche par un nombre arbitraire de bits N ≤ 17 s’implémente dans une tranche DSP48E en fixant une des entrées à 2N. Le décalage vers la droite par un nombre arbitraire de bits s’implémente aussi avec une tranche DSP48E. Voir les exercices en classe. Le modulo et le redimensionnement (resize(arg, newsize)) ne nécessitent aucune logique, seulement une sélection de fils.

Vous devriez maintenant être capable de … Décrire et utiliser les ressources de calcul spécialisées disponibles sur un FPGA: propagation des retenues et blocs DSPs. (B2, B3) Effectuer le processus de synthèse et d’implémentation d’opérations arithmétiques simples sur les structures de calcul disponibles sur un FPGA. (B3) Code Niveau (http://fr.wikipedia.org/wiki/Taxonomie_de_Bloom) B1 Connaissance – mémoriser de l’information. B2 Compréhension – interpréter l’information. B3 Application – confronter les connaissances à des cas pratiques simples. B4 Analyse – décomposer un problème, cas pratiques plus complexes. B5 Synthèse – expression personnelle, cas pratiques plus complexes.