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

Slides:



Advertisements
Présentations similaires
Les opérateurs combinatoires
Advertisements

Architecture des Ordinateurs
Architecture de machines Eléments de logique
Cours Systèmes logiques
Ing Mohamed MASMOUDI Cours VHDL Ing Mohamed MASMOUDI
Exercices sur la conception de processeurs
Décrire un circuit numérique avec VHDL
Cours #9 Conception et réalisation de processeurs à usage général
Cours #3 Technologies de logique programmable
Cours #6 Conception d’unités de contrôle
Cours #12: Exercices de révision
Cours #8 Flot de conception d’un circuit numérique
Cours #4 Éléments à mémoire et circuits séquentiels synchrones de base
Électronique numérique Intervenants : Boitier V. / Perisse T.
Cours #7 Vérification d’un modèle VHDL
Cours #5 Conception de chemins des données
Modélisation VHDL d’un chemin des données
Logique programmable Réseaux et circuits PLA, PAL, GAL et CPLD
Décodeurs et encodeurs : sujets de ce thème
CORDIC Sujets de ce thème
Représentation binaire de nombres entiers et opérations arithmétiques de base Sujets de ce thème
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Représentation et opérations.
Circuits intégrés numériques Quelques bases
Banc d’essai pour un circuit combinatoire
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Options d’implémentation.
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Synthèse d’un circuit.
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 La technique du pipeline.
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.
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Augmenter le débit d’un.
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Description d’un circuit.
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Bonnes pratiques de.
Processeurs et chemins des données
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Entrées et sorties par.
Le temps de propagation des signaux dans un circuit
Logique programmable Mémoires mortes: PROM, EPROM, EEPROM
Advanced Boolean Equation Language
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Vue d’ensemble des systèmes.
Tests de boîte noire.
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Vérification de circuits.
Chemin critique et fréquence maximale d’horloge
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Le problème du déphasage.
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Encodage du jeu d’instructions.
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Arithmétique entière.
Les systèmes mono-puce
Concepts intermédiaires de VHDL
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Performance de circuits.
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Modélisation VHDL de.
Synthèse et implémentation d’un circuit combinatoire
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Simulation d’un modèle.
Rappel - analyse et synthèse de fonctions combinatoires
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Banc d’essai pour un.
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Objets des catégories.
Implantation de processeurs dans les FPGA et ASIC
Introduction au VHDL - R.WEBER - Polytech'Orleans
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Analyse détaillée du.
Réseaux pré-diffusés programmables par l’utilisateur: FPGA
CIRCUITS LOGIQUES PROGRAMMABLES
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Chemin des données d’un.
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Performance de circuits.
05/03/06 11:49 Yannick Herve, Wilfried Uhring, Jihad Zallat 1 Électronique Numérique Chapitre 6 Composants séquentiels Bilan de l’offre commerciale, Le.
Les FPGA « Field Programmable Gate Array »
Implémentation de la division sur FPGA
VHDL pour circuits séquentiels
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Flot de conception de.
CHAPITRE 8 Les booléens et les chaines de bits 1.
L’électronique des ordinateurs Laurent JEANPIERRE IUT de CAEN – Campus 3.
1 Objectifs Apprendre la structure de quelques circuits combinatoires souvent utilisés ( demi additionneur, additionneur complet,……..). Apprendre comment.
Synthèse et implémentation de circuits arithmétiques sur 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

Virtex 5: tranche de type L (SLICEL) Une tranche de type L comprend: Quatre tables de correspondance (Look-up Table – LUT) à 6 entrées, pouvant être programmées comme: fonction logique mémoire ROM Quatre éléments à mémoire: bascule ou loquet. Des multiplexeurs pour router les signaux. Des portes logiques pour l’addition rapide. Comment faire pour implémenter des fonctions arithmétiques avec ce circuit? 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

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., Virtex-5 FPGA User Guide (ug190 v. 5.4), March 2012

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 de Virtex 5 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 peu 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ée à 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 – X, 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 XC5VLX50T et tranches de calcul DSP48E Vue d’ensemble du FPGA XC5VLX50T Gros plan sur la région du rectangle rouge

Architecture du FPGA XC5VLX50T et tranches de calcul DSP48E Gros plan sur la région du rectangle rouge

Architecture du FPGA XC5VLX50T et tranches de calcul DSP48E Gros plan sur la région du rectangle rouge

Tranches de calcul DSP48E et implémentation de la multiplication Les FPGA de Xilinx incluent des tranches spécialisées pour les calculs de traitement de signal, les blocs DSP48E. Les FPGA de type XC5VLX50T en contiennent 48. 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., Virtex-5 FPGA XtremeDSP Design Considerations (ug193 v. 3.5), January 2012 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.