Du Software au Hardware

Slides:



Advertisements
Présentations similaires
Développement dapplications sur mobiles.NET et J2ME, C++ et Symbian WIPLIER Thomas – M2IRT2009 – 15/02/2007.
Advertisements

LYCEE MAGHREB ARABE TECHNIQUE
BENHARBONE William20 Septembre 2007 Pulse Start Laser Synchro LabVIEW & F ield P rogrammable G ate A rray MC68HC08 MC68HC08 XILINX 255 cycles FSL ΔT
Chapitre 3 Les Circuits Spécialisées ASIC et La consommation de puissance Smail NIAR MASTER1 INEM.
Flow de conception (4h)-demo
Présentation d’un design de carte vidéo
Ing Mohamed MASMOUDI Cours VHDL Ing Mohamed MASMOUDI
Décrire un circuit numérique avec VHDL
Architecture d’un ordinateur
INTRODUCTION Architecture et Technologie des Ordinateurs
Fonction Traiter Algorithmique et Programmation
Cours VHDL Chap 3: sémantique VHDL
Cours #6 Conception d’unités de contrôle
Le VHDL De nos jours, les circuits numériques de haute performance sont habituellement créés à partir de descriptions en langages de haut niveau. Nous.
Cours #8 Flot de conception d’un circuit numérique
Problématique « utilisation »
Cours #4 Éléments à mémoire et circuits séquentiels synchrones de base
Introduction Objectifs du cours Évaluation Références
Systèmes distribués Le futur des systèmes dinformation est: Networked Diverse Numerous Mobile Ubiquitous Systèmes multiagents Middlewares: CORBA JINI HLA.
Plan 1-Introduction. 2-Standard VHDL-AMS. Modélisations:
Cours #7 Vérification d’un modèle VHDL
Cours #5 Conception de chemins des données
3.3 Circuits logiques à mémoire Bascules (latches)
COMPOSANTS PROGRAMMABLES
Modélisation VHDL d’un chemin des données
Logique programmable Réseaux et circuits PLA, PAL, GAL et CPLD
Le VHDL : SOMMAIRE I Introduction II Éléments généraux du langage
Banc d’essai pour un circuit combinatoire
Journée N°1 – Baccalauréat STI2D – Formation de spécialité SIN
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 Description d’un circuit.
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Entrées et sorties par.
Advanced Boolean Equation Language
Composants logiques programmables
INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel Langages de description architecturale.
MICROLOR Le savoir partagé
Méthodologie de conception Outils de conception
Power PC embarqués et accélérateurs matériels pour des cibles de type FPGA Julien Dubois.
Modélisation VHDL-AMS haut niveau de l’activité en courant des mémoires en vue de l'optimisation de la compatibilité électromagnétique Richard PERDRIAU*/**
Option Télécommunications
Les systèmes mono-puce
Concepts intermédiaires de VHDL
Synthèse et implémentation d’un circuit combinatoire
Journées d'études Faible Tension Faible Consommation 14, 15, 16 mai Gwenolé CORRE, Nathalie JULIEN, Eric SENN, Eric MARTIN LESTER, Université de.
Implantation de processeurs dans les FPGA et ASIC
Introduction au VHDL - R.WEBER - Polytech'Orleans
Réseaux pré-diffusés programmables par l’utilisateur: FPGA
CIRCUITS LOGIQUES PROGRAMMABLES
1 Université Henri Poincaré, Nancy 1 La préemption appliquée aux FPGAs Soutenance de rapport bibliographique de DEA Faculté des Sciences Vandoeuvre-lès-Nancy.
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 »
Architecture matérielle Qu’est ce qu’un ordinateur ?
Implémentation de la division sur FPGA
INTRODUCTION.
Réunion ACTAR - 5 Mars Saclay Gilles Wittwer Présentation du G roupe A cquisition pour la P hysique.
VHDL pour circuits séquentiels
SUNDANCE Multiprocessor Technology Ltd. Yann CLIN Stage effectué de février à juin Superviseur technique: Jocelyn SEROT Superviseur industriel: Emmanuel.
6 mois plus tard ….
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Flot de conception de.
Composants à réseaux logiques programmables
UE MAREP Cours 12 : Révisions
Le VHDL Programmation des CPLD et FPGA avec Quartus II ENSET d'Oran / IUFM Aix Marseille - mai
QU’EST-CE QU’UN SYSTÈME EMBARQUE ?
TPs d’Intégration des Systemes
CEA DSM Irfu 29 / 12 / Christophe Cara - Développement d’un SoC LEON Séminaire ‘instrumentation’ FPGA intégrant un microprocesseur Développement.
Chapitre 01: Structure d'un module VHDL
Réseaux pré-diffusés programmables par l’utilisateur: FPGA
Architecture des processeurs « Partie matérielle » CE311/CE317 Module « Systèmes matériels et logiciels » Crédit : 5 (en 2 parties) Vincent Beroulle Bureau.
Introduction aux Circuits Reconfigurables et FPGA.
Transcription de la présentation:

Du Software au Hardware Introduction aux composants programmables FPGA Grégory ESTRADE http://torlus.com/

Introduction aux FPGA - Plan Electronique numérique Logique programmable Conception hardware sur FPGA Langages et outils Bases Exemples simples Projets avancés En pratique

Introduction aux FPGA – Electronique numérique Bases Portes logiques Latches, Flip-flops Horloge, Bus... Série 7400 et 4000 Premiers circuits intégrés déployés dans les 70s Familles TTL et CMOS Accessible aux hobbyistes Applications : « glue logic », systèmes complets ( http://www.homebrewcpu.com/ )

Source : Wikipedia

Introduction aux FPGA – Electronique numérique Circuits avancés ROM, RAM CPU, DSP (audio, vidéo, télécoms… ), MCU (Microcontrôleurs) Contrôleurs USB, Ethernet… ASIC DAC, ADC, capteurs, servo-moteurs… Logique programmable PAL, GAL CPLD, FPGA

Logique programmable Synthèse combinatoire Circuits séquentiels Composants

Synthèse combinatoire S = Ci./A./B + /Ci.A./B + /Ci./A.B + Ci.A.B Co = Ci.A./B + Ci./A.B + /Ci.A.B + Ci.A.B

PAL = Programmable Array Logic Source : Wikipedia

Introduction aux FPGA – Logique programmable Synthèse combinatoire Gate Array (PAL, PLA, GAL) ROM Microcontrôleur ( http://www.schells.com/intellicart.shtml )

Circuits séquentiels Horloge, bascules Finite State Machine Référence : « Du Binaire au Processeur » - Emmanuel Mesnard

Introduction aux FPGA – Logique programmable Composants : CPLD Apparition dans les 80s. Capacité : 10000 portes (500 macrocells). Configuration stockée « on-chip ». Langages de haut niveau (HDLs).

Introduction aux FPGA – Logique programmable Composants : FPGA Extension des CPLD, architecture plus flexible Capacité : millions de portes Configuration stockée sur EEPROM externe Éléments dédiés : RAM, multiplicateurs, CPU cores...

Source : http://www.chrec.ufl.edu/

Introduction aux FPGA – Logique programmable Composants : FPGA (suite) Remplacement des ASICs, DSP... Constructeurs : Xilinx, Altera, Lattice, Actel... Développement combiné software/hardware Runtime reconfiguration

Conception hardware sur FPGA Langages et outils Bases du langage VHDL Exemple simple Projets avancés

Introduction aux FPGA – Conception Outils (Xilinx) Spartan-3 Starter Board ISE WebPack ModelSim Source : Diligent

Introduction aux FPGA – Conception Etapes Edition des sources Edition du fichier UCF : « User Constraints File » Répartition des signaux de l’entité principale sur des pins Contraintes de timing IO Standards (LVTTL, LVCMOS33, LVCMOS25…) Synthèse et génération du fichier programme Génération de l’image EEPROM Flashage de l’EEPROM

Introduction aux FPGA – Conception Langages VHDL Origine : DoD américain Syntaxe ADA Meilleure abstraction Verilog Origine : industrie Syntaxe proche du C Plus simple d’apprentissage, plus concret Saisie de schémas

Introduction aux FPGA – Conception Langages (suite) Software Programming Language Compilation en langage machine Exécution séquentielle Hardware Description Language Synthèse en « portes et câbles » Exécution concurrente Exécution séquentielle en simulation (Test benchs)

Introduction aux FPGA – Conception Langages (suite) Pièges Exécution concurrente « Optimisations » Synthèse (guidage, asynchronisme…) Problèmes hardware (Routage, clock skew, SSO…) Remèdes Simulation Rapports de synthèse Visualisation à l’oscilloscope, analyseur logique

VHDL - Porte ET à 2 entrées -- imports library IEEE; use IEEE.std_logic_1164.all; -- entité entity porte_et is port( a,b : in std_logic; s : out std_logic ); end porte_et; -- architecture architecture rtl of porte_et is begin s <= a and b; end rtl;

VHDL - Utilisation de la porte ET à 2 entrées library IEEE; use IEEE.std_logic_1164.all; entity mon_systeme is … … end mon_systeme; architecture arch of mon_systeme is -- déclaration de porte_et pour utilisation component porte_et is port( a,b : in std_logic; s : out std_logic ); end component; -- déclaration de « registres » 8 bits signal op1 : std_logic_vector(7 downto 0); signal op2 : std_logic_vector(7 downto 0); signal res : std_logic_vector(7 downto 0); begin -- instanciation de 8 portes_et et8 : for i in op1’range generate et8_0 : porte_et port map (a => op1(i), b => op2(i), s => res(i)); end generate et8; end arch;

Autres exemples : représentation d’un MUX -- template 1: X <= A when S = '1' else B; -- template 2: with S select X <= A when '1' else B; -- template 3: process(A,B,S) begin case S is when '1' => X <= A; when others => X <= B; end case; end process; -- template 4: if S = '1' then X <= A; else X <= B; end if; Source : Wikipedia

Autres exemples (suite) -- logique 3 états et « don’t care » : B <= A when CE = ‘0’, ‘Z’ when OE = ‘1’ else ‘X’; -- horloge et reset asynchrone process(clk, reset) if (reset = ‘0’) then … … elsif clk’event and clk = ‘1’ then end if; begin end process; -- simulation : génération d’une horloge process clk <= ‘0’; wait for 20ns; clk <= ‘1’;

Introduction aux FPGA – Conception Exemple : Communication RS-232 Utilisation d’un convertisseur (MAX232)

Introduction aux FPGA – Conception Exemple : Communication RS-232 Caractéristiques Fonctionnement à 16Mhz Communication à 9600 bps, format 8N1 Exemple d’interface Caractères à lire et à écrire Signal de demande d’écriture Signal « busy  » en écriture Signal de demande de lecture Signal « avail »  en lecture Reset

Exemple : Communication RS-232 entity UART is port( clk : in std_logic; reset : in std_logic; tx : out std_logic; rx : in std_logic; rd : in std_logic; rd_data : out std_logic_vector(7 downto 0); avail : out std_logic; wr : in std_logic; wr_data : in std_logic_vector(7 downto 0); busy : out std_logic ); end UART;

Introduction aux FPGA – Conception Exemple : Communication RS-232 Fonctionnement Suréchantillonage x16 (utile en réception uniquement) Compteur serclk_cnt (adapté au baudrate) 16 000 000 / 9600 / 16 = 103 Compteurs rx_cnt et tx_cnt sur 8 bits 4 bits de poids faible : suréchantillonage 4 bits de poids fort : compteur des bits à transmettre/recevoir Bit de start Bits de données Bit de stop

Architecture de l’UART – Vue d’ensemble architecture rtl of UART is -- signaux de contrôle (non détaillés) signal serclk_cnt : std_logic_vector(6 downto 0); signal tx_data : std_logic_vector(7 downto 0); signal tx_cnt : std_logic_vector(7 downto 0); signal rx_data : std_logic_vector(7 downto 0); signal rx_cnt : std_logic_vector(7 downto 0); begin process(clk, reset) if reset = ‘0’ then -- réinitalisation (non détaillée) elsif rising_edge(clk) then -- gestion des signaux de contrôle (non détaillée) serclk_cnt <= serclk_cnt + 1; if serclk_cnt = 103 then serclk_cnt <= (others => '0'); -- unité de réception -- unité d’émission end if; end process; end rtl;

Architecture de l’UART – Emission -- un ordre d’écriture positionne tx_cnt à ‘00010000’ et busy à ‘1’ if tx_cnt(7 downto 4) = "0000" then tx <= '1'; elsif tx_cnt(7 downto 4) = "0001" then -- start bit tx <= '0'; tx_cnt <= tx_cnt + 1; elsif tx_cnt(7 downto 4) < "1010" then -- data bits tx <= tx_data(0); if tx_cnt(3 downto 0) = "1111" then tx_data <= "0" & tx_data(7 downto 1); end if; elsif tx_cnt(7 downto 4) = "1010" then -- stop bit else busy <= ‘0’; tx_cnt <= "00000000";

Architecture de l’UART – Réception if rx_cnt(7 downto 4) = "0000" then if rx = '0' then -- start bit rx_cnt <= rx_cnt + 1; if rx_cnt(3 downto 0) = "1000" then rx_cnt <= "00010000"; end if; else rx_cnt <= "00000000"; elsif rx_cnt(7 downto 4) < "1001" then -- data bits if rx_cnt(3 downto 0) = "1111" then rx_data <= rx & rx_data(7 downto 1);

Introduction aux FPGA – Conception Projets avancés http://www.opencores.org/ CPU Cores : T65, T80, 6809, 8051… Contrôleurs Ethernet, USB, LCD, SPI, I²C… Emulation de machines anciennes http://zxgate.sourceforge.net/ (ZX81, ZX Spectrum, Jupiter ACE, TRS80) http://www.fpgaarcade.com/ (Hardware arcade, VIC-20) Minimig (Amiga 500 sur base 68k + FPGA) http://www.experiment-s.de/ (Atari STE)

Introduction aux FPGA – Conception Projets avancés (suite) http://c64upgra.de/c-one/ (Commodore ONE) http://www.bazix.nl/onechipmsx.html (MSX) Divers http://jeanfrancoisdelnero.free.fr/floppy_drive_emulator/index.html Emulation de lecteur de disquette avec interface USB Custom CPUs http://www.tripoint.org/kevtris/ (le site de Kevin Horton : NES, Intellivision, SID…) http://torlus.com/ (Blog dédié au développement)

En pratique Outils et composants Interfaçage avec d’autres systèmes Réalisation de PCB

Introduction aux FPGA – En pratique Equipement Pour commencer Breadboard, cartes pastillées, fil. Composants passifs : résistances, condensateurs. Fer à souder <18W, soudure 0.5mm. Tresse ou pompe à dessouder. Multimètre Pour aller plus loin Oscilloscope (analogique, numérique, USB) Analyseur logique

Introduction aux FPGA – En pratique Interfaçage - Problématiques Evolution des standards 5V TTL / CMOS 3.3V CMOS (2.5V, 1.8V, 1.2V…) Evolution des composants Packages « thru-hole » Packages « SMT » (CMS, Composants Montés en Surface)

Introduction aux FPGA – En pratique Interfaçage - Circuits intégrés : Packages Packages « Thru-hole » DIP : 2,54mm PLCC, PGA : 2,54mm – 1,27mm Packages « SMT » (CMS) SOIC : 1,27mm *QFP, *SOP : 0,8mm – 0,5mm *BGA

Introduction aux FPGA – En pratique Interfaçage - Solutions Conversion 5V / 3.3V : circuits d’adaptation Utilisation des CMS Adaptateurs Utilisation de PCB Fabriqués par un tiers (ex : http://www.pcbfabexpress.com/ ) Fabriqués soi-même

Introduction aux FPGA – En pratique Réalisation de PCB – Processus Utilisation de plaques photosensibles Conception du circuit – EAGLE, Proteus, OrCAD… Edition d’un typon – Impression laser sur transparent Insolation – Kit insoleuse à néons UV Révélation – Bac et révélateur en poudre Gravure – Kit graveuse verticale (bac, chauffage et bulleur) et perchlorure de fer Etamage – Solution d’étamage à froid

Graveuse et Insoleuse KF – photo Selectronic

Introduction aux FPGA – En pratique Réalisation de PCB – Matériel additionnel Meuleuse et support (Dremel 300 et Dremel Workstation 220) Soudure Fer 11W avec panne CMS Station de soudage thermo-régulée Flux de soudure (flux pen Kester solder) Loupe Divers Plaques de cuivre simples Feutres pour CI Gomme abrasive

Du Software au Hardware – Pour conclure Ouvre de nouvelles perspectives Investissement non négligeable Initial Récurrent Demande du temps Demande méthode et patience

Du Software au Hardware – Bibliographie « Du binaire au processeur » - Emmanuel Mesnard (Théorique) « Design your own video game console » eBook – André LaMothe http://www.xgamestation.com/ « Understanding the Apple II » - Jim Sather « Tracé des circuits imprimés » - Philippe Dunand

Merci pour votre attention Grégory ESTRADE http://torlus.com/